U
    »mœd;   ã                j   @   sÚ
  d dl Z 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mZ ddd	d
ddddddddddddddddddg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d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdDdCdBdAd@d?d>d=d<d;d:d9d8d7d6d5d4d3d2d1d0d/d.d-d,d+g5ƒZedFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_dEdEd_d^d]d\d[dZdYdXdWdVdUdTdSdRdQdPdOdNdMdLdKdJdIdHdGdFg6ƒZ G d`da„ daƒZ!edbdcdEdcgƒedddededdgƒedfdgdEdggƒedhdididhgƒedbdcdEdcgƒdedfdgdEdggƒdedbdcdEdcdbgƒedfdgdEdgdfgƒdddjœZ"dkdl„ Z#G dmdn„ dnƒZ$G dodp„ dpƒZ%G dqdr„ drƒZ&G dsdt„ dtƒZ'G dudv„ dvƒZ(G dwdx„ dxƒZ)G dydz„ dzƒZ*G d{d|„ d|ƒZ+G d}d~„ d~ƒZ,G dd€„ d€ƒZ-G d�d‚„ d‚ƒZ.edƒdEdEdƒgƒedƒd„d„dƒgƒedƒd…d…dƒgƒedƒdEdEdEgƒedƒd†dEd†gƒedƒd‡dEd‡gƒedEdEdEdEdEgƒedƒdˆdEdˆdƒgƒedƒd‡dEd‡dƒgƒd‰d‰d‰d‰d‰d‰gd‰d‰d‰d‰d‰d‰d‰gd d‰d‰d‰d‰d gd d‰d‰d‰d‰d‰d gd dŠdEdEd‹d gd d…dEdEdEd…d gd dŒdEdEd�d gd dŽd�dEd�d�d gd d‘dŠdŠd‘d gd d’d…dEd…d’d gd“œZ/G d”d•„ d•ƒZ0d–d—d—d–gd˜d™dšd›ggdœd�gfdždŸdžgd dƒd¡gd¢d£d¢ggd¤d¥d¦gfd§d¨d©dªd«gd¬d­dƒd®d¯gd°d±d²d±d°gd­d¯dƒd³d®gd´dµd¶dµd·ggd¸d¹dºd»d¼gfd½d¾d¿dÀdÁdÂdÃdÄdÅdÆdÇdÈdÉdÊdËdÌdÍdÎdÏdÐdÑdÒdÓdÔdÕdÖd×dØdÙdÚdÛdÜdÝdÞdßdàdádâdãdädådædçdèdédêdëdìdídîdîdídìdëdêdédèdçdædådädãdâdádàdßdÞdÝdÜdÛdÚdÙdØd×dÖdÕdÔdÓdÒdÑdÐdÏdÎdÍdÌdËdÊdÉdÈdÇdÆdÅdÄdÃdÂdÁdÀd¿d¾d½gddïdðdñdòdódôdõdöd÷dødùdúdûdüdýdþdÿ�d �d�d�d�d�d�d�d�d�d	�d
�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d �d!�d"�d#�d$�d%�d&�d'�d(�d)�d*�d+�d,�d-�d.�d/�d0�d1�d2�d3�d4�d5�d6�d7�d8�d9�d:�d;�d<�d=�d>�d?�d@�dA�dB�dC�dD�dE�dF�dG�dH�dI�dJ�dK�dL�dM�dN�dO�dP�dQ�dRgd�dS�dT�dU�dV�dW�dX�dY�dZ�d[�d\�d]�d^�d_�d`�da�db�dc�dd�de�df�dg�dh�di�dj�dk�dl�dm�dn�do�dp�dq�dr�ds�dt�du�dv�dw�dx�dy�dz�d{�d|�d}�d~�d�d€�d��d‚�dƒ�d„�d„�dƒ�d‚�d��d€�d�d~�d}�d|�d{�dz�dy�dx�dw�dv�du�dt�ds�dr�dq�dp�do�dn�dm�dl�dk�dj�di�dh�dg�df�de�dd�dc�db�da�d`�d_�d^�d]�d\�d[�dZ�dY�dX�dW�dV�dU�dT�dSgd�d…�d†�d‡�dˆ�d‰�dŠ�d‹�dŒ�d��dŽ�d��d��d‘�d’�d“�d”�d•�d–�d—�d˜�d™�dš�d›�dœ�d��dž�dŸ�d �d¡�d¢�d£�d¤�d¥�d¦�d§�d¨�d©�dª�d«�d¬�d­�d®�d¯�d°�d±�d²�d³�d´�dµ�d¶�d·�d¸�d¹�dº�d»�d¼�d½�d¾�d¿�dÀ�dÁ�dÂ�dÃ�dÄ�dÅ�dÆ�dÇ�dÈ�dÉ�dÊ�dË�dÌ�dÍ�dÎ�dÏ�dÐ�dÑ�dÒ�dÓ�dÔ�dÕ�dÖ�d×�dØ�dÙ�dÚ�dÛ�dÜ�dÝ�dÞ�dß�dà�dá�dâ�dã�dä�då�dæ�dç�dègdg�dé�dê�dë�dìgf�díœZ1G �dî�dï„ �dïƒZ2G �dð�dñ„ �dñƒZ3G �dò�dó„ �dóƒZ4�dô�dõ„ Z5�dö�d÷„ Z6�dø�dù„ Z7�dú�dû„ Z8�dü�dý„ Z9�dþ�dÿ„ Z:d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Úhann)Úboxcar© )Útriangr   )Úparzenr   )Úbohmanr   )Úblackmanr   )Únuttallr   )Úblackmanharrisr   )Úflattopr   )Úbartlettr   )Úbarthannr   )Úhammingr   )Úkaiser©é   )Údpss)é   )Úgaussian©ç      à?)Úgeneral_gaussian)ç      ø?r    )Úchebwinr   )Úcosiner   )r   r   )Úexponentialr   )Útaylorr   )Útukeyr"   )Úlanczosr   c                   @   s   e Zd Zdd„ ZdS )ÚTestBartHannc              	   C   s`   t tjddd�ddddddgƒ t t d¡dd	d
dd
d	dgƒ t t dd¡dd	d
dd
d	gƒ d S )Né   T©Úsymr   gøA,qÞòÖ?g	5xôB$ì?göA,qÞòÖ?é   gHáz®GÑ?g\�Âõ(\ç?ç      ð?F)r   r   r   ©Úselfr   r   úX/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/signal/tests/test_windows.pyÚ
test_basic+   s      ÿÿ
ÿÿzTestBartHann.test_basicN©Ú__name__Ú
__module__Ú__qualname__r5   r   r   r   r4   r,   )   s   r,   c                   @   s   e Zd Zdd„ ZdS )ÚTestBartlettc              	   C   s\   t t d¡ddddddgƒ t t d¡dddddddgƒ t t dd	¡ddddddgƒ d S )
Nr-   r   çš™™™™™Ù?çš™™™™™é?r0   gUUUUUUÕ?gUUUUUUå?r1   F)r   r   r   r2   r   r   r4   r5   7   s
    ÿzTestBartlett.test_basicNr6   r   r   r   r4   r:   5   s   r:   c                   @   s   e Zd Zdd„ ZdS )ÚTestBlackmanc              	   C   s’   t tjddd�ddddddgdd	� t tjd
