o
    Ö­j   ã                   @   s¶  d dl Zd dl mZ d dlmZmZmZmZmZm	Z	m
Z
 d dlmZ d dlmZ d dlmZmZmZ g d¢ZG dd	„ d	ƒZG d
d„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZeg d¢ƒZeg d¢ƒZG dd„ dƒZeg d¢ƒeg d¢ƒeg d¢ƒeg d¢ƒeg d¢ƒdeg d¢ƒdeg d¢ƒeg d¢ƒddd œZd!d"„ Z G d#d$„ d$ƒZ!G d%d&„ d&ƒZ"G d'd(„ d(ƒZ#G d)d*„ d*ƒZ$G d+d,„ d,ƒZ%G d-d.„ d.ƒZ&G d/d0„ d0ƒZ'G d1d2„ d2ƒZ(G d3d4„ d4ƒZ)G d5d6„ d6ƒZ*G d7d8„ d8ƒZ+i d9eg d:¢ƒ“d;eg d<¢ƒ“d=eg d>¢ƒ“d?eg d@¢ƒ“dAeg dB¢ƒ“dCeg dD¢ƒ“dEeg dF¢ƒ“dGeg dH¢ƒ“dIeg dJ¢ƒ“dKg dL¢“dMg dN¢“dOg dP¢“dQg dR¢“dSg dT¢“dUg dV¢“dWg dX¢“dYg dZ¢“g d[¢g d\¢d]œ¥Z,G d^d_„ d_ƒZ-g d`¢g da¢gdbdcgfg dd¢g de¢g df¢gg dg¢fg dh¢g di¢g dj¢g dk¢g dl¢gg dm¢fg dn¢g do¢g dp¢g dq¢gg dr¢fdsœZ.G dtdu„ duƒZ/G dvdw„ dwƒZ0G dxdy„ dyƒZ1dzd{„ Z2d|d}„ Z3d~d„ Z4d€d�„ Z5dS )‚é    N)Úarray)Úassert_array_almost_equalÚassert_array_equalÚassert_allcloseÚassert_equalÚassert_Úassert_array_lessÚsuppress_warnings)Úraises)Úfft)ÚwindowsÚ
get_windowÚresample))Úboxcar© )Útriangr   )Úparzenr   )Úbohmanr   )Úblackmanr   )Únuttallr   )Úblackmanharrisr   )Úflattopr   )Úbartlettr   )Úbarthannr   )Úhammingr   )Úkaiser©é   )Údpss)é   )Úgaussian©ç      à?)Úgeneral_gaussian)ç      ø?r   )Úchebwinr   )Úcosiner   )Úhannr   )Úexponentialr   )Útaylorr   )Útukeyr!   )Úlanczosr   c                   @   ó   e Zd Zdd„ ZdS )ÚTestBartHannc                 C   sX   t tjddd�g d¢ddd� t t d¡g d¢ddd� t t dd	¡g d
¢ddd� d S )Né   T©Úsym)r   gøA,qÞòÖ?ç	5xôB$ì?r1   göA,qÞòÖ?r   çVçž¯Ò<©ÚrtolÚatolé   )r   çHáz®GÑ?ç\�Âõ(\ç?ç      ð?r8   r7   r   F)r   r7   r8   r9   r8   r7   )r   r   r   ©Úselfr   r   ú\/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/signal/tests/test_windows.pyÚ
test_basic)   s   ý
þ
þzTestBartHann.test_basicN©Ú__name__Ú
__module__Ú__qualname__r=   r   r   r   r<   r-   '   ó    r-   c                   @   r,   )ÚTestBartlettc                 C   sB   t t d¡g d¢ƒ t t d¡g d¢ƒ t t dd¡g d¢ƒ d S )Nr.   )r   çš™™™™™Ù?çš™™™™™é?rE   rD   r   r6   )r   çUUUUUUÕ?çUUUUUUå?r9   rG   rF   r   F)r   rF   rG   r9   rG   rF   )r   r   r   r:   r   r   r<   r=   8   s
   ÿzTestBartlett.test_basicNr>   r   r   r   r<   rC   6   rB   rC   c                   @   r,   )ÚTestBlackmanc                 C   sn   t tjddd�g d¢dd� t tjddd�g d¢d	d� t t d¡g d
¢dd� t t dd¡g d¢dd� d S )Nr.   Fr/   )r   ç¤p=
×£À?ç)\�Âõ(ä?r9   rJ   rI   ç›+¡†›„=©r5   r6   )r   çF…i£ô'·?ç—bê@cÝ?ç×Zgžsí?rO   rN   rM   g:Œ0âŽyE>)r   çì³©Ö²É?çž,¯ä,ë?rQ   rP   r   T)r   rI   rJ   r9   rJ   rI   r   )r   r   r   r:   r   r   r<   r=   A   s   ÿý
ý
ÿzTestBlackman.test_basicNr>   r   r   r   r<   rH   ?   rB   rH   c                   @   r,   )ÚTestBlackmanHarrisc                 C   ó^   t t dd¡g d¢ƒ t tjddd�g d¢ƒ t t d¡g d¢ƒ t tjddd�g d	¢ƒ d S )
Nr.   F)çiUMu?çè0_^€}¬?ç¸¯çŒ¨à?r9   rV   rU   r6   r/   )rT   gˆj—P¸¡?g'mþå$MÕ?gÇÿ·˜·uì?gÈÿ·˜·uì?g*mþå$MÕ?g�j—P¸¡?)rT   çµÚö^º?gòU×ˆgé?gôU×ˆgé?rW   rT   T)rT   rU   rV   r9   rV   rU   rT   )r   r   r   r:   r   r   r<   r=   R   ó   ÿÿ
ÿÿzTestBlackmanHarris.test_basicNr>   r   r   r   r<   rR   P   rB   rR   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú
TestTaylorc                 C   sT   t t ddd¡dƒ t t ddd¡t g d¢¡ƒ t t ddd¡t g d¢¡ƒ d	S )
z£Tests windows of small length that are normalized to 1. See the
        documentation for the Taylor window for more information on
        normalization.
        r   r   é   r9   é   )ç%6'HÏAè?ç)ÞTæÞ
í?r9   r]   r\   r.   )ç©Î´Xè?ç¹¡1¬E¸ë?çPD3mï?r`   r_   r^   N©r   r   r)   Únpr   r:   r   r   r<   Útest_normalizedc   s   þþzTestTaylor.test_normalizedc                 C   sH   t tjddddd�t g d¢¡ƒ t tjddddd�t g d¢¡ƒ d	S )
z¦Test windows of small length that are not normalized to 1. See
        the documentation for the Taylor window for more information on
        normalization.
        r[   r   rZ   F©Únorm)ç	P•ç¨ ì?çsCËpÃð?g)8‚uxò?rg   rf   r.   )ç)S~Œ¸ë?r9   çktÖÀ¹#ò?ri   r9   rh   Nra   r:   r   r   r<   Útest_non_normalizedu   s   þþzTestTaylor.test_non_normalizedc           
   	   C   sÎ   d}d}t j|ddddd�}t||ƒ}dt t |t |¡ ¡¡ }t t |¡dk¡}t ||| … ¡}d	t |d
