
    bMh                        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	 eej        gz  Zeej        gz  Zeej        efgz  Zn# e$ r Y nw xY w ej                    Zdev re                    d           g ZeD ]nZ  e j!                    5   e j"        de#            e$ ej%        e           ej&                  se'                    e            ddd           n# 1 swxY w Y   oeD ]Z(e                    e(           d Z)d	 Z*d
 Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2ej3        j4        d             Z5d Z6d Z7d Z8d Z9d Z:d Z;d Z<d Z=d Z>d Z?d Z@d ZAd ZBd  ZCd! ZDd" ZEd# ZFd$ ZGej3        j4        d%             ZHd& ZId' ZJd( ZKd) ZLd* ZMd+ ZNd, ZOd- ZPd. ZQd/ ZRd0 ZSd1 ZTd2 ZUd3 ZVd4 ZWd5 ZXd6 ZYd7 ZZd8 Z[d9 Z\d: Z]d; Z^d< Z_d= Z`d> Zad? Zbd@ ZcdA ZddB ZedC ZfdD ZgdE ZhdF ZidG ZjdH ZkdI ZldS )J    N)combinations)assert_assert_allcloseassert_almost_equalassert_array_equalassert_equalassert_raisesassert_raises_regexassert_warnsư>gvIh%<=dmeyignorec                  \   g d} t          j        d          }t          j        | |          \  }}}}t          |dg           t          |dg           t	          |ddg           t	          |g d           t          t          j        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cD1s         Z/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pywt/tests/test_multilevel.pytest_wavedecr$   E   s    !!!A
,u

Ca--Cc3j\***k]+++C"d$$$CCCCDDDDs1vvs++q011111    c                     t          t          t          j        t	          j        d          d           t          t          t          j        g d           g d} t          j        | d          }t          j        |          \  }}t          j        ||          }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messages         r#   test_waverec_invalid_inputsr5   P   s    *dlBGAJJ??? *dlB777 	"!!A\!U##F,V44C*3==O2G
GT\?         r%   c                     t           j                            d          } |                     d          }t          D ]\  }}|                    |          }t          j        |          r8|d|                     d                              |j        j                  z  z  }t          j
        |d          }t          t          j        |d          |||           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   r0   s         r#   test_waverec_accuraciesrI   a   s    Y""4((F	aB( L LCIIbMM?1 	9FLLOO**16<8888Aa''VU33QSsKKKKKL Lr%   c                      g d} t          j        | d          }d |d<   d |d<   t          t          j        |d          j        t          |                      d S )Nr   r      r   )r   r   r   r+   sizer   r   r0   s     r#   test_waverec_nonerN   l   s]    !!!A\!U##F F1IF1IDL'',c!ff55555r%   c                      g d} t          j        | d          }t          t          j        |d          | d           d S )N)r   r   r   r   r   r   r   -q=r;   )r   r   r   r+   rM   s     r#   test_waverec_odd_lengthrR   v   sE    A\!U##FDL//??????r%   c                      t          j        g d          } | dz   } t          j        | d          }t	          t          j        |d          | d           d S )Nr   r8   r   rP   rQ   )r,   arrayr   r   r   r+   rM   s     r#   test_waverec_complexrU   |   sY    
***++A	BA\!U##FDL//??????r%   c                  x   t          j        d          } t          t          t                    D ]\  }}t          j        d|          }d| d}t          j        || d          }|D ]}t          |j	        |k    d|z              t          j
        ||           }t          |j	        |k    d	|z              d S )
Nr(   r'   rC   wrong dtype returned for  inputrK   levelz	wavedec: z	waverec: )r   r   zip	dtypes_in
dtypes_outr,   r-   r   r   rC   r+   )waveletdt_indt_outr   errmsgr0   cx_roundtrips           r#   test_multilevel_dtypes_1dre      s    l6""GY
33 	C 	CvGAU###:U:::a222 	= 	=AAGv%{V';<<<<l6733!V+[6-ABBBB	C 	Cr%   c            	      <   t           j                            d          } |                     d          }t          D ]_}t
          j        j        D ]K}t          j        |||          }t          t          j
        |||          |t          t                     L`d S )Nr7   P   moder;   r:   )r,   r<   r=   r>   wavelistr   Modesmodesr   r   r+   
tol_singlerE   rr_   ri   r0   s        r#   test_waverec_all_wavelets_modesrq      s    Y""4((FRA A AJ$ 	A 	AD\!W4888FDLtDDDJZA A A A A	AA Ar%   c                     t           j                            d          } |                     dd          }t          D ]\  }}|                    |          }t          j        |          r9|d|                     dd                              |j        j                  z  z  }t          j
        |d          }t          t          |          dk               t          t          j        |d          |||           d S )Nr7   r   r8   r   r   r9   )r,   r<   r=   r>   r?   r@   rA   rB   rC   r   wavedec2r   r   r   waverec2rD   s         r#   test_waverec2_accuraciesru      s    Y""4((F	a		B( M MCIIbMM?1 	<FLLA&&--afl;;;;Aq%((Fq !!!fe44acLLLLLM Mr%   c                      t          j        d          } t          t          t                    D ]\  }}t          j        d|          }d| d}t          j        || d          \  }}}t          |j	        |k    d|z              |D ]}t          |j	        |k    d|z              |D ]}t          |j	        |k    d|z              t          j
        |||g|           }	t          |	j	        |k    d	|z              d S )
Nr(   r'   r'   rW   rX   rY   rK   rZ   z
wavedec2: z
waverec2: )r   r   r\   r]   r^   r,   r-   rs   r   rC   rt   )
r_   r`   ra   r   rb   cAcoeffsD2coeffsD1rc   rd   s
             r#   test_multilevel_dtypes_2dr{      s-   l6""GY