dd�dddddddgdd	� t t d¡ddddddgdd	� t t d
d¡dddddddgdd	� d S )Nr-   Fr.   r   g¤p=
×£À?g)\�Âõ(ä?r1   ç›+¡†›„=©Úatolr0   gF…i£ô'·?g—bê@cÝ?g×Zgžsí?g:Œ0âŽyE>gì³©Ö²É?gž,¯ä,ë?T)r   r   r   r2   r   r   r4   r5   @   s2     ÿ  þý
  ÿý ÿzTestBlackman.test_basicNr6   r   r   r   r4   r=   >   s   r=   c                   @   s   e Zd Zdd„ ZdS )ÚTestBlackmanHarrisc              	   C   s‚   t t dd¡ddddddgƒ t tjddd�dd	d
ddddgƒ t t d¡ddddddgƒ t tjddd�dddddddgƒ d S )Nr-   FgiUMu?gè0_^€}¬?g¸¯çŒ¨à?r1   r0   r.   gˆj—P¸¡?g'mþå$MÕ?gÇÿ·˜·uì?gÈÿ·˜·uì?g*mþå$MÕ?g�j—P¸¡?gµÚö^º?gòU×ˆgé?gôU×ˆgé?T)r   r   r   r2   r   r   r4   r5   Q   s.    ÿ  þÿ
  ÿÿÿÿzTestBlackmanHarris.test_basicNr6   r   r   r   r4   rA   O   s   rA   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú
TestTaylorc              
   C   sb   t t ddd¡dƒ t t ddd¡t dddddg¡ƒ t t ddd¡t d	d
ddd
d	g¡ƒ 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    é   r1   é   g%6'HÏAè?g)ÞTæÞ
í?r-   g©Î´Xè?g¹¡1¬E¸ë?gPD3mï?N©r   r   r)   Únpr   r2   r   r   r4   Útest_normalizedb   s     þ    þþzTestTaylor.test_normalizedc              
   C   sV   t tjddddd�t dddddg¡ƒ t tjd	dddd�t d
