o
    iwh                  	   @   s  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mZmZmZ d dlZejejejejejejgZejejejejejejgZdZdZejefejefejefejefejefejefgZzeejg7 Zeejg7 Zeejefg7 ZW n	 ey   Y nw e Zdev red g ZeD ]*Z e !  e "de# e$e%e ej&se'e  W d   n1 sw   Y  qeD ]Z(ee( qdd	 Z)d
d Z*dd Z+dd Z,dd Z-dd Z.dd Z/dd Z0dd Z1dd Z2ej3j4dd Z5dd Z6d d! Z7d"d# Z8d$d% Z9d&d' Z:d(d) Z;d*d+ Z<d,d- Z=d.d/ Z>d0d1 Z?d2d3 Z@d4d5 ZAd6d7 ZBd8d9 ZCd:d; ZDd<d= ZEd>d? ZFd@dA ZGej3j4dBdC ZHdDdE ZIdFdG ZJdHdI ZKdJdK ZLdLdM ZMdNdO ZNdPdQ ZOdRdS ZPdTdU ZQdVdW ZRdXdY ZSdZd[ ZTd\d] ZUd^d_ ZVd`da ZWdbdc ZXddde ZYdfdg ZZdhdi Z[djdk Z\dldm Z]dndo Z^dpdq Z_drds Z`dtdu Zadvdw Zbdxdy Zcdzd{ Zdd|d} Zed~d Zfdd Zgdd Zhdd Zidd Zjdd Zkdd ZldS )    N)combinations)assert_assert_allcloseassert_almost_equalassert_array_equalassert_equalassert_raisesassert_raises_regexassert_warnsư>gvIh%<=dmeyignorec                  C   sv   g d} t d}t | |\}}}}t|dg t|dg t|ddg t|g d tt t| |dk d S )	N         r            db1ga{!@g'eֿg      @g      )g'er   gZo̙g'er   )pywtWaveletwavedecr   r   r   dwt_max_levellen)xr   cA3cD3cD2cD1 r!   \/var/www/html/ecg_monitoring/venv/lib/python3.10/site-packages/pywt/tests/test_multilevel.pytest_wavedecE   s   
r#   c                  C   sn   t ttjtdd t ttjg d g d} t| d}t|\}}t||}d}t	t|tj|d d S )N   haarr   r   "Unexpected detail coefficient type)
r   
ValueErrorr   waverecnponesr   coeffs_to_arrayarray_to_coeffsr	   )r   coeffsarrcoeff_slicescoeffs_from_arrmessager!   r!   r"   test_waverec_invalid_inputsP   s   r2   c                  C   s|   t jd} | d}tD ].\}}||}t |r)|d| d|jj 7 }t	
|d}tt	|d|||d qd S )N  r$                 ?r   atolrtol)r)   randomRandomStaterandndtypes_and_tolerancesastypeiscomplexobjrealdtyper   r   r   r(   rstatex0dttolr   r-   r!   r!   r"   test_waverec_accuraciesa   s   


rE   c                  C   s@   g d} t | d}d |d< d |d< tt |djt|  d S )Nr   r      r   )r   r   r   r(   sizer   r   r-   r!   r!   r"   test_waverec_nonel   s
   rI   c                  C   s.   g d} t | d}tt |d| dd d S )N)r   r   r   r   r   r   r   -q=r7   )r   r   r   r(   rH   r!   r!   r"   test_waverec_odd_lengthv   s   rL   c                  C   s<   t g d} | d } t| d}tt|d| dd d S )Nr   r4   r   rJ   rK   )r)   arrayr   r   r   r(   rH   r!   r!   r"   test_waverec_complex|   s   rN   c                  C   s   t d} tttD ]8\}}tjd|d}d| d}t j|| dd}|D ]}t|j	|kd|  q%t 
