o
    ez                  	   @   s  d dl mZmZm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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 Z0dd Z1dd Z2dd Z3dd Z4dd Z5dd Z6e	j7j8dd Z9dd  Z:d!d" Z;d#d$ Z<d%d& Z=d'd( Z>d)d* Z?d+d, Z@d-d. ZAd/d0 ZBd1d2 ZCd3d4 ZDd5d6 ZEd7d8 ZFd9d: ZGd;d< ZHd=d> ZId?d@ ZJdAdB ZKe	j7j8dCdD ZLdEdF ZMdGdH ZNdIdJ ZOdKdL ZPdMdN ZQdOdP ZRdQdR ZSdSdT ZTdUdV ZUdWdX ZVdYdZ ZWd[d\ ZXd]d^ ZYd_d` ZZdadb Z[dcdd Z\dedf Z]dgdh Z^didj Z_dkdl Z`dmdn Zadodp Zbdqdr Zcdsdt Zddudv Zedwdx Zfdydz Zgd{d| Zhd}d~ Zidd Zjdd Zkdd Zldd Zmdd Zndd Zodd ZpdS )    )divisionprint_functionabsolute_importN)combinations)assert_almost_equalassert_allcloseassert_assert_equalassert_raisesassert_raises_regexassert_array_equalassert_warnsư>gvIh%<=Z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   ZcA3ZcD3ZcD2ZcD1 r   JD:\Projects\ConvertPro\env\Lib\site-packages\pywt/tests/test_multilevel.pytest_wavedec<   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_slicesZcoeffs_from_arrmessager   r   r    test_waverec_invalid_inputsG   s   r/   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&   rstateZx0dttolr   r+   r   r   r    test_waverec_accuraciesX   s   


rA   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_nonec   s
   rE   c                  C   s.   g d} t | d}tt |d| dd d S )N)r   r   r   r   r   r   r   -q=r4   )r   r   r   r&   rD   r   r   r    test_waverec_odd_lengthm   s   rH   c                  C   s<   t g d} | d } t| d}tt|d| dd d S )Nr   r1   r   rF   rG   )r'   arrayr   r   r   r&   rD   r   r   r    test_waverec_complexs   s   rJ   c                  C   s   t d} tttD ]7\}}tj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 {0} inputrB   levelz	wavedec: z	waverec: )r   r   zip	dtypes_in
dtypes_outr'   r(   formatr   r   r<   r&   )waveletdt_indt_outr   errmsgr+   cx_roundtripr   r   r    test_multilevel_dtypes_1dz   s   

rY   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 )Nr0   P   moder4   r3   )r'   r5   r6   r7   wavelistr   Modesmodesr   r   r&   
tol_singler>   rrS   r\   r+   r   r   r    test_waverec_all_wavelets_modes   s   
rd   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 )Nr0   r   r1   r   r   r2   )r'   r5   r6   r7   r8   r9   r:   r;   r<   r   wavedec2r   r   r   waverec2r=   r   r   r    test_waverec2_accuracies   s   

rg   c            
      C   s   t d} tttD ]V\}}tjd|d}d|}t j|| dd\}}}t	|j
|kd|  |D ]}t	|j
|kd|  q1|D ]}t	|j
|kd|  q@t |||g| }	t	|	j
|kd|  q
d S )	Nr#   r"   r"   rK   rL   rB   rM   z
wavedec2: z
waverec2: )r   r   rO   rP   rQ   r'   r(   rR   re   r   r<   rf   )
rS   rT   rU   r   rV   cAcoeffsD2coeffsD1rW   rX   r   r   r    test_multilevel_dtypes_2d   s   