ddddd
g¡ƒ 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.
        rD   r    rC   F©Únormg	P•ç¨ ì?gsCËpÃð?g)8‚uxò?r-   g)S~Œ¸ë?r1   gktÖÀ¹#ò?NrE   r2   r   r   r4   Útest_non_normalizedt   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sllrI   r/   é   r   r    gXÇ$Àg_‚•Ò2ÀgòAÏf•AÀr   r?   g˜LŒJêò?çš™™™™™¹?gˆ…ZÓ¼ã@N)
r   r)   r   rF   Úlog10ÚabsZamaxZargmaxÚdiffr   )
r3   ZM_winZN_fftÚwÚfÚspecZ
first_zeroZPSLLZBW_3dBZBW_18dBr   r   r4   Útest_correctness†   s    
zTestTaylor.test_correctnessN)r7   r8   r9   rG   rJ   rU   r   r   r   r4   rB   `   s   rB   c                   @   s   e Zd Zdd„ ZdS )Ú
TestBohmanc              	   C   s`   t t d¡ddddddgƒ t tjddd�dd	d
ddd	dgƒ t t dd¡dd	d
ddd	gƒ d S )Nr-   r   g$I³ ˆíÆ?g6 Dî­²ê?g I³ ˆíÆ?r0   Tr.   g éëPGç»?g4}êè|ã?r1   g6}êè|ã?F)r   r   r   r2   r   r   r4   r5   ¬   s(    
  ÿÿ  ÿÿ ÿÿzTestBohman.test_basicNr6   r   r   r   r4   rV   ª   s   rV   c                   @   s   e Zd Zdd„ ZdS )Ú
TestBoxcarc              	   C   s\   t t d¡ddddddgƒ t t d¡dddddddgƒ t t dd¡ddddddgƒ d S )Nr-   r   r0   F)r   r   r   r2   r   r   r4   r5   º   s    zTestBoxcar.test_basicNr6   r   r   r   r4   rW   ¸   s   rW   gæCV¸É?gC®Ô³ ”»?gQÜñ&¿EÁ?gÆÀ:Ž*Å?g‹ÿ;¢BuÉ?gúíëÀ9#Î?g=î[­—Ñ?gZ‚Œ€
GÔ?gÙµ½Ý’×?gLÁgÓÚ?g(+†« Ý?gïTÀ=Ïà?g zR&5´á?gs�ËcÍHã?g…–uÿØä?g¼]/M`æ?gxC8Ùç?gïô¥·?é?gÚ9ÍíŽê?gm¨çoÂë?gäÙå[Öì?g�Tâ:Æí?gsK«!q�î?g/Màô.ï?g„ÖÃ—‰¢ï?gÃ)só�èï?r1   g?áìÖ2Ê?gw.Œô¢v»?g×Ûf*Ä#Á?g�–®`ñÄ?gd${„š!É?gŸ��·±Í?g®ãüMÑ?gut\�ìÓ?g¥Ljh°Ö?gxak¶ò’Ù?gŠWYÛ�Ü?gÿêqßj�ß?g†<‚)[á?g@ÜÕ«Èèâ?gôMšEsä?g”½¥œ/öå?géñ{›þlç?g[^¹Þ6Óè?gÅ:U¾g$ê?g:• U\ë?gI.ÿ!ývì?gùõCl°pí?gg¸ŸFî?g¨¦$ëpôî?gV˜‡Lyï?gä.ÂåÒï?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¡ddddddgƒ tt dd¡dd	d
dd
d	dgƒ tt dd¡ddddddgƒ tt dd¡dddddddgƒ tt ddd¡ddddddgƒ W 5 Q R X d S )NúThis window is not suitabler-   éd   g}õ	³Éº?gLù ‡>à?r1   r0   g×öSî¬?g�D1mPCÔ?g%5ÂáèRè?é
   gT€ýE‡mã?g¢	Å-oÉå?gÂF˜3œà?gýNOÖÃâ?g»	r]†ã?F)r	   ÚfilterÚUserWarningr   r   r&   )r3   Úsupr   r   r4   r5   å   sN     ÿÿ   þÿ  ÿÿ  þÿ þÿzTestChebWin.test_basicc              	   C   s>   t ƒ � }| td¡ tjddd�}W 5 Q R X t|tdd� d S )NrY   é5   éØÿÿÿ©ÚatrK   ©Údecimal)r	   r\   r]   r   r&   r   Úcheb_odd_true)r3   r^   Úcheb_oddr   r   r4   Útest_cheb_odd_high_attenuationû   s    z*TestChebWin.test_cheb_odd_high_attenuationc              	   C   s>   t ƒ � }| td¡ tjddd�}W 5 Q R X t|tdd� d S )NrY   é6   é(   ra   rK   rc   )r	   r\   r]   r   r&   r   Úcheb_even_true)r3   r^   Ú	cheb_evenr   r   r4   Útest_cheb_even_high_attenuation  s    z+TestChebWin.test_cheb_even_high_attenuationc              	   C   sT   t dddddddgƒ}tƒ � }| td¡ tjddd�}W 5 Q R X t||d	d
