
    !Цi                        S SK r S SKJr  S SKrS SKrS SKJrJrJ	r	J
r
JrJrJrJr  S SKr\R                   \R"                  \R$                  \R&                  \R(                  \R*                  /r\R&                  \R$                  \R$                  \R&                  \R(                  \R*                  /rSrSr\R"                  \4\R$                  \4\R&                  \4\R                   \4\R(                  \4\R*                  \4/r \\R6                  /-  r\\R*                  /-  r\\R6                  \4/-  r\R:                  " 5       rS\;   a  \R=                  S5        / r\ Hi  r \ RB                  " 5          \ RD                  " S\#5        \$" \RJ                  " \ 5      \RL                  5      (       d  \RO                  \ 5        SSS5        Mk     \ H  r(\R=                  \(5        M     S r)S	 r*S
 r+S r,S r-S r.S r/S r0S r1S r2\Rf                  Rh                  S 5       r5S r6S r7S r8S r9S r:S r;S r<S r=S r>S r?S r@S rAS rBS  rCS! rDS" rES# rFS$ rG\Rf                  Rh                  S% 5       rHS& rIS' rJS( rKS) rLS* rMS+ rNS, rOS- rPS. rQS/ rRS0 rSS1 rTS2 rUS3 rVS4 rWS5 rXS6 rYS7 rZS8 r[S9 r\S: r]S; r^S< r_S= r`S> raS? rbS@ rcSA rdSB reSC rfSD rgSE rhSF riSG rjSH rkSI rlg! \ a     GNf = f! , (       d  f       GM  = f)J    N)combinations)assert_assert_allcloseassert_almost_equalassert_array_equalassert_equalassert_raisesassert_raises_regexassert_warnsư>gvIh%<=dmeyignorec                  .   / SQn [         R                  " S5      n[         R                  " X5      u  p#pE[        US/5        [        US/5        [	        USS/5        [	        U/ SQ5        [        [         R                  " [        U 5      U5      S:H  5        g )	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         Y/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/pywt/tests/test_multilevel.pytest_wavedecr$   E   sw    !A
,,u
Ca-Ccj\*k]+C"d$CCDDs1vs+q01    c                     [        [        [        R                  [        R
                  " S5      S5        [        [        [        R                  / S5        / SQn [        R                  " U S5      n[        R                  " U5      u  p#[        R                  " X#5      nSn[        [        U[        R                  US5        g )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    *dllBGGAJ? *dllB7 	"A\\!U#F,,V4C**3=O2G
GT\\? r%   c                     [         R                  R                  S5      n U R                  S5      n[         H  u  p#UR                  U5      n[         R                  " U5      (       a:  USU R                  S5      R                  UR                  R                  5      -  -  n[        R                  " US5      n[        [        R                  " US5      XCUS9  M     g )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    YY""4(F	aB(IIbM??1FLLO**166<<888Aa'VU3QsK )r%   c                      / SQn [         R                  " U S5      nS US'   S US'   [        [         R                  " US5      R                  [        U 5      5        g )Nr   r      r   )r   r   r   r+   sizer   r   r0   s     r#   test_waverec_nonerN   l   sJ    !A\\!U#F F1IF1IDLL',,c!f5r%   c                  z    / SQn [         R                  " U S5      n[        [         R                  " US5      U SS9  g )N)r   r   r   r   r   r   r   -q=r;   )r   r   r   r+   rM   s     r#   test_waverec_odd_lengthrR   v   s.    A\\!U#FDLL/?r%   c                      [         R                  " / SQ5      n U S-   n [        R                  " U S5      n[	        [        R
                  " US5      U SS9  g )Nr   r8   r   rP   rQ   )r,   arrayr   r   r   r+   rM   s     r#   test_waverec_complexrU   |   sA    
*+A	BA\\!U#FDLL/?r%   c                  x   [         R                  " S5      n [        [        [        5       H  u  p[
        R                  " SUS9nSU S3n[         R                  " X0SS9nU H  n[        UR                  U:H  SU-   5        M!     [         R                  " XP5      n[        UR                  U:H  S	U-   5        M     g )
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    ll6"GY
3GGAU#,UG6:a2AAGGv%{V';< ll63!!V+[6-AB 4r%   c            
      8   [         R                  R                  S5      n U R                  S5      n[         H`  n[
        R                  R                   H?  n[
        R                  " XUS9n[        [
        R                  " XBUS9U[        [        S9  MA     Mb     g )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      so    YY""4(FRAJJ$$D\\!48FDLLtDJZA % r%   c                     [         R                  R                  S5      n U R                  SS5      n[         H  u  p#UR                  U5      n[         R                  " U5      (       a;  USU R                  SS5      R                  UR                  R                  5      -  -  n[        R                  " US5      n[        [        U5      S:H  5        [        [        R                  " US5      XCUS9  M     g )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    YY""4(F	a	B(IIbM??1FLLA&--affll;;;Aq%(Fq !fe4aL )r%   c                     [         R                  " S5      n [        [        [        5       H  u  p[
        R                  " SUS9nSU S3n[         R                  " X0SS9u  pVn[        UR                  U:H  SU-   5        U H  n[        UR                  U:H  SU-   5        M!     U H  n[        UR                  U:H  SU-   5        M!     [         R                  " XVU/U 5      n	[        U	R                  U:H  S	U-   5        M     g )
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    ll6"GY
3GGF%(,UG6:!%q!ChF"L6$9:AAGGv%|f'<= AAGGv%|f'<= mmR8$<gF!!V+\F-BC 4r%   c            
      :   [         R                  R                  S5      n U R                  SS5      n[         H`  n[
        R                  R                   H?  n[
        R                  " XUS9n[        [
        R                  " XBUS9U[        [        S9  MA     Mb     g Nr7   rg   `   rh   rj   )r,   r<   r=   r>   rk   r   rl   rm   rs   r   rt   rn   ro   s        r#    test_waverec2_all_wavelets_modesr      s     YY""4(FRAJJ$$D]]1D9FDMM&EJZA % r%   c                      [         R                  " S5      S-   n [        R                  " U S5      n[	        [        U5      S:H  5        [        [        R                  " US5      U SS9  g )Nr   r   r8   r   r   rP   rQ   )r,   r-   r   rs   r   r   r   rt   datar0   s     r#   test_wavedec2_complexr      sL    776?RD]]4'FCK1DMM&%0$UCr%   c                  p    [         R                  " S5      n [        [        [        R
                  U S5        g )Nr   r(   )r,   r-   r	   r*   r   rs   r   s    r#   test_wavedec2_invalid_inputsr      s!    771:D*dmmT6:r%   c                  z   [        [        [        R                  [        R
                  " S5      S5        [        [        [        R                  / S5        [        R                  [        R                  4 HC  n U " [        R
                  " S5      S5      nSn[        [        U[        R                  US5        ME     g Nrw   r(   r)   )	r	   r*   r   rt   r,   r-   r   wavedecnr
   dec_funcr0   r4   s      r#   test_waverec2_invalid_inputsr      sy    *dmmRWWV_fE *dmmR8 \\4==1"''&/626J"	$ 2r%   c                     [         R                  " S5      n [        R                  " U S5      n[	        U5      n[	        US   5      US'   [         R
                  " S5      US   S'   [        [        [        R                  US5        g )Nrw   r   r   )   r   )	r,   r-   r   rs   listzerosr	   r*   rt   rM   s     r#   "test_waverec2_coeff_shape_mismatchr      sc    
A]]1e$F &\FVAYF1I88G$F1IaL*dmmVU;r%   c                      [         R                  " S5      n [        R                  " U S5      n[	        [        R
                  " US5      U SS9  g )N)
   r   r   rP   rQ   )r,   r-   r   rs   r   rt   rM   s     r#   test_waverec2_odd_lengthr      s7    
A]]1e$FDMM&%0!%@r%   c                      [         R                  " S5      R                  SS5      n [        R                  " U S5      nSUS'   [        U R                  [        R                  " US5      R                  :H  5        g )N   r   r   r   NNNr   )r,   arangereshaper   rs   r   shapert   rM   s     r#   test_waverec2_none_coeffsr      sW    
		"a#A]]1e$F"F1IAGGt}}VU3999:r%   c                  0   [         R                  R                  S5      n [        SS5       Hg  nU R                  " SU-  6 n[
        R                  " US5      n[        [        U5      S:H  5        [        [
        R                  " US5      U[        S9  Mi     g )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     sp    YY""4(FAqkLL%(#q%(Fq !fe4ajI	 r%   c                     [         R                  " S5      0 0 /n [        [        R                  " U S5      R
                  S5        [        [        R                  " U S5      R
                  S5        [         R                  " S5      0 S[         R                  " S5      0/n [         R                  " S5      0 0 S[         R                  " S5      0/n [        [        R                  " U S5      R
                  S5        g )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    ggi "b)Fvu-33Y?vu-33Y?ggi "ubggi.@&ABFggi "b5"'')2D*EFFvu-33\Br%   c                     S 0 /n [        [        [        R                  U S5        [        R
                  " S5      0 SS 0/n [        [        [        R                  U S5        [        R
                  " S5      [        R
                  " S5      [        R
                  " S5      S./n [        [        [        R                  U S5        [        R
                  " S5      [        R
                  " S5      [        R
                  " S5      S./n [        [        [        R                  U S5        S///S///S///S///S	./n [        [        [        R                  U S5        [        [        [        R                  / S
5        g )Nr   r   r   r   )r   foo)r   da      ?        adr   ddr(   )r	   r*   r   r   r,   r-   r   s    r#   test_waverecn_invalid_coeffsr     s!   BZF*dmmVU; ggi "udm6F*dmmVU; ggi "'')*<*,'')*<#> ?F*dmmVU; ggi "'')*<)+);#= >F*dmmVU; wi3%	C5'SE7)LMF*dmmVU; *dmmR8r%   c                      [         R                  [         R                  4 HC  n U " [        R                  " S5      S5      nSn[        [        U[         R                  US5        ME     g r   )r   r   rs   r,   r-   r
   r*   r   r   s      r#   test_waverecn_invalid_inputsr   1  sK     \\4==1"''&/626J"	$ 2r%   c                  z    S//S//S//S//S./n [        [        R                  " U S5      R                  S5        g )Nr   r   r   r   )rK   rK   )r   r   r   r   r   s    r#   test_waverecn_listsr   ;  s>    ugugseWcUGDEFvu-33V<r%   c                      [         R                  " S5      S[         R                  " S5      0/n [        [        [        R
                  U S5        g )Nr   adar   r   )r,   r-   r	   r*   r   r   r   s    r#   test_waverecn_invalid_coeffs2r   A  s4    ggi 5"''&/":;F*dmmVU;r%   c                      [         R                  " S5      n [        [        [        R
                  U S5        [         R                  " S5      n [        [        [        R
                  U SSS9  g )Nr   r(   r   rZ   )r,   rT   r	   r*   r   r   r-   r   s    r#   test_wavedecn_invalid_inputsr   G  sD    88A;D*dmmT6: 772;D*dmmT6Dr%   c            
         [         R                  " S5      R                  SS5      n Sn[        R                  [        R
                  [        R                  /n[        R                  [        R                  [        R                  /n[        R                  " 5          [        R                  " S[        5        [        X#5       H)  u  pES H  nU" U SUSS9nU" USUS	9n[        XXS
9  M      M+     S S S 5        g ! , (       d  f       g = f)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  s    99R=  A&D
Ct}}dmm<It}}dmm<I		 	 	"h4"%i";H6%dFRHF d;A#D#@ 7 #< 
#	"	"s   AC99
Dc                     [         R                  R                  S5      n U R                  SSS5      n[         H  u  p#UR                  U5      n[         R                  " U5      (       a<  USU R                  SSS5      R                  UR                  R                  5      -  -  n[        R                  " UR                  U5      S5      n[        [        R                  " US5      XCUS9  M     g )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    YY""4(F	aA	B(IIbM??1FLLAq)00>>>Aqxx|U3fe4aL )r%   c                  F   [         R                  " S5      n [        [        [        5       H  u  p[
        R                  " SUS9nSU S3n[         R                  " X0SS9u  pVn[        UR                  U:H  SU-   5        UR                  5        H!  u  p[        U	R                  U:H  SU-   5        M#     UR                  5        H!  u  p[        U	R                  U:H  SU-   5        M#     [         R                  " XVU/U 5      n
[        U
R                  U:H  S	U-   5        M     g )
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  s    ll6"GY
3GGF%(,UG6:!%q!ChF"L6$9:nn&FCAGGv%|f'<= 'nn&FCAGGv%|f'<= 'mmR8$<gF!!V+\F-BC 4r%   c                      [         R                  " S5      S-   n [        R                  " U S5      n[	        [        R
                  " US5      U SS9  g )Nr   r8   r   rP   rQ   )r,   r-   r   r   r   r   r   s     r#   test_wavedecn_complexr   |  s<    779"D]]4'FDMM&%0$UCr%   c                      [         R                  " S5      n [         HK  u  p[        R                  " U R                  U5      S5      n[        [        R                  " US5      XUS9  MM     g )Nr   r   r9   )r,   r-   r?   r   r   r@   r   r   )r   rG   rH   r0   s       r#   test_waverecn_dtypesr     sK    
	A(qxx|U3fe4aL )r%   c            
      :   [         R                  R                  S5      n U R                  SS5      n[         H`  n[
        R                  R                   H?  n[
        R                  " XUS9n[        [
        R                  " XBUS9U[        [        S9  MA     Mb     g r}   )r,   r<   r=   r>   rk   r   rl   rm   r   r   r   rn   ro   s        r#    test_waverecn_all_wavelets_modesr     r   r%   c                  (   [         R                  " S5      R                  SS5      /n [        R                  " U 5      u  p[        XS   5        [        XUS      5        [        [        [        R                  / 5        [        [        [        R                  U S   /S-  5        [        [        [        R                  U S   U S   4/5        [        [        [        R                  S /5        [        [        [        R                  U S/5        [        [        [        R                  U S /5        [         R                  " S/5      [         R                  " S/5      [         R                  " S/5      S./n[        [        [        R                  U5        g )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     s3   		!$$Q*-H**84OCC!%CZ]+,*d22B7*d22Xa[Oa4GH*d22Xa[6>qk_5F G *d22TH=*d22X5G5I J *d22Xt4DE hhsm288QC=rxx}EFF*d22F;r%   c            
      
   [         R                  R                  S5      n S[        R                  [        R
                  S.S[        R                  [        R                  S.S[        R                  [        R                  S.S.nSnU H  nU R                  " U/X   S   -  6 n[        R                  R                   H  n[         H  n[        R                  " U5      n[        R                  " [         R                   " UR"                  5      UR$                  5      nUS	:X  a  M`  X   S
   " XGUS9n	[        R&                  " U	5      u  p[        R(                  " XUS9nX   S   " XUS9n[+        XMSSS9  M     M     M     g )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     s6    ))


%C dllK !$--N !$--NPF 	AYY!vy~-/JJ$$D LL&--bffRXX.>		Jq=5)"d;*.*>*>v*F'	..y=>@i&w=d> ! % r%   c                  0   [         R                  R                  S5      n Sn[        R                  " S5      nSnSnS H  nU R
                  " U/U-  6 n[        R                  " XbXS9n[        R                  " XuS9u  pUb  [        [        [        R                  U5        [        [        [        R                  US	S9  [        [        [        R                  US
S9  [        R                  " X5      n
[        R                  " XXS9n[        XkSSS9  M     g )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YY!t%r4;"&"6"6v"I	*d&:&:FC 	j$"6"6'	)j$"6"6	 &&y?mmGT=d6# Er%   c                  
   [         R                  R                  S5      n U R                  SS5      nSn[        R
                  " USUS9n[        [        [        R                  US S9  [        R                  " U[         R                  S9u  pE[         R                  " [         R                  " U5      5      n[        US:  5        [        R                  " USS9u  pE[        [         R                  " [         R                  " U5      5      S:H  5        [        [         R                  " US:H  5      U:H  5        [        R
                  " USUS9n[        R                  " US S9u  pE[        UR                  UR                  5        g )	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	    s   
))


%C	2r	BD]]2u40F *d22FDI #226266JI66"((9%&DD1H #2261EIBFF288I&'1,-BFF9>"d*+ --F6K"22;MI"((+r%   c                     [         R                  R                  S5      n U R                  SS5      n[        R
                  R                   H  nS H  n[        R                  " U5      n[        R                  " [         R                  " UR                  5      UR                  5      nUS:X  a  M`  [        R                  " XUS9n[        R                  " U5      u  px[        R                  " Xx5      n	[        R                  " XUS9n
U
[!        UR                   Vs/ s H  n[#        U5      PM     sn5         n
[%        XSSS9  M     GM     g s  snf 	Nr7   #   !   )r(   r   rh   r   rj   )r,   r<   r=   r>   r   rl   rm   r   r   r   r   r   r   r.   r/   r   tupleslicer   )r   r   ri   r   r   r   r0   r   r2   r   r   ss               r#   test_waverecn_coeff_reshape_oddr    s     ))


%C	2r	B

  DT"A))"&&*:AIIFH1}]]2t4F&*&:&:6&B#I**9CG--6Cerxx8x!U1Xx89:CB$T:  ! 9s   Ec                  
   [         R                  " [        R                  " S5      S5      n [         R                  " U 5      u  p[        [        [         R                  U/ 5        [        [        [         R                  XS5        g )NrK   r(   r   )r   r   r,   r-   r.   r	   r*   r/   )r0   r1   r   s      r#   #test_array_to_coeffs_invalid_inputsr    sX    ]]2771:v.F**62OC *d22C< *d22CUKr%   c            
         [         R                  R                  S5      n S[        R                  [        R
                  S.S[        R                  [        R                  S.S[        R                  [        R                  S.S.nSnU H  nU R                  " U/X   S   -  6 n[        R                  R                   H  n[         H  n[        R                  " U5      n[        R                  " [         R                   " UR"                  5      UR$                  5      nUS	:X  a  M`  X   S
   " XGUS9n	[        R&                  " U	5      u  pn[        R(                  " XUUS9nX   S   " XUS9n[+        XNSSS9  M     M     M     g )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     s9    ))


%C dllK !$--N !$--NPF 	AYY!vy~-/JJ$$D LL&--bffRXX.>		Jq=5)"d;,0,=,=f,E)	6--i<=?i&w=d> ! % r%   c            	      h   [         R                  R                  S5      n S[        R                  [        R
                  S.S[        R                  [        R                  S.S[        R                  [        R                  S.S.nSnU H  nU R                  " U/X   S   -  6 n[        R                  R                   Hl  n[        R                  " S	5      nX   S
   " XFUSS9n[        R                  " U5      u  pn
[        R                  " XU
US9nX   S   " XUS9n[!        XLSSS9  Mn     M     g )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  ;  s    ))


%C dllK !$--N !$--NPF 	AYY!vy~-/JJ$$DU#AYu%b$a@F(,(9(9&(A%Iv)))V89;G)E"7D9CB$T: % r%   c                     [         R                  R                  S5      n U R                  SS5      n[        R
                  R                   GH  nS H  n[        R                  " U5      n[        R                  " [         R                  " UR                  5      UR                  5      nUS:X  a  M`  [        R                  " XUS9n[        R                  " U5      u  pxn	[        R                  " XxU	5      n
[        R                  " XUS9nU[!        UR                   Vs/ s H  n[#        U5      PM     sn5         n[%        XSSS9  M     GM     g s  snf r  )r,   r<   r=   r>   r   rl   rm   r   r   r   r   r   r   r  r  r   r  r  r   )r   r   ri   r   r   r   r0   r   r  r  r   r   r  s                r#   test_waverecn_coeff_ravel_oddr  R  s     ))


%C	2r	B

  DT"A))"&&*:AIIFH1}]]2t4F(,(9(9&(A%Iv)))VDG--6Cerxx8x!U1Xx89:CB$T:  ! 9s    Ec                     [         R                  " S5      n [        R                  " S5      n[        R                  " X5      nUSS   Vs/ s H  n[        U5      PM     snUSS & [        R                  " U5      u  pEn[        R                  " XEUSS9n[        R                  " Xq5      n[        XSSS9  USS   Vs/ s H  n[        US S 5      PM     snUSS & [        [        [        R                  U5        g s  snf s  snf )	Nrw   r(   r   rs   r   r   rj   r   )r,   r-   r   r   rs   r   r  r  rt   r   r	   r*   )	r   wavr0   rc   r   r  r  r   r   s	            r#   test_ravel_wavedec2_with_listsr!  f  s    	B
,,v
C]]2#F $*!":.:a$q':.F12J $ 1 1& 9Iv!!)V0:<G
--
%CB$T2 )/qr
3
1$q"v,
3F12J*d//8 / 4s   
C:<C?c                  x   [         R                  " [        R                  " S5      S5      n S U S'   [	        [
        [         R                  U 5        [         R                  " [        R                  " S5      S5      n SU S'   [	        [
        [         R                  U 5        / SQU S'   [	        [
        [         R                  U 5        S U S'   [	        [
        [         R                  U 5        [         R                  " [        R                  " S5      S5      n S U S   S'   [	        [
        [         R                  U 5        g )Nr'   r(   r   rw   r   r   ddd)	r   r   r,   r-   r	   r*   r  rs   r   r   s    r#   test_ravel_invalid_inputr$  x  s    \\"''!*f-FF1I*d//8 ]]2776?F3F"F1I*d//8"F1I*d//8F1I*d//8 ]]2779-v6FF1Ie*d//8r%   c                     [         R                  " [        R                  " S5      S5      n [         R                  " U 5      u  pn[        [        [         R                  X/ 5        [        [        [         R                  U/ U5        [        [        [         R                  XS S U5        [        [        [         R                  XUS5        g )NrK   r(   r   r   )r   r   r,   r-   r  r	   r*   r  )r0   r1   r  r  s       r#   test_unravel_invalid_inputsr&    s    ]]2771:v.F++F3C *d113C*d113FC *d113sVL *d113Nr%   c            
         [         R                  " S5      n S GH>  nS GH3  n[         R                  R                   GH  n[         R                  " [
        R                  " U5      U X2S9n[         R                  " XX2S9n[        US   R                  US   5        US   R                  n[        S[        U5      5       HG  nXG   R                  5        H.  u  pXiR                  -  n[        XW   U   U	R                  5        M0     MI     [         R                  " U5      n
[        X5        [         R                  " U5      n
[        X5        GM     GM6     GMA     g )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_sizer2    s   
,,u
C5
!D

((rwwz':C,0= --j37D VAY__fQi8 &q	"1c&k2E & 3 3 5%/$V]1%5qww? !6 3 ))&1T1))&1T1) ) " 6r%   c                  Z   [         R                  " S5      S4 H  n S H  nS H}  n[         R                  R                   H\  n[         R                  " [
        R                  " U5      U X2S9n[         R                  " XU5      n[        [        USS  5      U5        M^     M     M     M     g )Nr   sym8r(  r+  r   r   )
r   r   rl   rm   r   r,   r-   dwtn_max_levelr   r   )r   r.  r   ri   r0   max_levs         r#   test_dwtn_max_levelr7    s    U#V,9J% JJ,,D!]]277:+>04AF"11*4HG VABZ':	 - & : -r%   c                      [         R                  R                  S5      n U R                  S5      nS H9  n[        R
                  " USUS9n[        R                  " USUS9n[        XASS9  M;     g )Nr   r   r   r   rK   r(   axis+=r:   r,   r<   r=   standard_normalr   r   r+   r   rE   r   r;  coefsr   s        r#   test_waverec_axes_subsetsrB    s^    YY""1%F!!),DT65ll5&t4. r%   c                      [         R                  R                  S5      n U R                  S5      nS H9  n[        R
                  " USUS9n[        R                  " USUS9n[        XASS9  M;     g )Nr   r   r   r   r   r:  r<  r=  r>  r@  s        r#   test_waverec_axis_db2rE    s^    YY""1%F!!(+DT5t4ll5%d3. r%   c                      [         R                  R                  S5      n U R                  S5      n[	        SS5       H9  n[
        R                  " USUS9n[
        R                  " USUS9n[        XASS9  M;     g )	Nr   r   r9  rK   r(   r   r<  r=  )	r,   r<   r=   r?  r   r   rs   rt   r   rE   r   r   rA  r   s        r#   test_waverec2_axes_subsetsrH    se    YY""1%F!!),DY*dF6mmE65. +r%   c                      [         R                  R                  S5      n U R                  S5      n[	        SS5       H9  n[
        R                  " USUS9n[
        R                  " USUS9n[        XASS9  M;     g )	Nr   )r'   r'   r'   r'   r   r   r(   r   r<  r=  )	r,   r<   r=   r?  r   r   r   r   r   rG  s        r#   test_waverecn_axes_subsetsrJ    se    YY""1%F!!,/D\1-dF6mmE65. .r%   c                      [         R                  R                  S5      n U R                  S5      nS H9  n[        R
                  " USUS9n[        R                  " USUS9n[        XASS9  M;     g )Nr   rw   r   r(   r   r<  r=  )r,   r<   r=   r?  r   r   r   r   r@  s        r#   test_waverecn_int_axisrL    s^    YY""1%F!!&)DdF6mmE65. r%   c                  n    [         R                  " S5      n [        [        [        R
                  U SSS9  g Nr   r(   r   r:  )r,   r-   r	   r*   r   r   r   s    r#   test_wavedec_axis_errorrO    s#    771:D*dllD&qAr%   c                      [         R                  " [        R                  " S5      S5      n [	        [
        [         R                  U SSS9  g rN  r   r   r,   r-   r	   r*   r+   rc   s    r#   test_waverec_axis_errorrS    s.    RWWQZ(A*dllAvA>r%   c                      [         R                  " [        R                  " S5      S5      n U S   S S U S'   [	        [
        [         R                  U SSS9  g )Nr   r(   r   r   r   r:  rQ  rR  s    r#   !test_waverec_shape_mismatch_errorrU    sA    RWWR[&)AQ49AaD*dllAvA>r%   c                      [         R                  " S5      n [        [        [        R
                  U SSS9  [        [        [        R
                  U SSS9  [        [        [        R
                  U SSS9  g Nr   r(   r   r   )r   r   r   )r,   r-   r	   	TypeErrorr   rs   r*   r   s    r#   test_wavedec2_axes_errorsrY    sK    776?D)T]]D&qA*dmmT6G*dmmT6Gr%   c                     [         R                  " S5      n [        R                  " U S5      n[	        [
        [        R                  USSS9  [	        [        [        R                  USSS9  [	        [        [        R                  USSS9  g rW  )r,   r-   r   rs   r	   rX  rt   r*   r   rc   s     r#   test_waverec2_axes_errorsr\    s[    776?DdF#A)T]]AvA>*dmmQVD*dmmQVDr%   c                      [         R                  " S5      n [        [        [        R
                  U SSS9  [        [        [        R
                  U SSS9  g Nr   r(   r   r   r   )r   r   r   )r,   r-   r	   r*   r   r   r   s    r#   test_wavedecn_axes_errorsr`    s8    779D*dmmT6G*dmmT6	Jr%   c                      [         R                  " S5      n [        R                  " U S5      n[	        [
        [        R                  USSS9  [	        [
        [        R                  USSS9  g r^  )r,   r-   r   r   r	   r*   r   r[  s     r#   test_waverecn_axes_errorsrb  %  sH    779DdF#A*dmmQVD*dmmQYGr%   c            	         [         R                  R                  S5      n U R                  SSS5      n[        R
                  " S5      SS4n[        UR                  U5       VVs/ s H$  u  p4[        R                  R                  X45      PM&     nnnSS[        R                  R                  R                  R                  4n[        R                  " XU5      n[        [        R                   " XrU5      US	S
9  [#        [%        U5      ['        USS  5      5        [        R                  " XS S U5      n[        [        R                   " XrS S U5      US	S
9  [        R                  " XUS S 5      n[        [        R                   " XrUS S 5      US	S
9  [)        [*        [        R                  XS S 5        [)        [*        [        R                  XUS S S9  [)        [*        [        R                   XrS S 5        [)        [*        [        R                   XrUS S S9  US   n[        R,                  " XS S US S 5      n	[        [        R.                  " XS S US S 5      US	S
9  [#        [%        US S 5      ['        U	SS  5      5        g s  snnf )Nr7   r   r   r(   sym2r   r   r   r<  r=  r   rK   rh   ).r   )r,   r<   r=   r>   r   r   r\   r   _dwtr   _extensions_pywtrl   reflectr   r   r   r   r   r   r	   r*   rs   rt   )
rE   r   waveletsr   nf
max_levelsrm   rA  data2coefs2s
             r#    test_per_axis_wavelets_and_modesrn  .  s$   YY""4(F<<B#D V$fe4H djj(+-+ 7=b$))))"1+  - /##))113E MM$%0EDMM%594eLZ#eABi.1MM$!e4EDMM%"1u=t  MM$%)4EDMM%5!9=t  *dmmTBQ<@*dmmT%)L*dmmURaLA*dmmU5!9M LE]]52A,bq	:FDMM&2A,bq	BE Z^$c&*o6=-s   %+J	c            
      l   [         R                  R                  S5      n [        SS5       GH  n[	        [
        [        5       H  u  p#S H  nU R                  SU-  5      nUR                  U5      n[        R                  " USUS9n[        R                  " U5      nUR                  R                  [         R                  [         R                  4;   a  [!        XuSSS	9  O[!        XuS
S
S	9  [#        UR$                  R                  U:H  5        [#        UR                  U:H  5        M     M     GM     g )Nr   r   r   )r   Nr'   r(   levelsr   rj   r<  )r,   r<   r=   r   r\   r]   r^   r?  r@   r   
fswavedecn
fswaverecnrB   rC   float32float16r   r   r0   )rE   r   r`   ra   rr  r   Tr   s           r#   $test_fswavedecn_fswaverecn_roundtriprx  Z  s     YY""1%Fa J7ME#--eDj9{{5)OOD&@ooa(99??rzz2::&>>#CDtD#CEF&01		V+, $ 8 r%   c                     [         R                  R                  S5      n SnU R                  SU-  5      n[        R
                  " USSS9n[        UR                  U5        [        R                  " U5      n[        UR                  U5        g )Nr   rK   rp  r(   rq  )	r,   r<   r=   r?  r   rs  r   r0   rt  rE   r   r   rw  r   s        r#   &test_fswavedecn_fswaverecn_zero_levelsr{  m  sk    YY""1%FD!!%*-DfQ/Aqxx&
//!
Cqxx%r%   c                     [         R                  R                  S5      n SnU R                  SU-  5      n[        R
                  " USSS9n[        R                  " U5      n[        XBSS9  [        [        [        R
                  USS	S9  [        [        [        R
                  USS
S9  [        [        [        R
                  US[        [         R                  " [         R                  " UR                  5      5      5      S-   S9  g )Nr   r   r   r(   )r   rK   r   rq  r<  r=  r_  )r   r   r   r   r   )r,   r<   r=   r?  r   rs  rt  r   r	   r*   r   r   intlog2r   r   rz  s        r#   *test_fswavedecn_fswaverecn_variable_levelsr  x  s    YY""1%FD!!&+.DfY7A
//!
CCE* *dootVFK*dootVLQ dootVBGGBFF4::$678:<r%   c            	      "   [         R                  R                  S5      n SnU R                  SU-  5      nSnSn[        R
                  " X#US9n[        U5       HL  n[        [        UR                  U   5      [        R                  " UR                  U   X6   5      S-   5        MN     [        R                  " U5      n[        XrSS	9  [        [        [        R
                  X#S S
 5        [        [        [        R
                  X#S   US S
 S9  g )Nr   r   r}  )r(   r   sym3)periodicr   r   )r_   ri   r   r<  r=  rK   rh   )r,   r<   r=   r?  r   rs  r   r   r   r2   r   r   rt  r   r	   r*   )rE   r   r   ri  rm   rw  axr   s           r#   6test_fswavedecn_fswaverecn_variable_wavelets_and_modesr    s    YY""1%FD!!&+.D&H6EU;ADkS+,''

2EaG	I 
 //!
CCE* *dootbq\B *doota[uRayQr%   c                  4   [         R                  R                  S5      n U R                  S5      n[	        SS5       H9  n[
        R                  " USUS9n[
        R                  " U5      n[        XASS9  M;     [        [        [
        R                  USS	S9  g
)z.Fully separable DWT over only a subset of axesr   )r   r'   r   r  r   r   r(   r   r<  r=  )r   r   N)r,   r<   r=   r?  r   r   rs  rt  r   r	   r*   )rE   r   r   rw  r   s        r#   'test_fswavedecn_fswaverecn_axes_subsetsr    sw    YY""1%F!!.1D\1-OOD&t4ooa . . *dootV&Ir%   c                     [         R                  " S5      n Sn[        R                  " U SUS9nSU R                  -  n[        X#   UR                  5        UR                  5       n[        X4;  5        U H'  nX%   n[        UR                  U R                  5        M)     [         R                  " W5      UW'   [        [        UR                  U[         R                  " [        UR                    Vs/ s H  owS-   PM	     sn5      5      5        [#        [$        UR                  U[         R                  " U5      R'                  [         R(                  5      5        [        UR*                  R                  U R                  5        g s  snf )N)r  r  r   rd  rq  r   r   )r,   r-   r   rs  r   r   approxdetail_keysr   r   
zeros_liker	   r*   __setitem__r   r  r   r   r   r@   ru  r0   )r   rr  result
approx_keydkeysr0  r   r  s           r#   test_fswavedecnresultr    s'   778DF__T6&9F "Jv)6==9 EJ#$ IQVVTYY' 
 a F1I *f00RXXeAGG$<GqUG$<=>@ f00BMM!$++BJJ79 ##TYY/ %=s   2Fc            	         [         R                  " S5      n [        [        R                  [        R
                  [        R                  /[        R                  [        R                  [        R                  /5       HK  u  pS[        R                  " S5      4 H*  n[        [        XUS9  U" U S5      n[        [        X$US9  M,     MM     g )NrD  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    778Dt}}dmm L!%t}}dmm LNd<<VDEE*gUCe$A*g%@	 FNr%   c                  F   [         R                  " S5      n Sn[        R                  [        R                  4 H  nS Hx  nU" XUS9n[         R
                  " [        X15       VVs/ s H)  u  pV[        R                  " U R                  U   U5      PM+     snn5      n[        [        USS  5      U5        Mz     M     S HX  n[        R                  " XU   U4S9n[        [        USS  5      [        R                  " U R                  U   X   5      5        MZ     g s  snnf )N)   r  r   )db8r   )r   )rK   r   r   r   r   r   )r,   r-   r   rs   r   r   r\   r   r   r   r   )r   r_   r   r   rc   r  r   r6  s           r#   test_default_levelr    s    77< DG]]DMM2,DT2Aff-0-?A-?'" #00BE-?A BGQqrUW-	 - 3 MM$2&9S12Z''

2D	F 	As   &0Dc            	         [         R                  R                  S5      n [        R                  [        R
                  S4[        R                  [        R                  S4[        R                  [        R                  S44 GHl  u  pnU R                  " U6 nU" US5      nUS   R                  [         R                  5      US'   U" US5      n[        XdSSS9  [        UR                  [         R                   5        USU-  -   nU" US5      nUS   R                  [         R"                  5      US'   U" US5      n[        XdSSS9  [        UR                  [         R$                  5        UR&                  S	:X  aJ  US   R                  [         R$                  5      US'   US	   R                  [         R"                  5      US	'   UR&                  S
:X  ac  US   R                  [         R$                  5      US'   [)        US	    Vs/ s H!  oR                  [         R"                  5      PM#     sn5      US	'   UR&                  S:X  am  US   R                  [         R$                  5      US'   US	   R+                  5        V	Vs0 s H$  u  pXR                  [         R"                  5      _M&     snn	US	'   U" US5      n[        XdSSS9  [        UR                  [         R$                  5        GMo     g s  snf s  snn	f )Nr   rp  rw   r   r   gHz>rj   r8   r   rK   r   )r,   r<   r=   r   r   r+   rs   rt   r   r   r>   r@   ru  r   r   rC   float64	complex64
complex128r   r  r   )
rE   funcifuncr   r   coeffs_realrp   r0   r1  r0  s
             r#   test_waverec_mixed_precisionr    sU   YY""1%F $dllEB $t}}fE $t}}iHJU LL% 1en %Q..rzz:A+u%4d3QWWbjj)1Ha 1I$$R\\2q	&% 4d3QWWbmm, 66Q;q	((7F1Iq	((6F1I66Q;q	((7F1IvayIy!xx5yIJF1I66Q;q	((7F1I%+AY__%68%6TQ HHR\\22%68F1I&% 4d3QWWbmm,EJ6 J8s   (K4
+K9)mr   	itertoolsr   numpyr,   pytestnumpy.testingr   r   r   r   r   r	   r
   r   r   int8rv  ru  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!  r$  r&  r2  r7  rB  rE  rH  rJ  rL  rO  rS  rU  rY  r\  r`  rb  rn  rx  r{  r  r  r  r  r  r  r  r   r%   r#   <module>r     sr    "  	 	 	 
 WWbjj"**bjj",,]]	jj"**bjj"**bllmm
 

**j1BJJ
3K**j1BGGZ3H,,
3--46 	"--""I2==##Jr}}j9<< ==?	XOOF G		 	 	"h6$88A,,( (OOG$	 
#	"  GOOG 2 "L6@@CA	MD  A AD;$<A;JC96$=<EA	MD DM A A<4?67:,4;(L?6;.;(9$9*O26	;/////B??HEKH'7X-&&<$R.J0B	AF"$-G  		 
#	"s   2K& :AK3&K0/K03
L	