k¡ | | }d	t |dk¡ | | }	t	|ddd� t	|ddd� t	|	ddd� dS )að  This test ensures the correctness of the implemented Taylor
        Windowing function. A Taylor Window of 1024 points is created, its FFT
        is taken, and the Peak Sidelobe Level (PSLL) and 3dB and 18dB bandwidth
        are found and checked.

        A publication from Sandia National Laboratories was used as reference
        for the correctness values [1]_.

        References
        -----
        .. [1] Armin Doerry, "Catalog of Window Taper Functions for
               Sidelobe Control", 2017.
               https://www.researchgate.net/profile/Armin_Doerry/publication/316281181_Catalog_of_Window_Taper_Functions_for_Sidelobe_Control/links/58f92cb2a6fdccb121c9d54d/Catalog-of-Window-Taper-Functions-for-Sidelobe-Control.pdf
        i   i   é   é#   F)ÚnbarÚsllre   r0   é   r   r   gXÇ$Àg_‚•Ò2ÀgòAÏf•AÀr   rL   g˜LŒJêò?çš™™™™™¹?gˆ…ZÓ¼ã@N)
r   r)   r   rb   Úlog10ÚabsÚamaxÚargmaxÚdiffr   )
r;   ÚM_winÚN_fftÚwÚfÚspecÚ
first_zeroÚPSLLÚBW_3dBÚBW_18dBr   r   r<   Útest_correctness‡   s   
zTestTaylor.test_correctnessN)r?   r@   rA   rc   rj   r   r   r   r   r<   rY   a   s    rY   c                   @   r,   )Ú
TestBohmanc                 C   óF   t t d¡g d¢ƒ t tjddd�g d¢ƒ t t dd¡g d¢ƒ d S )	Nr.   )r   g$I³ ˆíÆ?ç6 Dî­²ê?r‚   g I³ ˆíÆ?r   r6   Tr/   )r   ç éëPGç»?ç4}êè|ã?r9   ç6}êè|ã?rƒ   r   F)r   rƒ   r„   r9   r…   rƒ   )r   r   r   r:   r   r   r<   r=   ­   s   
ÿÿÿzTestBohman.test_basicNr>   r   r   r   r<   r€   «   rB   r€   c                   @   r,   )Ú
TestBoxcarc                 C   sB   t t d¡g d¢ƒ t t d¡g d¢ƒ t t dd¡g d¢ƒ d S )Nr.   ©r   r   r   r   r   r   r6   ©r   r   r   r   r   r   r   F)r   r   r   r:   r   r   r<   r=   »   s   zTestBoxcar.test_basicNr>   r   r   r   r<   r†   ¹   rB   r†   )5çæCV¸É?çC®Ô³ ”»?çQÜñ&¿EÁ?çÆÀ:Ž*Å?ç‹ÿ;¢BuÉ?çúíëÀ9#Î?ç=î[­—Ñ?çZ‚Œ€
GÔ?çÙµ½Ý’×?çLÁgÓÚ?ç(+†« Ý?çïTÀ=Ïà?ç zR&5´á?çs�ËcÍHã?ç…–uÿØä?ç¼]/M`æ?çxC8Ùç?çïô¥·?é?çÚ9ÍíŽê?çm¨çoÂë?çäÙå[Öì?ç�Tâ:Æí?çsK«!q�î?ç/Màô.ï?ç„ÖÃ—‰¢ï?çÃ)só�èï?r9   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‰   )6ç?áìÖ2Ê?çw.Œô¢v»?ç×Ûf*Ä#Á?ç�–®`ñÄ?çd${„š!É?çŸ��·±Í?ç®ãüMÑ?çut\�ìÓ?ç¥Ljh°Ö?çxak¶ò’Ù?çŠWYÛ�Ü?çÿêqßj�ß?ç†<‚)[á?ç@ÜÕ«Èèâ?çôMšEsä?ç”½¥œ/öå?çéñ{›þlç?ç[^¹Þ6Óè?çÅ:U¾g$ê?ç:• U\ë?çI.ÿ!ývì?çùõCl°pí?çg¸ŸFî?ç¨¦$ëpôî?çV˜‡Lyï?çä.ÂåÒï?r9   r9   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£   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestChebWinc                 C   s¨   t ƒ �G}| td¡ tt dd¡g d¢ƒ tt dd¡g d¢ƒ tt dd¡g d¢ƒ tt dd¡g d	¢ƒ tt ddd
¡g d¢ƒ W d   ƒ d S 1 sMw   Y  d S )NúThis window is not suitabler.   éd   )ç}õ	³Éº?çLù ‡>à?r9   r9   rÁ   rÀ   r6   )ç×öSî¬?ç�D1mPCÔ?ç%5ÂáèRè?r9   rÄ   rÃ   rÂ   é
   )r9   çT€ýE‡mã?ç¢	Å-oÉå?rÇ   rÆ   r9   )r9   çÂF˜3œà?çýNOÖÃâ?ç»	r]†ã?rÉ   rÈ   r9   F)r9   rÈ   rÉ   rÊ   rÉ   rÈ   )r	   ÚfilterÚUserWarningr   r   r%   )r;   Úsupr   r   r<   r=   æ   s$   ÿÿÿÿÿ"ðzTestChebWin.test_basicc                 C   óR   t ƒ �}| td¡ tjddd�}W d   ƒ n1 sw   Y  t|tdd� d S )Nr¾   é5   éØÿÿÿ©Úatrk   ©Údecimal)r	   rË   rÌ   r   r%   r   Úcheb_odd_true)r;   rÍ   Úcheb_oddr   r   r<   Útest_cheb_odd_high_attenuationü   ó
   þz*TestChebWin.test_cheb_odd_high_attenuationc                 C   rÎ   )Nr¾   é6   é(   rÑ   rk   rÓ   )r	   rË   rÌ   r   r%   r   Úcheb_even_true)r;   rÍ   Ú	cheb_evenr   r   r<   Útest_cheb_even_high_attenuation  rØ   z+TestChebWin.test_cheb_even_high_attenuationc                 C   ó^   t g d¢ƒ}tƒ �}| td¡ tjddd�}W d   ƒ n1 s!w   Y  t||dd� d S )N)r9   çmŒ�ðœà?ç‡¿&kÔÃâ?gïäÓc[†ã?rà   rß   r9   r¾   r6   rÅ   rÑ   rk   rÓ   ©r   r	   rË   rÌ   r   r%   r   )r;   Úcheb_odd_low_at_truerÍ   rÖ   r   r   r<   Útest_cheb_odd_low_attenuation  ó   þz)TestChebWin.test_cheb_odd_low_attenuationc                 C   rÞ   )N)r9   ç Â¤RìÜ?çN(DÀ!Tà?ç# Â¤Rá?rç   ræ   rå   r9   r¾   é   iöÿÿÿrÑ   rk   rÓ   rá   )r;   Úcheb_even_low_at_truerÍ   rÜ   r   r   r<   Útest_cheb_even_low_attenuation  rä   z*TestChebWin.test_cheb_even_low_attenuationN)r?   r@   rA   r=   r×   rÝ   rã   rê   r   r   r   r<   r½   ä   s    	r½   )ç›|dµyÍ?çvSà?™{?r9   rì   )ç´1¤›B?ç%ô”À…µ?rî   rí   )çÌ�¿£ªRÁ?ç8ï,6V‹×?r9   rð   )ç\Kr‡�Ì?ç
–oü²hã?rò   rñ   )rë   rì   r9   rì   rë   )rï   rð   r9   rð   rï   ))rk   Nçš™™™™™É?F)rk   Nró   T)rk   Nr9   F)rk   Nr9   T)rk   r   ró   F)rk   r   ró   T)rk   r   r9   F)rk   r   r9   T)r[   Nró   T)r[   Nr9   T)r[   r   ró   T)r[   r   r9   Tc                  C   sL   t  ¡ D ]\} }|d u rtttjg| ¢R Ž  qtj| Ž }t||dd� qd S )NrK   ©r4   )Úexponential_dataÚitemsÚassert_raisesÚ
ValueErrorr   r(   r   )ÚkÚvÚwinr   r   r<   Útest_exponential8  s   
ûrü   c                   @   r,   )ÚTestFlatTopc                 C   ó^   t tjddd�g d¢ƒ t tjddd�g d¢ƒ t t d¡g d¢ƒ t t dd¡g d	¢ƒ d S )
Nr.   Fr/   )ç˜ÿbF˜;¿çsý*?ª¿çdR	pö^É?r9   r  r   r6   )rÿ   çì`p|ËÜ¢¿çò¥î‰Ôë…?ç ÄÞJëüè?r  r  r  )rÿ   ç<ó#¢¸U±¿çÜ_&kã?r  r  rÿ   T)rÿ   r   r  r9   r  r   rÿ   )r   r   r   r:   r   r   r<   r=   C  s   ÿÿ
ÿÿzTestFlatTop.test_basicNr>   r   r   r   r<   rý   A  rB   rý   c                   @   r,   )ÚTestGaussianc                 C   s^   t t dd¡g d¢ƒ t t dd¡g d¢ƒ t t dd¡g d¢ƒ t t ddd	¡g d
¢ƒ d S )Nr.   r9   )ç|„ÿÙæ~¦?ç«w$ÇÔ?ç"‚í$j=ì?r
  r	  r  r6   g333333ó?)r  ç
"ñîÅêÏ?ç;ŽeÙÜœæ?r9   r  r  r  é   )rò   ç÷ÅÆ¤Ÿé?çŠyÉÊLEî?r9   r  r  rò   F)rò   r  r  r9   r  r  )r   r   r    r:   r   r   r<   r=   W  s   ÿÿÿÿzTestGaussian.test_basicNr>   r   r   r   r<   r  U  rB   r  c                   @   r,   )ÚTestGeneralCosinec                 C   s<   t t dg d¢¡g d¢ƒ t tjdg d¢dd�g d¢ƒ d S )Nr[   ©r"   ç333333Ó?ró   )rD   r  r   r  rD   rk   Fr/   ©rD   r  r   r  )r   r   Úgeneral_cosiner:   r   r   r<   r=   l  s   ÿÿzTestGeneralCosine.test_basicNr>   r   r   r   r<   r  j  rB   r  c                   @   r,   )ÚTestGeneralHammingc                 C   sN   t t dd¡g d¢ƒ t tjdddd�g d¢ƒ t tjddd	d�g d
¢ƒ d S )Nr[   çffffffæ?©rD   r  r9   r  rD   ç      è?Fr/   )r"   çy&"‡å?ç‡ÙææÝxî?r  r  r.   T)r"   r  r  r  r  r"   )r   r   Úgeneral_hammingr:   r   r   r<   r=   u  s   ÿÿÿzTestGeneralHamming.test_basicNr>   r   r   r   r<   r  s  rB   r  c                   @   r,   )ÚTestHammingc                 C   rS   )
Nr.   F)ç{®Gáz´?ç×£p=
×Ó?ç¤p=
×£è?r9   r  r  r6   r/   )r  çîC�W4Ð?ç	Ÿ/È5Žä?ç4òCªÑŠî?r"  r!  r   )r  çÂÂ6 ivÙ?çŠðœžP0í?r$  r#  r  T)r  r  r  r9   r  r  r  )r   r   r   r:   r   r   r<   r=   ‚  rX   zTestHamming.test_basicNr>   r   r   r   r<   r  €  rB   r  c                   @   r,   )ÚTestHannc                 C   sv   t tjddd�g d¢ddd� t tjddd�g d¢ddd� t t dd	¡g d
¢ddd� t t d¡g d¢ddd� d S )Nr.   Fr/   )r   ç      Ð?r  r9   r  r&  r2   r3   r6   )r   ç\$è:¾È?ç°H`r�ã?ç8®åT^jî?r)  r(  r'  T©r   çXhdˆÖ?çTúËÍ»ñì?r,  r+  r   ©r   r&  r  r9   r  r&  r   )r   r   r'   r:   r   r   r<   r=   ’  s    þüý

þzTestHann.test_basicNr>   r   r   r   r<   r%  �  rB   r%  c                   @   r,   )Ú
TestKaiserc                 C   st   t t dd¡g d¢ƒ t t dd¡g d¢ƒ t t dd¡g d¢ƒ t t dd¡g d¢ƒ t t ddd	¡g d
¢ƒ d S )Nr.   r"   )çl‘ýî?ç®<ê3Nï?çi>�%ìï?r1  r0  r/  r6   )r/  ç	‘¯È$ï?ç6­ÿ éÈï?r9   r3  r2  r/  gš™™™™™@)çÂ§âAÕ¨Ð?ç¯Oãð Få?çœ$üù§©î?r6  r5  r4  )r4  ç*‡çý‰'ã?çÜó=aì?r9   r8  r7  r4  F)r4  r7  r8  r9   r8  r7  )r   r   r   r:   r   r   r<   r=   ¦  s   ÿÿÿÿÿzTestKaiser.test_basicNr>   r   r   r   r<   r.  ¤  rB   r.  c                   @   ó   e Zd Zdd„ Zdd„ ZdS )ÚTestKaiserBesselDerivedc                 C   sØ   d}t j|dd�}t jd|dd�}t||ƒ t|d |d … d || d d … d  dƒ tt jdtjd d�d d	… t d¡d ƒ tt jd
tjd d�d d… ddgƒ tt jdtjd d�d d… g d¢ƒ d S )Nr¿   ç      @©Úbeta)zkaiser bessel derivedr;  F©Úfftbinsr   r9   r   rk   gè«UÓ˜à?gU3|\ë?r.   r  )gHZ1êÛ?g¸Kfž æ?g"iF5±Ëì?)r   Úkaiser_bessel_derivedr   r   rb   ÚpiÚsqrt)r;   ÚMrx   Úw2r   r   r<   r=   ¿  s    ÿ
0ÿÿÿz"TestKaiserBesselDerived.test_basicc                 C   s�   d}d}t t|d�� tj|d dd� W d   ƒ n1 sw   Y  d}t t|d�� tj|d ddd	� W d   ƒ d S 1 sAw   Y  d S )
Nr¿   zHKaiser-Bessel Derived windows are only defined for even number of points©Úmatchr   r;  r<  zCKaiser-Bessel Derived windows are only defined for symmetric shapesF)r=  r0   )r÷   rø   r   r@  )r;   rC  Úmsgr   r   r<   Útest_exceptions×  s   ÿ"ÿz'TestKaiserBesselDerived.test_exceptionsN)r?   r@   rA   r=   rH  r   r   r   r<   r:  ½  s    r:  c                   @   r,   )ÚTestNuttallc                 C   rþ   )
Nr.   Fr/   )çA Ž"ÆÆ7?çv§;O<g¯?ç$2bUsïà?r9   rL  rK  r6   )rJ  gx&yxXW£?g‚íÌÓ?ïÕ?çµ‘êŠì?rM  g„íÌÓ?ïÕ?g&yxXW£?)rJ  gëðŽEºJ¼?g=`…�T‹é?g>`…�T‹é?góðŽEºJ¼?rJ  T)rJ  rK  rL  r9   rL  rK  rJ  )r   r   r   r:   r   r   r<   r=   è  s   ÿÿ
ÿÿzTestNuttall.test_basicNr>   r   r   r   r<   rI  æ  rB   rI  c                   @   r,   )Ú
TestParzenc                 C   r�   )	Nr.   )çe/¡½„ö‚?r&  çä8Žã8Žë?rP  r&  rO  r6   Tr/   )ç%OZQ%âw?çÄ2¤|Ï&Ä?çêªÝ�þÍä?r9   rS  rR  rQ  F)rQ  rR  rS  r9   rS  rR  )r   r   r   r:   r   r   r<   r=   ú  s   
ÿÿÿzTestParzen.test_basicNr>   r   r   r   r<   rN  ø  rB   rN  c                   @   r,   )Ú
TestTriangc                 C   sF   t t dd¡g d¢ƒ t t d¡g d¢ƒ t tjddd�g d¢ƒ d S )	Nr.   T)çUUUUUUÅ?r"   ç«ªªªªªê?rV  r"   rU  r6   )r&  r"   r  r   r  r"   r&  Fr/   )r&  r"   r  r   r  r"   )r   r   r   r:   r   r   r<   r=   
  s   ÿ
