
    _Mh6>                         d dl Zd dlmZmZmZ d dlZd dlmZ d dlm	c m
Z d dlm	Z	  G d d          Zej        ej        eej        ej        ej        eeej        ej        eeiZ G d d          Zd	 Zd
 ZdS )    N)assert_almost_equalxp_assert_closexp_assert_equal)raises)signalc                   B    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestBSplinesa  Test behaviors of B-splines. Some of the values tested against were
    returned as of SciPy 1.1.0 and are included for regression testing
    purposes. Others (at integer points) are compared to theoretical
    expressions (cf. Unser, Aldroubi, Eden, IEEE TSP 1993, Table 1).c                    t           j                            d          }t          t          t
          j        t          j        dg          d           |                    dd          }ddd|z  z
  z  }t          j        g dg dg d	g d
g dg dg dg dg dg dg dg dg          }t          t          j        |d          |           d S )N0  r      
         )g7ݿgD @g5P?gB߸"@gyӼ®@gE5`@g&)#@gEf!g<@gSbυ.X gFgg$`#@)gI<M$k@gYvR@gd)B	g,#@gd?H#gk"`	@g)k	gi	V@gH-Q#@gn)Ҕ g3%0?g@	)gAZg9s@g /{Dg٩@gEC@g'UE@gآ?@gւ gzk@ga"@g򿽴~gKG#@)g$9gL|wglT@g?ss}aJ?g7iH^	gt,`?gh@glA1mg(T#g* #gDV#@g@)g'"@ga+ٓgE=a@g:"gIV@g5@gYd\gі1pg"2 g:i@gi^J @g`HQ!)g^!g#Mƽ!@g论H&@gfQq@g%gm̂r!@g
,@gY bgY#@g/-i@g Vqg")gH"@ggʜ6@ggeg&P@gY2#Cg
0@g|0g *!/@g(gqq?g)a)gF!Ígzǫg^geF?g
O0!gV<gtСg%9W@g^[H#@g3Fz?g.5 gsd?)g놎g,
@gA/u@g`9ogebgȀ@gMgZa@g<ˉ8g:ɘ%@gdH	g4g:Ns@)gg-ҿgE- g)in"@gd.xg2~wgďgYr4Q?gkM-:g,@g+ @gVu)g@+_$?gKGj?g[ C$}@g_gD/X@gHgJSʌ@g@ggN+gë	gk8gjZ@)gݵB`#@g+N?g	gg'g=!"F@gƱҟ"g'-:@g#g'gj \B@g~ge@g$q߼)
nprandomRandomStater   	TypeErrorbspspline_filterasarrayrandr   )selfrngdata_array_realresult_array_reals       `/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/signal/tests/test_bsplines.pytest_spline_filterzTestBSplines.test_spline_filter   s}   i##E**y#+RZ__a@@@((2r**a/ 112J@ @ @@ @ @? ? ?@ @ @@ @ @@ @ @@ @ @? ? ?@ @ @@ @ @A A A@ @ @C#A$B $BJ 	)/1==)	+ 	+ 	+ 	+ 	+    c           
      V   t           j                            d          }|                    dd          |                    dd          dz  z   }ddd|z  z
  z  }t          j        g dg dg d	g d
g dg dg dg          }t          t          j        |d          |d           d S )Nr      y              ?r   y      ?      ?r   )y$
ݿ%)y @;;R@yH?k៌"y?!@3⟥@yʱƯ@bȺ@ymտ5a@,y`#@A4p)yF! y韷@@_@yw.X /@ @y4 L &Q!yjٿ_#@!yߟk@a
 ƽ!@ySh?@ӿ&@)y?@	X@@yH:#@~%yXH#r!@y} "`	@)ƿ@y@k	ubyoU@I"$#@yA Q#@,i@)yb@r ߂KqyӔ?Ȥ"yr	"@y%`Zv.y$?s@*  7@yxebeyC@P@)y?M@k9FyθUE@4%@@y[y@#?0yN 5H /@ywk@y"a"@$?y~H)y}?\#@A?y	dy{_( y^p@;^F?yu?aJ?U 0!y\@^	Kyx_?+ߡ)yl.@@9UY@yNЪmxp[H#@yDT#bz?yh #F5 y#@^d?y<@V?y{?"@&@@r   gư>)rtol)r   r   r   r   r   r   r   r   )r   r   data_array_complexresult_array_complexs       r   test_spline_filter_complexz'TestBSplines.test_spline_filter_complexD   s   i##E** XXa^^chhq!nnR.??a(:&:!:;!z& & && & && & &% % %+ + +& & &% % %1& '  '@ 	)*<a@@,4	9 	9 	9 	9 	9 	9r   c                     t           j                            d           t          t	          j        dd          d           t          t	          j        t          j        dg          d          t          j        dg          d           d S )	Ni0  r   g<~?      ?r   g?g&.>atol)r   r   seedr   r   gauss_spliner   r   )r   s    r   test_gauss_splinezTestBSplines.test_gauss_splinel   s    
	uC,Q224EFFF(RD)9)91==
