
    !Цi9                     D   S SK Jr  S SKrS SK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 \\R$                  /-  r\\R                  /-  rS rS rS rS rS rS	 rS
 rS rS rS rS rS rS r S r!S r"S r#S r$S r%S r&S r'S r(S r)S r*S r+S r,S r-S r.g! \ a     NZf = f)    )combinationsN)assert_assert_allcloseassert_equalassert_raisesc                      [         R                  " / SQS5        0 n [        [        [         R                  U S5        [        [        [         R                  SS5        g )N)            haarr
   )pywtdwtnr   	TypeError
ValueError)datas    W/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/pywt/tests/test_multidim.pytest_dwtn_inputr      s9    IIlF#D)TYYf5*diiF3    c            
      :   [         R                  " / SQ/ SQ/ SQ/ SQ// SQ/ SQ/ SQ/ SQ//5      n [        R                  " S	5      n[        R                  R
                   H7  n[        R                  " XUS
9n[        U [        R                  " X1US
9SSS9  M9     g )Nr   r   r	      r	   r   r   r      r   r
   r	   r      r
   !   r   	   r
   r      r   r    r	   r	   r   r	   r
   r   r            4   r#   r   r
   r$   r   r&   r%   r   r   r
   r%   N   r$   r
   r   modevIh%<=rtolatol)	nparrayr   WaveletModesmodesr   r   idwtn)r   waveletr+   ds       r   test_3D_reconstructr8   %   s    88					 
				  !D ll6"G

  IId$/djj$?"	0 !r   c            
         [         R                  R                  S5      n U R                  SS5      n[        R
                  " 5       nSU;   a  UR                  S5        U H  nUS;   a  M  [        [        R                  " U5      [        R                  5      (       d  M@  [        R                  R                   H7  n[        R                  " XUS9n[        [        R                  " XSUS9USSS9  M9     M     g )N     dmey)cmorshanfbspr*   Hz>r-   )r0   randomRandomStaterandnr   wavelistremove
isinstanceDiscreteContinuousWaveletr2   r3   r4   r   r   r5   )rstaterrD   r6   r+   coeffss         r   test_dwdtn_idwtn_allwaveletsrK   7   s    YY""4(FRA}}H..d44W=t||LL

((1D9

6 F !49 ) r   c            	         [         R                  " S5      n S H  n[        R                  " / SQ/ SQ/ SQ/US9n[         R                  R
                   H  n[         R                  " X 5      n[        R                  " SUR                  S9nX%S S S2S S S	24'   [         R                  " US S S2S S S	24   U 5      nU H  n[        Xg   XG   5        M     M     M     g )
Nr   float32float64r   r   r   r%   r   r
   r	   r   dtype)r   r$   r
   )
r   r2   r0   r1   r3   r4   r   onesrR   r   )r6   rR   r   r+   expectedstridedstrided_dwtnkeys           r   test_striderY   I   s    ll6"G'xx++-/ $%
 JJ$$Dyy/HgggTZZ8G!%DbD#A#I99WTrT3Q3Y%7AL 18=A   % (r   c            
         [         R                  " S5      n S H  n[        R                  " / SQ/ SQ/ SQ/US9n[         R                  R
                   H  n[         R                  " X 5      n[        R                  " S[        R                  " UR                  S4S	UR                  R                  4S
.SS9S9nX%S S & [         R                  " US   U 5      nU H  n[        Xg   XG   5        M     M     M     g )Nr   rM   r   rP   r   rQ   )r   r%   r   byte)r   padT)alignr   )r   r2   r0   r1   r3   r4   r   rT   rR   itemsizer   )r6   rR   r   r+   rU   paddedpadded_dwtnrX   s           r   test_byte_offsetra   [   s    ll6"G'xx++-/ $%
 JJ$$Dyy/HWWV288djj!_=CTZZEXEX<Y5[:>,@ AF 1I))F6NG<K 0(-@   % (r   c            	      v   [         R                  " / SQ/ SQ/ SQ/ SQ// SQ/ SQ/ SQ/ SQ//5      n U S	-   n [        R                  " S
5      n[        R                  " X5      n[        U R                   Vs/ s H  n[        S U5      PM     sn5      n[        U [        R                  " X!5      U   SSS9  g s  snf )Nr   r   r   r   r!   r"   r'   r(                 ?r   r,   r-   )
r0   r1   r   r2   r   tupleshapeslicer   r5   )r   r6   r7   soriginal_shapes        r   test_3D_reconstruct_complexri   n   s    88					 
				  !D "9Dll6"G		$ ADJJ?JqE$NJ?@ND$**Q0@U, @s   5B6c            
      \   [         R                  " / SQ/ SQ/ SQ/5      n [        R                  " S5      n[        R                  " X5      u  nu  p4nX#XES.n[        R
                  R                   H8  n[        [        R                  " X#XE44XS9[        R                  " XaUS9SSS9  M:     g )	Nr   rP   r   r   aadaadddr*   +=r-   
r0   r1   r   r2   dwt2r3   r4   r   idwt2r5   r   r6   LLHLLHHHr7   r+   s           r   test_idwtn_idwt2ry      s    88 D
 ll6"Gyy/B20A

  

BR#5wJ

1D9"	0 !r   c            
      f   [         R                  " / SQ/ SQ/ SQ/5      n U S-   n [        R                  " S5      n[        R                  " X5      u  nu  p4nX#XES.n[        R
                  R                   H8  n[        [        R                  " X#XE44XS9[        R                  " XaUS9SSS	9  M:     g )
Nr   rP   r   rc   r   rk   r*   rp   r-   rq   rt   s           r   test_idwtn_idwt2_complexr{      s    88 D "9Dll6"Gyy/B20A

  

BR#5wJ

1D9"	0 !r   c            
      J   [         R                  " / SQ/ SQ/ SQ/5      n [        R                  " S5      n[        R                  " X5      n[        S[        U5      5       H  n[        UR                  5       U5       H  nUR                  5       nU H  nXV	 M     UR                  SS 5      nUR                  SS 5      nUR                  SS 5      n	UR                  S	S 5      n
[        [        R                  " XxX44U5      [        R                  " US5      S
S9  M     M     g )Nr   rP   r   r   r	   rl   rm   rn   ro   gV瞯<r/   )r0   r1   r   r2   r   rangelenr   keyscopygetr   rs   r5   )r   r6   coefsnum_missingmissingmissing_coefsrX   ru   rv   rw   rx   s              r   test_idwtn_missingr      s    88 D
 ll6"GIId$E QE
+#EJJL+>G!JJLM!& ""4.B""4.B""4.B""4.BDJJL'97C JJ}f=EK ? ,r   c                  R    S S S S S.n [        [        [        R                  U S5        g )Nrk   r   )r   r   r   r5   )r   s    r   test_idwtn_all_coeffs_Noner      s"    t4t<E*djj%8r   c                  8   [         R                  " / SQ/ SQ/ SQ/5      n [        R                  " S5      n[        R                  " X5      u  nu  p4nX#XEUS.n[        [        [        R                  Xa5        X#XES.n[        [        [        R                  Xa5        g )Nr   rP   r   r   )rl   rm   rn   ro   ff)arm   rn   ro   r0   r1   r   r2   rr   r   r   r5   r   r6   ru   rv   rw   rx   r7   s          r   test_error_on_invalid_keysr      s    88 D
 ll6"Gyy/B 2r:A*djj!5 "/A*djj!5r   c                  0   [         R                  " / SQ/ SQ/ SQ/5      n [        R                  " S5      n[        R                  " X5      u  nu  p4nUS S 2S S24   nUS S 2S S24   nUS S 2S S24   nX#XES.n[        [        [        R                  Xa5        g )Nr   rP   r   r   rS   rk   r   r   s          r   test_error_mismatched_sizer      s    88 D
 ll6"Gyy/B 
AssFB	AssFB	AssFB20A*djj!5r   c                     [         R                  " S5      n [        [        [        5       H  u  p[
        R                  " SUS9nSU S3n[         R                  " X05      u  nu  pgn[        UR                  UR                  s=:H  =(       a&    UR                  s=:H  =(       a    UR                  :H  Os  SU-   5        [         R                  " XVXx44U 5      n	[        U	R                  U:H  SU-   5        M     g )Nr   r   r   rQ   wrong dtype returned for  inputzdwt2: zidwt2: )r   r2   zip	dtypes_in
dtypes_outr0   rT   rr   r   rR   rs   )
r6   dt_indt_outxerrmsgcAcHcVcDx_roundtrips
             r   test_dwt2_idwt2_dtypesr      s    ll6"GY
3GGF%(,UG6:99Q0LRRBHH<<<<BHH<6!	# jj"2l!3W=!!V+Y-?@ 4r   c                     [         R                  " / SQ/ SQ/ SQ/5      n U SU -  -   n [        R                  " U SSS9nU  Vs/ s H  n[        R                  " US5      S   PM     nn[        US	   U5        U  Vs/ s H  n[        R                  " US5      S
   PM     nn[        US   U5        [        R                  " U SSS9nU Vs/ s H  n[        R                  " US5      S   PM     nn[        US   U5        U Vs/ s H  n[        R                  " US5      S
   PM     nn[        US   U5        g s  snf s  snf s  snf s  snf )Nr   r	   r
   r   r	   r	   r	   r	   r	   r   r
   r   rc   r   )r	   axesr   r   r	   r7   r	   r	   rl   rn   )r0   r1   r   r   dwtr   )r   r   r   
expected_a
expected_dexpected_aaexpected_ads          r   test_dwtn_axesr      s(   88\!!# $D "T'>DIIdF.E267$Q$((1f%a($J7sZ(267$Q$((1f%a($J7sZ(IIdF0E3=>:a488Av&q):K>tk*3=>:a488Av&q):K>tk* 87 ?>s   $D9;$D>
$E$Ec                      [         R                  " / SQ/ SQ/ SQ/5      n U SU -  -   n [        R                  " U SSS9n[	        [        R
                  " USSS9U SS	9  g )
Nr   r   r   rc   r   r   r   rp   r}   )r0   r1   r   r   r   r5   r   r   s     r   test_idwtn_axesr     sW    88\!!# $D "T'>DIIdF0EDJJuf6:DuMr   c                  4   [         R                  " / SQ/ SQ/ SQ/5      n U SU -  -   n [        R                  " U SSS9u  nu  p#n[         R                  " U5      n[        R
                  " XX444SSS9nS n[        R
                  " XX444SSS9n[        XV5        g )Nr   r   r   rc   r   r   r   )r0   r1   r   rr   
zeros_likers   r   )r   r   r   r   r   result_zerosresult_nones          r   test_idwt2_none_coeffsr     s    88\!!# $D "T'>DyyvF;B 
r	B::r<0&vFL	B**br,/fEK+r   c                  .   [         R                  " / SQ/ SQ/ SQ/5      n U SU -  -   n [        R                  " U SSS9n[         R                  " US   5      US'   [        R
                  " USSS9nS US'   [        R
                  " USSS9n[        X#5        g )	Nr   r   r   rc   r   r   r   ro   )r0   r1   r   r   r   r5   r   )r   r   r   r   s       r   test_idwtn_none_coeffsr   '  s    88\!!# $D "T'>DIIdF0E --d,E$K::eV&9LE$K**UF8K+r   c                      [         R                  " / SQ/ SQ/ SQ/5      n [        R                  " U SSS9n[	        [        R
                  " USSS9U SS9  [        [        [        R
                  USS	S9  g )
Nr   r   r   r   r   r   rp   r}   r   r	   r	   )r0   r1   r   rr   r   rs   r   r   r   s     r   test_idwt2_axesr   8  s`    88\!!# $D IIdF0EDJJuf6:DuM *djj%iHr   c            	          [         R                  " [         R                  R                  S5      5      n [	        SS5       H8  n[
        R                  " U SUS9n[        [
        R                  " USUS9U SS9  M:     g )N)r   r   r   )r   r	   r
   r
   r   r   rp   r}   )	r0   r1   rA   standard_normalr   r   rr   r   rs   r   r   r   s      r   test_idwt2_axes_subsetsr   C  s[    88BII--i89DY*		$T2

5&t<dO +r   c            	          [         R                  " [         R                  R                  S5      5      n [	        SS5       H8  n[
        R                  " U SUS9n[        [
        R                  " USUS9U SS9  M:     g )N)r   r   r   r   r   r   r   r   rp   r}   )	r0   r1   rA   r   r   r   r   r   r5   r   s      r   test_idwtn_axes_subsetsr   K  s[    88BII--l;<D\1-		$T2

5&t<dO .r   c                     [         R                  " / SQ/ SQ/ SQ/5      n [        R                  " U SSS9n[        R                  " U SSS9n[	        X5        [        R
                  " USSS9n[        R
                  " USSS9n[	        X45        g )Nr   r   r   r   r   r   )rS   rS   )r0   r1   r   r   r   r5   )r   coefs1coefs2rec1rec2s        r   test_negative_axesr   S  sw    88\!!# $D YYtV&1FYYtV(3F ::ff62D::ff84Dr   c                     [         R                  " S5      n [        [        [        5       H  u  p[
        R                  " SUS9nSU S3n[         R                  " X05      nUR                  5        H!  u  pg[        UR                  U:H  SU-   5        M#     [         R                  " XP5      n[        UR                  U:H  SU-   5        M     g )Nr   r   rQ   r   r   zdwtn: zidwtn: )r   r2   r   r   r   r0   rT   r   itemsr   rR   r5   )	r6   r   r   r   r   rJ   kvr   s	            r   test_dwtn_idwtn_dtypesr   `  s    ll6"GY
3GGF%(,UG6:1&LLNDAAGGv%x&'89 # jj1!!V+Y-?@ 4r   c                     [         R                  R                  S5      n U R                  SSS5      nUSU-  -   n[        R
                  " US5      n[        R                  " US5      n[        X1SS9  USUR                  -     R                  [         R                  5      USUR                  -  '   [        R                  " US5      n[        XASSS	9  [        UR                  [         R                  :H  5        g )
Nr   r   rc   db2g|=)r.   r   r@   r-   )r0   rA   rB   rC   r   r   r5   r   ndimastype	complex64r   rR   
complex128)rH   r   rJ   r   x_roundtrip2s        r   test_idwtn_mixed_complex_dtyper   n  s    YY""1%FQ1A	BqDAYYq% F**VU+KK/ "#,/66r||DF3<::fe,LL$T:L"--/0r   c                      [         R                  " S5      n [         R                  " S5      =n=p#[        [        [        R
                  XX#44SS9  g )N)r%   r%   )r   r   r   r6   )r0   zerosr   r   r   rs   )ru   rw   rv   rx   s       r   test_idwt2_size_mismatch_errorr   ~  s?    	&	B88F##B#*djj2B|*<fMr   c                     [         R                  " S5      n [        R                  " S5      n[	        [
        [        R                  X5        [         R                  " S5      n[	        [
        [        R                  X!SS9  g )Nr;   r   )r   r   r   r   )r0   rT   r   r2   r   r   rr   )r   r6   data2s      r   test_dwt2_dimension_errorr     sP    772;Dll6"G *dii7 GGFOE*diiiHr   c            	         [         R                  R                  S5      n U R                  SSS5      n[        R
                  " S5      SS4nSS[        R                  R                  R                  R                  4n[        R                  " XU5      n[        [        R                  " XBU5      USS	9  [        R                  " XS S
 U5      n[        [        R                  " XBS S
 U5      USS	9  [        R                  " XUS S
 5      n[        [        R                  " XBUS S
 5      USS	9  [        [        [        R                  XS S 5        [        [        [        R                  XUS S S9  [        [        [        R                  XBS S 5        [        [        [        R                  XBUS S S9  US   n[        R                  " XRS S US S 5      n[        [        R                   " XbS S US S 5      USS	9  g )Nr:   r;   r   sym2db4	symmetricperiodizationrp   r}   r	   r
   r*   ).r   )r0   rA   rB   rC   r   r2   _extensions_pywtr3   reflectr   r   r5   r   r   rr   rs   )rH   r   waveletsr4   r   r   r   s          r    test_per_axis_wavelets_and_modesr     s   YY""4(F<<B#D V$fe4H /##))113E IIde,EDJJu65IIIdRaL%0EDJJurlE:DuMIIdeBQi0EDJJubq	:DuM *dii|<*diieBQiH*djj%"1>*djj%bq	J LEYYurlE"1I6FDJJv|U2AY? r   c            	      ^   [         R                  " S5      n [        [        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 )N)r;   r;   morlr   db1)r0   rT   r   r   rr   r   rs   r5   rG   r   r   )r   dec_funrec_funcwavecs        r    test_error_on_continuous_waveletr     s    778DDII 6!%TZZ 8:d<<VDEE*gUCe$A*g%@	 F:r   )/	itertoolsr   numpyr0   numpy.testingr   r   r   r   r   int8float16rN   rO   r   r   r   r   
complex256AttributeErrorr   r8   rK   rY   ra   ri   ry   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r   r   <module>r      sB   #  O O 
 WWbjj"**bjj",,]]	jj"**bjj"**bllmm
	"--""I2==##J
40$9$B$A&,*0"0"K49
6&6,A+$N,","IPP
A1 N	I D	Ay  		s   $ D DD