ÿÿzTestTriang.test_basicNr>   r   r   r   r<   rT    rB   rT  )rk   r"   T)ç        r9   r9   rW  )rk   çÍÌÌÌÌÌì?T)rW  ç„Ëü‚Øúê?rY  rW  )rk   r9   T)rW  r  r  rW  )rk   r"   F)rW  r9   r9   r9   )rk   rX  F)rW  çrnÁOCÇâ?r9   rZ  )rk   r9   F)rW  r"   r9   r"   )r[   rW  T)r9   r9   r9   r9   r9   )r[   rE   T)rW  çYª«©xæ?r9   r[  rW  )r[   r9   T)rW  r"   r9   r"   rW  )r.   r   r‡   )r6   r   rˆ   )r.   r&  )r   r   r   r   r   r   )r6   r&  )r   r   r   r   r   r   r   )r.   )r   r,  r9   r9   gRúËÍ»ñì?r   )r6   )r   r  r9   r9   r9   r  r   )r.   r  )r   gxÅ³	&¬á?r9   r9   gvÅ³	&¬á?r   )r6   r  )r   g#}`yqÚ?çŽ)!ûï?r9   r\  g#}`yqÚ?r   r*  r-  ))r.   r   )r6   r   c                   @   r9  )Ú	TestTukeyc                 C   sN   t  ¡ D ] \}}|d u rtttjg|¢R Ž  qtj|Ž }t||ddd� qd S )Nr2   r3   )Ú
tukey_datarö   r÷   rø   r   r*   r   )r;   rù   rú   rû   r   r   r<   r=   3  s   
ûzTestTukey.test_basicc                 C   sD   t  dd¡}t  d¡}t||ƒ t  dd¡}t  d¡}t||ƒ d S )Nr¿   r   r   )r   r*   r   r   r'   )r;   Útuk0Úbox0Útuk1Úhan1r   r   r<   Útest_extremes<  s   


