o
    h6                  	   @   s  d dl Z d dlZd dlmZ d dlZd dlZd dlmZm	Z	m
Z
mZmZ d dlZdd Zdd Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zejdejejgdd Zdd Zdd Zdd Zdd  Zd!d" Z d#d$ Z!d%d& Z"d'd( Z#ejd)ejd*d+fejd*d,fejd-d+fejd-d,fgd.d/ Z$ejd0ed d1gd+d,gd2d3 Z%d4d5 Z&d6d7 Z'd8d9 Z(d:d; Z)d<d= Z*dS )>    N)product)assert_allcloseassert_almost_equalassert_equalassert_raisesassert_warnsc                 C   s  t | ||}dt j d t |d   }|dkr$d| | }||fS |dkr8ddd|d    | }||fS |dkrNd	| dd|d    | }||fS |d
krhddd|d   d
|d
    | }||fS |dkrd| dd|d   d
|d
    | }||fS |dkrddd|d   d|d
   d|d    | }||fS |dkrd| dd|d   d|d
   d|d    | }||fS |dkrddd|d   d|d
   d|d   d|d    | }||fS )Ng       @      ?      g       g3Ey   gԢT   go?      gdJ*ŧ?i      grMZ   <         gbjHi      T   gS?iH        nplinspacepiexp)LBUBNnumXF0psi r'   W/var/www/html/scripts/venv/lib/python3.10/site-packages/pywt/tests/test_cwt_wavelets.pyref_gaus   s@   $
(04

r)   c           	      C   s  t | ||}t |d  }t d| }|| t dd t jd  d  }|dkr8|dd|   d }n!|dkrPd| dd	|  d
|d    d }n	|dkrmd| dd|  d|d   d|d    d }n|d
krd| dd|  d|d   d|d   d|d
    d }n|dkrd| dd|  d|d   d|d   d |d
   d!|d    d }n|d"krd#| d$d%|  d&|d   d'|d   d(|d
   d)|d   d*|d"    d+ }nq|d,krd-| d.d/|  d0|d   d1|d   d2|d
   d3|d   d4|d"   d5|d,    d6 }n;|dkrYd-| d7d8|  d9|d   d:|d   d;|d
   d<|d   d=|d"   d>|d,   d?|d    d@ }|t t t t |t | |d |dA    }||fS )BNr	   y                   g;f?g      ?r
   gUUUUUU?y              @r   g.!	@r   g?y              @   y              (@r   g6ҭ@g88?   y              L@H   y              @@r   g̝,@r   gj?y            @T   y             q@   y              T@    r   gpt2?iy             `@i  y             @i  y              h@@   guBH@r   g EG>y             \@i  y             @iX  y             @i  y              |@   gJUe@i1  y             \@iА  y             @i`m  y             @i   y              @   gQ
2_F@r   )r   r   r   r   realsqrtsumconj)	r    r!   r"   r#   r$   r%   F1F2r&   r'   r'   r(   ref_cgau*   sl   $(2>(

4


:


.



:r;   c                 C   sB   t | }t | d }t t j| |  t j| |   ||< |S )Nr   )r   	ones_likewheresinr   )xykr'   r'   r(   sinc2J   s   
&rB   c                 C   sD   t | ||}t |t|| t dt j | |   }||fS N               @r   r   r6   rB   r   r   r    r!   r"   FbFcr?   r&   r'   r'   r(   ref_shanQ   s   .rI   c                 C   sL   t | ||}t |t|| | | t dt j | |   }||fS rC   rE   )r    r!   r"   mrG   rH   r?   r&   r'   r'   r(   ref_fbspW   s   6rK   c                 C   sP   t | ||}t j| d t dt j | |  t |d  |  }||fS )Nr*   rD   r	   r   rF   r'   r'   r(   ref_cmor]   s   :rL   c                 C   s8   t | ||}t |d  d t d|  }||fS )Nr	   r   )r   r   r   cosr    r!   r"   r?   r&   r'   r'   r(   ref_morlc   s   "rO   c                 C   sN   t | ||}dt dt jd   t |d  d  d|d   }||fS )Nr	   r   r   r
   )r   r   r6   r   r   rN   r'   r'   r(   ref_mexhi   s   8rP   c            	      C      d} d}d}t ddD ]7}t| |||\}}tdt| }|j|d\}}tt |t | tt 	|t 	| t|| qd S )Nr     r
   	   gauslength)
