
    !Цi`                        S SK r S SKJr  S SKJr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  S SKrS SKJr  \R&                  \R(                  \R*                  \R,                  \R.                  \R0                  /r\R,                  \R*                  \R*                  \R,                  \R.                  \R0                  /rSrSrS rS	 rS
 rS r S r!S r"S r#S r$\RJ                  RL                  S#S j5       r'S r(S#S jr)S r*S r+\RJ                  RL                  S#S j5       r,S r-S r.S r/S r0S r1S r2S r3S r4S r5S r6S  r7S! r8S" r9g)$    N)deepcopy)combinationspermutations)assert_assert_allcloseassert_array_equalassert_equalassert_raisesassert_warns)swt_axisư>gvIh%<=c                  l   / SQn [         R                  " S5      n[        n[         R                  " XSS9u  u  p4u  pVu  px/ SQn	[	        XySUS9  / SQn
[	        XSUS9  / S	Qn[	        X[[        US9  / S
Qn[	        Xl[        US9  S/S-  n[	        X=SUS9  / SQn[	        XNSUS9  [         R                  " XqSSS9nUS   u  pV[	        X[[        US9  [	        Xl[        US9  [         R                  " X5      n[        [        U5      S:H  5        [        [         R                  " [        U 5      5      S5        g )N         r         r   db1r   level)MH@gVf@'e@g'e?r   r   r   gQyC3t@g:0yE>rtolatol)g'e^v@'eʪ H@gVfg'e?r   ev @)r   g      @r   g      @r   g      #@
   g      !@)r   g      @r   g            ?r   r$   gZo̙#@   )        gʪ Hg^vgev r&   r    r   r!   r   r   start_levelr   )pywtWavelet
tol_doubleswtr   r   lenswt_max_level)xr   r   cA3cD3cA2cD2cA1cD1expected_cA1expected_cD1expected_cA2expected_cD2expected_cA3expected_cD3rescoeffss                    R/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/pywt/tests/test_swt.pytest_swt_decompositionr?   &   s   !A
,,u
CD)-!)B&JS
JSDLCDt<FLCDt<4LCJTB5LCJTB>A%LCDt<DLCDt< ((31!
4C1vHCCJTBCJTBXXaFCK1Ds1v&*    c                     [        [        [        R                  S5        [        R
                  " 5          [        R                  " S[        5        [        [        R                  " S5      S5        S S S 5        [        [        R                  " S5      S5        [        [        R                  " S5      S5        [        [        R                  " S5      S5        [        [        R                  " S	5      S5        g ! , (       d  f       N= f)
N   ignorer      r         r   0   )r   UserWarningr)   r.   warningscatch_warningssimplefilterr	    r@   r>   test_swt_max_levelrM   F   s    d00"5		 	 	"h4T''+Q/ 
#
 ##A&*##C(!,##B'+##D)1- 
#	"s   <C::
Dc            	      ~   / SQn [         R                  " S5      n[         R                  " XSS9u  u  p#u  pES GHa  n[        R                  " U 5      R                  S5      n[        R                  " U4S-  SS	9nUS
:X  a  [        R                  " U5      nOUS:X  a  [        R                  " U5      n[         R                  " XqSS9u  u  pu  pXX4 H%  n[        UR                  UR                  :H  5        M'     U
 H  n[        X5        M     U H  n[        X5        M     U H  n[        X5        M     U	 H  n[        X5        M     [        R                  " U 5      R                  S5      n[        R                  " U4S-  SS	9nUS
:X  a  [        R                  " U5      nOUS:X  a  [        R                  " U5      n[         R                  " XqSSS9u  u  pu  pXX4 H%  n[        UR                  UR                  :H  5        M'     U
R                  S5       H  n[        X5        M     UR                  S5       H  n[        X5        M     UR                  S5       H  n[        X5        M     U	R                  S5       H  n[        X5        M     GMd     [        [        [         R                  XSSS9  g )Nr   r   rD   r   )CF)r      r   )axisrO   rP   )rQ   r   r   )r   rS   r   r   )r)   r*   r,   npasarrayreshapeconcatenateascontiguousarrayasfortranarrayr   shaper   	transposer
   
ValueError)r/   r   r2   r3   r4   r5   orderx_2dcA2_2dcD2_2dcA1_2dcD1_2dcrows                 r>   test_swt_axisrf   T   sQ   !A
,,u
C!XXaA6JS
 zz!}$$W-~~thqjq1C<''-Dc\$$T*D-1XXdq-I**6&1AAGGtzz)* 2 Cs( Cs( Cs( Cs(  zz!}$$W-~~thqjq1C<''-Dc\$$T*D-1XXdq;<.>**6 &1AAGGtzz)* 2 ##F+Cs( ,##F+Cs( ,##F+Cs( ,##F+Cs( ,S Z *dhhaa@r@   c                  B   Sn [         R                  " SS9nSU;   a  UR                  S5        U H  n[         R                  " U5      n[	        [
        R                  " [
        R                  " [        UR                  UR                  5      5      5      5      nSX@-   S-
  -  n[
        R                  " U5      nS H\  nU(       a  UR                  (       d  M  S H9  n[         R                  " XcU XS9n	[         R                  " XUS	9n
[        XS
SS9  M;     M^     M     g )Nr   discretekinddmeyrD   r   TFtrim_approxnormro   h㈵>Hz>r   )r)   wavelistremover*   intrU   ceillog2maxdec_lenrec_lenarange
orthogonalr,   iswtr   )	max_levelwaveletscurrent_wavelet_strcurrent_waveletinput_length_powerinput_lengthXro   rn   r=   Ys              r>   test_swt_iswt_integrationr      s     I}}*-H',,':; ####2% *& "' ( -9A=>IIl#!DO66,!i.9FIIfDA4d;	  -	 "  (r@   c                     [         R                  " S5      n [        [        [        5       GH8  u  pSU S3n[
        R                  " SUS9n[         R                  " X@SS9u  u  pVu  px[        UR                  UR                  s=:H  =(       a3    UR                  s=:H  =(       a    UR                  s=:H  =(       a    U:H  Os  SU-   5        [
        R                  " S	US9n[         R                  " X@S
S9S   u  n	u  pn[        U	R                  U
R                  s=:H  =(       a3    UR                  s=:H  =(       a    UR                  s=:H  =(       a    U:H  Os  SU-   5        GM;     g )Nhaarzwrong dtype returned for z inputr%   )dtyperD   r   zswt: r%   r%   r   r   zswt2: )r)   r*   zip	dtypes_in
dtypes_outrU   onesr,   r   r   swt2)waveletdt_indt_outerrmsgr/   r2   r3   r4   r5   cAcHcVcDs                r>   test_swt_dtypesr      s
   ll6"GY
3,UG6: GGAU#!%!A!>
JS		SYYJJ#))JJsyyJJFJ& 	" GGF%(99Qq9!<LRRBHHFFFFBHHFFF6!	# 4r@   c                      [         R                  R                  S5      n [        R                  " S5      n[        [        [        5       H  u  p#U R                  S5      R                  U5      n[        R                  " XASS9n[        R                  " XQ5      n[        XFSSS9  U R                  S	5      R                  U5      n[        R                  " XASS9n[        R                  " XQ5      n[        XFSSS9  M     g )
NrR   r   )r%   rD   r   r   rr   r   r   )rU   randomRandomStater)   r*   r   r   r   standard_normalastyper,   r}   r   r   iswt2)rstater   r   r   r/   rd   xrs          r>   test_swt_roundtrip_dtypesr      s    YY""1%Fll6"GY
3""5)007HHQq)YYq"Dt4 ""6*11%8IIa*ZZ#Dt4 4r@   c            	          Sn [         R                  " S5      nS HP  n[        R                  " XS SUS9n[	        [        U5      [        R                  " UR                  U   5      5        MR     g )Ndb2)r%   rF       r   r   rD   r   r   r(   rS   )rU   r   r)   r,   r	   r-   r.   r[   )wavr/   rS   sdecs       r>   test_swt_default_level_by_axisr      sU    
C
"#AxxdESY 2 21774= AB r@   c            	         [         R                  " S5      n [        R                  " 5          [        R                  " S[
        5        [        [        [        R                  U SSS9  S S S 5        g ! , (       d  f       g = f)Nr%   rC   r   r   r   )
rU   r   rI   rJ   rK   FutureWarningr
   r]   r)   r   r/   s    r>   test_swt2_ndim_errorr      sK    

A		 	 	"h6j$))Qa@ 
#	"	"s   ;A00
A>c                 n   SnU c+  [         R                  " SS9n SU ;   a  U R                  S5        U  H  n[         R                  " U5      n[	        [
        R                  " [
        R                  " [        UR                  UR                  5      5      5      5      nSXA-   S-
  -  n[
        R                  " US-  5      R                  XU5      nS H\  nU(       a  UR                  (       d  M  S H9  n[         R                  " XcUXS9n	[         R                  " XUS	9n
[!        XS
S
S9  M;     M^     GM     g )Nr   rh   ri   rk   rD   r   rl   rm   rp   rq   r   )r)   rs   rt   r*   ru   rU   rv   rw   rx   ry   rz   r{   rW   r|   r   r   r   )r   r~   r   r   r   r   r   ro   rn   r=   r   s              r>   test_swt2_iswt2_integrationr      s    I==j1XOOF#',,':; ####2% *& "' ( -9A=>IIlAo&..|J!DO66,1y/:GJJvTB4d;	  -	 "  (r@   c                      [        S/S9  g Nr   )r   )r   rL   r@   r>   test_swt2_iswt2_quickr         %3r@   c                 ~   S H  n[         R                  " US-  5      R                  US5      nSn[        R                  " 5          [        R
                  " S[        5        [        R                  " X#SS9n[        R                  " XC5      nS S S 5        [        WU[        [        S9  M     g ! , (       d  f       N'= f)N)r%   rF   rG   r   r   rC   rD   r   r   )rU   r{   rW   rI   rJ   rK   r   r)   r   r   r   
tol_single)r   nrowsr   r   r=   r   s         r>   test_swt2_iswt2_non_squarer   	  s    IIeBh''r2$$&!!(M:YYq;F

63A ' 	1:J?  '&s   AB..
B<	c            
         Sn [         R                  " S5      n[        [        R                  " [        R
                  " [        UR                  UR                  5      5      5      5      nSU-  n[        R                  " US-  5      R                  X35      n[         R                  " XASS9S   u  nu  pgn[         R                  " XASSS9S   u  n	u  pn[        XYU S	9  [        XkU S	9  [        XzU S	9  [        XU S	9  [         R                  " XVXx4/U5      n[        XMU S	9  [         R                  " XX4/USS
9n[        XNU S	9  [        [        [         R                  XASSS
9  [        [        [         R                  XASSS
9  g )N+=r   rD   r   r   r   rT   r   axesr   r   r   r   r   )r)   r*   ru   rU   rv   rw   rx   ry   rz   r{   rW   r   r   r   r
   r]   )r   r   r   r   r   r4   cH1cV1r5   r2   cH2cV2r3   r1r2s                  r>   test_swt2_axesr     sZ   Dll5)ORWWRWWS.! &" # $ )*L
		,/"**<FA!YYqCAFS/3S!YYq,24457S/3SC4(C4(C4(C4( 
S/*O	<BA%	S/*O&	IBA% *diiQ *diiQUKr@   c            
         Sn [         R                  " S5      n[        [        R                  " [        R
                  " [        UR                  UR                  5      5      5      5      nSU-  n[        R                  " US-  5      R                  X35      n[         R                  " XASS S9S   n[         R                  " XASSS9S   n[        US   US   U S	9  [        US
   US   U S	9  [        US   US
   U S	9  [        US   US   U S	9  [         R                  " XASS9n[        U/ 5        [        [        [         R                  XASSS9  [        [        [         R                  [        R                   " / 5      US5        [        [        [         R                  XASSS9  [        [        ["        XASSS9  [        [        ["        US S2S S 24   USSSS9  g )Nr   r   rD   r   r   r   rT   aar   addaddr   r   r   r'   rQ   r   )r)   r*   ru   rU   rv   rw   rx   ry   rz   r{   rW   swtnr   r	   r
   r]   rV   r   )r   r   r   r   r   r=   coeffs2emptys           r>   test_swtn_axesr   3  s   Dll5)ORWWRWWS.! &" # $ )*L
		,/"**<FAYYq>qAFii!&A!DGF4L'$-d;F4L'$-d;F4L'$-d;F4L'$-d; IIa2E *diiQVL *diiB!L *diiq* *h!! *h#2#q&	?!a)r@   c                    SnU c+  [         R                  " SS9n SU ;   a  U R                  S5        [        SS5       GH  nUS-   n[	        [        U5      U5       GHi  nU  GH^  n[         R
                  " U5      nUR                  S:  a  M,  [        [        R                  " [        R                  " [        UR                  UR                  5      5      5      5      nSXq-   S-
  -  n[        R                  " X-  5      R                  U4U-  5      n	S Hg  n
U
(       a  UR                  (       d  M  S HD  n[         R                   " XXXS	9n[#        U5      n[         R$                  " XXJS
9n['        XSSS9  MF     Mi     [)        WW5       H/  u  nnUR+                  5        H  u  nn[-        UU   U5        M     M1     GMa     GMl     GM     g )Nr   rh   ri   rk   r   r%   rD   rl   )r   rn   ro   )r   ro   rq   r   )r)   rs   rt   ranger   r*   ry   ru   rU   rv   rw   rx   rz   r{   rW   r|   r   r   iswtnr   r   itemsr   )r   r~   ndim_transformndimr   r   r   r   Nr   ro   rn   r=   coeffs_copyr   rd   c2kvs                      r>   test_swtn_iswtn_integrationr   Y  s    I==j1XOOF#1+! tn=D'/#ll#67;;?%(KKKK:! 2" *# &$" *6:;IIag&..uTz:)DCNN '4!%197B"O&.v&6 JJvI'4dC (5	 * !5EAr !	1*2a5!4 !* 6- (0 > &r@   c                      [        S/S9  g r   )r   rL   r@   r>   test_swtn_iswtn_quickr     r   r@   c                     [         R                  " S5      R                  SSS5      n SnSn[        R                  " S5      n[        R
                  " XXS9n[        [        [        R                  XCSS9  [        [        [        R                  XCSS9  US	   S
   S S2S S 24   US	   S
'   [        [        [        R                  XCUS9  g )Ni   r%   rD   )r   r   r   r   r   r   r   r   rQ   )
rU   r{   rW   r)   r*   r   r
   r]   r   RuntimeError)r/   r~   r   wr=   s        r>   test_iswtn_errorsr     s    
		$1a(AIDUAYYqY2F *djj&)D*djj&&AQiocrc1f-F1IdO,

FDAr@   c                  X   Sn SnSn[         R                  R                  S5      n[        U 5       Hp  n[	        U5       VVs/ s H  u  pVUS:w  d  M  UPM     nnnUR                  U5      n[        R                  " XX'S9n	[        R                  " XUS9n
[        XSSS9  Mr     g s  snnf )	N)r   rG   r   sym2r   r   r   r   g|=r   )
rU   r   r   r   	enumerater   r)   r   r   r   )_shaper   r~   r   r[   axsr   r/   rd   rs              r>   %test_swtn_iswtn_unique_shape_per_axisr     s    F
CIYY""1%Ff% )% 0; 0urAF 0;""5)IIai3JJqD)5u5 &;s   B&B&c            	         [         R                  R                  S5      n U R                  SSS5      nSn[        R
                  " S5      SS4n[        R                  " XUS9n[        [        R                  " XC5      USS	9  [        R                  " XS S
 US9n[        [        R                  " XCS S
 5      USS	9  [        [        [        R                  XS S U5        [        [        [        R                  XCS S 5        [        R                  " 5          [        R                  " S[        5        US   n[        R                  " XSS S U5      n[        [        R                   " XcS S 5      USS	9  S S S 5        g ! , (       d  f       g = f)Ni  rF   r   r   r   db4r   r   r   r   rD   rC   ).r   )rU   r   r   randnr)   r*   r   r   r   r
   r]   rI   rJ   rK   r   r   r   )r   datar   r   coefsdata2coefs2s          r>   test_per_axis_waveletsr     s.   YY""4(F<<B#DE V$fe4HIIdE2EDJJu/EB IIdRaL6EDJJurl3TF *dii|UC*djj%"1>		 	 	"h6V52A,6

6BQ<8%eL 
#	"	"s   AE<<
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S9  U" U SSS9n[        [        X$US9  M,     MM     g )N)rF   rF   morlr   )r   r   r   r   )r   )rU   r   r   r)   r,   r   r   r}   r   r   DiscreteContinuousWaveletr
   r]   )r   dec_funcrec_funccwaverd   s        r>    test_error_on_continuous_waveletr     s    778D!488TYY		"B#'99djj$**"EGd<<VDEE*he !# uA.A*h5A FGr@   c                  X   [         R                  " S5      R                  [         R                  5      n U SU -  -   nSn[         R                  [         R                  4[         R                  [         R                  4[         R
                  [         R                  4[         R                  [         R                  4[         R                  [         R                  44 H  u  p4U[         R                  [         R                  4;   a  Un[         R                  nOU n[         R                  n[        R                  " XRS5      nUS   S   R                  U5      US   S   R                  U5      /US'   [        R                  " Xr5      n[        XhR                  5        [        XSSS9  M     g )	NrF                 ?r   rD   r   r   MbP?r   )rU   r{   r   float64float32float16
complex128	complex64r)   r,   r}   r	   r   r   )	x_real	x_complexr   dtype1dtype2r/   output_dtyper=   ys	            r>   test_iswt_mixed_dtypesr    s/   YYr]!!"**-FF"I
CJJ

3JJ

3JJ

3MM2<<8LL"--8	: bllBMM22A==LA::L!!$AYq\((0AYq\((02q	IIf"\77+4d3':r@   c            
         [         R                  R                  S5      n U R                  SS5      nUSU-  -   nSn[         R                  [         R
                  4[         R
                  [         R                  4[         R                  [         R                  4[         R                  [         R                  4[         R                  [         R                  44 H  u  pEU[         R                  [         R                  4;   a  Un[         R                  nOUn[         R                  n[        R                  " XcS5      nUS   S   R                  U5      [        US   S    V	s/ s H  oR                  U5      PM     sn	5      /US'   [        R                  " X5      n
[        XzR                  5        [!        XSSS9  M     g s  sn	f )	Nr   r%   r   r   rD   r   r   r   )rU   r   r   r   r   r   r   r   r   r)   r   r   tupler   r	   r   r   )r   r  r  r   r  r  r/   r  r=   rd   r  s              r>   test_iswt2_mixed_dtypesr
    sN   YY""1%F\\!QFF"I
CJJ

3JJ

3JJ

3MM2<<8LL"--8	: bllBMM22A==LA::L11%AYq\((0fQilClHHV,lCDFq	JJv#\77+4d3':  Ds   #Gc            	         [         R                  R                  S5      n U R                  SSS5      nUSU-  -   nSn[         R                  [         R
                  4[         R
                  [         R                  4[         R                  [         R                  4[         R                  [         R                  4[         R                  [         R                  44 GH  u  pEU[         R                  [         R                  4;   a  Un[         R                  nOUn[         R                  n[        R                  " XcS5      nUS   R                  SUR                  -  5      n	U	R                  U5      n	US   R                  5        V
Vs0 s H  u  pXR                  U5      _M     snn
US'   XS   SUR                  -  '   [        R                  " X5      n[!        X|R"                  5        [%        XSSS9  GM     g s  snn
f )	Nr   r%   r   r   rD   ar   r   )rU   r   r   r   r   r   r   r   r   r)   r   popr   r   r   r   r	   r   r   )r   r  r  r   r  r  r/   r  r=   r  r   rd   r  s                r>   test_iswtn_mixed_dtypesr    sw   YY""1%F\\!Q"FF"I
CJJ

3JJ

3JJ

3MM2<<8LL"--8	: bllBMM22A==LA::L11%1IMM#,'HHV5;AY__5FG5FTQQ((5FGq	"#q	#,JJv#\77+4d3+:" Hs   G<c            	          [        [        [        R                  / S5        [        R
                  " S5      SS2S S 24   n [        [        [        R                  U SSSS9  g )Nr   )r   r   r   r   r   r   )r
   r]   r)   r,   rU   r   r   r   s    r>   test_swt_zero_size_axesr  )  sF    *dhhE2 	!QA*diiEFr@   c                  D   Sn [         R                  R                  S5      nUR                  S5      n[        R
                  " X SSS9nU Vs/ s H  n[         R                  " U5      PM     nn[        [         R                  " U5      [         R                  " U5      5        [        [         R                  R                  U5      [         R                  R                  [         R                  " U5      5      5        [        [        [        R
                  USSS9  gs  snf )	zBVerify that the 1D SWT partitions variance among the coefficients.r   rR      Trm   bior2.2rp   N)rU   r   r   r   r)   r,   varr   sumlinalgro   rX   r   rH   )r   r   r/   r=   rd   	variancess         r>   )test_swt_variance_and_energy_preservationr  2  s     CYY""1%FSAXXa$T:F$*+FqFI+BFF9%rvvay1 BIINN1%IINN2>>&#9:< dhh94@ ,s    Dc            	         Sn [         R                  R                  S5      nUR                  SS5      n[        R
                  " X SSSS9nUS   R                  5       /nUSS	  H+  nU H"  nUR                  UR                  5       5        M$     M-     U Vs/ s H  n[         R                  " U5      PM     nn[        [         R                  " U5      [         R                  " U5      5        [        [         R                  R                  U5      [         R                  R                  [         R                  " U5      5      5        [        [        [        R
                  US
SSS9  g	s  snf )zBVerify that the 2D SWT partitions variance among the coefficients.r   rR   @   r   Tr   rn   ro   r   r   Nr  r   ro   )rU   r   r   r   r)   r   ravelappendr  r   r  r  ro   rX   r   rH   )r   r   r/   r=   
coeff_listdr   r  s           r>   *test_swt2_variance_and_energy_preservationr!  E  s    CYY""1%FRAYYqQDtDF)//#$JABZAaggi(   %//JqJI/BFF9%rvvay1 BIINN1%IINN2>>*#=>@ diiIQTJ 0s    E(c            	         Sn [         R                  R                  S5      nUR                  SS5      n[        R
                  " X SSSS9nUS   R                  5       /nUSS	  H;  nUR                  5        H$  u  pgUR                  UR                  5       5        M&     M=     U Vs/ s H  n[         R                  " U5      PM     nn[        [         R                  " U5      [         R                  " U5      5        [        [         R                  R                  U5      [         R                  R                  [         R                  " U5      5      5        [        [         [        R
                  US
SSS9  g	s  snf )zBVerify that the nD SWT partitions variance among the coefficients.r   rR   r  r   Tr  r   r   Nr  r  )rU   r   r   r   r)   r   r  r   r  r  r   r  r  ro   rX   r   rH   )	r   r   r/   r=   r  r   r   r   r  s	            r>   *test_swtn_variance_and_energy_preservationr#  \  s    CYY""1%FRAYYqQDtDF)//#$JABZGGIDAaggi(   %//JqJI/BFF9%rvvay1 BIINN1%IINN2>>*#=>@ diiIQTJ 0s   ' E8c                     S[         R                  [         R                  S4S[         R                  [         R                  S4S[         R
                  [         R                  S44 Hj  u  pp#[        R                  " SU -  5      nU" USSS	S
9n[         R                  " U5      u  pgn[         R                  " XgXS9nU" US5      n	[        XI5        Ml     g )Nr   r,   rD   r   r   r   )rF   r   T)r   rn   )output_format)r)   r,   r}   r   r   r   r   rU   r   ravel_coeffsunravel_coeffsr   )
r   _swt_iswt
ravel_typer/   rd   arrslicesshapesr   s
             r>   test_swt_ravel_and_unravelr.  s  s     $))U+		4::v.		4::v.*0%E GGFTM"F!6"//2VVN!V*0r@   )N):rI   copyr   	itertoolsr   r   numpyrU   pytestnumpy.testingr   r   r   r	   r
   r   r)   pywt._extensions._swtr   int8r   r   r   r   r   r   r   r   r+   r?   rM   rf   r   r   r   r   r   markslowr   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  r  r!  r#  r.  rL   r@   r>   <module>r8     s[     0     * WWbjj"**bjj",,]]	jj"**bjj"**bllmm
 

+@.5Ap<B#$5$CA  <  <F4@L>#)L +5 +5\4B 6M8
B46484<GA&K.K.r@   