� d S )Nr1   gmŒ�ðœà?g‡¿&kÔÃâ?gïäÓc[†ã?rY   r0   r[   ra   rK   rc   ©r   r	   r\   r]   r   r&   r   )r3   Zcheb_odd_low_at_truer^   rf   r   r   r4   Útest_cheb_odd_low_attenuation  s      þz)TestChebWin.test_cheb_odd_low_attenuationc              	   C   sV   t ddddddddgƒ}tƒ � }| td¡ tjddd�}W 5 Q R X t||d	d
� d S )Nr1   g Â¤RìÜ?gN(DÀ!Tà?g# Â¤Rá?rY   é   iöÿÿÿra   rK   rc   rm   )r3   Zcheb_even_low_at_truer^   rk   r   r   r4   Útest_cheb_even_low_attenuation  s       þz*TestChebWin.test_cheb_even_low_attenuationN)r7   r8   r9   r5   rg   rl   rn   rp   r   r   r   r4   rX   ã   s
   	rX   g›|dµyÍ?gvSà?™{?g´1¤›B?g%ô”À…µ?gÌ�¿£ªRÁ?g8ï,6V‹×?g\Kr‡�Ì?ç
–oü²hã?))rK   Nçš™™™™™É?F)rK   Nrr   T)rK   Nr1   F)rK   Nr1   T)rK   r    rr   F)rK   r    rr   T)rK   r    r1   F)rK   r    r1   T)rD   Nrr   T)rD   Nr1   T)rD   r    rr   T)rD   r    r1   Tc                  C   sJ   t  ¡ D ]<\} }|d kr,tttjf| žŽ  qtj| Ž }t||dd� qd S ©Nr>   ©Úrtol)Úexponential_dataÚitemsÚassert_raisesÚ
ValueErrorr   r(   r   )ÚkÚvÚwinr   r   r4   Útest_exponential7  s
    
