
    i                        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j6                  gz  Zeej*                  gz  Zeej6                  efgz  Z ej:                         Zdev rej=                  d       g ZeD ]c  Z  e jB                         5   e jD                  de#        e$ ejJ                  e       ejL                        sejO                  e        ddd       e eD ]  Z(ej=                  e(        d Z)d	 Z*d
 Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2ejf                  jh                  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jf                  jh                  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 Zly# e$ r Y w xY w# 1 sw Y   xY w)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(         y )	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         V/var/www/html/BatchJob/venv/lib/python3.12/site-packages/pywt/tests/test_multilevel.pytest_wavedecr$   E   s}    !A
,,u
Ca-Cc3j\*k]+C"d$CCDDs1vs+q0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       y )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                     t         j                  j                  d      } | j                  d      }t        D ]  \  }}|j                  |      }t        j                  |      r:|d| j                  d      j                  |j                  j                        z  z  }t        j                  |d      }t        t        j                  |d      |||        y )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( LCIIbM??1FLLO**166<<888Aa'VU3QSsKLr%   c                      g d} t        j                  | d      }d |d<   d |d<   t        t        j                  |d      j                  t        |              y )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                  |    g d} t        j                  | d      }t        t        j                  |d      | d       y )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                      t        j                  g d      } | dz   } t        j                  | d      }t	        t        j
                  |d      | d       y )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                  z   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           y )
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 	CvGGAU#,UG6:a2 	=AAGGv%{V';<	=ll673!!V+[6-AB	Cr%   c            	      B   t         j                  j                  d      } | j                  d      }t        D ]f  }t
        j                  j                  D ]G  }t        j                  |||      }t        t        j                  |||      |t        t               I h y )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    YY""4(FRA AJJ$$ 	AD\\!W48FDLLtDJZA	AAr%   c                     t         j                  j                  d      } | j                  dd      }t        D ]  \  }}|j                  |      }t        j                  |      r;|d| j                  dd      j                  |j                  j                        z  z  }t        j                  |d      }t        t        |      dk(         t        t        j                  |d      |||        y )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( MCIIbM??1FLLA&--affll;;;Aq%(Fq !fe4acL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           y )
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 DvGGF%(,UG6:!%q'!CHhF"L6$9: 	>AAGGv%|f'<=	> 	>AAGGv%|f'<=	>mmR8$<gF!!V+\F-BCDr%   c            	      D   t         j                  j                  d      } | j                  dd      }t        D ]f  }t
        j                  j                  D ]G  }t        j                  |||      }t        t        j                  |||      |t        t               I h y Nr7   rg   `   rh   rj   )r,   r<   r=   r>   rk   r   rl   rm   rs   r   rt   rn   ro   s        r#    test_waverec2_all_wavelets_modesr           YY""4(FRA AJJ$$ 	AD]]1gD9FDMM&'EJZA	AAr%   c                      t        j                  d      dz   } t        j                  | d      }t	        t        |      dk(         t        t        j                  |d      | d       y )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                  n    t        j                  d      } t        t        t        j
                  | d       y )Nr   r(   )r,   r-   r	   r*   r   rs   r   s    r#   test_wavedec2_invalid_inputsr      s!    771:D*dmmT6:r%   c                  r   t        t        t        j                  t	        j
                  d      d       t        t        t        j                  g d       t        j                  t        j                  fD ]A  }  | t	        j
                  d      d      }d}t        t        |t        j                  |d       C y Nrw   r(   r)   )	r	   r*   r   rt   r,   r-   r   wavedecnr
   dec_funcr0   r4   s      r#   test_waverec2_invalid_inputsr      s~    *dmmRWWV_fE *dmmR8 \\4==1 $"''&/6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       y )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                      t        j                  d      } t        j                  | d      }t	        t        j
                  |d      | d       y )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                      t        j                  d      j                  dd      } t        j                  | d      }d|d<   t        | j                  t        j                  |d      j                  k(         y )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                  .   t         j                  j                  d      } t        dd      D ]g  } | j                  d|z   }t        j                  |d      }t        t        |      dk(         t        t        j                  |d      |t               i y )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     sy    YY""4(FAqk JFLL%(#q%(Fq !fe4ajI	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       y )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                     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
       y )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                      t         j                  t         j                  fD ]A  }  | t        j                  d      d      }d}t        t        |t         j                  |d       C y r   )r   r   rs   r,   r-   r
   r*   r   r   s      r#   test_waverecn_invalid_inputsr   1  sP     \\4==1 $"''&/626J"	$$r%   c                  x    dggdggdggdggdg} t        t        j                  | d      j                  d       y )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                      t        j                  d      dt        j                  d      ig} t        t        t        j
                  | d       y )Nr   adar   r   )r,   r-   r	   r*   r   r   r   s    r#   test_waverecn_invalid_coeffs2r   A  s4    ggi 5"''&/":;F*dmmVU;r%   c                      t        j                  d      } t        t        t        j
                  | d       t        j                  d      } t        t        t        j
                  | dd       y )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            	         t        j                  d      j                  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 ]2  \  }}dD ](  } || d|d      } ||d|	      }t        | |||
       * 4 	 d d d        y # 1 sw Y   y xY w)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		 	 	" Ah4"%i"; 	AHh6 A%dFRHF d;A#D!#C@A	AA A As   AD  D	c                     t         j                  j                  d      } | j                  ddd      }t        D ]  \  }}|j                  |      }t        j                  |      r<|d| j                  ddd      j                  |j                  j                        z  z  }t        j                  |j                  |      d      }t        t        j                  |d      |||        y )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( MCIIbM??1FLLAq)00>>>Aqxx|U3fe4acLMr%   c                  J   t        j                  d      } t        t        t              D ]  \  }}t        j                  d|      }d| d}t        j                  || d      \  }}}t        |j                  |k(  d|z          |j                         D ]!  \  }}	t        |	j                  |k(  d|z          # |j                         D ]!  \  }}	t        |	j                  |k(  d|z          # t        j                  |||g|       }
t        |
j                  |k(  d	|z           y )
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 DvGGF%(,UG6:!%q'!CHhF"L6$9:nn& 	>FCAGGv%|f'<=	>nn& 	>FCAGGv%|f'<=	>mmR8$<gF!!V+\F-BCDr%   c                      t        j                  d      dz   } t        j                  | d      }t	        t        j
                  |d      | d       y )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                      t        j                  d      } t        D ]M  \  }}t        j                  | j                  |      d      }t        t        j                  |d      | ||       O y )Nr   r   r9   )r,   r-   r?   r   r   r@   r   r   )r   rG   rH   r0   s       r#   test_waverecn_dtypesr     sV    
	A( MCqxx|U3fe4acLMr%   c            	      D   t         j                  j                  d      } | j                  dd      }t        D ]f  }t
        j                  j                  D ]G  }t        j                  |||      }t        t        j                  |||      |t        t               I h y r}   )r,   r<   r=   r>   rk   r   rl   rm   r   r   r   rn   ro   s        r#    test_waverecn_all_wavelets_modesr     r   r%   c                  $   t        j                  d      j                  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                  |       y )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     s9   		!$$Q*-H**84OCC!%CZ]+,*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            	         t         j                  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[ ||   d
   |||      }	t        j&                  |	      \  }
}t        j(                  |
||      } ||   d   |||      }t+        ||dd          y )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 dllK !$--N !$--NPF 	A ?SYY!vay~-/JJ$$ 	?D  ?LL&--bffRXX.>		Jq=)5)"ad;*.*>*>v*F'	<..y,=>@&fQi&w=Cd>?	??r%   c                  T   t         j                  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        y )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SYY!t%r14d;"&"6"6vD"I	<*d&:&:FC 	j$"6"6'	)j$"6"6	 &&y,?mmGQT=Cd6#7r%   c                      t         j                  j                  d      } | j                  dd      }d}t	        j
                  |d|      }t        t        t        j                  |d        t	        j                  |t         j                        \  }}t        j                  t        j                  |            }t        |dkD         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                         y )	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                     t         j                  j                  d      } | j                  dd      }t        j
                  j                  D ]  }dD ]  }t	        j                  |      }t	        j                  t        j                  |j                        |j                        }|dk(  r[t	        j                  |||      }t	        j                  |      \  }}t	        j                  ||      }	t	        j                  |	||      }
|
t!        |j                  D cg c]  }t#        |       c}         }
t%        ||
dd         y c c}w 	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}]]2qt4F&*&:&:6&B#I|**9lCG--6Cerxx8!U1X89:CB$T:	;; 9s   Ec                     t        j                  t        j                  d      d      } t        j                  |       \  }}t        t        t         j                  |g        t        t        t         j                  ||d       y )NrK   r(   r   )r   r   r,   r-   r.   r	   r*   r/   )r0   r1   r   s      r#   #test_array_to_coeffs_invalid_inputsr    s\    ]]2771:v.F**62OC *d22C< *d22CUKr%   c            	          t         j                  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[ ||   d
   |||      }	t        j&                  |	      \  }
}}t        j(                  |
|||      } ||   d   |||      }t+        ||dd          y )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 dllK !$--N !$--NPF 	A ?SYY!vay~-/JJ$$ 	?D  ?LL&--bffRXX.>		Jq=)5)"ad;,0,=,=f,E)	66--i<=?&fQi&w=Cd>?	??r%   c                     t         j                  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       }  y )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 ;SYY!vay~-/JJ$$ 		;DU#A%VAYu%b!$a@F(,(9(9&(A%Ivv)))VV89;G"&)E"7AD9CB$T:		;;r%   c                     t         j                  j                  d      } | j                  dd      }t        j
                  j                  D ]   }dD ]  }t	        j                  |      }t	        j                  t        j                  |j                        |j                        }|dk(  r[t	        j                  |||      }t	        j                  |      \  }}}	t	        j                  |||	      }
t	        j                  |
||      }|t!        |j                  D cg c]  }t#        |       c}         }t%        ||dd         y c c}w 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}]]2qt4F(,(9(9&(A%Ivv)))VVDG--6Cerxx8!U1X89:CB$T:	;; 9s   !Ec                     t        j                  d      } t        j                  d      }t        j                  | |      }|dd  D cg c]  }t        |       c}|dd  t        j                  |      \  }}}t        j                  |||d      }t        j                  ||      }t        | |dd       |dd  D cg c]  }t        |d d        c}|dd  t        t        t        j                  |       y c c}w c c}w )	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]]2s#F $*!":.a$q'.F12J $ 1 1& 9Ivv!!)VV0:<G
--
%CB$T2 )/qr
31$q"v,3F12J*d//8 / 4s   C9>C>c                  l   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                  |        y )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                     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       y )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13sVL *d113Nr%   c            	         t        j                  d      } dD ]?  }dD ]6  }t         j                  j                  D ]  }t        j                  t        j                  |      | ||      }t        j                  || ||      }t        |d   j                  |d          |d   j                  }t        dt        |            D ]H  }||   j                         D ]0  \  }}	||	j                  z  }t        ||   |   |	j                         2 J t        j                  |      }
t        |
|       t        j                  |      }
t        |
|        9 B y )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    sA   
,,u
C5 2
! 	2D

(( 2rwwz':C,0t= --j#37dD VAY__fQi8 &q	"1c&k2 @E &u 3 3 5 @1%/$VE]1%5qww?@@ ))&1T=1))&1T=1)2	22r%   c                  L   t        j                  d      dfD ]  } dD ]  }dD ]|  }t         j                  j                  D ]]  }t        j                  t        j                  |      | ||      }t        j                  || |      }t        t        |dd        |       _ ~   y )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, ;9 	;J% ; JJ,, ;D!]]277:+>044AF"11*c4HG VABZ':	;;	;;r%   c                      t         j                  j                  d      } | j                  d      }dD ]@  }t	        j
                  |d|      }t	        j                  |d|      }t        ||d       B y )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    se    YY""1%F!!),D /T65ll5&t4T./r%   c                      t         j                  j                  d      } | j                  d      }dD ]@  }t	        j
                  |d|      }t	        j                  |d|      }t        ||d       B y )Nr   r   r   r   r   r:  r<  r=  r>  r@  s        r#   test_waverec_axis_db2rE    se    YY""1%F!!(+D /T5t4ll5%d3T./r%   c                     t         j                  j                  d      } | j                  d      }t	        dd      D ]@  }t        j                  |d|      }t        j                  |d|      }t        ||d       B y )	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    sl    YY""1%F!!),DY* /dF6mmE65T./r%   c                     t         j                  j                  d      } | j                  d      }t	        dd      D ]@  }t        j                  |d|      }t        j                  |d|      }t        ||d       B y )	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    sl    YY""1%F!!,/D\1- /dF6mmE65T./r%   c                      t         j                  j                  d      } | j                  d      }dD ]@  }t	        j
                  |d|      }t	        j                  |d|      }t        ||d       B y )Nr   rw   r   r(   r   r<  r=  )r,   r<   r=   r?  r   r   r   r   r@  s        r#   test_waverecn_int_axisrL    se    YY""1%F!!&)D /dF6mmE65T./r%   c                  r    t        j                  d      } t        t        t        j
                  | dd       y Nr   r(   r   r:  )r,   r-   r	   r*   r   r   r   s    r#   test_wavedec_axis_errorrO    s#    771:D*dllD&qAr%   c                      t        j                  t        j                  d      d      } t	        t
        t         j                  | dd       y rN  r   r   r,   r-   r	   r*   r+   rc   s    r#   test_waverec_axis_errorrS    s.    RWWQZ(A*dllAvA>r%   c                      t        j                  t        j                  d      d      } | d   d d | d<   t	        t
        t         j                  | dd       y )Nr   r(   r   r   r   r:  rQ  rR  s    r#   !test_waverec_shape_mismatch_errorrU    sA    RWWR[&)AQ49AaD*dllAvA>r%   c                      t        j                  d      } t        t        t        j
                  | dd       t        t        t        j
                  | dd       t        t        t        j
                  | dd       y 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                  &   t        j                  d      } t        j                  | d      }t	        t
        t        j                  |dd       t	        t        t        j                  |dd       t	        t        t        j                  |dd       y 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                      t        j                  d      } t        t        t        j
                  | dd       t        t        t        j
                  | dd       y 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                      t        j                  d      } t        j                  | d      }t	        t
        t        j                  |dd       t	        t
        t        j                  |dd       y 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            	      F   t         j                  j                  d      } | j                  ddd      }t	        j
                  d      ddf}t        |j                  |      D cg c]%  \  }}t        j                  j                  ||      ' }}}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               y c c}}w )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  .  s9   YY""4(F<<B#D V$fe4H djj(+-fb"$))))"b1 -J - /##))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  *dmmT8BQ<@*dmmT8%)L*dmmUHRaLA*dmmUH5!9M LE]]5(2A,bq	:FDMM&(2A,bq	BE Z^$c&*o6=-s   $*Jc            	      p   t         j                  j                  d      } t        dd      D ]  }t	        t
        t              D ]  \  }}dD ]  }| j                  d|z        }|j                  |      }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(           
 y )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7 	-ME6# 
---eDj9{{5)OOD&@ooa(99??rzz2::&>>#CDtD#CEF&01		V+,
-	--r%   c                      t         j                  j                  d      } d}| j                  d|z        }t	        j
                  |dd      }t        |j                  |       t	        j                  |      }t        |j                  |       y )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                  (   t         j                  j                  d      } d}| j                  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          y )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CE* *dootVFK*dootVLQ dootVBGGBFF4::$678:<r%   c            	      4   t         j                  j                  d      } d}| j                  d|z        }d}d}t	        j
                  |||      }t        |      D ]K  }t        t        |j                  |         t	        j                  |j                  |   ||         dz          M t	        j                  |      }t        ||d	       t        t        t        j
                  ||d d
        t        t        t        j
                  ||d   |d d
        y )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hU;ADk IS+,''

2EaG	II
 //!
CCE* *dootXbq\B *dootXa[uRayQr%   c                  @   t         j                  j                  d      } | j                  d      }t	        dd      D ]=  }t        j                  |d|      }t        j                  |      }t        ||d       ? t        t        t
        j                  |dd	       y
)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    s~    YY""1%F!!.1D\1- /OOD&t4ooa T./ *dootV&Ir%   c                     t        j                  d      } d}t        j                  | d|      }d| j                  z  }t        ||   |j                         |j                         }t        ||v       |D ]'  }||   }t        |j                  | j                         ) t        j                        |<   t        t        |j                  |t        j                  t        |j                   D cg c]  }|dz   	 c}                   t#        t$        |j                  |t        j                  |      j'                  t         j(                               t        |j*                  j                  | j                         y c c}w )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    s0   778DF__T6&9F "Jvj)6==9 EJe#$  (1IQVVTYY'(
 a F1I *f00RXXeAGG$<qQU$<=>@ f00BMM!$++BJJ79 ##TYY/ %=s   1Fc                     t        j                  d      } t        t        j                  t        j
                  t        j                  gt        j                  t        j                  t        j                  g      D ]P  \  }}dt        j                  d      fD ]1  }t        t        || |        || d      }t        t        |||       3 R y )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 Ad<<VDE 	AE*gtUCe$A*gq%@		AAr%   c                  @   t        j                  d      } d}t        j                  t        j                  fD ]  }dD ]x  } || ||      }t        j
                  t        ||      D cg c](  \  }}t        j                  | j                  |   |      * c}}      }t        t        |dd        |       z  dD ]Z  }t        j                  | ||   |f      }t        t        |dd        t        j                  | j                  |   ||                \ y c c}}w )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wT2Aff-0w-?A")"c #00BE A BGQqrUW-		..  FMM$2&9S12Z''

2D	FF	As   )-Dc            	         t         j                  j                  d      } t        j                  t        j
                  dft        j                  t        j                  dft        j                  t        j                  dffD ]r  \  }}} | j                  | } ||d      }|d   j                  t         j                        |d<    ||d      }t        ||dd       t        |j                  t         j                          |d|z  z   } ||d      }|d   j                  t         j"                        |d<    ||d      }t        ||dd       t        |j                  t         j$                         |j&                  d	k(  rJ|d   j                  t         j$                        |d<   |d	   j                  t         j"                        |d	<   |j&                  d
k(  ra|d   j                  t         j$                        |d<   t)        |d	   D cg c]!  }|j                  t         j"                        # c}      |d	<   |j&                  dk(  rl|d   j                  t         j$                        |d<   |d	   j+                         D 	ci c]%  \  }	}|	|j                  t         j"                        ' c}}	|d	<    ||d      }t        ||dd       t        |j                  t         j$                         u y c c}w c c}}	w )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    s`   YY""1%F $dllEB $t}}fE $t}}iHJ "-eU FLL% 1en %Q..rzz:A+u%14d3QWWbjj)1Ha 1I$$R\\2q	&% 14d3QWWbmm, 66Q;q	((7F1Iq	((6F1I66Q;q	((7F1IvayI!qxx5IJF1I66Q;q	((7F1I%+AY__%68!Q AHHR\\22 8F1I&% 14d3QWWbmm,E"-6 J8s   &K9
*K>)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     s    "  	 	 	 
 WWbjj"**bjj",,]]	jj"**bjj"**bllmm
 

**j1BJJ
3K**j1BGGZ3H,,
3--46 	"--""I2==##Jr}}j9<< 4==?	XOOF  %G	 	 	 	" %h68$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 8AK'K$#K$'K1	