J<00t	
 	
 	
 	
 	
 	
r   c                 |    g d}t          t          j        |d          t          j        g d                     d S )N)              r-      )硫Y.?gye~?r0   )r   r   r*   r   r   )r   knotss     r   test_gauss_spline_listz#TestBSplines.test_gauss_spline_lists   sL    !!!C,UA66J'J'J'JKK	
 	
 	
 	
 	
r   c                    t           j                            d           t          t	          j        t          j        dg                    dg           t          j        g d          }t          t	          j        t          j        g d          d          |           t          j        g d          }t          t	          j        t          j        g d                    |           d S )Ni0  r   r.   )g{߮]?gzU%?gz@g6fw@gven'@r&   r   r/         r   )g|-?g>!<m @g6L@glMO@g>}@)r   r   r)   r   r   	cspline1dr   r   )r   c1dc1d0s      r   test_cspline1dzTestBSplines.test_cspline1dz   s    
	ubj!oo66===j & & & ' ' 	bj1A1A1A&B&BAFFLLLz ' ' ' ( (bj1A1A1A&B&BCCTJJJJJr   c                    t           j                            d           t          t	          j        t          j        dg                    dg           t          t          t          j        t          j        g d          d           t          t          t          j        t          j        g d          d           t          j        g d          }t          t	          j        t          j        g d                    |           d S )Ni0  r   r.   r4   r&   r-   )g)`O?gAk2 @g@go@g5ڕ@)
r   r   r)   r   r   	qspline1dr   r   
ValueErrorr   )r   q1d0s     r   test_qspline1dzTestBSplines.test_qspline1d   s    
	ubj!oo66===z3="*5E5E5E*F*FKKKz3="*5E5E5E*F*FLLLz ' ' ' ( (bj1A1A1A&B&BCCTJJJJJr   c           	      v   t           j                            d           t          t	          j        t          j        ddg          dg          t          j        dg                     t          t	          j        t          j        g d          g           t          j        g                      g d}|d         |d         z
  }g d}t          j        g d          }t	          j        |          }t          j        g d	          }t          t	          j        ||||d         
          |           d S )Ni0  r.   r   r&   r   r   
r   r   r   r/   r5   r6      r   &g      g      g      g      g      g      g      g      g       g      r-   g      r.         ?r&   g      ?       @      @      @g      @      @g      @g      @      @      @g      @g      @g      @       @g      !@g      "@g      #@g      $@g      %@g      &@g      '@g      (@g      )@
gw/@~jt@&1@Zd;@K7	@Zd@"~@jt@tV?K7A`@)&rS   SW@rR   7.O@rQ   00/@g)-3/@r\   rQ   r[   rR   rZ   rS   ^:@rT   4Ev@rU   c4~#.@rV   uyJ9@rW   /~	@rX   Y@@rY   rb   rX   ra   rW   r`   rV   r_   rU   r^   rT   r]   rS   rZ   dxx0)	r   r   r)   r   r   cspline1d_evalr   r   r7   r   xrd   newxycjnewys          r   test_cspline1d_evalz TestBSplines.test_cspline1d_eval   sB   
	u*2:r1g+>+>EE