33 D DvGF%(((:U:::!%q'!C!C!CHhF"L6$9::: 	> 	>AAGv%|f'<==== 	> 	>AAGv%|f'<====mR8$<gFF!V+\F-BCCCCD Dr%   c            	      >   t           j                            d          } |                     dd          }t          D ]_}t
          j        j        D ]K}t          j        |||          }t          t          j
        |||          |t          t                     L`d S Nr7   rg   `   rh   rj   )r,   r<   r=   r>   rk   r   rl   rm   rs   r   rt   rn   ro   s        r#    test_waverec2_all_wavelets_modesr           Y""4((FRA A AJ$ 	A 	AD]1gD999FDM&'EEEJZA A A A A	AA Ar%   c                      t          j        d          dz   } t          j        | d          }t	          t          |          dk               t          t          j        |d          | d           d S )Nr   r   r8   r   r   rP   rQ   )r,   r-   r   rs   r   r   r   rt   datar0   s     r#   test_wavedec2_complexr      se    76??RD]4''FCKK1DM&%00$UCCCCCCr%   c                  p    t          j        d          } t          t          t          j        | d           d S )Nr   r(   )r,   r-   r	   r*   r   rs   r   s    r#   test_wavedec2_invalid_inputsr      s+    71::D*dmT6:::::r%   c                  h   t          t          t          j        t	          j        d          d           t          t          t          j        g d           t          j        t          j        fD ]D}  | t	          j        d          d          }d}t          t          |t          j        |d           Ed S Nrw   r(   r)   )	r	   r*   r   rt   r,   r-   r   wavedecnr
   dec_funcr0   r4   s      r#   test_waverec2_invalid_inputsr      s    *dmRWV__fEEE *dmR888 \4=1 $ $"'&//6226J"	$ 	$ 	$ 	$$ $r%   c                  "   t          j        d          } t          j        | d          }t	          |          }t	          |d                   |d<   t          j        d          |d         d<   t          t          t          j        |d           d S )Nrw   r   r   )   r   )	r,   r-   r   rs   listzerosr	   r*   rt   rM   s     r#   "test_waverec2_coeff_shape_mismatchr      ss    
A]1e$$F &\\FVAYF1I8G$$F1IaL*dmVU;;;;;r%   c                      t          j        d          } t          j        | d          }t	          t          j        |d          | d           d S )N)
   r   r   rP   rQ   )r,   r-   r   rs   r   rt   rM   s     r#   test_waverec2_odd_lengthr      sI    
A]1e$$FDM&%00!%@@@@@@r%   c                      t          j        d                              dd          } t          j        | d          }d|d<   t          | j        t          j        |d          j        k               d S )N   r   r   r   NNNr   )r,   arangereshaper   rs   r   shapert   rM   s     r#   test_waverec2_none_coeffsr      sc    
	"a##A]1e$$F"F1IAGt}VU3399:::::r%   c                  B   t           j                            d          } t          dd          D ]n} | j        d|z   }t          j        |d          }t          t          |          dk               t          t          j
        |d          |t                     od S )Nr7   r   r   )r   r   r   rQ   )r,   r<   r=   ranger>   r   r   r   r   r   waverecn
tol_double)rE   ndr   r0   s       r#   test_waverecnr     s    Y""4((FAqkk J JFL%(#q%((Fq !!!fe44ajIIIII	J Jr%   c                     t          j        d          i i g} t          t          j        | d          j        d           t          t          j        | d          j        d           t          j        d          i dt          j        d          ig} t          j        d          i i dt          j        d          ig} t          t          j        | d          j        d           d S )NrK   rK   rK   r   r'   r'   r'   daar   r   r   )r   r   r   )r,   r-   r   r   r   r   r0   s    r#   test_waverecn_empty_coeffr     s    gi  "b)Fvu--3Y???vu--3Y???gi  "ubgi.@.@&ABFgi  "b5"')2D2D*EFFvu--3\BBBBBr%   c                     d i g} t          t          t          j        | d           t	          j        d          i dd ig} t          t          t          j        | d           t	          j        d          t	          j        d          t	          j        d          dg} t          t          t          j        | d           t	          j        d          t	          j        d          t	          j        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   s    r#   test_waverecn_invalid_coeffsr     sS   BZF*dmVU;;; gi  "udm6F*dmVU;;; gi  "')*<*<*,')*<*<#> #> ?F*dmVU;;; gi  "')*<*<)+););#= #= >F*dmVU;;; wi3%	C5'SE7)LLMF*dmVU;;; *dmR88888r%   c                      t           j        t           j        fD ]D}  | t          j        d          d          }d}t          t          |t           j        |d           Ed S r   )r   r   rs   r,   r-   r
   r*   r   r   s      r#   test_waverecn_invalid_inputsr   1  sh     \4=1 $ $"'&//6226J"	$ 	$ 	$ 	$$ $r%   c                  v    dggdggdggdggdg} t          t          j        | d          j        d           d S )Nr   r   r   r   )rK   rK   )r   r   r   r   r   s    r#   test_waverecn_listsr   ;  sK    ugugseWcUGDDEFvu--3V<<<<<r%   c                      t          j        d          dt          j        d          ig} t          t          t          j        | d           d S )Nr   adar   r   )r,   r-   r	   r*   r   r   r   s    r#   test_waverecn_invalid_coeffs2r   A  s?    gi  5"'&//":;F*dmVU;;;;;r%   c                      t          j        d          } t          t          t          j        | d           t          j        d          } t          t          t          j        | dd           d S )Nr   r(   r   rZ   )r,   rT   r	   r*   r   r   r-   r   s    r#   test_wavedecn_invalid_inputsr   G  sU    8A;;D*dmT6::: 72;;D*dmT6DDDDDDr%   c            	      
   t          j        d                              dd          } d}t          j        t          j        t          j        g}t          j        t          j        t          j	        g}t          j                    5  t          j        dt                     t          ||          D ]:\  }}dD ]2} || d|d          } ||d|	          }t          | |||
           3;	 d d d            d S # 1 swxY w Y   d S )N@   r'   rP   r   )periodization	symmetricr(      ri   r[   rh   r9   )r,   r   r   r   r   rs   r   r+   rt   r   warningscatch_warningssimplefilterUserWarningr\   r   )	r   rH   	dec_funcs	rec_funcsr   rec_funcri   r0   rp   s	            r#   test_wavedecn_many_levelsr   Q  sg   9R==  A&&D
