a
    ˆù»jl£  ã                   @   sn  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+eg d9¢ƒeg d:¢ƒeg d;¢ƒeg d<¢ƒeg d=¢ƒeg d>¢ƒeg d?¢ƒeg d@¢ƒeg dA¢ƒg dB¢g dC¢g dD¢g dE¢g dF¢g dG¢g dH¢g dI¢g dJ¢g dK¢dLœZ,G dMdN„ dNƒZ-g dO¢g dP¢gdQdRgfg dS¢g dT¢g dU¢gg dV¢fg dW¢g dX¢g dY¢g dZ¢g d[¢gg d\¢fg d]¢g d^¢g d_¢g d`¢gg da¢fdbœZ.G dcdd„ ddƒZ/G dedf„ dfƒZ0G dgdh„ dhƒZ1didj„ Z2dkdl„ Z3dmdn„ Z4dodp„ Z5dS )qé    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                   @   s   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$ì?r0   göA,qÞòÖ?r   çVçž¯Ò<©ÚrtolÚatolé   )r   çHáz®GÑ?ç\�Âõ(\ç?ç      ð?r7   r6   r   F)r   r6   r7   r8   r7   r6   )r   r   r   ©Úselfr   r   úEE:\soccer\ml_env\Lib\site-packages\scipy/signal/tests/test_windows.pyÚ
test_basic)   s    ý
þþzTestBartHann.test_basicN©Ú__name__Ú
__module__Ú__qualname__r<   r   r   r   r;   r,   '   s   r,   c                   @   s   e Zd Zdd„ ZdS )ÚTestBartlettc                 C   sB   t t d¡g d¢ƒ t t d¡g d¢ƒ t t dd¡g d¢ƒ d S )Nr-   )r   çš™™™™™Ù?çš™™™™™é?rC   rB   r   r5   )r   çUUUUUUÕ?çUUUUUUå?r8   rE   rD   r   F)r   rD   rE   r8   rE   rD   )r   r   r   r9   r   r   r;   r<   8   s
    ÿzTestBartlett.test_basicNr=   r   r   r   r;   rA   6   s   rA   c                   @   s   e Zd Zdd„ ZdS )Ú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=
×£À?ç)\�Âõ(ä?r8   rH   rG   ç›+¡†›„=©r4   r5   )r   çF…i£ô'·?ç—bê@cÝ?ç×Zgžsí?rM   rL   rK   g:Œ0âŽyE>)r   çì³©Ö²É?çž,¯ä,ë?rO   rN   r   T)r   rG   rH   r8   rH   rG   r   )r   r   r   r9   r   r   r;   r<   A   s    ÿý
ýÿzTestBlackman.test_basicNr=   r   r   r   r;   rF   ?   s   rF   c                   @   s   e Zd Zdd„ ZdS )ÚTestBlackmanHarrisc                 C   s^   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_^€}¬?ç¸¯çŒ¨à?r8   rS   rR   r5   r.   )rQ   gˆj—P¸¡?g'mþå$MÕ?gÇÿ·˜·uì?gÈÿ·˜·uì?g*mþå$MÕ?g�j—P¸¡?)rQ   çµÚö^º?gòU×ˆgé?gôU×ˆgé?rT   rQ   T)rQ   rR   rS   r8   rS   rR   rQ   )r   r   r   r9   r   r   r;   r<   R   s    ÿÿ
ÿÿzTestBlackmanHarris.test_basicNr=   r   r   r   r;   rP   P   s   rP   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   é   r8   é   )ç%6'HÏAè?ç)ÞTæÞ
í?r8   rY   rX   r-   )ç©Î´Xè?ç¹¡1¬E¸ë?çPD3mï?r\   r[   rZ   N©r   r   r)   Únpr   r9   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.
        rW   r   rV   F©Únorm)ç	P•ç¨ ì?çsCËpÃð?g)8‚uxò?rc   rb   r-   )ç)S~Œ¸ë?r8   çktÖÀ¹#ò?re   r8   rd   Nr]   r9   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)ZnbarZsllra   r/   é   r   r   gXÇ$Àg_‚•Ò2ÀgòAÏf•AÀr   rJ   g˜LŒJêò?çš™™™™™¹?gˆ…ZÓ¼ã@N)
r   r)   r   r^   Úlog10ÚabsZamaxZargmaxÚdiffr   )
r:   ZM_winZN_fftÚwÚfÚspecZ
first_zeroZPSLLZBW_3dBZBW_18dBr   r   r;   Útest_correctness‡   s    
zTestTaylor.test_correctnessN)r>   r?   r@   r_   rf   rq   r   r   r   r;   rU   a   s   rU   c                   @   s   e Zd Zdd„ ZdS )Ú
TestBohmanc                 C   sF   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î­²ê?rs   g I³ ˆíÆ?r   r5   Tr.   )r   ç éëPGç»?ç4}êè|ã?r8   ç6}êè|ã?rt   r   F)r   rt   ru   r8   rv   rt   )r   r   r   r9   r   r   r;   r<   ­   s    
ÿÿÿzTestBohman.test_basicNr=   r   r   r   r;   rr   «   s   rr   c                   @   s   e Zd Zdd„ ZdS )Ú
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   r5   ©r   r   r   r   r   r   r   F)r   r   r   r9   r   r   r;   r<   »   s    zTestBoxcar.test_basicNr=   r   r   r   r;   rw   ¹   s   rw   )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ó�èï?r8   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   )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ï?çä.ÂåÒï?r8   r8   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 ƒ �Œ}| 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   ƒ n1 s˜0    Y  d S )NúThis window is not suitabler-   éd   )ç}õ	³Éº?çLù ‡>à?r8   r8   r²   r±   r5   )ç×öSî¬?ç�D1mPCÔ?ç%5ÂáèRè?r8   rµ   r´   r³   é
   )r8   çT€ýE‡mã?ç¢	Å-oÉå?r¸   r·   r8   )r8   çÂF˜3œà?çýNOÖÃâ?ç»	r]†ã?rº   r¹   r8   F)r8   r¹   rº   r»   rº   r¹   )r	   ÚfilterÚUserWarningr   r   r%   )r:   Úsupr   r   r;   r<   æ   s"    ÿÿÿÿÿzTestChebWin.test_basicc                 C   sR   t ƒ �*}| td¡ tjddd�}W d   ƒ n1 s60    Y  t|tdd� d S )Nr¯   é5   éØÿÿÿ©Úatrg   ©Údecimal)r	   r¼   r½   r   r%   r   Úcheb_odd_true)r:   r¾   Úcheb_oddr   r   r;   Útest_cheb_odd_high_attenuationü   s    ,z*TestChebWin.test_cheb_odd_high_attenuationc                 C   sR   t ƒ �*}| td¡ tjddd�}W d   ƒ n1 s60    Y  t|tdd� d S )Nr¯   é6   é(   rÁ   rg   rÃ   )r	   r¼   r½   r   r%   r   Úcheb_even_true)r:   r¾   Ú	cheb_evenr   r   r;   Útest_cheb_even_high_attenuation  s    ,z+TestChebWin.test_cheb_even_high_attenuationc                 C   s^   t g d¢ƒ}tƒ �*}| td¡ tjddd�}W d   ƒ n1 sB0    Y  t||dd� d S )N)r8   çmŒ�ðœà?ç‡¿&kÔÃâ?gïäÓc[†ã?rÎ   rÍ   r8   r¯   r5   r¶   rÁ   rg   rÃ   ©r   r	   r¼   r½   r   r%   r   )r:   Zcheb_odd_low_at_truer¾   rÆ   r   r   r;   Útest_cheb_odd_low_attenuation  s
    ,z)TestChebWin.test_cheb_odd_low_attenuationc                 C   s^   t g d¢ƒ}tƒ �*}| td¡ tjddd�}W d   ƒ n1 sB0    Y  t||dd� d S )N)r8   ç Â¤RìÜ?çN(DÀ!Tà?ç# Â¤Rá?rÓ   rÒ   rÑ   r8   r¯   é   iöÿÿÿrÁ   rg   rÃ   rÏ   )r:   Zcheb_even_low_at_truer¾   rË   r   r   r;   Útest_cheb_even_low_attenuation  s
    ,z*TestChebWin.test_cheb_even_low_attenuationN)r>   r?   r@   r<   rÇ   rÌ   rÐ   rÕ   r   r   r   r;   r®   ä   s
   	r®   )ç›|dµyÍ?çvSà?™{?r8   r×   )ç´1¤›B?ç%ô”À…µ?rÙ   rØ   )çÌ�¿£ªRÁ?ç8ï,6V‹×?r8   rÛ   )ç\Kr‡�Ì?ç
–oü²hã?rÝ   rÜ   )rÖ   r×   r8   r×   rÖ   )rÚ   rÛ   r8   rÛ   rÚ   ))rg   Nçš™™™™™É?F)rg   NrÞ   T)rg   Nr8   F)rg   Nr8   T)rg   r   rÞ   F)rg   r   rÞ   T)rg   r   r8   F)rg   r   r8   T)rW   NrÞ   T)rW   Nr8   T)rW   r   rÞ   T)rW   r   r8   Tc                  C   sL   t  ¡ D ]>\} }|d u r.tttjg| ¢R Ž  qtj| Ž }t||dd� qd S )NrI   ©r3   )Úexponential_dataÚitemsÚassert_raisesÚ
ValueErrorr   r(   r   )ÚkÚvÚwinr   r   r;   Útest_exponential8  s
    
rç   c                   @   s   e Zd Zdd„ ZdS )ÚTestFlatTopc                 C   s^   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ö^É?r8   rë   rê   r5   )ré   çì`p|ËÜ¢¿çò¥î‰Ôë…?ç ÄÞJëüè?rî   rí   rì   )ré   ç<ó#¢¸U±¿çÜ_&kã?rð   rï   ré   T)ré   rê   rë   r8   rë   rê   ré   )r   r   r   r9   r   r   r;   r<   C  s    ÿÿ
ÿÿzTestFlatTop.test_basicNr=   r   r   r   r;   rè   A  s   rè   c                   @   s   e Zd Zdd„ ZdS )Ú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-   r8   )ç|„ÿÙæ~¦?ç«w$ÇÔ?ç"‚í$j=ì?rô   ró   rò   r5   g333333ó?)rò   ç
"ñîÅêÏ?ç;ŽeÙÜœæ?r8   rö   rõ   rò   é   )rÝ   ç÷ÅÆ¤Ÿé?çŠyÉÊLEî?r8   rù   rø   rÝ   F)rÝ   rø   rù   r8   rù   rø   )r   r   r    r9   r   r   r;   r<   W  s    ÿÿÿÿzTestGaussian.test_basicNr=   r   r   r   r;   rñ   U  s   rñ   c                   @   s   e Zd Zdd„ ZdS )ÚTestGeneralCosinec                 C   s<   t t dg d¢¡g d¢ƒ t tjdg d¢dd�g d¢ƒ d S )NrW   ©r"   ç333333Ó?rÞ   )rB   rü   r   rü   rB   rg   Fr.   ©rB   rü   r   rü   )r   r   Úgeneral_cosiner9   r   r   r;   r<   l  s    ÿÿzTestGeneralCosine.test_basicNr=   r   r   r   r;   rú   j  s   rú   c                   @   s   e Zd Zdd„ ZdS )Ú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 )NrW   çffffffæ?©rB   r   r8   r   rB   ç      è?Fr.   )r"   çy&"‡å?ç‡ÙææÝxî?r  r  r-   T)r"   r  r  r  r  r"   )r   r   Úgeneral_hammingr9   r   r   r;   r<   u  s    ÿÿÿzTestGeneralHamming.test_basicNr=   r   r   r   r;   rÿ   s  s   rÿ   c                   @   s   e Zd Zdd„ ZdS )ÚTestHammingc                 C   s^   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)ç{®Gáz´?ç×£p=
×Ó?ç¤p=
×£è?r8   r	  r  r5   r.   )r  çîC�W4Ð?ç	Ÿ/È5Žä?ç4òCªÑŠî?r  r  r
  )r  çÂÂ6 ivÙ?çŠðœžP0í?r  r  r  T)r  r  r	  r8   r	  r  r  )r   r   r   r9   r   r   r;   r<   ‚  s    ÿÿ