|| }t|j	|kd	|  q
d S )
Nr%   r$   r?   wrong dtype returned for  inputrF   levelz	wavedec: z	waverec: )r   r   zip	dtypes_in
dtypes_outr)   r*   r   r   r?   r(   )waveletdt_indt_outr   errmsgr-   cx_roundtripr!   r!   r"   test_multilevel_dtypes_1d   s   
r]   c                  C   s^   t jd} | d}tD ]}tjjD ]}tj|||d}t	tj
|||d|ttd qqd S )Nr3   P   moder7   r6   )r)   r8   r9   r:   wavelistr   Modesmodesr   r   r(   
tol_singlerA   rrW   r`   r-   r!   r!   r"   test_waverec_all_wavelets_modes   s   
rh   c                  C   s   t jd} | dd}tD ]7\}}||}t |r+|d| dd|jj 7 }t	
|d}tt|dk tt	|d|||d qd S )Nr3   r   r4   r   r   r5   )r)   r8   r9   r:   r;   r<   r=   r>   r?   r   wavedec2r   r   r   waverec2r@   r!   r!   r"   test_waverec2_accuracies   s   

rk   c            
      C   s   t d} tttD ]W\}}tjd|d}d| d}t j|| dd\}}}t|j	|kd|  |D ]}t|j	|kd|  q2|D ]}t|j	|kd|  qAt 
|||g| }	t|	j	|kd	|  q
d S )
Nr%   r$   r$   rO   rP   rQ   rF   rR   z
wavedec2: z
waverec2: )r   r   rT   rU   rV   r)   r*   ri   r   r?   rj   )
rW   rX   rY   r   rZ   cAcoeffsD2coeffsD1r[   r\   r!   r!   r"   test_multilevel_dtypes_2d   s   
rp   c                  C   `   t jd} | dd}tD ]}tjjD ]}tj|||d}t	tj
|||d|ttd qqd S Nr3   r^   `   r_   ra   )r)   r8   r9   r:   rb   r   rc   rd   ri   r   rj   re   rf   r!   r!   r"    test_waverec2_all_wavelets_modes      rt   c                  C   sD   t dd } t| d}tt|dk tt|d| dd d S )Nr   r   r4   r   r   rJ   rK   )r)   r*   r   ri   r   r   r   rj   datar-   r!   r!   r"   test_wavedec2_complex   s   ry   c                  C   s   t d} tttj| d d S )Nr   r%   )r)   r*   r   r'   r   ri   rx   r!   r!   r"   test_wavedec2_invalid_inputs   s   
r{   c                  C   sb   t ttjtdd t ttjg d tjtjfD ]} | tdd}d}tt|tj|d qd S Nrl   r%   r&   )	r   r'   r   rj   r)   r*   r   wavedecnr	   dec_funcr-   r1   r!   r!   r"   test_waverec2_invalid_inputs   s   r   c                  C   sT   t d} t| d}t|}t|d |d< t d|d d< tttj|d d S )Nrl   r   r   )   r   )	r)   r*   r   ri   listzerosr   r'   rj   rH   r!   r!   r"   "test_waverec2_coeff_shape_mismatch   s   
r   c                  C   s0   t d} t| d}tt|d| dd d S )N)
   r   r   rJ   rK   )r)   r*   r   ri   r   rj   rH   r!   r!   r"   test_waverec2_odd_length   s   
r   c                  C   sB   t ddd} t| d}d|d< t| jt|djk d S )N   r   r   r   NNNr   )r)   arangereshaper   ri   r   shaperj   rH   r!   r!   r"   test_waverec2_none_coeffs   s   r   c                  C   s`   t jd} tddD ]"}| jd|  }t|d}tt|dk t	t
|d|td qd S )Nr3   r   r   )r   r   r   rK   )r)   r8   r9   ranger:   r   r}   r   r   r   waverecn
tol_double)rA   ndr   r-   r!   r!   r"   test_waverecn  s   r   c                  C   s   t di i g} tt| djd tt| djd t di dt dig} t di i dt dig} tt| djd d S )NrF   rF   rF   r   r$   r$   r$   daar   r   r   )r   r   r   )r)   r*   r   r   r   r   r-   r!   r!   r"   test_waverecn_empty_coeff  s   r   c                  C   s   d i g} t ttj| d tdi dd ig} t ttj| d tdtdtddg} t ttj| d tdtdtddg} t ttj| d dgggdgggdgggdgggd	g} t ttj| d t ttjg d
 d S )Nr   r   r   r   )r   foo)r   da      ?        adr   ddr%   )r   r'   r   r   r)   r*   r   r!   r!   r"   test_waverecn_invalid_coeffs  s   (r   c                  C   s<   t jt jfD ]} | tdd}d}tt|t j|d qd S r|   )r   r   ri   r)   r*   r	   r'   r   r~   r!   r!   r"   test_waverecn_invalid_inputs1  s   r   c                  C   s8   dggdggdggdggdg} t t| djd d S )Nr   r   r   r   )rF   rF   )r   r   r   r   r   r!   r!   r"   test_waverecn_lists;  s    r   c                  C   s,   t ddt dig} tttj| d d S )Nr   adarv   r   )r)   r*   r   r'   r   r   r   r!   r!   r"   test_waverecn_invalid_coeffs2A  s   r   c                  C   s<   t d} tttj| d t d} tttj| ddd d S )Nr   r%   r   rR   )r)   rM   r   r'   r   r}   r*   rz   r!   r!   r"   test_wavedecn_invalid_inputsG  s   