r   aranger)   pywtContinuousWaveletstrwavefunr   r5   imag	r    r!   r"   r#   r&   r?   wPSIr$   r'   r'   r(   	test_gauso      ra   dtypec                 C   s<   t d| }t |\}}|jj| ksJ |j| ksJ d S )Ncmor1.5-1.0)rY   rZ   integrate_waveletr5   rc   )rc   waveletint_psir?   r'   r'   r(   test_continuous_wavelet_dtype}   s   rh   c                   C   sv   t t tdtj W d    n1 sw   Y  t t tdtj W d    d S 1 s4w   Y  d S )Ngaus5)pytestraises
ValueErrorrY   rZ   r   	complex64int_r'   r'   r'   r(   %test_continuous_wavelet_invalid_dtype   s   "ro   c            	      C   rQ   )NrR   r   rS   r
   rT   cgaurV   )
r   rX   r;   rY   rZ   r[   r\   r   r5   r]   r^   r'   r'   r(   	test_cgau   rb   rq   c            
      C   l  d} d}d}d}d}t | ||||\}}td| d| }t|j| t|j| ||_| |_|j|d\}}	t	t
|t
|d	d
 t	t
|t
|d	d
 t	|	|d	d
 d} d}d}d}d}t | ||||\}}td| d| }t|j| t|j| ||_| |_|j|d\}}	t	t
|t
|d	d
 t	t
|t
|d	d
 t	|	|d	d
 d S )Nr   rS   r
         ?shan-rV   V瞯<atol)rI   rY   rZ   r   center_frequencybandwidth_frequencyupper_boundlower_boundr\   r   r   r5   r]   
r    r!   r"   rG   rH   r&   r?   r_   r`   r$   r'   r'   r(   	test_shan   <   r   c            
      C   rr   )Nrs   r   rS   r
   rt   cmorrv   rV   rw   rx   )rL   rY   rZ   r   rz   r{   r|   r}   r\   r   r   r5   r]   r~   r'   r'   r(   	test_cmor   r   r   c                  C   sV  d} d}d}d}d}d}t | |||||\}}td| d| d| }t|j| t|j| ||_||_| |_|j	|d	\}	}