zTestTukey.test_extremesN)r?   r@   rA   r=   rc  r   r   r   r<   r]  1  s    	r]  )çÑÆIPÞß?ç;¯]LÆà?re  rd  )g/vI<£tå?gEî@¾¿Ì?gEî@¾¿Ì¿g/vI<£tå¿g¤ÐVÉ?gª$aÈ²¬`?)çìÑ‹BAÚ?g«njªkê?rf  )g>˜efž æ?rW  g>˜efž æ¿)ç	¸ž#nâ?gLoÆ¦�â¿rg  )gmê/ üÿï?gä¢96+ðï?gé›¦br©é?)g wà²?VÆ?gõ>J#¹ß?g÷;�öWiå?gÖ™}I#¹ß?g€ƒr²?VÆ?)g¦:7A!(Ü?çcHX˜á¶á?rW  çcHX˜á¶á¿ç¨S[@!(Ü¿)çq¦ÿhÜ4ä?çT1§a~Â²?g�ØÐÈEÜ¿rl  rk  )rh  rj  rW  g¨S[@!(Ü?ri  )gûu+tóÑ?çXÓ>Žîß¿g²3”ù˜6ã?rm  g;éStóÑ?)gMLªÅÆýï?gh5"í†zï?g\v³ÿ4—è?gPªaåîøÍ?gÑ¦Ÿd�Œ?)dçsk¼ö8Si?ç»p¢€&çp?çÞ5ˆÙBÅu?çÖÀ¥OêL{?çõ0‚8Ã€?çwê—-µ<„?ç¬kìÆFˆ?ç‘^ëŠÍRŒ?çñkËPz�?ç1¹��Ãþ’?çY�^»Q·•?ç¡XÙ9¤˜?çdkÑ�^Å›?ç3Ÿ«aJŸ?çß)âIQ¡?çî¨ŠÙ-£?ç�Ñ«"¥?çµ¦¹‡.§?ç¹ô~�9P©?ç~�nµ[†«?ç8ïð¸WÏ­?ç	%fÒ³°?çñ!«ÒKI±?çP¶¤Jd„²?ç‹úÓ/ÙÄ³?ç$~©s	µ?çpku³ëP¶?çÖæ%ê™·?çõüž•
ã¸?çqºúÝ*º?çþ%wìo»?çZÃo¸°¼?ç·ÍØÀë½?çŸ�ßÓƒ¿?ç£“B¬@%À?ç‹g·3ŸµÀ?ç/ß—†#@Á?ç‚0žÞÄÁ?ç›üšÕÐ@Â?çÛ=½¤µÂ?ç.§Fàö!Ã?çit±3…Ã?ç¦:.ôÒÞÃ?çì­X.Ä?çøGkNVsÄ?çŽƒ"Hk­Ä?çÖÊ 'FÜÄ?ç²¾`»¤ÿÄ?çiG»UÅ?ç‘#!º5#Å?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  r~  r}  r|  r{  rz  ry  rx  rw  rv  ru  rt  rs  rr  rq  rp  ro  rn  )dgUw³¦|’?g“£TP¾‘–?gÞj›·ñôš?gwïÄ¢¥Ÿ?gDÑŠ¶O¢?gê_¯{î¤?g¢<“ ¬§?gÈ�k¯„ª?gŸ¦ê¬ƒt­?gü(P¯‡;°?g…ÅHùÀÃ±?gBàKXP³?gà.mË�Þ´?g ·ni†k¶?gà"�=ô·?gO»Ÿu¹?g©°„{†ìº?g¤gþÁU¼?gØ/uã®½?gN×�$sò¾?g ]ð’ÍÀ?gÐ“¶áE™À?gÞÝoY*Á?gÀÜ›�Á?g’Øbu³ØÁ?g„Š`ÒÎÂ?gàÉªJSÂ?ga`gT*rÂ?gê®.Ÿ“{Â?gYÁÑnÂ?g.ý®|TKÂ?g¹Óç´¸Â?g®z§ŸÃ¾Á?gõ€»äfUÁ?g,ûÁÔÀ?gÓÔ™=À?gÂg�'î¿?gÇwsä•½?gÇñ…Áã»?gƒË[\€	º?g„#Âk	¸?g%Þ*æµ?gLw<w¢³?g,h-ŸA±?g[::<ñ�­?gé¤199l¨?g.4ä“¦%£?gGÈÓ/„›?gÆ¢hlO“�?g[°ÀŽù$v?g[°ÀŽù$v¿gÆ¢hlO“�¿gGÈÓ/„›¿g.4ä“¦%£¿gé¤199l¨¿g[::<ñ�­¿g,h-ŸA±¿gLw<w¢³¿g%Þ*æµ¿g„#Âk	¸¿gƒË[\€	º¿gÇñ…Áã»¿gÇwsä•½¿gÂg�'î¿¿gÓÔ™=À¿g,ûÁÔÀ¿gõ€»äfUÁ¿g®z§ŸÃ¾Á¿g¹Óç´¸Â¿g.ý®|TKÂ¿gYÁÑnÂ¿gê®.Ÿ“{Â¿ga`gT*rÂ¿gàÉªJSÂ¿g„Š`ÒÎÂ¿g’Øbu³ØÁ¿gÀÜ›�Á¿gÞÝoY*Á¿gÐ“¶áE™À¿g ]ð’ÍÀ¿gN×�$sò¾¿gØ/uã®½¿g¤gþÁU¼¿g©°„{†ìº¿gO»Ÿu¹¿gà"�=ô·¿g ·ni†k¶¿gà.mË�Þ´¿gBàKXP³¿g…ÅHùÀÃ±¿gü(P¯‡;°¿gŸ¦ê¬ƒt­¿gÈ�k¯„ª¿g¢<“ ¬§¿gê_¯{î¤¿gDÑŠ¶O¢¿gwïÄ¢¥Ÿ¿gÞj›·ñôš¿g“£TP¾‘–¿gUw³¦|’¿)dç¶|Wâ—°?ç…¢	¬Í“²?çãì¼ÞŽ´?çû
8Ï�¶?ç\ÿˆúi¸?çÙ®32†Aº?çû!ô;f¼?ç°+÷œª½?ç©3sXL2¿?ç?’æáJÀ?çÐ5£QGèÀ?çåÞôAoÁ?çöÏW¹åÝÁ?çò Á}2Â?çÀæâ�‰kÂ?çÊ«IÇ‡Â?ç—Fæ6†Â?ç�ÝÖífÂ?çchŽ'Â?ç%"™aåÈÁ?çhÁ“/ËKÁ?çŽÉÁð:°À?ç>†}ñûí¿?çDC1?XB¾?ç±Q”ST`¼?çs\ø‡NKº?ç˜Ø
3¸?ç<”Éòs˜µ?çoÜãþ³?ç@°1O°?çÈ5›M›ÿª?ç#Š$ÕÒ7¥?ç,9pÌ‡§ž?çßCÄø)Á’?çW¸ª»]{?çæÃ#YÖés¿çè‡ˆÐE™�¿ç �nê›¿ç•x;i£¿çƒ6ô
œ¨¿çv^
Ž�­¿çmüñ­û±¿çÂ-b3³¿ç[EhÌpø´¿ç[½Ñ6š¶¿çaŽ»”ü·¿ç·ßæü0¹¿ç_Ï:WRö¹¿ç~õáîæˆº¿ç0 ÕÑŠÒº¿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±  r°  r¯  r®  r­  r¬  r«  rª  r©  r¨  r§  r¦  r¥  r¤  r£  r¢  r¡  r   )dg½¦I!w.Ã?g÷‰MuÛÃ?gì%¶PldÄ?g3·ÎzÈÄ?g¢>°€•Å?g·Îd¤ƒÅ?g!DK�yÅ?g+âo ÉÄ?gYhŒ{˜bÄ?g{½^yÓÃ?gSh‹1ÑÃ?gùy�%@Â?g|hzäj?Á?gP\DÊÀ?g¨z	€·½?gVx<Ò…ýº?g‘ÉÒ¸?gqÐ&ÓÝÿ´?gb¿žäË±?g8‰Ù|pÿ¬?gž‡å_cH¦?gª6K…	Ÿ?g¨wpÎ�‘?g‡"‡†Q	q?g@m§8Mi�¿gÁÇ�þ¿3•¿g7/`_qŒ ¿gäSýÓØ!¦¿gç8QöJ«¿g6÷ã8èù¯¿gu\q—²¿gï/Zþ~Ü³¿g€épQ†Zµ¿g™CÛü‚‡¶¿g¸3¼`·¿gÃ7¼<wä·¿g³œÿ¸¿g¥p‹¥é·¿g<WuÄl·¿gÌð~`·�¶¿g¯²TÙµ¿g#âÔqv´¿g,¦]BÁi²¿g…£wÂ|°¿gvÄ¾ðŒ®¬¿g3ÿ‘¨¿gaï�·£¿g·…LÑH†›¿gêU½,ˆ©�¿gvúA]¤Pv¿gvúA]¤Pv?gêU½,ˆ©�?g·…LÑH†›?gaï�·£?g3ÿ‘¨?gvÄ¾ðŒ®¬?g…£wÂ|°?g,¦]BÁi²?g#âÔqv´?g¯²TÙµ?gÌð~`·�¶?g<WuÄl·?g¥p‹¥é·?g³œÿ¸?gÃ7¼<wä·?g¸3¼`·?g™CÛü‚‡¶?g€épQ†Zµ?gï/Zþ~Ü³?gu\q—²?g6÷ã8èù¯?gç8QöJ«?gäSýÓØ!¦?g7/`_qŒ ?gÁÇ�þ¿3•?g@m§8Mi�?g‡"‡†Q	q¿g¨wpÎ�‘¿gª6K…	Ÿ¿gž‡å_cH¦¿g8‰Ù|pÿ¬¿gb¿žäË±¿gqÐ&ÓÝÿ´¿g‘ÉÒ¸¿gVx<Ò…ýº¿g¨z	€·½¿gP\DÊÀ¿g|hzäj?Á¿gùy�%@Â¿gSh‹1ÑÃ¿g{½^yÓÃ¿gYhŒ{˜bÄ¿g+âo ÉÄ¿g!DK�yÅ¿g·Îd¤ƒÅ¿g¢>°€•Å¿g3·ÎzÈÄ¿gì%¶PldÄ¿g÷‰MuÛÃ¿g½¦I!w.Ã¿)g…Áˆÿï?g�ú´"ìï?gy?'êð³î?g í�`ç?))rk   rp   r   )r  gffffffö?r  )r[   r$   r[   )r¿   r   rk   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestDPSSc                 C   sT   t  ¡ D ]#\}}tj|ddiŽ\}}t||d d|d� t||d dd|d� qd S )	NÚreturn_ratiosTr   gH¯¼šò×z>)r5   Úerr_msgr   gñhãˆµøä>)r4   r5   rÔ  )Ú	dpss_datarö   r   r   r   )r;   rù   rú   rû   Úratiosr   r   r<   r=   T  s
   ýzTestDPSS.test_basicc                 C   sÎ   t ddƒD ]_}t ||d ¡}|d }tt |d¡ ¡ ||› d� tj||d dd�}|dkrDtt |d¡ ¡ ||› d� t||d	d