r   c            	   	   C   s   t ddd} d}tjtjtjg}tjtjtj	g}t
 5 t
dt t||D ] \}}dD ]}|| d|dd}||d|d	}t| |||d
 q1q+W d    d S 1 sWw   Y  d S )N@   r$   rJ   r   )periodization	symmetricr%      r`   rS   r_   r5   )r)   r   r   r   r   ri   r}   r(   rj   r   warningscatch_warningssimplefilterUserWarningrT   r   )	rx   rD   	dec_funcs	rec_funcsr   rec_funcr`   r-   rg   r!   r!   r"   test_wavedecn_many_levelsQ  s   
"r   c                  C   s   t jd} | ddd}tD ]3\}}||}t |r-|d| ddd|jj 7 }t	
||d}tt	|d|||d qd S )Nr3   r   r4   r   r5   )r)   r8   r9   r:   r;   r<   r=   r>   r?   r   r}   r   r   r@   r!   r!   r"   test_waverecn_accuracies`  s   

 r   c                  C   s   t d} tttD ]_\}}tjd|d}d| d}t j|| dd\}}}t|j	|kd|  |
 D ]\}}	t|	j	|kd|  q4|
 D ]\}}	t|	j	|kd|  qGt |||g| }
t|
j	|kd	|  q
d S )
Nr%   rl   rO   rP   rQ   rF   rR   z
wavedecn: z
waverecn: )r   r   rT   rU   rV   r)   r*   r}   r   r?   itemsr   )rW   rX   rY   r   rZ   rm   rn   ro   keyr[   r\   r!   r!   r"   test_multilevel_dtypes_ndl  s   
r   c                  C   s4   t dd } t| d}tt|d| dd d S )Nr   r4   r   rJ   rK   )r)   r*   r   r}   r   r   rw   r!   r!   r"   test_wavedecn_complex|  s   r   c                  C   sF   t d} tD ]\}}t| |d}tt|d| ||d qd S )Nr   r   r5   )r)   r*   r;   r   r}   r<   r   r   )r   rC   rD   r-   r!   r!   r"   test_waverecn_dtypes  s
   
r   c                  C   rq   rr   )r)   r8   r9   r:   rb   r   rc   rd   r}   r   r   re   rf   r!   r!   r"    test_waverecn_all_wavelets_modes  ru   r   c                  C   s   t dddg} t| \}}t|| d  t|||d   tttjg  tttj| d gd  tttj| d | d fg tttjd g tttj| dg tttj| d g t dgt dgt dgdg}tttj| d S )Nr$   rF   r   r   r   )dr[   )	r)   r   r   r   r+   r   r   r'   rM   )a_coeffsr.   
arr_slicesr-   r!   r!   r"   test_coeffs_to_array  s    
&r   c               	   C   s  t jd} dtjtjddtjtjddtjtj	dd}d}|D ]\}| j
|g|| d   }tjjD ]I}tD ]D}t|}tt |j|j}|d	krOq8|| d
 |||d}	t|	\}
}tj|
||d}|| d |||d}t||ddd q8q4q"d S )Nr3   r   r   decrecrF   r   r   ri   r}      r   r   r   r_   output_formatr   -C6?ra   )r)   r8   r9   r   r   r(   ri   rj   r}   r   r:   rc   rd   rb   r   r   minr   dec_lenr+   r,   r   )rngparamsNfx1r`   wavewmaxlevelr-   	coeff_arrr/   coeffs2x1rr!   r!   r"    test_wavedecn_coeff_reshape_even  s0   
r   c                  C   s   t jd} d}td}d}d}dD ]P}| j|g|  }tj||||d}tj||d\}}	|d ur:tt	tj| tt	tj|d	d tt	tj|d
d t
||	}
tj|
|||d}t||ddd qd S )Nr3   r   db2r   r   ))r   r   r   r   r   r   rF   r   rF   Nr`   axesr   r   r   rF   r   r!   r   ra   )r)   r8   r9   r   r   r:   r}   r+   r   r'   r,   r   r   )r   r`   r   r   ndimr   r   r-   r   r/   r   r   r!   r!   r"   'test_wavedecn_coeff_reshape_axes_subset  s*   