r}   c                   @   s   e Zd Zdd„ ZdS )ÚTestFlatTopc              	   C   s‚   t tjddd�ddddddgƒ t tjddd�dd	d
ddd
d	gƒ t t d¡ddddddgƒ t t dd¡dddddddgƒ d S )Nr-   Fr.   g˜ÿbF˜;¿gsý*?ª¿gdR	pö^É?r1   r0   gì`p|ËÜ¢¿gò¥î‰Ôë…?g ÄÞJëüè?g<ó#¢¸U±¿gÜ_&kã?T)r   r   r   r2   r   r   r4   r5   B  s:     ÿÿ  ýÿ
 þÿ  ÿÿzTestFlatTop.test_basicNr6   r   r   r   r4   r~   @  s   r~   c                   @   s   e Zd Zdd„ ZdS )ÚTestGaussianc              	   C   s‚   t t dd¡ddddddgƒ t t dd¡ddd	dd	ddgƒ t t dd
¡dddddddgƒ t t dd
d¡ddddddgƒ d S )Nr-   r1   g|„ÿÙæ~¦?g«w$ÇÔ?g"‚í$j=ì?r0   g333333ó?g
"ñîÅêÏ?g;ŽeÙÜœæ?é   rq   g÷ÅÆ¤Ÿé?gŠyÉÊLEî?F)r   r   r!   r2   r   r   r4   r5   V  sD      þÿ   þÿ   þÿ  þÿzTestGaussian.test_basicNr6   r   r   r   r4   r   T  s   r   c                   @   s   e Zd Zdd„ ZdS )ÚTestGeneralCosinec                 C   sJ   t t ddddg¡dddddgƒ t tjddddgdd	�ddddgƒ d S )
NrD   r#   ç333333Ó?rr   r;   r   rK   Fr.   )r   r   Úgeneral_cosiner2   r   r   r4   r5   k  s    ÿ
ÿzTestGeneralCosine.test_basicNr6   r   r   r   r4   r�   i  s   r�   c                   @   s   e Zd Zdd„ ZdS )ÚTestGeneralHammingc                 C   sb   t t dd¡dddddgƒ t tjdddd�dd	d
d
d	gƒ t tjdddd�dd	d
d
d	dgƒ d S )NrD   çffffffæ?r;   r1   ç      è?Fr.   r#   gy&"‡å?g‡ÙææÝxî?r-   T)r   r   Úgeneral_hammingr2   r   r   r4   r5   t  s     ÿ ÿÿ  ÿÿzTestGeneralHamming.test_basicNr6   r   r   r   r4   r„   r  s   r„   c                   @   s   e Zd Zdd„ ZdS )ÚTestHammingc              	   C   s‚   t t dd¡ddddddgƒ t tjddd�dd	d
ddd
d	gƒ t t d¡ddddddgƒ t tjddd�dddddddgƒ d S )Nr-   Fg{®Gáz´?g×£p=
×Ó?g¤p=
×£è?r1   r0   r.   gîC�W4Ð?g	Ÿ/È5Žä?g4òCªÑŠî?gÂÂ6 ivÙ?gŠðœžP0í?T)r   r   r   r2   r   r   r4   r5   �  s*    ÿ  þÿ
  ÿÿÿzTestHamming.test_basicNr6   r   r   r   r4   rˆ     s   rˆ   c                   @   s   e Zd Zdd„ ZdS )ÚTestHannc              	   C   s‚   t tjddd�ddddddgƒ t tjddd�dd	d
ddd
d	gƒ t t dd¡ddddddgƒ t t d¡dddddddgƒ d S )Nr-   Fr.   r   ç      Ð?r†   r1   r0   g\$è:¾È?g°H`r�ã?g8®åT^jî?TçXhdˆÖ?çTúËÍ»ñì?)r   r   r   r2   r   r   r4   r5   ‘  s*    ÿ  þÿ  ÿÿ
ÿzTestHann.test_basicNr6   r   r   r   r4   r‰   �  s   r‰   c                   @   s   e Zd Zdd„ ZdS )Ú
TestKaiserc              	   C   s    t t dd¡ddddddgƒ t t dd¡dddd	dddgƒ t t dd
¡ddddddgƒ t t dd
¡dddd	dddgƒ t t dd
d¡dddd	ddgƒ d S )Nr-   r#   gl‘ýî?g®<ê3Nï?gi>�%ìï?r0   g	‘¯È$ï?g6­ÿ éÈï?r1   gš™™™™™@gÂ§âAÕ¨Ð?g¯Oãð Få?gœ$üù§©î?g*‡çý‰'ã?gÜó=aì?F)r   r   r   r2   r   r   r4   r5   ¡  sT      þÿ   þÿ  þÿ   þÿ  þÿzTestKaiser.test_basicNr6   r   r   r   r4   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… dddgƒ d S )NrZ   ç      @©Úbeta)zkaiser bessel derivedr�   F©Zfftbinsr    r1   r   rK   gè«UÓ˜à?gU3|\ë?r-   r€   gHZ1êÛ?g¸Kfž æ?g"iF5±Ëì?)r   Úkaiser_bessel_derivedr   r   rF   ÚpiÚsqrt)r3   ÚMrR   Úw2r   r   r4   r5   º  s"     ÿ
0ÿÿÿz"TestKaiserBesselDerived.test_basicc              	   C   sf   d}d}t t|d�� tj|d dd� W 5 Q R X d}t t|d�� tj|d ddd	� W 5 Q R X d S )
NrZ   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/   )rx   ry   r   r“   )r3   r–   Úmsgr   r   r4   Útest_exceptionsÒ  s    z'TestKaiserBesselDerived.test_exceptionsN)r7   r8   r9   r5   r›   r   r   r   r4   rŽ   ¸  s   rŽ   c                   @   s   e Zd Zdd„ ZdS )ÚTestNuttallc              	   C   s‚   t tjddd�ddddddgƒ t tjddd�dd	d
ddddgƒ t t d¡ddddddgƒ t t dd¡dddddddgƒ d S )Nr-   Fr.   gA Ž"ÆÆ7?gv§;O<g¯?g$2bUsïà?r1   r0   gx&yxXW£?g‚íÌÓ?ïÕ?gµ‘êŠì?g„íÌÓ?ïÕ?g&yxXW£?gëðŽEºJ¼?g=`…�T‹é?g>`…�T‹é?góðŽEºJ¼?T)r   r   r   r2   r   r   r4   r5   ã  s4    
ÿÿ  þÿ
  ÿÿ
 ÿÿzTestNuttall.test_basicNr6   r   r   r   r4   rœ   á  s   rœ   c                   @   s   e Zd Zdd„ ZdS )Ú