rl   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 Nr0   rZ   `   r[   r]   )r'   r5   r6   r7   r^   r   r_   r`   re   r   rf   ra   rb   r   r   r     test_waverec2_all_wavelets_modes      rp   c                  C   sD   t dd } t| d}tt|dk tt|d| dd d S )Nr   r   r1   r   r   rF   rG   )r'   r(   r   re   r   r   r   rf   datar+   r   r   r    test_wavedec2_complex   s   ru   c                  C   s   t d} tttj| d d S )Nr   r#   )r'   r(   r
   r%   r   re   rt   r   r   r    test_wavedec2_invalid_inputs   s   
rw   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 Nrh   r#   r$   )	r
   r%   r   rf   r'   r(   r   wavedecnr   dec_funcr+   r.   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 )Nrh   r   r   )   r   )	r'   r(   r   re   listzerosr
   r%   rf   rD   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   rF   rG   )r'   r(   r   re   r   rf   rD   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   re   r   shaperf   rD   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 )Nr0   r   r   )r   r   r   rG   )r'   r5   r6   ranger7   r   ry   r   r   r   waverecn
tol_double)r>   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rB   rB   rB   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 rx   )r   r   re   r'   r(   r   r%   r   rz   r   r   r    test_waverecn_invalid_inputs(  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   )rB   rB   )r	   r   r   r   r   r   r   r    test_waverecn_lists2  s    r   c                  C   s,   t ddt dig} tttj| d d S )Nr   adarr   r   )r'   r(   r
   r%   r   r   r   r   r   r    test_waverecn_invalid_coeffs28  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}   rM   )r'   rI   r
   r%   r   ry   r(   rv   r   r   r    test_wavedecn_invalid_inputs>  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"   rF   r   )periodization	symmetricr#      r\   rN   r[   r2   )r'   r   r   r   r   re   ry   r&   rf   r   warningscatch_warningssimplefilterUserWarningrO   r   )	rt   r@   Z	dec_funcsZ	rec_funcsr{   Zrec_funcr\   r+   rc   r   r   r    test_wavedecn_many_levelsH  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 )Nr0   r   r1   r   r2   )r'   r5   r6   r7   r8   r9   r:   r;   r<   r   ry   r   r   r=   r   r   r    test_waverecn_accuraciesW  s   

 r   c                  C   s   t d} tttD ]^\}}tjd|d}d|}t j|| dd\}}}t	|j
|kd|  | D ]\}}	t	|	j
|kd|  q3| D ]\}}	t	|	j
|kd|  qFt |||g| }
t	|
j
|kd|  q
d S )	Nr#   rh   rK   rL   rB   rM   z
wavedecn: z
waverecn: )r   r   rO   rP   rQ   r'   r(   rR   ry   r   r<   itemsr   )rS   rT   rU   r   rV   ri   rj   rk   keyrW   rX   r   r   r    test_multilevel_dtypes_ndc  s   

r   c                  C   s4   t dd } t| d}tt|d| dd d S )Nr   r1   r   rF   rG   )r'   r(   r   ry   r   r   rs   r   r   r    test_wavedecn_complexs  s   r   c                  C   sF   t d} tD ]\}}t| |d}tt|d| ||d qd S )Nr   r   r2   )r'   r(   r8   r   ry   r9   r   r   )r   r?   r@   r+   r   r   r    test_waverecn_dtypesy  s
   
r   c                  C   rm   rn   )r'   r5   r6   r7   r^   r   r_   r`   ry   r   r   ra   rb   r   r   r     test_waverecn_all_wavelets_modes  rq   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	t dgt dgdg}tttj| d S )Nr"   rB   r   r   r   )drW   )
r'   r   r   r   r)   r   r
   r%   rI   dict)Z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 )Nr0   r   r   decrecrB   r   r   re   ry      r   r   r   r[   Zoutput_formatr   -C6?r]   )r'   r5   r6   r   r   r&   re   rf   ry   r   r7   r_   r`   r^   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 )Nr0   r   db2r}   r   ))r   r   r   r   r   r   rB   r   rB   Nr\   axesr   r   r   rB   r   r   r   r]   )r'   r5   r6   r   r   r7   ry   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 )	Nr0       r   r   r[   )paddingr   r#   )r'   r5   r6   r7   r   ry   r
   r%   r)   nansumisnanr   r	   r   )r   r   r\   r+   r   r-   ZnpadZ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 )Nr0   #   !   r#   r   r[   c                 S      g | ]}t |qS r   slice.0sr   r   r    