B4((	
 	
 	
 	*2:jjj+A+A2FF
2	
 	
 	
 .--qTAaD[   J & & & ' ']1z : : : ; ; 	*2tqtDDDdKKKKKr   c           	      v   t           j                            d           t          t	          j        t          j        ddg          dg          t          j        dg                     t          t	          j        t          j        g d          g           t          j        g                      g d}|d         |d         z
  }g d}t          j        g d          }t	          j        |          }t          j        g d	          }t          t	          j        ||||d         
          |           d S )Ni0  r.   r   rA   rB   r   rG   rP   )&rS   TW
@rR   oR@rQ   bP@geW/@rq   rQ   rp   rR   ro   rS    B@rT   HG(@rU   nfWΜ=@rV   %d	O@rW   u#	@rX   )C@rY   rw   rX   rv   rW   ru   rV   rt   rU   rs   rT   rr   rS   ro   rc   )	r   r   r)   r   r   qspline1d_evalr   r   r<   rg   s          r   test_qspline1d_evalz TestBSplines.test_qspline1d_eval   sB   
	u*2:r1g+>+>EE
B4((	
 	
 	
 	*2:jjj+A+A2FF
2	
 	
 	
 .--qT!A$Y   J & & & ' ']1z : : : ; ; 	*2tqtDDDdKKKKKr   N)__name__
__module____qualname____doc__r   r$   r+   r2   r:   r?   rm   ry    r   r   r	   r	      s        H H
.+ .+ .+`&9 &9 &9P
 
 

 
 
	K 	K 	KK K KL L L4L L L L Lr   r	   c            
          e Zd Zd Zd Zej                            dej	        e
ej        eej        eg          d             Zej                            dej	        e
ej        eej        eg          d             Zej                            d          d             Zej                            d	          ej                            dej	        e
ej        eej        eg          d
                         ZdS )TestSepfir2dc           	      h   t          j        g d          }t           j                            dd          }t	          j        |||dd                     t          j        t          d          5  t	          j        |||dd                     d d d            n# 1 swxY w Y   t          j        t          d          5  t	          j        ||dd          |           d d d            n# 1 swxY w Y   t          j        t          d          5  t	          j        ||	                    dd	          |           d d d            n# 1 swxY w Y   t          j        t          d          5  t	          j        |||	                    dd	                     d d d            d S # 1 swxY w Y   d S )
Nr&   rI   rL   rI   r&   r    	   r   z
odd lengthmatchr   object too deeprE   )
r   arrayr   r   r   sepfir2dpytestr   r=   reshaper   filtimages      r   test_sepfir2d_invalid_filterz)TestSepfir2d.test_sepfir2d_invalid_filter   s   x11122	q!$$tT!""X... ]:\::: 	3 	3OE4abb222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3]:\::: 	3 	3OE48T222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 ]:->??? 	> 	>OE4<<2#6#6===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>]:->??? 	> 	>OE4a)<)<===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>sH   0BB"BC,,C03C0+E		EE/+F''F+.F+c                    t          j        g d          }t           j                            dd          }t	          j        t          d          5  t          j        |	                    ddd          ||           d d d            n# 1 swxY w Y   t	          j        t          d          5  t          j        |d         ||           d d d            d S # 1 swxY w Y   d S )Nr      r   r   r5   zobject of too small depthr   )
r   r   r   r   r   r   r=   r   r   r   r   s      r   test_sepfir2d_invalid_imagez(TestSepfir2d.test_sepfir2d_invalid_image   sc   x11122	q!$$ ]:->??? 	@ 	@OEMM!Q22D$???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ ]:-HIII 	2 	2OE!HdD111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s$   ,B

BB0CC!Cdtypc                    t          j        g dg dg dg dg|          }g d}dg}t          j        |||          }t          |         }t          j        g dg dg dg dg|          }t          ||d           t          j        |||          }t          j        g dg dg dg dg|          }t          ||d           d S )	N)r   r   r/   r/   r   r   dtyperH   r   rH   r   )rJ   rL   rM   rM   rL   rJ   gؗҜ<r'   )rI   rL   rN   rN   rL   rI   )r   r   r   r   sepfir_dtype_mapr   r   )r   r   ah1h2resultdtexpecteds           r   test_simplezTestSepfir2d.test_simple   sP   
 H((((((((((((* 267 7 7 ]]SB++d#:============? GIJ J J 	u5555B++:7777777777779 ACD D D 	u555555r   c                 L   t          j        g dg dg dg dg          }g ddg}}t          j        |d d d d df         ||          }t          j        |d d d d df                                         ||          }t          ||d           |j        |j        k    sJ d S )N)	r   r   r/   r/   r   r   r   r   r/   r   r   r   V瞯<r'   )r   r   r   r   copyr   r   )r   r   r   r   r   result_stridedresult_contigs          r   test_stridedzTestSepfir2d.test_strided  s     H1110000000002 3 3 B111ccc6B;;!!!SSqS&	(8(8"bAAEBBBB#}':::::::r   z#XXX: filt.size > image.shape: flaky)reasonc           
      J   t           j                            d           t          j        g d          }t           j                            dd          }t          j        g dg dg dg dg          }t          t          j        |||d d d                   |           d S )	Ni  )r&   rI   rL   rI   r&   rK   rI   r5   )g!SB@g¿3=>@gs`[C@gsLhE@)gͨ*C@g5A@g;/K;E@g<f2E@)gE@g>#jD@gB`G@g]n0a#F@)gٕzH@g|FC@gǜgKE@gCF@r/   )	r   r   r)   r   r   r   r   r   r   )r   r   r   r   s       r   test_sepfir2d_strided_2z$TestSepfir2d.test_sepfir2d_strided_2  s     		tx;;;<<	q!$$:KKK L L L L L L L L LN O O 	tT##A#Y??JJJJJr   z*XXX: flaky. pointers OOB on some platformsc                 J   t          j        g d|          }t          j        g dg dg dg dg dg|          }g dg d	g d