ÿÿzTestHamming.test_basicNr=   r   r   r   r;   r  €  s   r  c                   @   s   e Zd Zdd„ ZdS )Ú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  r8   r  r  r1   r2   r5   )r   ç\$è:¾È?ç°H`r�ã?ç8®åT^jî?r  r  r  T©r   çXhdˆÖ?çTúËÍ»ñì?r  r  r   ©r   r  r  r8   r  r  r   )r   r   r'   r9   r   r   r;   r<   ’  s     þüý
þzTestHann.test_basicNr=   r   r   r   r;   r  �  s   r  c                   @   s   e Zd Zdd„ ZdS )Ú
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>�%ìï?r  r  r  r5   )r  ç	‘¯È$ï?ç6­ÿ éÈï?r8   r  r  r  gš™™™™™@)çÂ§âAÕ¨Ð?ç¯Oãð Få?çœ$üù§©î?r   r  r  )r  ç*‡çý‰'ã?çÜó=aì?r8   r"  r!  r  F)r  r!  r"  r8   r"  r!  )r   r   r   r9   r   r   r;   r<   ¦  s    ÿÿÿÿÿzTestKaiser.test_basicNr=   r   r   r   r;   r  ¤  s   r  c                   @   s   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©Zfftbinsr   r8   r   rg   gè«UÓ˜à?gU3|\ë?r-   r÷   )gHZ1êÛ?g¸Kfž æ?g"iF5±Ëì?)r   Úkaiser_bessel_derivedr   r   r^   ÚpiÚsqrt)r:   ÚMrn   Ú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<0    Y  d}t t|d��$ tj|d ddd	� W d   ƒ n1 s€0    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&  r/   )râ   rã   r   r(  )r:   r+  Úmsgr   r   r;   Útest_exceptions×  s    0z'TestKaiserBesselDerived.test_exceptionsN)r>   r?   r@   r<   r0  r   r   r   r;   r#  ½  s   r#  c                   @   s   e Zd Zdd„ ZdS )ÚTestNuttallc                 C   s^   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.   )çA Ž"ÆÆ7?çv§;O<g¯?ç$2bUsïà?r8   r4  r3  r5   )r2  gx&yxXW£?g‚íÌÓ?ïÕ?çµ‘êŠì?r5  g„íÌÓ?ïÕ?g&yxXW£?)r2  gëðŽEºJ¼?g=`…�T‹é?g>`…�T‹é?góðŽEºJ¼?r2  T)r2  r3  r4  r8   r4  r3  r2  )r   r   r   r9   r   r   r;   r<   è  s    ÿÿ
ÿÿzTestNuttall.test_basicNr=   r   r   r   r;   r1  æ  s   r1  c                   @   s   e Zd Zdd„ ZdS )Ú
TestParzenc                 C   sF   t t d¡g d¢ƒ t tjddd�g d¢ƒ t t dd¡g d¢ƒ d S )	Nr-   )çe/¡½„ö‚?r  çä8Žã8Žë?r8  r  r7  r5   Tr.   )ç%OZQ%âw?çÄ2¤|Ï&Ä?çêªÝ�þÍä?r8   r;  r:  r9  F)r9  r:  r;  r8   r;  r:  )r   r   r   r9   r   r   r;   r<   ú  s    
ÿÿÿzTestParzen.test_basicNr=   r   r   r   r;   r6  ø  s   r6  c                   @   s   e Zd Zdd„ ZdS )Ú
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"   ç«ªªªªªê?r>  r"   r=  r5   )r  r"   r  r   r  r"   r  Fr.   )r  r"   r  r   r  r"   )r   r   r   r9   r   r   r;   r<   
  s    ÿ
ÿÿzTestTriang.test_basicNr=   r   r   r   r;   r<    s   r<  )ç        r8   r8   r?  )r?  ç„Ëü‚Øúê?r@  r?  )r?  r  r  r?  )r?  r8   r8   r8   )r?  çrnÁOCÇâ?r8   rA  )r?  r"   r8   r"   )r8   r8   r8   r8   r8   )r?  çYª«©xæ?r8   rB  r?  )r?  r"   r8   r"   r?  rx   ry   )r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r  r8   r8   gRúËÍ»ñì?r   )r   r  r8   r8   r8   r  r   )r   gxÅ³	&¬á?r8   r8   gvÅ³	&¬á?r   )r   g#}`yqÚ?çŽ)!ûï?r8   rC  g#}`yqÚ?r   r  r  ))rg   r"   T)rg   çÍÌÌÌÌÌì?T)rg   r8   T)rg   r"   F)rg   rD  F)rg   r8   F)rW   r?  T)rW   rC   T)rW   r8   T)r-   r   )r5   r   )r-   r  )r5   r  )r-   )r5   )r-   r  )r5   r  )r-   r   )r5   r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú	TestTukeyc                 C   sN   t  ¡ D ]@\}}|d u r.tttjg|¢R Ž  qtj|Ž }t||ddd� qd S )Nr1   r2   )Ú
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:   Ztuk0Zbox0Ztuk1Zhan1r   r   r;   Útest_extremes<  s    