� tj||d dd�}|dkrTdnd}tt |d¡ ¡ ||› d� qd S )Nr   é   gÍÌÌÌÌÌ @r   r9   )rÔ  Ú	subsamplerd   g¸…ëQ¸ž?rô   r   )Úranger   r   r   rb   ÚiscloseÚsumr   )r;   rC  rû   ÚexpectedÚwin_subÚwin_2r   r   r<   Ú
test_unity[  s$   ÿÿÿðzTestDPSS.test_unityc                 C   sd   t jddddd�d }t|dƒ t jddddd�d }t|dƒ t jdd	ddd�d }t|dƒ d S )
Né   r.   rk   T)rÓ  r   r9   r6   rè   )r   r   r   )r;   Úlamr   r   r<   rc  p  s   

zTestDPSS.test_extremesc                 C   s‚   t ttjdddƒ t ttjdddƒ t ttjdddƒ t ttjdddƒ t ttjdddƒ t ttjdddƒ t ttjdddƒ d S )	Nrk   r$   éÿÿÿÿéûÿÿÿgš™™™™™ñ?r  r   r   )r÷   rø   r   r   Ú	TypeErrorr:   r   r   r<   Útest_degeneratey  s   zTestDPSS.test_degenerateN)r?   r@   rA   r=   rß  rc  rå  r   r   r   r<   rÒ  R  s
    	rÒ  c                   @   r9  )ÚTestLanczosc                 C   sT   t tjddd�g d¢dd� t t d¡g d¢dd� t tjdd	d�g d
