
    ge})                         d dl Zd dl mZ d dlmZ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d Zd	 Zd
 Zd ZdS )    N)array)assert_allcloseassert_array_equalassert_almost_equalsuppress_warnings)raises)signalc                   N    e Zd Zd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          dg          d           t           j                            d           t           j                            dd          }ddd|z  z
  z  }t          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 )Ni0  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seedr   	TypeErrorbspspline_filterr   randr   )selfdata_array_realresult_array_reals      @lib/python3.11/site-packages/scipy/signal/tests/test_bsplines.pytest_spline_filterzTestBSplines.test_spline_filter   s   
	uy#+UA3ZZ;;;
	u)..R00a/ 112!@ @ @@ @ @? ? ?@ @ @@ @ @@ @ @@ @ @? ? ?@ @ @@ @ @A A A@ @ @C#A$B $BJ 	)/1==)	+ 	+ 	+ 	+ 	+    c           	         t                      5 }|                    t                     t          t	          j        g dd          t          g d                     t          t	          j        g dd          t          g d                     t          t	          j        g dd          t          g d          dz             t          t	          j        g dd	          t          g d
          dz             t          t	          j        g dd          t          g d          dz             t          t	          j        g dd          t          g d          dz             t          j        	                    d           t          t	          j        t          j        
                    dd          d          t          dgg                     d d d            d S # 1 swxY w Y   d S )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   r   r%   r'   )r   r   L      r*   r   r   g      x@   )r   r      B   r-   r   r   g      ^@i0  ga$?)r   filterDeprecationWarningr   r   bspliner   r   r   r   r   r   sups     r   test_bsplinezTestBSplines.test_bsplineD   s5      	3CJJ)***CK


A66!))),,. . .CK


A66!))),,. . .CK(9(9(91==!///22257 7 7CK(9(9(91==!///22257 7 7CK(@(@(@!DD!";";";<<TAC C CCK(@(@(@!DD!":":":;;dBD D D INN5!!!CK	q!(<(<a@@!J<.113 3 3!	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s   GG**G.1G.c                    t           j                            d           t          t	          j        dd          d           t          t	          j        t          dg          d          t          dg                     d S )Ni0  r   g<~?      ?r   g?)r   r   r   r   r   gauss_spliner   r   )r   s    r   test_gauss_splinezTestBSplines.test_gauss_splineY   si    
	uC,Q224EFFF(ta88%:M:MNNNNNr   c                 r    g d}t          t          j        |d          t          g d                     d S )N)              r:   r%   )硫Y.?gye~?r<   )r   r   r7   r   )r   knotss     r   test_gauss_spline_listz#TestBSplines.test_gauss_spline_list^   sO    !!!C,UA66!"E"E"EFF	H 	H 	H 	H 	Hr   c                 2   t                      5 }|                    t                     t          j                            d           t          t          j        g d          t          g d          dz             d d d            d S # 1 swxY w Y   d S )Ni0  r    r&   r(   )
r   r/   r0   r   r   r   r   r   cubicr   r2   s     r   
test_cubiczTestBSplines.test_cubicd   s       	7CJJ)***INN5!!!CI&7&7&788!///22257 7 7		7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   A0BBBc                 2   t           j                            d           t                      5 }|                    t
                     t          t          j        g d          t          g d          dz             d d d            d S # 1 swxY w Y   d S )Ni0  r    r"   r$   )
r   r   r   r   r/   r0   r   r   	quadraticr   r2   s     r   test_quadraticzTestBSplines.test_quadraticl   s    
	u   	7CJJ)***CM*;*;*;<<!///22257 7 7	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   ABBBc                    t           j                            d           t          t	          j        t          dg                    dg           t          g d          }t          t	          j        t          g d          d          |           t          g d          }t          t	          j        t          g d                    |           d S )Ni0  r   r;   )g{߮]?gzU%?gz@g6fw@gven'@r6   r   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_cspline1dt   s    
	u3=s44rd;;; ! ! ! " " 	e,<,<,<&=&=qAA3GGG " " " # #e,<,<,<&=&=>>EEEEEr   c                    t           j                            d           t          t	          j        t          dg                    dg           t          t          t          j        t          g d          d           t          t          t          j        t          g d          d           t          g d          }t          t	          j        t          g d                    |           d S )Ni0  r   r;   rF   r6   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3=s44rd;;;z3=%0@0@0@*A*A2FFFz3=%0@0@0@*A*A3GGG " " " # #e,<,<,<&=&=>>EEEEEr   c           	      :   t           j                            d           t          t	          j        t          ddg          dg          t          dg                     t          t	          j        t          g d          g           t          g                      g d}|d         |d         z
  }g d}t          g d          }t	          j        |          }t          g d	          }t          t	          j        ||||d         
          |           d S )Ni0  r;   r   r6   r   r   