Ct}dm<It}dm<I		 	"	" A Ah444"%i";"; 	A 	AHh6 A A%XdFRHHHF d;;;A#D!#C@@@@@A	AA A A A A A A A A A A A A A A A A As   A&C88C<?C<c                     t           j                            d          } |                     ddd          }t          D ]\  }}|                    |          }t          j        |          r:|d|                     ddd                              |j        j                  z  z  }t          j
        |                    |          d          }t          t          j        |d          |||           d S )Nr7   r   r8   r   r9   )r,   r<   r=   r>   r?   r@   rA   rB   rC   r   r   r   r   rD   s         r#   test_waverecn_accuraciesr   `  s    Y""4((F	aA		B( M MCIIbMM?1 	?FLLAq))00>>>>Aqxx||U33fe44acLLLLLM Mr%   c                  T   t          j        d          } t          t          t                    D ]\  }}t          j        d|          }d| d}t          j        || d          \  }}}t          |j	        |k    d|z              |
                                D ]!\  }}	t          |	j	        |k    d|z              "|
                                D ]!\  }}	t          |	j	        |k    d|z              "t          j        |||g|           }
t          |
j	        |k    d	|z              d S )
Nr(   rw   rW   rX   rY   rK   rZ   z
wavedecn: z
waverecn: )r   r   r\   r]   r^   r,   r-   r   r   rC   itemsr   )r_   r`   ra   r   rb   rx   ry   rz   keyrc   rd   s              r#   test_multilevel_dtypes_ndr   l  sI   l6""GY
33 D DvGF%(((:U:::!%q'!C!C!CHhF"L6$9:::nn&& 	> 	>FCAGv%|f'<====nn&& 	> 	>FCAGv%|f'<====mR8$<gFF!V+\F-BCCCCD Dr%   c                      t          j        d          dz   } t          j        | d          }t	          t          j        |d          | d           d S )Nr   r8   r   rP   rQ   )r,   r-   r   r   r   r   r   s     r#   test_wavedecn_complexr   |  sN    79"D]4''FDM&%00$UCCCCCCr%   c                      t          j        d          } t          D ]S\  }}t          j        |                     |          d          }t          t          j        |d          | ||           Td S )Nr   r   r9   )r,   r-   r?   r   r   r@   r   r   )r   rG   rH   r0   s       r#   test_waverecn_dtypesr     ss    
	A( M MCqxx||U33fe44acLLLLLM Mr%   c            	      >   t           j                            d          } |                     dd          }t          D ]_}t
          j        j        D ]K}t          j        |||          }t          t          j
        |||          |t          t                     L`d S r}   )r,   r<   r=   r>   rk   r   rl   rm   r   r   r   rn   ro   s        r#    test_waverecn_all_wavelets_modesr     r   r%   c                  f   t          j        d                              dd          g} t          j        |           \  }}t          || d                    t          |||d                             t          t          t          j        g            t          t          t          j        | d         gdz             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          j        dg          t          j        dg          t          j        dg          dg}t          t          t          j        |           d S )Nr'   rK   r   r   r   )drc   )	r,   r   r   r   r.   r   r	   r*   rT   )a_coeffsr1   
arr_slicesr0   s       r#   test_coeffs_to_arrayr     sr   	!$$Q**-H*844OCC!%%%CZ]+,,,*d2B777*d2Xa[Oa4GHHH*d2Xa[6>qk_5F G G G *d2TH===*d2X5G5I J J J *d2Xt4DEEE hsmm28QC==rx}}EEFF*d2F;;;;;r%   c            	         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         z   }t          j        j        D ]}t          D ]}t          j        |          }t          j        t          j        |j                  |j                  }|d	k    rN ||         d
         |||          }	t          j        |	          \  }
}t          j        |
||          } ||         d         |||          }t+          ||dd           ČΌd S )Nr7   r   r   decrecrK   r   r   rs   r      r   r   r   rh   output_formatr   -C6?rj   )r,   r<   r=   r   r   r+   rs   rt   r   r   r>   rl   rm   rk   r   r   minr   dec_lenr.   r/   r   )rngparamsNfx1ri   wavewmaxlevelr0   	coeff_arrr2   coeffs2x1rs                 r#    test_wavedecn_coeff_reshape_evenr     s    )