¢dd� d S )Nr.   Fr/   ©rW  çq«Ï¾ºvÚ?ç;F¾ºvê?r9   ré  rè  ç•Ö&è.>rL   ©rW  çÕøuH%à?ç;9‡ïí?rí  rì  rW  r6   T)rW  rè  ré  r9   ré  rè  rW  )r   r   r+   r:   r   r   r<   r=   †  s   	ü
ü
üzTestLanczos.test_basicc                 C   s>   dD ]}t ttj|dd�ƒ|ƒ t ttj|dd�ƒ|ƒ qd S )N)r   rÅ   é   Fr/   T)r   Úlenr   r+   )r;   Únr   r   r<   Útest_array_sizeŸ  s   þzTestLanczos.test_array_sizeN)r?   r@   rA   r=   rñ  r   r   r   r<   ræ  „  s    ræ  c                   @   s\   e 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d„ Zdd„ ZdS )ÚTestGetWindowc                 C   s<   t  dd¡}t|t |¡ƒ t  dd¡}t|t |¡ƒ d S )Nr   é   )r   é   )r   r   r   rb   Ú	ones_like)r;   rx   r   r   r<   Útest_boxcar§  s   zTestGetWindow.test_boxcarc                 C   óT   t ƒ �}| td¡ tjdddd�}W d   ƒ n1 sw   Y  t|tdd� d S )Nr¾   )r%   rÐ   rÏ   Fr>  rk   rÓ   )r	   rË   rÌ   r   r   r   rÕ   ©r;   rÍ   rx   r   r   r<   Útest_cheb_odd¯  ó
   þzTestGetWindow.test_cheb_oddc                 C   r÷  )Nr¾   )r%   rÚ   rÙ   Fr>  rk   rÓ   )r	   rË   rÌ   r   r   r   rÛ   rø  r   r   r<   Útest_cheb_evenµ  rú  zTestGetWindow.test_cheb_evenc                 C   s.   t jdddd�}t  dd¡}t||dd� d S )N)r   r  é@   Fr>  r  rk   rÓ   )r   r   r   r   ©r;   Úwin1Úwin2r   r   r<   Ú	test_dpss»  s   zTestGetWindow.test_dpssc                 C   s(   t  dd¡}t  ddd¡}t||ƒ d S )NgÍÌÌÌÌÌ@rü  F)r   r   r   r   rý  r   r   r<   Útest_kaiser_floatÀ  s   zTestGetWindow.test_kaiser_floatc                 C   s(   t ttjtdƒdƒ t ttjddƒ d S )Nr'   rè   Úbrokenrk   )r÷   rø   r   r   Úsetr:   r   r   r<   Útest_invalid_inputsÅ  s   z!TestGetWindow.test_invalid_inputsc                 C   sf   d}t  d¡}t d|d ¡}ttdd�� t|t|ƒ| |d� W d   ƒ d S 1 s,w   Y  d S )Né€   )r   g       @r   zmust have the same lengthrE  )Úwindow)rb   Úaranger   r   r÷   rø   r   rï  )r;   ÚosfactorÚsigrû   r   r   r<   Útest_array_as_windowÌ  s   
