U
    /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 dd dZ.eddEdEdgeddddgeddddgeddEdEdEgedddEdgedddEdgedEdEdEdEdEgedddEddgedddEddgddddddgdddddddgd ddddd gd dddddd gd ddEdEdd gd ddEdEdEdd gd ddEdEdd gd dddEddd gd ddddd gd dddEddd gdZ/G dd dZ0ddddgddddggddgfdddgdddgdddggdddgfdddddgdddddgdddddgdddddgdddddggdddddgfddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddgdddddddddddddddddd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dgdgddddg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   gA,q?g	5xB$?gA,q?   gHzG?g\(\?      ?F)r   r   r   selfr   r   C/tmp/pip-unpacked-wheel-9gxwnfpp/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   gp=
ף?g)\(?r1   +=atolr0   gFi'?gb@c?gZgs?g:0yE>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?g0_^}?g猨?r1   r0   r.   gjP?g'm$M?gu?gu?g*m$M?gjP?g^?gU׈g?gU׈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 )zTests 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'HA?g)T
?r-   gδX?g1E?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 )zTest 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)8ux?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_2gAfAr   r?   gLJ?皙?gZӼ@N)
r   r)   r   rF   log10absZamaxZargmaxZ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   rT   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.   gPG?g4}|?r1   g6}|?F)r   r   r   r2   r   r   r4   r5      s(    
     zTestBohman.test_basicNr6   r   r   r   r4   rU      s   rU   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   rV      s   rV   gCV?gCԳ ?gQ&E?g:*?g;Bu?g9#?g=[?gZ
G?gٵݒ?gLg?g(+ ?gT=?g zR&5?gscH?gu?g]/M`?gxC8?g??g9?gmo?g[?gT:?gsK!q?g/M.?g×?g)s?r1   g?2?gw.v?gf*#?g`?gd${!?g?gM?gut\?gLjh?gxak?gWY?gqj?g<)[?g@ի?gMEs?g/?g{l?g[^6?g:Ug$?g: U\?gI.!v?gClp?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?gD1mPC?g%5R?
   gTEm?g	-o?gF3?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 )NrX   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 )NrX   6   (   r`   rK   rb   )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?gc[?rX   r0   rZ   r`   rK   rb   r   r	   r[   r\   r   r&   r   )r3   Zcheb_odd_low_at_truer]   re   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?rX      ir`   rK   rb   rl   )r3   Zcheb_even_low_at_truer]   rj   r   r   r4   test_cheb_even_low_attenuation  s       z*TestChebWin.test_cheb_even_low_attenuationN)r7   r8   r9   r5   rf   rk   rm   ro   r   r   r   r4   rW      s
   	rW   g|dy?gvS?{?g1B?g%?ǵR?g8,6V?g\Kr?
oh?))rK   N皙?F)rK   Nrq   T)rK   Nr1   F)rK   Nr1   T)rK   r    rq   F)rK   r    rq   T)rK   r    r1   F)rK   r    r1   T)rD   Nrq   T)rD   Nr1   T)rD   r    rq   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.   gbF;gs*?gdR	p^?r1   r0   g`p|ܢg?gJ?g<#Ug_&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ܜ?   rp   g?gyLE?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?rq   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&"?gx?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{Gz?gףp=
?gp=
ף?r1   r0   r.   gCW4?g	/5?g4Cъ?g6 iv?gP0?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\$:?gH`r?g8T^j?TX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ը?gO 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 )NrY         @beta)zkaiser bessel derivedr   FZfftbinsr    r1   r   rK   gU?gU3|\?r-   r   gHZ1?gKf?g"iF5?)r   kaiser_bessel_derivedr   r   rF   pisqrt)r3   MrQ   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 )
NrY   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/   )rw   rx   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?gEJ?g=`T?g>`T?gEJ?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   g88?r0   Tr.   g%OZQ%w?g2|&?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   grnOC?r#   gYx?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 rr   )
tukey_datarv   rw   rx   r   r*   r   )r3   ry   rz   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 )NrY   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   gIP?g;]L?g/vI<t?gE@?gE@̿g/vI<tgV?g$aȲ`?gыBA?gnjk?g>ef?g>efg	#n?gLogm/ ?g96+?g雦br?g w?V?g>J#?g;Wi?g֙}I#?gr?V?g:7A!(?gcHX?gcHXgS[@!(ܿgqh4?gT1a~²?gEܿgS[@!(?gu+t?gX>߿g36?g;St?gML?gh5"z?g\v4?gPa?gd?gsk8Si?gp&p?g5Bu?gOL{?g08À?gw-<?gkF?g^R?gkPz?g1?gY^Q?gX9?gdkѐ^ś?g3aJ?g)IQ?g-?gѫ"?g.?g~9P?g~n[?g8Wϭ?g	%fҳ?g!KI?gPJd?g/ĳ?g$~s	?gpkuP?g%ꙷ?g
?gq*?g%wo?gZo?g?gӃ?gB@%?gg3?g/ߗ#@?g0?g@?g=?g.F!?git3?g:.?gX.?gGkNVs?g"Hk?g 'F?g`?giGU?g#!5#?gUw|?gTP?gj?gwĢ?gDъO?g_{?g< ?gȁk?gꬃt?g(P;?gHñ?gBKXP?g.mˏ޴?g nik?g"=?gOu?g{?ggU?g/u?gN׏$s?g ]?gГE?goY*?gܛ?gbu?g`?gɪJS?ga`gT*r?g.{?gYn?g.|TK?g紸?gzþ?gfU?g,?gԙ=?gg'?gws䕽?g?g[\	?g#k	?g%*?gLw<w?g,h-A?g[::<?g199l?g.4䓦%?gG/?gƢhlO?g[$v?g[$vgƢhlOgG/g.4䓦%g199lg[::<񍭿g,h-AgLw<wg%*浿g#k	g[\	g㻿gws䕽gg'gԙ=g,gfUgzþg紸¿g.|TK¿gYn¿g.{¿ga`gT*r¿gɪJS¿g`¿gbugܛgoY*gГEg ]gN׏$sg/uggUg{캿gOug"=g nikg.mˏ޴gBKXPgHñg(P;gꬃtgȁkg< g_{gDъOgwĢgjgTPgUw|g|W◰?g	͓?g?g
8ρ?g\i?gٮ32A?g!;f?g+?g3sXL2?g?J?g5QG?gAo?gW?g }2?g␉k?gIǇ?gF6?gf?gch'?g%"a?gh/K?g:?g>}?gDC1?XB?gQST`?gs\NK?g
3?g<s?go?g@1O?g5M?g#$7?g,9ṗ?gC)?gW]{?g#Ysg臈Egn꛿gx;ig6
gv^
gmg-b3g[Ehpg[6gag0g_:WRg~戺g0ъҺgI!w.?gMu?g%Pld?g3z?g>?gd?g!DKy?g+o ?gYh{b?g{^y?gSh1?gy%@?g|hzj??gP\D?gz	?gVx<҅?g?gq&?gb˱?g8|p?g_cH?g6K	?gwp΍?g"Q	q?g@m8Migǐ3g7/`_qgS!g8QJg68gu\qg/Z~ܳgpQZgCg3`g7<w䷿ggp鷿g<Wulg~`gTg#qvg,]Bigw|gvľg3gagLHgU,gvA]PvgvA]Pv?gU,?gLH?ga?g3?gvľ?gw|?g,]Bi?g#qv?gT?g~`?g<Wul?gp?g?g7<w?g3`?gC?gpQZ?g/Z~ܳ?gu\q?g68?g8QJ?gS!?g7/`_q?gǐ3?g@m8Mi?g"Q	qgwp΍g6K	g_cHg8|pgb˱gq&ggVx<҅gz	gP\Dg|hzj?gy%@¿gSh1ÿg{^yÿgYh{bĿg+o Ŀg!DKyſgdſg>ſg3zĿg%PldĿgMuÿgI!w.ÿg?g"?gy?'?g `?))rK   rN   r    )r   gffffff?r   )rD   r%   rD   )rY   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   gHz>)r@   err_msgr   gh㈵>)rt   r@   r   )	dpss_datarv   r   r   r   )r3   ry   rz   r{   Z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rtt|d |d|f d t||d
d tj||d dd	}|dkrdnd}tt|d |d|f d q
d S )Nr      g @r    r1   z%s)r   Z	subsamplerH   gQ?rs   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   rn   )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   )rw   rx   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?;Fv?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   rZ      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   rQ   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 )NrX   )r&   r_   r^   Fr   rK   rb   )r	   r[   r\   r   r   r   rd   r3   r]   rQ   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 )NrX   )r&   rh   rg   Fr   rK   rb   )r	   r[   r\   r   r   r   ri   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   rb   )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   rn   brokenrK   )rw   rx   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   rw   rx   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   rq   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 ),NrX   rn   r/   Tr0   Fr   	   r-   g      @ir   r   floatrZ   g)\(?r>   r?   r   )rn   )r0   )r   )rn   )r-   )r-   )r0   )r0   )r   )r   )r   )r   )r   )r   )r   )r   )r-   )r-   )rZ   )rZ   )r   )r   )rZ   )r   )window_funcsgetattrr   r	   r[   r\   r   r   r   rw   rx   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   )rw   rx   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tukZ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   Zflipr   )r{   rQ   errorr   r   r4   test_symmetricI  s    
r   );r   ZnumpyrF   r   Znumpy.testingr   r   r   r   r   r   r	   Zpytestr
   rw   Z	scipy.fftr   Zscipy.signalr   r   r   r   r   r   r,   r:   r=   rA   rB   rU   rV   rd   ri   rW   ru   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