TestParzenc              	   C   s`   t t d¡ddddddgƒ t tjddd�dd	d
dd
d	dgƒ t t dd¡dd	d
dd
d	gƒ d S )Nr-   ge/¡½„ö‚?rŠ   gä8Žã8Žë?r0   Tr.   g%OZQ%âw?gÄ2¤|Ï&Ä?gêªÝ�þÍä?r1   F)r   r   r   r2   r   r   r4   r5   õ  s0    
  ÿÿ   þÿ  þÿzTestParzen.test_basicNr6   r   r   r   r4   r�   ó  s   r�   c                   @   s   e Zd Zdd„ ZdS )Ú
TestTriangc              	   C   s`   t t dd¡ddddddgƒ t t d¡dddd	dddgƒ t tjdd
d�dddd	ddgƒ d S )Nr-   TgUUUUUUÅ?r#   g«ªªªªªê?r0   rŠ   r†   r   Fr.   )r   r   r   r2   r   r   r4   r5     s    ÿ
ÿÿzTestTriang.test_basicNr6   r   r   r   r4   rž     s   rž   ç        g„Ëü‚Øúê?r†   grnÁOCÇâ?r#   gYª«©xæ?r   rŒ   gRúËÍ»ñì?gxÅ³	&¬á?gvÅ³	&¬á?g#}`yqÚ?gŽ)!ûï?g#}`yqÚ?r‹   rŠ   ))rK   r#   T)rK   çÍÌÌÌÌÌì?T)rK   r1   T)rK   r#   F)rK   r    F)rK   r1   F)rD   rŸ   T)rD   r<   T)rD   r1   T)r-   r   )r0   r   )r-   rŠ   )r0   rŠ   )r-   )r0   )r-   r†   )r0   r†   )r-   r   )r0   r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú	TestTukeyc                 C   sJ   t  ¡ D ]<\}}|d kr,tttjf|žŽ  qtj|Ž }t||dd� qd S rs   )Ú
tukey_datarw   rx   ry   r   r*   r   )r3   rz   r{   r|   r   r   r4   r5   .  s
    
zTestTukey.test_basicc                 C   sD   t  dd¡}t  d¡}t||ƒ t  dd¡}t  d¡}t||ƒ d S )NrZ   r   r   )r   r*   r   r   r   )r3   Ztuk0Zbox0Ztuk1Zhan1r   r   r4   Útest_extremes7  s    


