o
    Ö­j6>  ã                   @   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 )Né©0  r   é   é
   é   é   )gÿ7Áúé¦Ý¿gÿDáŠöª @gÇ¸5Pæ?gB…ß¸"@gy…Ó¼Â®@gE±Ã5Ê`@g&¤à)°#@gEêf‘!Àg–Ïò<¸Ó@gSbÏ….X ÀgFgôþš‹Àg½$Æ`Ì#@)gI<M$ k@gYÅvRº÷@gý’dˆ)B	Àgã,ôÚÏÀ#@gd?‹¥Hð#Àgk±€®"`	@g‚)û•k	ÀgiÝÌ	V@gH„-ÑQ#@gŽn)ŒÒ” Àg3%�0×ï?gõ°@‰	À)g¢•AÖÏZÀgõ³9s˜@g /{Dîõ¿gÙÙ©Ô@gºãEC@g¨'ÁUE@gØ¢?å«@gÖ‚ —Áù�¿g¿¹¿zÜk@gÂù³£a"@gò¿½´¦~â¿g ™KGº#@)g$9Ëò–ÛÀgL|¤wàâú¿gùlTŽÆ@g?ss}aJò?g7¦iHÃ^	Àgát»,`±þ?g��hŸ�@glA1ªómÀg±¦²(ìT#Àg˜* Á#Àg…DVŽûÜ#@g„¾¿à@)g°'²½³ý"@ga+‘Ù“ßþ¿gE„=õa@gÅ:¢•"ÀgäIVÎ@gžÞ÷5³º@gòYd\í¸ð¿gÑ–1ÜpÀg"–æ¹2Ü Àg:õi²æ@gi^J§� @g—`H¹ÁQ!À)g�·•^›Õ!Àg#±¬MÆ½!@gè®ºH€&@gfQñâq@g™å�Â%‚ê¿gmùÌ‚r!@gö
,üð²@gìY„ bÀgÒYÁÊüä#@g/-�Úi @gˆè V�qÀgªßùíå"À)gšHÄï�"@gùÝÑÞÄè¿gÊœôßÿ6@gg€²eáÀgšã&´öP@gYä2É#Cý¿gí
0ê¢@gí€Ê|0žú¿g È*!/æ@g(Š±ÒÀgqq–Š¤ø?g)a§‚À)gF¨!Ã�àÀgzÄÇ«œ‹Àg²’^í‹ò¿ge”€û®Fð?g¦
©O0É!ÀgVùØ<’¯ÀgÍtÐ¡§Àg%9ä�W@gûš^[H#@g¼3›Fázæ?gñ.öâ´5 Àg�s…±dù?)gíë†Ž™ÃÀgÕ,
š™@gAß/Éuõ@g`û¦9oÀgebgÈ€Ñ@g‘š¸MŸÀgZµ‰ça@g�<ÆË‰8Àg:É˜³%@gdŽHˆ°Ñ	Àgž¡òŽ×4Àg¶:Ns@)g¡ê€ÙÀg»÷¯-µþÒ¿gœE-² Àg)À in"@gíd.xêôÀg2~ñwµÀgÄ�µ¯ÑôÀgYrñ4Q?gkM-:ÝÖÀgÑÿÛ,@g+‡Ý @gV¤Ûu»À)g@Ÿ+¾_$ó?g¸KGj­é±?g[ C$}á@g›_÷Àg‘D/£X@gH›Óú•ÍÀgÖJSÊŒ¯@gú€@gÒâÀgò�N+ÀgÃ«	Žçñ¿gk8é�Àg®„jZ”‡@)gÝµB`þ¹#@g�+òNÒð?gÏ�õ»	Àg°gó„'Àgƒ=!"F@gÆ±ÃÒŸ"ÀgÖ'-:ß@g¬#�åàÀg'ªŽ‡„ØÀgj Ž\ÔB@g~gƒe×@g$qÁß¼À)
ÚnpÚrandomÚRandomStater   Ú	TypeErrorÚbspÚspline_filterÚasarrayÚrandr   )ÚselfÚrngÚdata_array_realÚresult_array_real© r   ú]/var/www/html/CropPilot/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 Èº@y…mÕ¿5a@,ñ¡Àºð¿yú`¨°#@Aé4 pÀ)yžF÷ÿ³�!Àí÷ôÛ ÀyÀêéŸ·Ó@@ä_²æ@ywˆûŸ.X Àæ/¡@§� @y4 L ›‹À&í ÁQ!ÀyjÙ¿_Ì#@æ ›Õ!ÀyØÄÙßŸk@ƒa
 Æ½!@ySh¬?º÷@ÀÓ¿&@)y¬–®?@	À¿X@�@yH:ÀÏÀ#@·–ê~%‚ê¿yX…öHð#À‘Ç€r!@y} "`	@)Æ¿ð²@yùí@k	Àu�ØbÀyoâ»ÿU@I"$ üä#@yA ÑQ#@¸°, i @)yïb@r” Àß‚ KqÀyÓ”Êÿ×ï?È¤àìå"Àyr‚Û	À”“À�"@yÆ%`ÏZÀvƒ.ßÄè¿y$°½?s˜@ó*  7@yx‰îõ¿üeb€eáÀyü÷CàÔ@¦í öP@)yÍÎ?M@¡kÀ9Fý¿yÎ¸™ŸUE@4%@ê¢@y[yÉÿä«@#?0žú¿y N àù�¿5¥H /æ@yw€Ük@²€°ÒÀy¥"€a"@$â÷€Š¤ø?y†•ýÿ§~â¿ò¯HÀ¦‚À)y}Ýñ?\º#@A¤¶?ÝáÀy›¥	€–ÛÀd³Ÿœ‹Ày�»{_àâú¿¸ï( Œò¿y^pÝÿ�Æ@;ÉÒ^¯Fð?yuøµ?aJò? U 0É!Ày¢\@Ã^	ÀKÇÿ‘¯Ày™x¬¾_±þ?¹+äß¡§À)yl.@Ž@9UÀY@yNÐª¿ómÀxp€[H#@y¥DùìT#À†bázæ?yhú Á#ÀýFà´5 À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 )	Ni«0  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 )Ni®0  r   r(   )gúû{ß®]ó?gzU%™Îý?gðßzè@gŠÂ6ûfw@gvenß'@©r!   r   r)   é   é   r   )g¥ß|òÉ-é?g>ï!<m @gå6Lúœÿ@glMˆóO”@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 )Ni¯0  r   r(   r-   r!   r'   )g)ù`ßOë?gAkúÃ2 @g„ž‹Žýÿ@g‚oçÎ@gÀ5Á�Ú•@)
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 )Ni°0  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¾Ÿ/Ý@çÛù~j¼t@çé&1¬@çZd;ßÏ@çð§ÆK7	@ç¬Zd»@çåÐ"Ûù~@çj¼t“„@ç¼t“Vö?çÇK7‰A`@)&rK   çúSWü®©@rJ   ç7.ëO­@rI   ç0†0†‹/@g)-3×/Ý@rT   rI   rS   rJ   rR   rK   çú^…Œ:@rL   ç4Eãývõ@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   )Ni±0  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 s�w   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@g›sðLhðE@)gêÍ¨ù*C@g5ëŒï‹éA@g;©/K;ÃE@g<f 2þïE@)g­®€¢E@g>#ÁjD@gŠéB¬þ`G@g]n0Ôa#F@)gÙ•–‘z�H@g¦|ªF×C@gÇœgìKÌE@gŠ�CýŠF@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sˆJ ‚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