r   c                  C   s   t jd} | dd}d}tj|d|d}tttj|d d tj|t j	d\}}t 
t |}t|dk tj|dd\}}tt 
t |dk tt 
|dk|k tj|d|d}tj|d d\}}t|j|j d S )	Nr3       r   r   r_   )paddingr   r%   )r)   r8   r9   r:   r   r}   r   r'   r+   nansumisnanr   r   r   )r   r   r`   r-   r   r/   npadcoeffs_haarr!   r!   r"   test_coeffs_to_array_padding  s   r   c                  C   s   t jd} | dd}tjjD ]M}dD ]H}t|}tt 	|j
|j}|dkr+qtj|||d}t|\}}t||}	tj|	||d}
|
tdd |j
D  }
t||
d	d	d
 qqd S )Nr3   #   !   r%   r   r_   c                 S      g | ]}t |qS r!   slice.0sr!   r!   r"   
<listcomp>      z3test_waverecn_coeff_reshape_odd.<locals>.<listcomp>r   ra   )r)   r8   r9   r:   r   rc   rd   r   r   r   r   r   r}   r+   r,   r   tupler   )r   r   r`   r   r   r   r-   r   r/   r   r   r!   r!   r"   test_waverecn_coeff_reshape_odd  s    
r   c                  C   sF   t tdd} t | \}}ttt j|g  ttt j||d d S )NrF   r%   r   )r   r}   r)   r*   r+   r   r'   r,   )r-   r.   r   r!   r!   r"   #test_array_to_coeffs_invalid_inputs  s   r   c               	   C   s  t jd} dtjtjddtjtjddtjtj	dd}d}|D ]^}| j
|g|| d   }tjjD ]K}tD ]F}t|}tt |j|j}|d	krOq8|| d
 |||d}	t|	\}
}}tj|
|||d}|| d |||d}t||ddd q8q4q"d S )Nr3   r   r   rF   r   r      r   r   r   r_   r   r   r   ra   )r)   r8   r9   r   r   r(   ri   rj   r}   r   r:   rc   rd   rb   r   r   r   r   r   ravel_coeffsunravel_coeffsr   )r   r   r   r   r   r`   r   r   r   r-   r   slicesshapesr   r   r!   r!   r"   test_wavedecn_coeff_ravel   s0   

r   c                  C   s   t jd} dtjtjddtjtjddtjtj	dd}d}|D ]J}| j
|g|| d   }tjjD ]7}td	}|| d
 |||dd}t|\}}	}
tj||	|
|d}|| d |||d}t||ddd q4q"d S )Nr3   r   r   rF   r   r   r   r   r   r   r   r   r   r   r_   r   ra   )r)   r8   r9   r   r   r(   ri   rj   r}   r   r:   rc   rd   r   r   r   r   )r   r   r   r   r   r`   r   r-   r   r   r   r   r   r!   r!   r"   $test_wavedecn_coeff_ravel_zero_level;  s&   

r   c                  C   s   t jd} | dd}tjjD ]O}dD ]J}t|}tt 	|j
|j}|dkr+qtj|||d}t|\}}}	t|||	}
tj|
||d}|tdd |j
D  }t||d	d	d
 qqd S )Nr3   r   r   r   r   r_   c                 S   r   r!   r   r   r!   r!   r"   r   b  r   z1test_waverecn_coeff_ravel_odd.<locals>.<listcomp>r   ra   )r)   r8   r9   r:   r   rc   rd   r   r   r   r   r   r}   r   r   r   r   r   )r   r   r`   r   r   r   r-   r   r   r   r   r   r!   r!   r"   test_waverecn_coeff_ravel_oddR  s    