zTestTukey.test_extremesN)r7   r8   r9   r5   r£   r   r   r   r4   r¡   ,  s   	r¡   gÑÆIPÞß?g;¯]LÆà?g/vI<£tå?gEî@¾¿Ì?gEî@¾¿Ì¿g/vI<£tå¿g¤ÐVÉ?gª$aÈ²¬`?gìÑ‹BAÚ?g«njªkê?g>˜efž æ?g>˜efž æ¿g	¸ž#nâ?gLoÆ¦�â¿gmê/ üÿï?gä¢96+ðï?gé›¦br©é?g wà²?VÆ?gõ>J#¹ß?g÷;�öWiå?gÖ™}I#¹ß?g€ƒr²?VÆ?g¦:7A!(Ü?gcHX˜á¶á?gcHX˜á¶á¿g¨S[@!(Ü¿gq¦ÿhÜ4ä?gT1§a~Â²?g�ØÐÈEÜ¿g¨S[@!(Ü?gûu+tóÑ?gXÓ>Žîß¿g²3”ù˜6ã?g;éStóÑ?gMLªÅÆýï?gh5"í†zï?g\v³ÿ4—è?gPªaåîøÍ?gÑ¦Ÿd�Œ?gsk¼ö8Si?g»p¢€&çp?gÞ5ˆÙBÅu?gÖÀ¥OêL{?gõ0‚8Ã€?gwê—-µ<„?g¬kìÆFˆ?g‘^ëŠÍRŒ?gñkËPz�?g1¹��Ãþ’?gY�^»Q·•?g¡XÙ9¤˜?gdkÑ�^Å›?g3Ÿ«aJŸ?gß)âIQ¡?gî¨ŠÙ-£?g�Ñ«"¥?gµ¦¹‡.§?g¹ô~�9P©?g~�nµ[†«?g8ïð¸WÏ­?g	%fÒ³°?gñ!«ÒKI±?gP¶¤Jd„²?g‹úÓ/ÙÄ³?g$~©s	µ?gpku³ëP¶?gÖæ%ê™·?gõüž•
ã¸?gqºúÝ*º?gþ%wìo»?gZÃo¸°¼?g·ÍØÀë½?gŸ�ßÓƒ¿?g£“B¬@%À?g‹g·3ŸµÀ?g/ß—†#@Á?g‚0žÞÄÁ?g›üšÕÐ@Â?gÛ=½¤µÂ?g.§Fàö!Ã?git±3…Ã?g¦:.ôÒÞÃ?gì­X.Ä?gøGkNVsÄ?gŽƒ"Hk­Ä?gÖÊ 'FÜÄ?g²¾`»¤ÿÄ?giG»UÅ?g‘#!º5#Å?gUw³¦|’?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³¦|’¿g¶|Wâ—°?g…¢	¬Í“²?gãì¼ÞŽ´?gû
8Ï�¶?g\ÿˆúi¸?gÙ®32†Aº?gû!ô;f¼?g°+÷œª½?g©3sXL2¿?g?’æáJÀ?gÐ5£QGèÀ?gåÞôAoÁ?göÏW¹åÝÁ?gò Á}2Â?gÀæâ�‰kÂ?gÊ«IÇ‡Â?g—Fæ6†Â?g�ÝÖífÂ?gchŽ'Â?g%"™aåÈÁ?ghÁ“/ËKÁ?gŽÉÁð:°À?g>†}ñûí¿?gDC1?XB¾?g±Q”ST`¼?gs\ø‡NKº?g˜Ø
3¸?g<”Éòs˜µ?goÜãþ³?g@°1O°?gÈ5›M›ÿª?g#Š$ÕÒ7¥?g,9pÌ‡§ž?gßCÄø)Á’?gW¸ª»]{?gæÃ#YÖés¿gè‡ˆÐE™�¿g �nê›¿g•x;i£¿gƒ6ô
œ¨¿gv^
Ž�­¿gmüñ­û±¿gÂ-b3³¿g[EhÌpø´¿g[½Ñ6š¶¿gaŽ»”ü·¿g·ßæü0¹¿g_Ï:WRö¹¿g~õáîæˆº¿g0 ÕÑŠÒº¿g½¦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   rN   r    )r€   gffffffö?r€   )rD   r%   rD   )rZ   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 ]F\}}tj|ddiŽ\}}t||d d|d� t||d dd|d� qd S )	NÚreturn_ratiosTr   gH¯¼šò×z>)r@   Úerr_msgr   gñhãˆµøä>)ru   r@   r¦   )Ú	dpss_datarw   r   r   r   )r3   rz   r{   r|   Úratiosr   r   r4   r5   O  s    zTestDPSS.test_basicc                 C   sÚ   t ddƒD ]Ê}t ||d ¡}|d }tt |d¡ ¡ |d|f d� tj||d dd	�}|dkr�tt |d¡ ¡ |d|f d� t||d
d� tj||d dd	�}|dkr°dnd}tt |d¡ ¡ |d|f d� q
d S )Nr   é   gÍÌÌÌÌÌ @r    r1   z%s)r¦   Z	subsamplerH   g¸…ëQ¸ž?rt   r   )Úranger   r   r   rF   ÚiscloseÚsumr   )r3   r–   r|   ÚexpectedZwin_subZwin_2r   r   r4   Ú
test_unityV  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   r1   r0   ro   )r   r   r   )r3   Zlamr   r   r4   r£   k  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   )rx   ry   r   r   Ú	TypeErrorr2   r   r   r4   Útest_degeneratet  s    zTestDPSS.test_degenerateN)r7   r8   r9   r5   r®   r£   r³   r   r   r   r4   r¤   M  s   	r¤   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestLanczosc              	   C   sn   t tjddd�ddddddgdd	� t t d¡dd
ddd
dgdd	� t tjddd�dddddddgdd	� d S )Nr-   Fr.   rŸ   çq«Ï¾ºvÚ?ç;F¾ºvê?r1   ç•Ö&è.>r?   çÕøuH%à?ç;9‡ïí?r0   T)r   r   r+   r2   r   r   r4   r5   �  s8    	  þü
  þü   þü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+   )r3   Únr   r   r4   Útest_array_sizeš  s    zTestLanczos.test_array_sizeN)r7   r8   r9   r5   r½   r   r   r   r4   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   rF   Z	ones_like)r3   rR   r   r   r4   Útest_boxcar¢  s    zTestGetWindow.test_boxcarc              	   C   s@   t ƒ �"}| td¡ tjdddd�}W 5 Q R X t|tdd� d S )NrY   )r&   r`   r_   Fr’   rK   rc   )r	   r\   r]   r   r   r   re   ©r3   r^   rR   r   r   r4   Útest_cheb_oddª  s    zTestGetWindow.test_cheb_oddc              	   C   s@   t ƒ �"}| td¡ tjdddd�}W 5 Q R X t|tdd� d S )NrY   )r&   ri   rh   Fr’   rK   rc   )r	   r\   r]   r   r   r   rj   rÂ   r   r   r4   Ú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€   rK   rc   )r   r   r   r   ©r3   Zwin1Zwin2r   r   r4   Ú	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   r4   Ú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   ro   ÚbrokenrK   )rx   ry   r   r   Úsetr2   r   r   r4   Útest_invalid_inputsÀ  s    z!TestGetWindow.test_invalid_inputsc              	   C   sP   d}t  d¡}t d|d ¡}ttdd�� t|t|ƒ| |d� W 5 Q R X d S )Né€   )r   g       @r    zmust have the same lengthr˜   )Úwindow)rF   Zaranger   r   rx   ry   r   r»   )r3   ZosfactorÚsigr|   r   r   r4   Útest_array_as_windowÇ  s
    