zTestTukey.test_extremesN)r>   r?   r@   r<   rG  r   r   r   r;   rE  1  s   	rE  )çÑÆIPÞß?ç;¯]LÆà?rI  rH  )g/vI<£tå?gEî@¾¿Ì?gEî@¾¿Ì¿g/vI<£tå¿g¤ÐVÉ?gª$aÈ²¬`?)çìÑ‹BAÚ?g«njªkê?rJ  )g>˜efž æ?r?  g>˜efž æ¿)ç	¸ž#nâ?gLoÆ¦�â¿rK  )gmê/ üÿï?gä¢96+ðï?gé›¦br©é?)g wà²?VÆ?gõ>J#¹ß?g÷;�öWiå?gÖ™}I#¹ß?g€ƒr²?VÆ?)g¦:7A!(Ü?çcHX˜á¶á?r?  çcHX˜á¶á¿ç¨S[@!(Ü¿)çq¦ÿhÜ4ä?çT1§a~Â²?g�ØÐÈEÜ¿rP  rO  )rL  rN  r?  g¨S[@!(Ü?rM  )gûu+tóÑ?çXÓ>Žîß¿g²3”ù˜6ã?rQ  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{  rz  ry  rx  rw  rv  ru  rt  rs  rr  rq  rp  ro  rn  rm  rl  rk  rj  ri  rh  rg  rf  re  rd  rc  rb  ra  r`  r_  r^  r]  r\  r[  rZ  rY  rX  rW  rV  rU  rT  rS  rR  )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 í�`ç?))rg   rj   r   )r÷   gffffffö?r÷   )rW   r$   rW   )r°   r   rg   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 ]F\}}tj|ddiŽ\}}t||d d|d� t||d dd|d� qd S )	NÚreturn_ratiosTr   gH¯¼šò×z>)r4   Úerr_msgr   gñhãˆµøä>)r3   r4   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rˆtt |d¡ ¡ ||› d� t||d	d
� tj||d dd�}|dkr¨dnd}tt |d¡ ¡ ||› d� q
d S )Nr   é   gÍÌÌÌÌÌ @r   r8   )r¸  Z	subsampler`   g¸…ëQ¸ž?rß   r   )Úranger   r   r   r^   ÚiscloseÚsumr   )r:   r+  ræ   ÚexpectedZwin_subZ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-   rg   T)r·  r   r8   r5   rÔ   )r   r   r   )r:   Zlamr   r   r;   rG  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 )	Nrg   r$   éÿÿÿÿéûÿÿÿgš™™™™™ñ?r÷   r   r   )râ   rã   r   r   Ú	TypeErrorr9   r   r   r;   Útest_degeneratey  s    zTestDPSS.test_degenerateN)r>   r?   r@   r<   rÀ  rG  rÅ  r   r   r   r;   r¶  R  s   	r¶  c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú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.   ©r?  çq«Ï¾ºvÚ?ç;F¾ºvê?r8   rÉ  rÈ  ç•Ö&è.>rJ   ©r?  çÕøuH%à?ç;9‡ïí?rÍ  rÌ  r?  r5   T)r?  rÈ  rÉ  r8   rÉ  rÈ  r?  )r   r   r+   r9   r   r   r;   r<   †  s    	ü
üüzTestLanczos.test_basicc                 C   s>   dD ]4}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?   r@   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   r^   Z	ones_like)r:   rn   r   r   r;   Útest_boxcar§  s    zTestGetWindow.test_boxcarc                 C   sT   t ƒ �,}| td¡ tjdddd�}W d   ƒ n1 s80    Y  t|tdd� d S )Nr¯   )r%   rÀ   r¿   Fr'  rg   rÃ   )r	   r¼   r½   r   r   r   rÅ   ©r:   r¾   rn   r   r   r;   Útest_cheb_odd¯  s    .zTestGetWindow.test_cheb_oddc                 C   sT   t ƒ �,}| td¡ tjdddd�}W d   ƒ n1 s80    Y  t|tdd� d S )Nr¯   )r%   rÉ   rÈ   Fr'  rg   rÃ   )r	   r¼   r½   r   r   r   rÊ   rÖ  r   r   r;   Útest_cheb_evenµ  s    .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÷   rg   rÃ   )r   r   r   r   ©r:   Zwin1Z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Ô   Úbrokenrg   )râ   rã   r   r   Úsetr9   r   r   r;   Útest_invalid_inputsÅ  s    z!TestGetWindow.test_invalid_inputsc                 C   sd   d}t  d¡}t d|d ¡}ttdd��& t|t|ƒ| |d� W d   ƒ n1 sV0    Y  d S )Né€   )r   g       @r   zmust have the same lengthr-  )Úwindow)r^   Zaranger   r   râ   rã   r   rÏ  )r:   Z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û   rg   rý   Fr'  )rB   çš™™™™™á?rä  rB   ©r   r   r9   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   rW   )rB   çâÐ¶õnã?ç”·Èâ£*î?rè  rç  Fr'  r  rå  r9   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Ê  rJ   Fr'  rË  Úsincrå  r9   r   r   r;   Útest_lanczosâ  s    
þþzTestGetWindow.test_lanczosN)r>   r?   r@   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ƒ ��0}| 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   ƒ q1 �sX0    Y  qd S )Nr¯   rÔ   r/   Tr5   FrÂ  é	   r-   g      @iùÿÿÿr   r   Úfloatr¶   g)\�Âõ(ð?rI   rJ   rÎ  )Úwindow_funcsÚgetattrr   r	   r¼   r½   r   r   rÏ  râ   rã   r   r   Zdtyper   r   r   Úimag)Zwindow_nameÚparamsrá  r¾   Zw1r,  r   r   r;   Útest_windowfunc_basicsì  sH    

          ÿÿrò  c                  C   s   dD ]} t tt| dƒ qd S )N)r   Zksrr(  Zkbdr    ÚgaussZgsszgeneral gaussianr#   zgeneral gaussZgeneral_gaussZggsZdssr   zgeneral cosinerþ   r%   Zchebzgeneral hammingr  r5   )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(   Zpoissonr*   ZtukÚtriangler+   rê  r5   )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   r?  i  )r   r+   r^   Úmaxrl   Úflipr   )ræ   rn   Úerrorr   r   r;   Útest_symmetricC  s    
rû  )6Únumpyr^   r   Znumpy.testingr   r   r   r   r   r   r	   Zpytestr
   râ   Z	scipy.fftr   Zscipy.signalr   r   r   rî  r,   rA   rF   rP   rU   rr   rw   rÅ   rÊ   r®   rà   rç   rè   rñ   rú   rÿ   r  r  r  r#  r1  r6  r<  rF  rE  r¹  r¶  rÆ  rÒ  rò  rõ  r÷  rû  r   r   r   r;   Ú<module>   s”   $	J9







ç		)








ç("ù2!G3