o
    `^h6>                     @   s   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	  m
Z d dlm	Z	 G d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 dZd	d
 Zdd ZdS )    N)assert_almost_equalxp_assert_closexp_assert_equal)raises)signalc                   @   sP   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
d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                 C   s   t jd}tttjt dgd |dd}ddd|   }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|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_real r   ^/home/air/shanriGPT/back/venv/lib/python3.10/site-packages/scipy/signal/tests/test_bsplines.pytest_spline_filter   s,   %zTestBSplines.test_spline_filterc              
   C   s   t jd}|dd|ddd  }ddd|   }t g dg dg d	g d
g dg dg dg}tt|d|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_complexr   r   r   test_spline_filter_complexD   s     
z'TestBSplines.test_spline_filter_complexc                 C   sH   t jd ttddd ttt dgdt dgdd d S )	Ni0  r   g<~?      ?r   g?g&.>atol)r   r   seedr   r   gauss_spliner   r   )r   r   r   r   test_gauss_splinel   s
   
zTestBSplines.test_gauss_splinec                 C   s(   g d}t t|dtg d d S )N)              r'      )硫Y.?gye~?r*   )r   r   r%   r   r   )r   knotsr   r   r   test_gauss_spline_lists   s   z#TestBSplines.test_gauss_spline_listc                 C   s|   t jd ttt dgdg t g d}ttt g dd| t g d}ttt 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c1d0r   r   r   test_cspline1dz   s   zTestBSplines.test_cspline1dc                 C   s   t jd tt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t g d| d S )Ni0  r   r(   r-   r!   r'   )g)`O?gAk2 @g@go@g5ڕ@)
r   r   r$   r   r   	qspline1dr   r   
ValueErrorr   )r   q1d0r   r   r   test_qspline1d   s   zTestBSplines.test_qspline1dc                 C      t jd ttt ddgdgt dg ttt g dg t g  g d}|d |d  }g d}t g d}t|}t g d	}ttj||||d d
| d S )Ni0  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(         ?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`@)&rK   SW@rJ   7.O@rI   00/@g)-3/@rT   rI   rS   rJ   rR   rK   ^:@rL   4Ev@rM   c4~#.@rN   uyJ9@rO   /~	@rP   Y@@rQ   rZ   rP   rY   rO   rX   rN   rW   rM   rV   rL   rU   rK   rR   dxx0)	r   r   r$   r   r   cspline1d_evalr   r   r0   r   xr\   newxycjnewyr   r   r   test_cspline1d_eval      

 z TestBSplines.test_cspline1d_evalc                 C   r8   )Ni0  r(   r   r9   r:   r   r?   rH   )&rK   TW
@rJ   oR@rI   bP@geW/@ri   rI   rh   rJ   rg   rK    B@rL   HG(@rM   nfWΜ=@rN   %d	O@rO   u#	@rP   )C@rQ   ro   rP   rn   rO   rm   rN   rl   rM   rk   rL   rj   rK   rg   r[   )	r   r   r$   r   r   qspline1d_evalr   r   r4   r_   r   r   r   test_qspline1d_eval   rf   z TestBSplines.test_qspline1d_evalN)__name__
__module____qualname____doc__r   r    r&   r,   r3   r7   re   rq   r   r   r   r   r      s    0(
r   c                
   @   s   e Zd Zdd Zdd Zejdej	e
ejeejegdd Zejdej	e
ejeejegdd	 Zejjd
ddd Zejjddejdej	e
ejeejegdd ZdS )TestSepfir2dc              	   C   sH  t g d}t jdd}t|||dd   tjtdd t|||dd   W d    n1 s6w   Y  tjtdd t||dd  | W d    n1 sXw   Y  tjtdd t||	dd	| W d    n1 szw   Y  tjtdd t|||	dd	 W d    d S 1 sw   Y  d S )
Nr!   rA   rD   rA   r!   r   	   r   z
odd lengthmatchr   object too deepr=   )
r   arrayr   r   r   sepfir2dpytestr   r5   reshaper   filtimager   r   r   test_sepfir2d_invalid_filter   s   "z)TestSepfir2d.test_sepfir2d_invalid_filterc                 C   s   t g d}t jdd}tjtdd t|	ddd|| W d    n1 s,w   Y  tjtdd t|d || W d    d S 1 sMw   Y  d S )Nrw      r{   ry   r.   zobject of too small depthr   )
r   r|   r   r   r~   r   r5   r   r}   r   r   r   r   r   test_sepfir2d_invalid_image   s   "z(TestSepfir2d.test_sepfir2d_invalid_imagedtypc                 C   s   t jg dg dg dg dg|d}g d}dg}t|||}t| }t jg dg dg dg dg|d}t||dd t|||}t jg dg dg dg dg|d}t||dd d S )	N)r   r   r)   r)   r   r   dtyper@   r   r@   r   )rB   rD   rE   rE   rD   rB   gؗҜ<r"   )rA   rD   rF   rF   rD   rA   )r   r|   r   r}   sepfir_dtype_mapr   r   )r   r   ah1h2resultdtexpectedr   r   r   test_simple   s8   


zTestSepfir2d.test_simplec                 C   s   t g dg dg dg dg}g ddg}}t|d d d d df ||}t|d d d d df  ||}t||dd |j|jksJJ 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_contigr   r   r   test_strided  s   
 $zTestSepfir2d.test_stridedz#XXX: filt.size > image.shape: flaky)reasonc              	   C   sl   t jd t g d}t jdd}t g dg dg dg dg}tt|||d d d | d S )	Ni  )r!   rA   rD   rA   r!   rC   rA   r.   )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   r   r   r   test_sepfir2d_strided_2  s   
"z$TestSepfir2d.test_sepfir2d_strided_2z*XXX: flaky. pointers OOB on some platformsc                 C   s  t jg d|d}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}t |}t|||d d d }t||dd |jt| ksQJ g dg dg dg dg dg}t |}t||d d d |d d d }t||dd |jt| ksJ 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)   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   r   r   r   test_sepfir2d_strided_3  s:   


"z$TestSepfir2d.test_sepfir2d_strided_3N)rr   rs   rt   r   r   r~   markparametrizer   uint8intfloat32float	complex64complexr   r   xfailr   r   r   r   r   r   rv      s$    


rv   c                  C   s*   t jd t jdd} t| d d S )NiW
G   I   rG   )r   r   r$   r   r   	cspline2dr   r   r   r   test_cspline2dA  s   r   c                  C   s(   t jd t jdd} t|  d S )NiW
r   r   )r   r   r$   r   r   	qspline2dr   r   r   r   test_qspline2dG  s   r   )numpyr   scipy._lib._array_apir   r   r   r~   r   scipy.signal._spline_filtersr   _spline_filtersr   scipyr   r   r   r   float64r   r   r   r   rv   r   r   r   r   r   r   <module>   s    8x