%
%C dlKK !$-NN !$-NNP PF 	A ? ?SY!vay~-/J$ 	? 	?D  ? ?L&&-bfRX.>.>	JJq==)5)"ad;;;*.*>v*F*F'	<.y,=>@ @ @&fQi&w===Cd>>>>>?	?? ?r%   c                  L   t           j                            d          } d}t          j        d          }d}d}dD ]} | j        |g|z   }t          j        ||||          }t          j        ||          \  }}	| t          t          t          j        |           t          t          t          j        |d	           t          t          t          j        |d
           t          j
        ||	          }
t          j        |
|||          }t          ||dd           d S )Nr7   r   db2r   r   ))r   r   r   r   r   r   rK   r   rK   Nri   axesr   r   r   rK   r    r   rj   )r,   r<   r=   r   r   r>   r   r.   r	   r*   r/   r   r   )r   ri   r   r   ndimr   r   r0   r   r2   r   r   s               r#   'test_wavedecn_coeff_reshape_axes_subsetr    s?    )


%
%CDUA
ADD 7 7SY!t%r14d;;;"&"6vD"I"I"I	<*d&:FCCC 	j$"6'	) 	) 	) 	)j$"6	 	 	 	 &y,??mGQT===Cd66666#7 7r%   c                  $   t           j                            d          } |                     dd          }d}t	          j        |d|          }t          t          t          j        |d            t	          j        |t           j	                  \  }}t          j
        t          j        |                    }t          |dk               t	          j        |d          \  }}t          t          j
        t          j        |                    dk               t          t          j
        |dk              |k               t	          j        |d|          }t	          j        |d           \  }}t          |j        |j                   d S )	Nr7       r   r   rh   )paddingr   r(   )r,   r<   r=   r>   r   r   r	   r*   r.   nansumisnanr   r   r   )r   r   ri   r0   r   r2   npadcoeffs_haars           r#   test_coeffs_to_array_paddingr
    sZ   
)


%
%C	2r		BD]2u4000F *d2FDIIII #2626JJJI|6"(9%%&&DD1H #261EEEI|BF28I&&''1,---BF9>""d*+++ -F666K"2;MMMI|"(+++++r%   c                  \   t           j                            d          } |                     dd          }t          j        j        D ]}dD ]}t	          j        |          }t	          j        t          j	        |j
                  |j                  }|dk    rNt	          j        |||          }t	          j        |          \  }}t	          j        ||          }	t	          j        |	||          }
|
t!          d |j
        D                                }
t#          ||
dd	           d S )
Nr7   #   !   r(   r   rh   c                 ,    g | ]}t          |          S r   slice.0ss     r#   
<listcomp>z3test_waverecn_coeff_reshape_odd.<locals>.<listcomp>      888!U1XX888r%   r   rj   )r,   r<   r=   r>   r   rl   rm   r   r   r   r   r   r   r.   r/   r   tupler   )r   r   ri   r   r   r   r0   r   r2   r   r   s              r#   test_waverecn_coeff_reshape_oddr    s)    )


%
%C	2r		B
  ; ; 	; 	;DT""A)"&*:*:AIFFH1}}]2qt444F&*&:6&B&B#I|*9lCCG-666Ce88rx88899:CB$T:::::	;; ;r%   c                     t          j        t          j        d          d          } t          j        |           \  }}t          t          t           j        |g            t          t          t           j        ||d           d S )NrK   r(   r   )r   r   r,   r-   r.   r	   r*   r/   )r0   r1   r   s      r#   #test_array_to_coeffs_invalid_inputsr    si    ]271::v..F*622OC *d2C<<< *d2CUKKKKKr%   c            	         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         z   }t          j        j        D ]}t          D ]}t          j        |          }t          j        t          j        |j                  |j                  }|d	k    rN ||         d
         |||          }	t          j        |	          \  }
}}t          j        |
|||          } ||         d         |||          }t+          ||dd           ƌЌd S )Nr7   r   r   rK   r   r      r   r   r   rh   r   r   r   rj   )r,   r<   r=   r   r   r+   rs   rt   r   r   r>   rl   rm   rk   r   r   r   r   r   ravel_coeffsunravel_coeffsr   )r   r   r   r   r   ri   r   r   r   r0   r   slicesshapesr   r   s                  r#   test_wavedecn_coeff_ravelr!     s    )


%
%C dlKK !$-NN !$-NNP PF 	A ? ?SY!vay~-/J$ 	? 	?D  ? ?L&&-bfRX.>.>	JJq==)5)"ad;;;,0,=f,E,E)	66-i<=? ? ?&fQi&w===Cd>>>>>?	?? ?r%   c                  b   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         z   }t          j        j        D ]}t          j        d	          } ||         d
         |||d          }t          j        |          \  }}	}