t
t|	t|d
d t
t|	t|d
d t
|
|d
d d} d}d}d}d}d}t | |||||\}}td| d| d| }t|j| t|j| ||_||_| |_|j	|d	\}	}
t
t|	t|d
d t
t|	t|d
d t
|
|d
d d} d}d}d}d}d}t | |||||\}}td| d| d| }t|j| t|j| ||_||_| |_|j	|d	\}	}
t
t|	t|dd t
t|	t|dd t
|
|d
d d S )Nrs   r   rS   r	   r
   rt   fbsprv   rV   rw   rx   r   g333333?h㈵>)rK   rY   rZ   r   rz   r{   
fbsp_orderr|   r}   r\   r   r   r5   r]   )r    r!   r"   MrG   rH   r&   r?   r_   r`   r$   r'   r'   r(   	test_fbsp   sf   r   c                  C   s|   d} d}d}t | ||\}}td}||_| |_|j|d\}}tt|t| tt	|t	| t|| d S )NrR   r   rS   morlrV   )
rO   rY   rZ   r|   r}   r\   r   r   r5   r]   r    r!   r"   r&   r?   r_   r`   r$   r'   r'   r(   	test_morl%  s   
r   c                  C   s   d} d}d}t | ||\}}td}||_| |_|j|d\}}tt|t| tt	|t	| t|| d} d}d}t | ||\}}td}||_| |_|j|d\}}tt|t| tt	|t	| t|| d S )NrR   r   rS   mexhrV   i  )
rP   rY   rZ   r|   r}   r\   r   r   r5   r]   r   r'   r'   r(   	test_mexh5  s,   


r   c                  C   s   t jt jfD ]`} dD ]}tt| | q
dD ]&}| |d  | |d  tt| |d  tt| |d  tt| |d  q| d | d	 | d
 tt| d tt| d tt| d tt| d tt| d qd S )N)r   r   ru   )r   ru   z1.5-1.0z1-4z1.0zB-Cz1.0-1.0-1.0zfbsp1-1.5-1.0zfbsp1.0-1.5-1z	fbsp2-5-1zfbsp1.5-1-1z	fbspM-B-Czfbsp1.0zfbsp1.0-0.4zfbsp1-1-1-1)rY   rZ   DiscreteContinuousWaveletr   FutureWarningr   rl   )funcnamer'   r'   r(   test_cwt_parameters_in_namesS  s$   r   zdtype, tol, methodr   convfftvIh%<=c                 C   s   t j \}}tj|| d}|d |d  }d}tdd}t j|||||d\}}	t|jj	|j	 |d|  }
t j|
||||d\}}	t
|d|  |||d t|j	|
j	 d S )	Nrc   r
   r   rd   r1   methody              ?)ry   rtol)rY   dataninor   asarrayrX   cwtr   r5   rc   r   )rc   tolr   timesstdtrf   scalescfsfsst_complexcfs_complexr'   r'   r(   test_cwt_complexs  s   
r   zaxis, methodr
   c                 C   s   t j}tj \}}d}d|  }t j||d}t j|f| |d}|d |d  }d}	t dd}
tj||
|	||| d\}}|j	}tj||
|	||| d\}}t
||j	 t
|jj|j t
|j	d t|
 t
|j	d|  | t
|j	d|   |j	|   t|t j|f| |d dd	d
 d S )Nr   r
   r   )axisr   rd   r1   )r   r   r   )decimal)r   float64rY   r   r   r   stackrX   r   shaper   r5   rc   lenr   )r   r   rc   r   r   n_batch
batch_axissst1r   rf   r   cfs1r   shape_inr   r'   r'   r(   test_cwt_batch  s(   
r   c                  C   sF   t d} tj| ddd\}}t|t | tttj| ddd d S )Nr1   g?r   r   rf   g{Gz?)r   zerosrY   r   r   
zeros_liker   rl   )r   r   r   r'   r'   r(   test_cwt_small_scales  s   
r   c                  C   s.   t d} t dd}tttj| |dd d S )Nr1   r   r   r   r   )r   r   rX   r   rl   rY   r   r   r   r'   r'   r(   test_cwt_zero_scale  s   
r   c                  C   s0   t d} t g d}tttj| |dd d S )Nr1   )r   r+   r   r   )r   r   r   r   rl   rY   r   r   r'   r'   r(   test_cwt_negative_scale  s   
r   c                  C   sn   t jd} | d}d|d< t dd}d}tj|||dd\}}tj|||d	d\}}t||d
dd d S )Nr
   2   g      ?   r2   rd   r   r   r   r   r   )r   ry   )r   randomRandomStaterandnrX   rY   r   r   )rstater   r   rf   cfs_conv_cfs_fftr'   r'   r(   test_cwt_method_fft  s   
r   c                 C   s   t d}tj| d}t|d}t|| W d    n1 s"w   Y  t|d}t|}W d    n1 s<w   Y  t	|t jsIJ |j
|j
ksQJ d S )Nrd   zcwav.picklewbrb)rY   rZ   ospathjoinopenpickledumpload
isinstancer   )tmpdirrf   filenamer   wavelet2r'   r'   r(   test_continuous_wavelet_pickle  s   
r   )+r   r   	itertoolsr   numpyr   rj   numpy.testingr   r   r   r   r   rY   r)   r;   rB   rI   rK   rL   rO   rP   ra   markparametrizefloat32r   rh   ro   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   r'   r'   r'   r(   <module>   sR    
&&? 





!