"ÿz"TestGetWindow.test_array_as_windowc                 C   s@   t tdg d¢fdƒg d¢ƒ t tdg d¢fddd�g d¢ƒ d S )Nr  r  rk   r  Fr>  )rD   çš™™™™™á?r  rD   ©r   r   r:   r   r   r<   Útest_general_cosineÕ  s   ÿÿþz!TestGetWindow.test_general_cosinec                 C   s0   t tddƒg d¢ƒ t tdddd�g d¢ƒ d S )N)r  r  r[   )rD   çâÐ¶õnã?ç”·Èâ£*î?r  r  Fr>  r  r  r:   r   r   r<   Útest_general_hammingÜ  s   
ÿÿz"TestGetWindow.test_general_hammingc                 C   sN   t tddƒg d¢dd� t tdddd�g d¢dd� t tddƒtd	dƒƒ d S )
Nr+   r.   rç  rê  rL   Fr>  rë  Úsincr  r:   r   r   r<   Útest_lanczosâ  s   
þþzTestGetWindow.test_lanczosN)r?   r@   rA   rö  rù  rû  r   r  r  r
  r  r  r  r   r   r   r<   rò  ¥  s    	rò  c               	   C   sh  t D �]®\} }tt| ƒ}tƒ ��˜}| td¡ |dg|¢R ddiŽ}|dg|¢R ddiŽ}t|d d… |ƒ |dg|¢R ddiŽ}|dg|¢R ddiŽ}t|d d… |ƒ tt|d	g|¢R ddiŽƒd	ƒ tt|d	g|¢R ddiŽƒd	ƒ tt|dg|¢R ddiŽƒdƒ tt|dg|¢R ddiŽƒdƒ t	t