<listcomp>      z3test_waverecn_coeff_reshape_odd.<locals>.<listcomp>r   r]   )r'   r5   r6   r7   r   r_   r`   r   r   r   r   r   ry   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 )NrB   r#   r   )r   ry   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 )Nr0   r   r   rB   r   r      r   r   r   r[   r   r   r   r]   )r'   r5   r6   r   r   r&   re   rf   ry   r   r7   r_   r`   r^   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 )Nr0   r   r   rB   r   r   r}   r   r   r   r   r   r   r   r[   r   r]   )r'   r5   r6   r   r   r&   re   rf   ry   r   r7   r_   r`   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_level2  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 )Nr0   r   r   r   r   r[   c                 S   r   r   r   r   r   r   r    r   Y  r   z1test_waverecn_coeff_ravel_odd.<locals>.<listcomp>r   r]   )r'   r5   r6   r7   r   r_   r`   r   r   r   r   r   ry   r   r   r   r   r   )r   r   r\   r   r   r   r+   r   r   r   r   r   r   r   r    test_waverecn_coeff_ravel_oddI  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 )Nrh   r#   c                 S   r   r   r~   r   rW   r   r   r    r   c  r   z2test_ravel_wavedec2_with_lists.<locals>.<listcomp>r   re   r   r   r]   c                 S   s   g | ]
}t |d d qS )Nr   r   r   r   r   r    r   k  s    )r'   r(   r   r   re   r   r   rf   r   r
   r%   )r   wavr+   r   r   r   r   r   r   r   r    test_ravel_wavedec2_with_lists]  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   rh   r   r   Zddd)	r   r   r'   r(   r
   r%   r   re   ry   r   r   r   r    test_ravel_invalid_inputo  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 )NrB   r#   r   r   )r   ry   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   r_   r`   ry   r'   r(   Zwavedecn_shapesr	   r   rC   r   r   r   Zwavedecn_size)r   
data_shaper   r\   r+   r   Zexpected_sizerN   kvrC   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   Zsym8r   r   r   r   )
r   r   r_   r`   ry   r'   r(   Z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   rB   r#   axis+=r3   r'   r5   r6   standard_normalr   r   r&   r   r>   rt   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  rB   r#   r   r  r	  )	r'   r5   r6   r  r   r   re   rf   r   r>   rt   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'   r5   r6   r  r   r   ry   r   r   r  r   r   r    test_waverecn_axes_subsets  r  r  c                  C   r  )Nr   rh   r   r#   r   r  r	  )r'   r5   r6   r  r   ry   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   rv   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&   rW   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 Nrr   r#   r   r   )r   r   r   )r'   r(   r
   	TypeErrorr   re   r%   rv   r   r   r    test_wavedec2_axes_errors  s   
r   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   re   r
   r  rf   r%   rt   rW   r   r   r    test_waverec2_axes_errors	  s
   
r"  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   ry   rv   r   r   r    test_wavedecn_axes_errors  s   
r%  c                  C   sB   t d} t| d}tttj|ddd tttj|ddd d S r#  )r'   r(   r   ry   r
   r%   r   r!  r   r   r    test_waverecn_axes_errors  s   
r&  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 )Nr0   r   r}   r#   sym2r   c                 S   s   g | ]\}}t j||qS r   )r   Z_dwtr   )r   r   nfr   r   r    r   .  s    z4test_per_axis_wavelets_and_modes.<locals>.<listcomp>r   r   r  r	  r   rB   r[   ).r   )r'   r5   r6   r7   r   r   rO   r   Z_extensionsZ_pywtr_   Zreflectry   r   r   r	   r   r   r
   r%   re   rf   )r>   rt   waveletsZ
max_levelsr`   r  Zdata2Zcoefs2r   r   r     test_per_axis_wavelets_and_modes%  s<   

 &r*  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   r]   r  )r'   r5   r6   r   rO   rP   rQ   r  r9   r   