z"TestGetWindow.test_array_as_windowc                 C   sL   t tddddgfdƒddddgƒ t tddddgfddd	�dd
d
dgƒ d S )Nrƒ   r#   r‚   rr   rK   r;   r   Fr’   gš™™™™™á?©r   r   r2   r   r   r4   Útest_general_cosineÐ  s    
ÿÿ
þz!TestGetWindow.test_general_cosinec                 C   s<   t tddƒdddddgƒ t tdddd�ddd	ddgƒ d S )
N)r‡   r…   rD   r;   gâÐ¶õnã?g”·Èâ£*î?Fr’   r…   r1   rÐ   r2   r   r   r4   Útest_general_hamming×  s    
ÿÿz"TestGetWindow.test_general_hammingc                 C   s^   t tddƒddddddgdd� t tddd	d
�ddddddgdd� t tddƒtddƒƒ d S )Nr+   r-   rŸ   rµ   r¶   r1   r·   r?   Fr’   r¸   r¹   ÚsincrÐ   r2   r   r   r4   Útest_lanczosÝ  s    

ÿþ ÿþzTestGetWindow.test_lanczosN)r7   r8   r9   rÁ   rÃ   rÄ   rÇ   rÈ   rË   rÏ   rÑ   rÒ   rÔ   r   r   r   r4   r¾      s   	r¾   c               
   C   sî  t D �]â\} }tt| ƒ}tƒ ��Â}| td¡ |d|žddiŽ}|d|žddiŽ}t|d d… |ƒ |d|žddiŽ}|d|žddiŽ}t|d d… |ƒ tt|d|žddiŽƒd	ƒ tt|d|žddiŽƒd	ƒ tt|d|žddiŽƒdƒ tt|d|žddiŽƒdƒ t	t
|d
f|žŽ  t	t
|df|žŽ  t|d|žddiŽg ƒ t|d|žddiŽg ƒ t|d|žddiŽdgƒ t|d|žddiŽdgƒ t|d |žddiŽjdkƒ t|d!|žddiŽjdkƒ t|d"|žddiŽjdkƒ t|d#|žddiŽjdkƒ t|d$|žddiŽjdkƒ t|d%|žddiŽjdkƒ t|d&|žddiŽdƒ t|d'|žddiŽdƒ t|d(|žddiŽdƒ t|d)|žddiŽdƒ tt|d*|žddiŽƒjddd� tt|d+|žddiŽƒjddd� W 5 Q R X qd S ),NrY   ro   r/   Tr0   Fr°   é	   r-   g      @iùÿÿÿr   r   Úfloatr[   g)\�Âõ(ð?r>   r?   rº   )ro   )r0   )rÕ   )ro   )r-   )r-   )r0   )r0   )r   )r   )r   )r   )r   )r   )r   )r   )r-   )r-   )r[   )r[   )rÕ   )rÕ   )r[   )rº   )Úwindow_funcsÚgetattrr   r	   r\   r]   r   r   r»   rx   ry   r   r   Zdtyper   r   r   Úimag)Zwindow_nameÚparamsrÍ   r^   Zw1r—   r   r   r4   Útest_windowfunc_basicsç  sL    

 ÿ ÿ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‡   r0   )rx   ry   r   )Úwinstrr   r   r4   Ú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Ó   r0   )r   r   r»   )rÝ   r|   r   r   r4   Útest_not_needs_params%  s    
rà   c                   C   s,   t jd k	r(tdt jkƒ tdtjjkƒ d S )Nzsignal.hann is deprecatedÚ
deprecated)Údep_hannÚ__doc__r   r   r   r   r   r   r4   Útest_deprecation>  s    
rä   c                  C   s    t  t  t¡¡} t| tkƒ d S )N)ÚpickleÚloadsÚdumpsrâ   r   )Z	dep_hann2r   r   r4   Útest_deprecated_pickleableD  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+   rF   ÚmaxrP   Úflipr   )r|   rR   Úerrorr   r   r4   Útest_symmetricI  s    
rì   );rå   ÚnumpyrF   r   Znumpy.testingr   r   r   r   r   r   r	   Zpytestr
   rx   Z	scipy.fftr   Zscipy.signalr   r   r   r   râ   r×   r,   r:   r=   rA   rB   rV   rW   re   rj   rX   rv   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   r4   Ú<module>   sð  $ê	J
                                    ó                                  ï9 þ ÿÿ ÿ ÿÿ  þ ÿç		) ÿ ÿ  ÿ  ÿ ÿç$Lÿ ÿ ÿ ÿ ÿ yù2!G3