t          j        ||	|
|          } ||         d         |||          }t!          ||dd           d S )Nr7   r   r   rK   r   r   r   r   r   r   r   r   r   r   rh   r   rj   )r,   r<   r=   r   r   r+   rs   rt   r   r   r>   rl   rm   r   r  r  r   )r   r   r   r   r   ri   r   r0   r   r  r   r   r   s                r#   $test_wavedecn_coeff_ravel_zero_levelr#  ;  sP    )


%
%C dlKK !$-NN !$-NNP PF 	A ; ;SY!vay~-/J$ 		; 		;DU##A%VAYu%b!$a@@@F(,(9&(A(A%Ivv))VV89; ; ;G"&)E"7AD999CB$T:::::		;; ;r%   c                  `   t           j                            d          } |                     dd          }t          j        j        D ]}dD ]}t	          j        |          }t	          j        t          j	        |j
                  |j                  }|dk    rNt	          j        |||          }t	          j        |          \  }}}	t	          j        |||	          }
t	          j        |
||          }|t!          d |j
        D                                }t#          ||dd	           d S )
Nr7   r  r  r  r   rh   c                 ,    g | ]}t          |          S r   r  r  s     r#   r  z1test_waverecn_coeff_ravel_odd.<locals>.<listcomp>b  r  r%   r   rj   )r,   r<   r=   r>   r   rl   rm   r   r   r   r   r   r   r  r  r   r  r   )r   r   ri   r   r   r   r0   r   r  r   r   r   s               r#   test_waverecn_coeff_ravel_oddr&  R  s-    )


%
%C	2r		B
  ; ; 	; 	;DT""A)"&*:*:AIFFH1}}]2qt444F(,(9&(A(A%Ivv))VVDDG-666Ce88rx88899:CB$T:::::	;; ;r%   c                     t          j        d          } t          j        d          }t          j        | |          }d |dd          D             |dd <   t          j        |          \  }}}t          j        |||d          }t          j        ||          }t          | |dd           d	 |dd          D             |dd <   t          t          t          j        |           d S )
Nrw   r(   c                 ,    g | ]}t          |          S r   r   r  rc   s     r#   r  z2test_ravel_wavedec2_with_lists.<locals>.<listcomp>l  s    ...a$q''...r%   r   rs   r   r   rj   c                 <    g | ]}t          |d d                   S )Nr   r)  r*  s     r#   r  z2test_ravel_wavedec2_with_lists.<locals>.<listcomp>t  s&    3331$q"v,,333r%   )r,   r-   r   r   rs   r  r  rt   r   r	   r*   )r   wavr0   r   r  r   r   r   s           r#   test_ravel_wavedec2_with_listsr-  f  s    	B
,v

C]2s##F /.6!"":...F122J $ 1& 9 9Ivv!)VV0:< < <G
-
%
%CB$T2222 43qrr
333F122J*d/88888r%   c                  r   t          j        t          j        d          d          } d | d<   t	          t
          t           j        |            t          j        t          j        d          d          } d| d<   t	          t
          t           j        |            g d| d<   t	          t
          t           j        |            d | d<   t	          t
          t           j        |            t          j        t          j        d          d          } d | d         d<   t	          t
          t           j        |            d S )Nr'   r(   r   rw   r   r   ddd)	r   r   r,   r-   r	   r*   r  rs   r   r   s    r#   test_ravel_invalid_inputr0  x  s    \"'!**f--FF1I*d/888 ]276??F33F"F1I*d/888"""F1I*d/888F1I*d/888 ]279--v66FF1Ie*d/88888r%   c                     t          j        t          j        d          d          } t          j        |           \  }}}t          t          t           j        ||g            t          t          t           j        |g |           t          t          t           j        ||d d         |           t          t          t           j        |||d           d S )NrK   r(   r   r   )r   r   r,   r-   r  r	   r*   r  )r0   r1   r  r   s       r#   test_unravel_invalid_inputsr2    s    ]271::v..F+F33C *d13CCC*d13FCCC *d13ssVLLL *d13NNNNNr%   c            	         t          j        d          } dD ]C}dD ]<}t           j        j        D ]&}t          j        t          j        |          | ||          }t          j        || ||          }t          |d         j	        |d                    |d         j
        }t          dt          |                    D ]M}||                                         D ]0\  }}	||	j
        z  }t          ||         |         |	j	                   1Nt          j        |          }
t          |
|           t          j        |          }
t          |
|           (>Ed S )Nr   )r  )r   r  )r         Nr   r   r   r   r   )r   r   rl   rm   r   r,   r-   wavedecn_shapesr   r   rL   r   r   r   wavedecn_size)r,  
data_shaper   ri   r0   r   expected_sizer[   kvrL   s              r#   test_wavedecn_shapes_and_sizer>    s   
,u

C5 2 2
! 	2 	2D
( 2 2rwz':':C,0t= = = -j#37dD D D VAY_fQi888 &q	"1c&kk22 @ @E &u 3 3 5 5 @ @1%/$VE]1%5qw????@
 )&11T=111)&11T=1111)2	22 2r%   c                  >   t          j        d          dfD ]} dD ]}dD ]{}t           j        j        D ]g}t          j        t          j        |          | ||          }t          j        || |          }t          t          |dd                    |           h|d S )Nr   sym8r4  r7  r   r   )