|d
g|¢R Ž  t	t
|dg|¢R Ž  t|dg|¢R ddiŽg ƒ t|dg|¢R ddiŽg ƒ t|dg|¢R ddiŽdgƒ t|dg|¢R ddiŽdgƒ t|dg|¢R ddiŽjdkƒ t|dg|¢R ddiŽjdkƒ t|dg|¢R ddiŽjdkƒ t|dg|¢R ddiŽjdkƒ t|d	g|¢R ddiŽjdkƒ t|d	g|¢R ddiŽjdkƒ t|dg|¢R ddiŽdƒ t|dg|¢R ddiŽdƒ t|dg|¢R ddiŽdƒ t|dg|¢R ddiŽdƒ tt|dg|¢R ddiŽƒjddd� tt|dg|¢R ddiŽƒjddd� W d   ƒ n	1 �s¬w   Y  qd S )Nr¾   rè   r0   Tr6   Frâ  é	   r.   g      @iùÿÿÿr   r   ÚfloatrÅ   g)\�Âõ(ð?rK   rL   rî  )Úwindow_funcsÚgetattrr   r	   rË   rÌ   r   r   rï  r÷   rø   r   r   Údtyper   r   r   Úimag)Úwindow_nameÚparamsr  rÍ   Úw1rD  r   r   r<   Útest_windowfunc_basicsì  sN   

          ÿÿÔ€þr  c                  C   s   dD ]	} t tt| dƒ qd S )N)r   Úksrr@  Úkbdr    ÚgaussÚgsszgeneral gaussianr#   zgeneral gaussÚgeneral_gaussÚggsÚdssr   zgeneral cosiner  r%   Úchebzgeneral hammingr  r6   )r÷   rø   r   )Úwinstrr   r   r<   Útest_needs_params  s   ùr&  c                  C   s&   dD ]} t | dƒ}tt|ƒdƒ qd S )N)r   r   r   r   r   r   r&   r   r   r   r   r)   r(   Úpoissonr*   ÚtukÚtriangler+   r  r6   )r   r   rï  )r%  rû   r   r   r<   Útest_not_needs_params*  s   
ër*  c               	   C   sj   t jfD ].} | dƒ}t t |t |¡ ¡¡}t|dƒ | dƒ}t t |t |¡ ¡¡}t|dƒ qd S )Ni   rW  i  )r   r+   rb   Úmaxrr   Úflipr   )rû   rx   Úerrorr   r   r<   Útest_symmetricC  s   
÷r.  )6Únumpyrb   r   Únumpy.testingr   r   r   r   r   r   r	   Úpytestr
   r÷   Ú	scipy.fftr   Úscipy.signalr   r   r   r  r-   rC   rH   rR   rY   r€   r†   rÕ   rÛ   r½   rõ   rü   rý   r  r  r  r  r%  r.  r:  rI  rN  rT  r^  r]  rÕ  rÒ  ræ  rò  r  r&  r*  r.  r   r   r   r<   Ú<module>   sº    $	J
9






ç		)ÿþüûúø	÷
öôòñðïîíìëç("ù2!G3