r   c                  C   s   t d} td}t| |}dd |dd  D |dd < t|\}}}tj|||dd}t||}t| |ddd	 d
d |dd  D |dd < t	t
tj| d S )Nrl   r%   c                 S   r   r!   r   r   r[   r!   r!   r"   r   l  r   z2test_ravel_wavedec2_with_lists.<locals>.<listcomp>r   ri   r   r   ra   c                 S   s   g | ]
}t |d d qS )Nr   r   r   r!   r!   r"   r   t  s    )r)   r*   r   r   ri   r   r   rj   r   r   r'   )r   wavr-   r   r   r   r   r   r!   r!   r"   test_ravel_wavedec2_with_listsf  s   


r  c                  C   s   t tdd} d | d< ttt j|  t tdd} d| d< ttt j|  g d| d< ttt j|  d | d< ttt j|  t tdd} d | d d< ttt j|  d S )Nr$   r%   r   rl   r   r   ddd)	r   r   r)   r*   r   r'   r   ri   r}   r   r!   r!   r"   test_ravel_invalid_inputx  s   r  c                  C   sx   t tdd} t | \}}}ttt j||g  ttt j|g | ttt j||d d | ttt j|||d d S )NrF   r%   r   r   )r   r}   r)   r*   r   r   r'   r   )r-   r.   r   r   r!   r!   r"   test_unravel_invalid_inputs  s   r  c               	   C   s   t d} dD ]j}dD ]e}t jjD ]^}t jt|| ||d}t j|| ||d}t|d j	|d  |d j
}tdt|D ]}||  D ]\}}	||	j
7 }t|| | |	j	 qFq>t |}
t|
| t |}
t|
| qqqd S )Nr   )r   )r   r   )r         Nr   r   r   r   r   )r   r   rc   rd   r}   r)   r*   wavedecn_shapesr   r   rG   r   r   r   wavedecn_size)r   
data_shaper   r`   r-   r   expected_sizerS   kvrG   r!   r!   r"   test_wavedecn_shapes_and_size  s0   





r  c               
   C   sv   t ddfD ]1} dD ],}dD ]'}t jjD ] }t jt|| ||d}t || |}tt	|dd  | qqqqd S )Nr   sym8r  r  r   r   )
r   r   rc   rd   r}   r)   r*   dwtn_max_levelr   r   )r   r  r   r`   r-   max_levr!   r!   r"   test_dwtn_max_level  s   r  c                  C   R   t jd} | d}dD ]}tj|d|d}tj|d|d}t||dd qd S )Nr   r   r   r   rF   r%   axis+=r6   r)   r8   r9   standard_normalr   r   r(   r   rA   rx   r  coefsr   r!   r!   r"   test_waverec_axes_subsets  s   
r  c                  C   r  )Nr   r   r   r   r   r  r  r  r  r  r!   r!   r"   test_waverec_axis_db2     
r   c                  C   X   t jd} | d}tddD ]}tj|d|d}tj|d|d}t||dd qd S )	Nr   r   r  rF   r%   r   r  r  )	r)   r8   r9   r  r   r   ri   rj   r   rA   rx   r   r  r   r!   r!   r"   test_waverec2_axes_subsets     
r$  c                  C   r"  )	Nr   )r$   r$   r$   r$   r   r   r%   r   r  r  )	r)   r8   r9   r  r   r   r}   r   r   r#  r!   r!   r"   test_waverecn_axes_subsets  r%  r&  c                  C   r  )Nr   rl   r   r%   r   r  r  )r)   r8   r9   r  r   r}   r   r   r  r!   r!   r"   test_waverecn_int_axis  r!  r'  c                  C   s"   t d} tttj| ddd d S Nr   r%   r   r  )r)   r*   r   r'   r   r   rz   r!   r!   r"   test_wavedec_axis_error  s   
r)  c                  C   s*   t tdd} ttt j| ddd d S r(  r   r   r)   r*   r   r'   r(   r[   r!   r!   r"   test_waverec_axis_error  s   r,  c                  C   s>   t tdd} | d d d | d< ttt j| ddd d S )Nr   r%   r   r   r   r  r*  r+  r!   r!   r"   !test_waverec_shape_mismatch_error  s   r-  c                  C   sJ   t d} tttj| ddd tttj| ddd tttj| ddd d S Nrv   r%   r   r   )r   r   r   )r)   r*   r   	TypeErrorr   ri   r'   rz   r!   r!   r"   test_wavedec2_axes_errors  s   
r0  c                  C   sV   t d} t| d}tttj|ddd tttj|ddd tttj|ddd d S r.  )r)   r*   r   ri   r   r/  rj   r'   rx   r[   r!   r!   r"   test_waverec2_axes_errors  s
   