r   r   rl   rm   r   r,   r-   dwtn_max_levelr   r   )r,  r:  r   ri   r0   max_levs         r#   test_dwtn_max_levelrC    s    U##V, ; ;9 	; 	;J% ; ; J, ; ;D!]27:+>+>044A A AF"1*c4HHG VABBZ'::::	;;	;; ;r%   c                      t           j                            d          } |                     d          }dD ]B}t	          j        |d|          }t	          j        |d|          }t          ||d           Cd S )Nr   r   r   r   rK   r(   axis+=r:   r,   r<   r=   standard_normalr   r   r+   r   rE   r   rG  coefsr   s        r#   test_waverec_axes_subsetsrN    s    Y""1%%F!!),,D / /T6555l5&t444T...../ /r%   c                      t           j                            d          } |                     d          }dD ]B}t	          j        |d|          }t	          j        |d|          }t          ||d           Cd S )Nr   r   r   r   r   rF  rH  rI  rJ  rL  s        r#   test_waverec_axis_db2rQ    s    Y""1%%F!!(++D / /T5t444l5%d333T...../ /r%   c                     t           j                            d          } |                     d          }t	          dd          D ]B}t          j        |d|          }t          j        |d|          }t          ||d           Cd S )	Nr   r   rE  rK   r(   r   rH  rI  )	r,   r<   r=   rK  r   r   rs   rt   r   rE   r   r   rM  r   s        r#   test_waverec2_axes_subsetsrT    s    Y""1%%F!!),,DY** / /dF666mE6555T...../ /r%   c                     t           j                            d          } |                     d          }t	          dd          D ]B}t          j        |d|          }t          j        |d|          }t          ||d           Cd S )	Nr   )r'   r'   r'   r'   r   r   r(   r   rH  rI  )	r,   r<   r=   rK  r   r   r   r   r   rS  s        r#   test_waverecn_axes_subsetsrV    s    Y""1%%F!!,//D\1-- / /dF666mE6555T...../ /r%   c                      t           j                            d          } |                     d          }dD ]B}t	          j        |d|          }t	          j        |d|          }t          ||d           Cd S )Nr   rw   r   r(   r   rH  rI  )r,   r<   r=   rK  r   r   r   r   rL  s        r#   test_waverecn_int_axisrX    s    Y""1%%F!!&))D / /dF666mE6555T...../ /r%   c                  t    t          j        d          } t          t          t          j        | dd           d S Nr   r(   r   rF  )r,   r-   r	   r*   r   r   r   s    r#   test_wavedec_axis_errorr[    s0    71::D*dlD&qAAAAAAr%   c                      t          j        t          j        d          d          } t	          t
          t           j        | dd           d S rZ  r   r   r,   r-   r	   r*   r+   rc   s    r#   test_waverec_axis_errorr_    s<    RWQZZ((A*dlAvA>>>>>>r%   c                      t          j        t          j        d          d          } | d         d d         | d<   t	          t
          t           j        | dd           d S )Nr   r(   r   r   r   rF  r]  r^  s    r#   !test_waverec_shape_mismatch_errorra    sQ    RWR[[&))AQ49AaD*dlAvA>>>>>>r%   c                      t          j        d          } t          t          t          j        | dd           t          t          t          j        | dd           t          t          t          j        | dd           d S Nr   r(   r   r   )r   r   r   )r,   r-   r	   	TypeErrorr   rs   r*   r   s    r#   test_wavedec2_axes_errorsre    sf    76??D)T]D&qAAAA*dmT6GGGG*dmT6GGGGGGr%   c                  *   t          j        d          } t          j        | d          }t	          t
          t          j        |dd           t	          t          t          j        |dd           t	          t          t          j        |dd           d S rc  )r,   r-   r   rs   r	   rd  rt   r*   r   rc   s     r#   test_waverec2_axes_errorsrh    sw    76??DdF##A)T]AvA>>>>*dmQVDDDD*dmQVDDDDDDr%   c                      t          j        d          } t          t          t          j        | dd           t          t          t          j        | dd           d S Nr   r(   r   r   r   )r   r   r   )r,   r-   r	   r*   r   r   r   s    r#   test_wavedecn_axes_errorsrl    sM    79D*dmT6GGGG*dmT6	JJJJJJr%   c                      t          j        d          } t          j        | d          }t	          t
          t          j        |dd           t	          t
          t          j        |dd           d S rj  )r,   r-   r   r   r	   r*   r   rg  s     r#   test_waverecn_axes_errorsrn  %  s^    79DdF##A*dmQVDDDD*dmQYGGGGGGr%   c            	         t           j                            d          } |                     ddd          }t	          j        d          ddf}d t          |j        |          D             }dd	t          j        j	        j
        j        f}t	          j        |||          }t          t	          j        |||          |d
           t          t!          |          t#          |dd                               t	          j        ||d d         |          }t          t	          j        ||d d         |          |d
           t	          j        |||d d                   }t          t	          j        |||d d                   |d
           t%          t&          t          j        ||d d                    t%          t&          t          j        |||d d                    t%          t&          t          j        ||d d                    t%          t&          t          j        |||d d                    |d         }t	          j        ||d d         |d d                   }t          t	          j        ||d d         |d d                   |d
           t          t!          |d d                   t#          |dd                               d S )Nr7   r   r   r(   sym2r   c                 T    g | ]%\  }}t           j                            ||          &S r   )r   _dwtr   )r  r   nfs      r#   r  z4test_per_axis_wavelets_and_modes.<locals>.<listcomp>7  s:     - - -fb"$)))"b11 - - -r%   r   r   rH  rI  r   rK   rh   ).r   )r,   r<   r=   r>   r   r   r\   r   _extensions_pywtrl   reflectr   r   r   r   r   r   r	   r*   rs   rt   )rE   r   wavelets