g dg dg}t          j        |          }t          j        |||d d d                   }t          ||d           |j        t          |         k    sJ g dg dg dg dg dg}t          j        |          }t          j        ||d d d         |d d d                   }t          ||d           |j        t          |         k    sJ d S )N)r   r   r5   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   )g     ^@g     @Y@g     V@      a@g     _@)     `@g     @_@g     _@      c@g      d@)r   g      a@g     b@g     @d@g      f@)r   g      _@g     `@g     b@g     `b@)g     e@g     c@r   g     d@g     a@r/   r   r'   )g      6@g     A@     D@g      ?@     G@)g      ;@     C@      H@r   g     K@)g     @@g      E@g     H@g     J@g     M@)r   g      F@r   g      B@r   )g     P@g      O@r   g      A@g      G@)r   r   r   r   r   r   r   r   )r   r   r   r   r   r   s         r   test_sepfir2d_strided_3z$TestSepfir2d.test_sepfir2d_strided_3  s    x---T:::
OOO+OO+OO+OO+OO	- 59	: : : 322222222222222	4
 :h''d33Q3i88u5555|/55555---------------	/
 :h''SSqS	4!9==u5555|/5555555r   N)rz   r{   r|   r   r   r   markparametrizer   uint8intfloat32float	complex64complexr   r   xfailr   r   r~   r   r   r   r      s^       > > >$	2 	2 	2 [V	3
E2<A 6 6 6. [V	3
E2<A 	; 	; 	; [CDDK K EDK [JKK[V	3
E2<A 6 6  LK6 6 6r   r   c                      t           j                            d           t           j                            dd          } t	          j        | d           d S )NiW
G   I   rO   )r   r   r)   r   r   	cspline2dr   s    r   test_cspline2dr   A  sD    INN9INN2r""E
UC     r   c                      t           j                            d           t           j                            dd          } t	          j        |            d S )NiW
r   r   )r   r   r)   r   r   	qspline2dr   s    r   test_qspline2dr   G  sB    INN9INN2r""E
Ur   )numpyr   scipy._lib._array_apir   r   r   r   r   scipy.signal._spline_filtersr   _spline_filtersr   scipyr	   r   r   r   float64r   r   r   r   r   r   r   r~   r   r   <module>r      sS                       * * * * * * * * *      sL sL sL sL sL sL sL sLn Hbj#rzJ
E5L",B u6 u6 u6 u6 u6 u6 u6 u6p! ! !    r   