r2  c                  C   s6   t d} tttj| ddd tttj| ddd d S Nr   r%   r   r   r   )r   r   r   )r)   r*   r   r'   r   r}   rz   r!   r!   r"   test_wavedecn_axes_errors  s   
r5  c                  C   sB   t d} t| d}tttj|ddd tttj|ddd d S r3  )r)   r*   r   r}   r   r'   r   r1  r!   r!   r"   test_waverecn_axes_errors%  s   
r6  c                  C   s  t jd} | ddd}tdddf}dd t|j|D }d	d
tjj	j
jf}t|||}tt||||dd tt|t|dd   t||d d |}tt||d d ||dd t|||d d }tt|||d d |dd tttj||d d  tttj|||d d d tttj||d d  tttj|||d d d |d }t||d d |d d }tt||d d |d d |dd tt|d d t|dd   d S )Nr3   r   r   r%   sym2r   c                 S   s   g | ]\}}t j||qS r!   )r   _dwtr   )r   r   nfr!   r!   r"   r   7  s    z4test_per_axis_wavelets_and_modes.<locals>.<listcomp>r   r   r  r  r   rF   r_   ).r   )r)   r8   r9   r:   r   r   rT   r   _extensions_pywtrc   reflectr}   r   r   r   r   r   r   r'   ri   rj   )rA   rx   wavelets
max_levelsrd   r  data2coefs2r!   r!   r"    test_per_axis_wavelets_and_modes.  s<   

 &rA  c               	   C   s   t jd} tddD ]T}tttD ]L\}}dD ]E}| d| }||}t	j
|d|d}t	|}|jjt jt jfv rFt||ddd	 nt||d
d
d	 t|jj|k t|j|k qqqd S )Nr   r   r   )r   Nr$   r%   levelsr   ra   r  )r)   r8   r9   r   rT   rU   rV   r  r<   r   
fswavedecn
fswaverecnr>   r?   float32float16r   r   r-   )rA   r   rX   rY   rD  rx   Tr   r!   r!   r"   $test_fswavedecn_fswaverecn_roundtripZ  s    

rJ  c                  C   sT   t jd} d}| d| }tj|ddd}t|j| t|}t|j| d S )Nr   rF   rB  r%   rC  )	r)   r8   r9   r  r   rE  r   r-   rF  rA   r   rx   rI  r   r!   r!   r"   &test_fswavedecn_fswaverecn_zero_levelsm  s   
rL  c                  C   s   t jd} d}| d| }tj|ddd}t|}t||dd tt	tj|dd	d tt	tj|dd
d t
ttj|dtt t |jd d d S )Nr   r   r   r%   )r   rF   r   rC  r  r  r4  )r   r   r   r   r   )r)   r8   r9   r  r   rE  rF  r   r   r'   r
   r   intlog2r   r   rK  r!   r!   r"   *test_fswavedecn_fswaverecn_variable_levelsx  s   