fswavedecn
fswaverecnr;   r<   float32float16r   r   r+   )r>   r   rT   rU   r-  rt   Tr   r   r   r    $test_fswavedecn_fswaverecn_roundtripQ  s    

r3  c                  C   sT   t jd} d}| d| }tj|ddd}t|j| t|}t|j| d S )Nr   rB   r+  r#   r,  )	r'   r5   r6   r  r   r.  r   r+   r/  r>   r   rt   r2  r   r   r   r    &test_fswavedecn_fswaverecn_zero_levelsd  s   
r5  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   rB   r   r,  r  r	  r$  )r   r   r   r   r   )r'   r5   r6   r  r   r.  r/  r   r
   r%   r   r   intlog2r   r   r4  r   r   r    *test_fswavedecn_fswaverecn_variable_levelso  s   

r9  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   r6  )r#   r   Zsym3)Zperiodicr   r   )rS   r\   r   r  r	  rB   r[   )r'   r5   r6   r  r   r.  r   r	   r   r-   r   r   r/  r   r
   r%   )r>   r   rt   r)  r`   r2  axr   r   r   r    6test_fswavedecn_fswaverecn_variable_wavelets_and_modes  s   
$r;  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'   r5   r6   r  r   r   r.  r/  r   r
   r%   )r>   rt   r   r2  r   r   r   r    'test_fswavedecn_fswaverecn_axes_subsets  s   

r<  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   r'  r,  r   c                 S   s   g | ]}|d  qS r   r   r   r   r   r    r     r   z)test_fswavedecnresult.<locals>.<listcomp>)r'   r(   r   r.  r   r   ZapproxZdetail_keysr   r	   Z
zeros_liker
   r%   __setitem__r   r   r   r   r   r9   r0  r+   )rt   r-  resultZ
approx_keyZ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  Zmorl)rS   r   )r'   r(   rO   r   r   re   ry   r&   rf   r   DiscreteContinuousWaveletr
   r%   )rt   Zdec_funZrec_funZcwaverW   r   r   r     test_error_on_continuous_wavelet  s   

rA  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   )Zdb8r   )r   )rB   r   r   r   c                    s"   g | ]\}}t  j| |qS r   )r   r   r   )r   r:  r   rv   r   r    r     s    z&test_default_level.<locals>.<listcomp>r   r   )r'   r(   r   re   ry   r   rO   r	   r   r   r   )rS   r{   r   rW   r  r:  r   rv   r    test_default_level  s    
rC  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   r+  rh   r   r   gHz>r]   r1   r   rB   c                 S   s   g | ]}| tjqS r   r9   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   rD  )r   r   r   r   r   r    
<dictcomp>  s    z0test_waverec_mixed_precision.<locals>.<dictcomp>)r'   r5   r6   r   r   r&   re   rf   ry   r   r7   r9   r0  r   r	   r<   float64rE  
complex128r   r   r   )r>   funcZifuncr   r   Zcoeffs_realrc   r+   r   r   r    test_waverec_mixed_precision  s@   










rJ  )q
__future__r   r   r   r   	itertoolsr   numpyr'   ZpytestZnumpy.testingr   r   r   r	   r
   r   r   r   r   Zint8r1  r0  rG  rE  rH  rP   rQ   ra   r   r8   Z
complex256AttributeErrorr^   removeZdel_listrS   r   r   FutureWarning
isinstancer@  r   appendZdel_indr!   r/   rA   rE   rH   rJ   rY   rd   rg   rl   markZslowrp   ru   rw   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   r"  r%  r&  r*  r3  r5  r9  r;  r<  r?  rA  rC  rJ  r   r   r   r    <module>   s   (















	,!