r)   r!   r   r   r   r   r%   r'   r,   r#   r   &g      g      g      g      g      g      g      g      g       g      r:   g      r;   g      ?r6   g      ?       @g      @g      @g      @      @g      @g      @g      @r(   g      @g      @g      @r$   g      !@g      "@g      #@g      $@g      %@g      &@g      '@g      (@g      )@
gw/@~jt@&1@Zd;@K7	@Zd@"~@jt@tV?K7A`@)&rY   SW@rX   7.O@rW   00/@g)-3/@rb   rW   ra   rX   r`   rY   ^:@rZ   4Ev@r[   c4~#.@r\   uyJ9@r]   /~	@r^   Y@@r_   rh   r^   rg   r]   rf   r\   re   r[   rd   rZ   rc   rY   r`   dxx0)	r   r   r   r   r   cspline1d_evalr   r   rG   r   xrj   newxycjnewys          r   test_cspline1d_evalz TestBSplines.test_cspline1d_eval   '   
	u*5"a>>B4@@%++NNN3-eJJJ.?.?DD 99	& 	& 	&---qT!A$Y    ! ! ! " "]1 5 5 5 6 6 	*2tqtDDDdKKKKKr   c           	      :   t           j                            d           t          t	          j        t          ddg          dg          t          dg                     t          t	          j        t          g d          g           t          g                      g d}|d         |d         z
  }g d}t          g d          }t	          j        |          }t          g d	          }t          t	          j        ||||d         
          |           d S )Ni0  r;   r   rQ   rR   r   rS   rV   )&rY   TW
@rX   oR@rW   bP@geW/@rx   rW   rw   rX   rv   rY    B@rZ   HG(@r[   nfWΜ=@r\   %d	O@r]   u#	@r^   )C@r_   r~   r^   r}   r]   r|   r\   r{   r[   rz   rZ   ry   rY   rv   ri   )	r   r   r   r   r   qspline1d_evalr   r   rL   rm   s          r   test_qspline1d_evalz TestBSplines.test_qspline1d_eval   rt   r   N)__name__
__module____qualname____doc__r   r4   r8   r>   rA   rD   rJ   rO   rs   r    r   r   r   r      s        H H
/+ /+ /+b3 3 3*O O O
H H H7 7 77 7 7	F 	F 	FF F FL L L.L L L L Lr   r   c            	      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r6   rT   rU   rT   r6      	   r   z
odd lengthmatchr   object too deepr   )
r   r   r   r   r	   sepfir2dpytestr   rM   reshapefiltimages     r   test_sepfir2d_invalid_filterr      s   8---..DINN1a  E
OE4abb*** 
z	6	6	6 / /tT!""X.../ / / / / / / / / / / / / / /	z	6	6	6 / /tABBx.../ / / / / / / / / / / / / / / 
z):	;	;	; : :t||Ar22D999: : : : : : : : : : : : : : :	z):	;	;	; : :tT\\!R%8%8999: : : : : : : : : : : : : : : : : :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   r'   zobject of too small depthr   )
r   r   r   r   r   r   rM   r	   r   r   r   s     r   test_sepfir2d_invalid_imager      sR   8---..DINN1a  E 
z):	;	;	; < <aA..d;;;< < < < < < < < < < < < < < < 
z)D	E	E	E . .a$---. . . . . . . . . . . . . . . . . .s$   ,B

BB0CC!Cc                      t           j                            d           t           j                            dd          } t	          j        | d           d S )NiW
G   I   r$   )r   r   r   r   r	   	cspline2dr   s    r   test_cspline2dr      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      sB    INN9INN2r""E
Ur   )numpyr   r   numpy.testingr   r   r   r   r   r   scipy.signal._bsplinesr	   	_bsplinesr   scipyr   r   r   r   r   r   r   r   <module>r      s2            C C C C C C C C C C C C        $ $ $ $ $ $ $ $ $      hL hL hL hL hL hL hL hLV: : :$	. 	. 	.! ! !    r   