max_levelsrm   rM  data2coefs2s           r#    test_per_axis_wavelets_and_modesr{  .  s   Y""4((F<<B##D V$$fe4H- -dj(++- - -J /#)13E M$%00EDM%5994eLLLLZ#eABBi..111M$!e44EDM%"1"u==t        M$%)44EDM%5!9==t        *dmT8BQB<@@@*dmT8%)LLLL*dmUHRaRLAAA*dmUH5!9MMMM LE]5(2A2,bqb	::FDM&(2A2,bqb	BBE       Z^$$c&*oo66666r%   c            	      h   t           j                            d          } t          dd          D ] }t	          t
          t                    D ]\  }}dD ]}|                     d|z            }|                    |          }t          j
        |d|          }t          j        |          }|j        j        t           j        t           j        fv rt!          ||dd	           nt!          ||d
d
	           t#          |j        j        |k               t#          |j        |k               یd S )Nr   r   r   )r   Nr'   r(   levelsr   rj   rH  )r,   r<   r=   r   r\   r]   r^   rK  r@   r   
fswavedecn
fswaverecnrB   rC   float32float16r   r   r0   )rE   r   r`   ra   r  r   Tr   s           r#   $test_fswavedecn_fswaverecn_roundtripr  Z  s5    Y""1%%Fa - - J77 	- 	-ME6# 
- 
---eDj99{{5))OD&@@@oa((9?rz2:&>>>#CDtDDDDD#CEFFFF&0111	V+,,,,
-	-- -r%   c                  "   t           j                            d          } d}|                     d|z            }t	          j        |dd          }t          |j        |           t	          j        |          }t          |j        |           d S )Nr   rK   r}  r(   r~  )	r,   r<   r=   rK  r   r  r   r0   r  rE   r   r   r  r   s        r#   &test_fswavedecn_fswaverecn_zero_levelsr  m  s    Y""1%%FD!!%*--DfQ///Aqx&&&
/!

Cqx%%%%%r%   c                  6   t           j                            d          } d}|                     d|z            }t	          j        |dd          }t	          j        |          }t          ||d           t          t          t          j        |dd	           t          t          t          j        |dd
           t          t          t          j        |dt          t          j        t          j        |j                                      dz              d S )Nr   r   r   r(   )r   rK   r   r~  rH  rI  rk  )r   r   r   r   r   )r,   r<   r=   rK  r   r  r  r   r	   r*   r   r   intlog2r   r   r  s        r#   *test_fswavedecn_fswaverecn_variable_levelsr  x  s    Y""1%%FD!!&+..DfY777A
/!

CCE**** *dotVFKKKK*dotVLQQQQ dotVBGBF4:$6$67788:< < < < < <r%   c            	      p   t           j                            d          } d}|                     d|z            }d}d}t	          j        |||          }t          |          D ]Q}t          t          |j	        |                   t	          j
        |j        |         ||                   dz              Rt	          j        |          }t          ||d	           t          t          t          j        ||d d
                    t          t          t          j        ||d         |d d
                    d S )Nr   r   r  )r(   r   sym3)periodicr   r   )r_   ri   r   rH  rI  rK   rh   )r,   r<   r=   rK  r   r  r   r   r   r2   r   r   r  r   r	   r*   )rE   r   r   rw  rm   r  axr   s           r#   6test_fswavedecn_fswaverecn_variable_wavelets_and_modesr    s*   Y""1%%FD!!&+..D&H6EhU;;;ADkk I IS+,,'
2EEaG	I 	I 	I 	I /!

CCE**** *dotXbqb\BBB *dotXa[uRaRyQQQQQQr%   c                  T   t           j                            d          } |                     d          }t	          dd          D ]?}t          j        |d|          }t          j        |          }t          ||d           @t          t          t
          j        |dd	           d
S )z.Fully separable DWT over only a subset of axesr   )r   r'   r   r  r   r   r(   r   rH  rI  )r   r   N)r,   r<   r=   rK  r   r   r  r  r   r	   r*   )rE   r   r   r  r   s        r#   'test_fswavedecn_fswaverecn_axes_subsetsr    s    Y""1%%F!!.11D\1-- / /OD&t444oa  T..... *dotV&IIIIIIr%   c                     t          j        d          } d}t          j        | d|          }d| j        z  }t          ||         |j                   |                                }t          ||v           |D ]$}||         }t          |j        | j                   %t          j
        |          ||<   t          t          |j        |t          j        t          d |j        D                                            t#          t$          |j        |t          j
        |                              t           j                             t          |j        j        | j                   d S )N)r  r  r   rp  r~  r   c                     g | ]}|d z   S r   r   r  s     r#   r  z)test_fswavedecnresult.<locals>.<listcomp>  s    $<$<$<qQU$<$<$<r%   )r,   r-   r   r  r   r   approxdetail_keysr   r   
zeros_liker	   r*   __setitem__r   r  r   r   r   r@   r  r0   )r   r  result
approx_keydkeysr<  r   s          r#   test_fswavedecnresultr    sZ   78DF_T6&999F "Jvj)6=999  EJe#$$$  ( (1IQVTY'''' a  F1I *f0RXe$<$<AG$<$<$<==>>@ @ @ f0BM!$$++BJ779 9 9 #TY/////r%   c                     t          j        d          } t          t          j        t          j        t          j        gt          j        t          j        t          j	        g          D ]Z\  }}dt          j
        d          fD ]>}t          t          || |            || d          }t          t          |||           ?[d S )NrP  morl)r_   r   )r,   r-   r\   r   r   rs   r   r+   rt   r   DiscreteContinuousWaveletr	   r*   )r   dec_funrec_funcwaverc   s        r#    test_error_on_continuous_waveletr    s    78Dt}dm L!%t}dm LN N A Ad<VDDE 	A 	AE*gtUCCCCe$$A*gq%@@@@@		AA Ar%   c            	         t          j        d          d} t          j        t          j        fD ]h}dD ]c} || |          }t          j        fdt          ||           D                       }t          t          |dd                    |           didD ]i}t          j        | |         |f          }t          t          |dd                    t          j	        j
        |         | |                              jd S )N)   r  r   )db8r   )r   )rK   r   r   r   c                 V    g | ]%\  }}t          j        j        |         |          &S r   )r   r   r   )r  r  r,  r   s      r#   r  z&test_default_level.<locals>.<listcomp>  sF     A A A")"c #0BEE A A Ar%   r   r   )r,   r-   r   rs   r   r   r\   r   r   r   r   )r_   r   r   rc   rB  r  r   s         @r#   test_default_levelr    sD   7<  DG]DM2 . ., 	. 	.DwT222Af A A A A-0w-?-?A A A B BGQqrrUW----		.  F FM$2&999S122ZZ'
2DD	F 	F 	F 	FF Fr%   c                  f   t           j                            d          } t          j        t          j        dft          j        t          j        dft          j        t          j	        dffD ]E\  }}} | j
        | } ||d          }|d                             t           j                  |d<    ||d          }t          ||dd           t          |j        t           j                   |d|z  z   } ||d          }|d                             t           j                  |d<    ||d          }t          ||dd           t          |j        t           j                   |j        d	k    rP|d                             t           j                  |d<   |d	                             t           j                  |d	<   |j        d
k    rJ|d                             t           j                  |d<   t)          d |d	         D                       |d	<   |j        dk    rO|d                             t           j                  |d<   d |d	                                         D             |d	<    ||d          }t          ||dd           t          |j        t           j                   Gd S )Nr   r}  rw   r   r   gHz>rj   r8   r   rK   c                 L    g | ]!}|                     t          j                  "S r   r@   r,   	complex64)r  r=  s     r#   r  z0test_waverec_mixed_precision.<locals>.<listcomp>  s&    III!qxx55IIIr%   r   c                 T    i | ]%\  }}||                     t          j                  &S r   r  )r  r<  r=  s      r#   
<dictcomp>z0test_waverec_mixed_precision.<locals>.<dictcomp>  s<     8 8 8!Q AHHR\22 8 8 8r%   )r,   r<   r=   r   r   r+   rs   rt   r   r   r>   r@   r  r   r   rC   float64r  
complex128r   r  r   )rE   funcifuncr   r   coeffs_realrp   r0   s           r#   test_waverec_mixed_precisionr    s   Y""1%%F $dlEB $t}fE $t}iHJ "- "-eU FL% d1enn %Q..rz::AE+u%%14d3333QWbj)))1Ha 1I$$R\22q	E&%  14d3333QWbm,,, 6Q;;q	((77F1Iq	((66F1I6Q;;q	((77F1IIIvayIIIJJF1I6Q;;q	((77F1I8 8%+AY__%6%68 8 8F1IE&%  14d3333QWbm,,,,E"- "-r%   )mr   	itertoolsr   numpyr,   pytestnumpy.testingr   r   r   r   r   r	   r
   r   r   int8r  r  r  r  r  r]   r^   rn   r   r?   
complex256AttributeErrorrk   removedel_listr_   r   r   FutureWarning
isinstancer  r   appenddel_indr$   r5   rI   rN   rR   rU   re   rq   ru   r{   markslowr   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  r>  rC  rN  rQ  rT  rV  rX  r[  r_  ra  re  rh  rl  rn  r{  r  r  r  r  r  r  r  r  r  r   r%   r#   <module>r     s    " " " " " "     	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 
 Wbj"*bj",]	j"*bj"*blm
 

*j1BJ
3K*j1BGZ3H,
3-46 	"-""I2=##Jr}j9<< 	 	 	D	
 4=??	XOOF  % %G	 	 	"	" % %h666z8$8AA,( ( 	%OOG$$$	% % % % % % % % % % % % % % %
   GOOG2 2 2     "L L L6 6 6@ @ @@ @ @C C CA A A	M 	M 	MD D D  A A AD D D; ; ;$ $ $< < <A A A; ; ;J J JC C C9 9 96$ $ $= = =< < <E E EA A A	M 	M 	MD D D D D DM M M A A A< < <4? ? ?67 7 7:, , ,4; ; ;(L L L? ? ?6; ; ;.; ; ;(9 9 9$9 9 9*O O O2 2 26	; 	; 	;/ / // / // / // / // / /B B B? ? ?? ? ?H H HE E EK K KH H H'7 '7 '7X- - -&& & &< < <$R R R.J J J0 0 0B	A 	A 	AF F F"$- $- $- $- $-s%   .#C CCAE,,E0	3E0	