rP  c                  C   s   t jd} d}| d| }d}d}tj|||d}t|D ]}tt|j	| t
|j| || d  qt|}t||dd	 tttj||d d
  tttj||d |d d
 d d S )Nr   r   rM  )r%   r   sym3)periodicr   r   )rW   r`   r   r  r  rF   r_   )r)   r8   r9   r  r   rE  r   r   r   r/   r   r   rF  r   r   r'   )rA   r   rx   r=  rd   rI  axr   r!   r!   r"   6test_fswavedecn_fswaverecn_variable_wavelets_and_modes  s   
$rT  c                  C   sf   t jd} | d}tddD ]}tj|d|d}t|}t||dd qt	t
tj|dd	d d
S )z.Fully separable DWT over only a subset of axesr   )r   r$   r   r   r   r   r%   r   r  r  )r   r   N)r)   r8   r9   r  r   r   rE  rF  r   r   r'   )rA   rx   r   rI  r   r!   r!   r"   'test_fswavedecn_fswaverecn_axes_subsets  s   

rU  c               	   C   s   t d} d}tj| d|d}d| j }t|| |j | }t||v |D ]}|| }t	|j| j q(t 
|||< tt|j|t tdd |jD  tt|j|t 
|t j t	|jj| j d S )N)r   r   r   r7  rC  r   c                 S   s   g | ]}|d  qS r   r!   r   r!   r!   r"   r     r   z)test_fswavedecnresult.<locals>.<listcomp>)r)   r*   r   rE  r   r   approxdetail_keysr   r   
zeros_liker   r'   __setitem__r   r   r   r
   r   r<   rG  r-   )rx   rD  result
approx_keydkeysr  r   r!   r!   r"   test_fswavedecnresult  s$   

r]  c                  C   sx   t d} ttjtjtjgtjtjtj	gD ]#\}}dt
dfD ]}tt|| |d || d}tt|||d q!qd S )Nr  morl)rW   r   )r)   r*   rT   r   r   ri   r}   r(   rj   r   DiscreteContinuousWaveletr   r'   )rx   dec_funrec_funcwaver[   r!   r!   r"    test_error_on_continuous_wavelet  s   

rc  c                     s   t d d} tjtjfD ](}dD ]#}| | |d}t  fddt|| D }tt|dd  | qqdD ]!}tj | | |fd}tt|dd  t	 j
| | |  q8d S )	N)   r   r   )db8r   )r   )rF   r   r   r   c                    s"   g | ]\}}t  j| |qS r!   )r   r   r   )r   rS  r   rz   r!   r"   r     s    z&test_default_level.<locals>.<listcomp>r   r   )r)   r*   r   ri   r}   r   rT   r   r   r   r   )rW   r   r   r[   r  rS  r!   rz   r"   test_default_level  s    
rf  c                  C   s  t jd} tjtjdftjtjdftjtj	dffD ]\}}}| j
| }||d}|d t j|d< ||d}t||ddd t|jt j |d|  }||d}|d t j|d< ||d}t||ddd t|jt j |jd	kr|d t j|d< |d	 t j|d	< |jd
kr|d t j|d< tdd |d	 D |d	< |jdkr|d t j|d< dd |d	  D |d	< ||d}t||ddd t|jt j qd S )Nr   rB  rl   r   r   gHz>ra   r4   r   rF   c                 S   s   g | ]}| tjqS r!   r<   r)   	complex64)r   r  r!   r!   r"   r     s    z0test_waverec_mixed_precision.<locals>.<listcomp>r   c                 S   s   i | ]\}}|| tjqS r!   rg  )r   r  r  r!   r!   r"   
<dictcomp>  s    z0test_waverec_mixed_precision.<locals>.<dictcomp>)r)   r8   r9   r   r   r(   ri   rj   r}   r   r:   r<   rG  r   r   r?   float64rh  
complex128r   r   r   )rA   funcifuncr   r   coeffs_realrg   r-   r!   r!   r"   test_waverec_mixed_precision  s@   










ro  )mr   	itertoolsr   numpyr)   pytestnumpy.testingr   r   r   r   r   r   r	   r
   r   int8rH  rG  rj  rh  rk  rU   rV   re   r   r;   
complex256AttributeErrorrb   removedel_listrW   r   r   FutureWarning
isinstancer_  r   appenddel_indr#   r2   rE   rI   rL   rN   r]   rh   rk   rp   markslowrt   ry   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r   r$  r&  r'  r)  r,  r-  r0  r2  r5  r6  rA  rJ  rL  rP  rT  rU  r]  rc  rf  ro  r!   r!   r!   r"   <module>   s   (















	,!