
    tKg                        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	      Z G d
 d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z eg d      Z eg d      Z G 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! Z  G d" d#      Z! G d$ d%      Z" G d& d'      Z# G d( d)      Z$ G d* d+      Z% G d, d-      Z& G d. d/      Z' G d0 d1      Z( G d2 d3      Z) G d4 d5      Z* G d6 d7      Z+i d8 eg d9      d: eg d;      d< eg d=      d> eg d?      d@ eg dA      dB eg dC      dD eg dE      dF eg dG      dH eg dI      dJg dKdLg dMdNg dOdPg dQdRg dSdTg dUdVg dWdXg dYg dZg d[d\Z, G d] d^      Z-g d_g d`gdadbgfg dcg ddg degg dffg dgg dhg dig djg dkgg dlfg dmg dng dog dpgg dqfdrZ. G ds dt      Z/ G du dv      Z0 G dw dx      Z1dy Z2dz Z3d{ Z4d| Z5y)}    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 Zy)TestBartHannc                     t        t        j                  dd      g ddd       t        t        j                  d      g ddd       t        t        j                  dd	      g d
dd       y )N   Tsym)r   gA,q?	5xB$?r3   gA,q?r   V瞯<rtolatol   )r   HzG?\(\?      ?r:   r9   r   F)r   r9   r:   r;   r:   r9   )r   r   r   selfs    c/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/signal/tests/test_windows.py
test_basiczTestBartHann.test_basic)   sd    ((5D"	0 	((+;"	0 	((E28"	0    N__name__
__module____qualname__r?   r   r@   r>   r.   r.   '   s    
0r@   r.   c                       e Zd Zd Zy)TestBartlettc                     t        t        j                  d      g d       t        t        j                  d      g d       t        t        j                  dd      g d       y )Nr0   )r   皙?皙?rI   rH   r   r8   )r   UUUUUU?UUUUUU?r;   rK   rJ   r   F)r   rJ   rK   r;   rK   rJ   )r   r   r   r<   s    r>   r?   zTestBartlett.test_basic8   sH    ((+-GH((+-LM((E24	6r@   NrA   r   r@   r>   rF   rF   6   s    6r@   rF   c                       e Zd Zd Zy)TestBlackmanc                 &   t        t        j                  dd      g dd       t        t        j                  dd      g dd	       t        t        j                  d      g d
d       t        t        j                  dd      g dd       y )Nr0   Fr1   )r   p=
ף?)\(?r;   rP   rO   +=r7   r8   )r   Fi'?b@c?Zgs?rU   rT   rS   g:0yE>)r   쳩ֲ?,,?rW   rV   r   T)r   rO   rP   r;   rP   rO   r   )r   r   r   r<   s    r>   r?   zTestBlackman.test_basicA   s    ((68u	F((6BHL	N 	((+D"	$ 	((D1;%	Ir@   NrA   r   r@   r>   rM   rM   ?   s    Ir@   rM   c                       e Zd Zd Zy)TestBlackmanHarrisc                    t        t        j                  dd      g d       t        t        j                  dd      g d       t        t        j                  d      g d       t        t        j                  dd      g d	       y )
Nr0   F)iUMu?0_^}?縯猨?r;   r]   r\   r8   r1   )r[   gjP?g'm$M?gu?gu?g*m$M?gjP?)r[   ^?gU׈g?gU׈g?r^   r[   T)r[   r\   r]   r;   r]   r\   r[   )r   r   r   r<   s    r>   r?   zTestBlackmanHarris.test_basicR   sw    ..q%8N	P..qe<B	C 	..q1J	K 	..qd;"	#r@   NrA   r   r@   r>   rY   rY   P   s    #r@   rY   c                       e Zd Zd Zd Zd Zy)
TestTaylorc                    t        t        j                  ddd      d       t        t        j                  ddd      t        j                  g d             t        t        j                  ddd      t        j                  g d             y	)
zTests windows of small length that are normalized to 1. See the
        documentation for the Taylor window for more information on
        normalization.
        r   r       r;      )%6'HA?)T
?r;   re   rd   r0   )δX?繡1E?PD3m?rh   rg   rf   Nr   r   r*   npr   r<   s    r>   test_normalizedzTestTaylor.test_normalizedc   sk    
 	q!R0#6NN1a$HHJK	
 	NN1a$HH  	
r@   c                     t        t        j                  dddd      t        j                  g d             t        t        j                  dddd      t        j                  g d             y	)
zTest windows of small length that are not normalized to 1. See
        the documentation for the Taylor window for more information on
        normalization.
        rc   r    rb   Fnorm)	P ?sCp?g)8ux?rp   ro   r0   ))S~?r;   kt#?rr   r;   rq   Nri   r<   s    r>   test_non_normalizedzTestTaylor.test_non_normalizedu   s\    
 	NN1a%0HH  	
 	NN1a%0HH  	
r@   c           	      :   d}d}t        j                  |dddd      }t        ||      }dt        j                  t        j
                  |t        j                  |      z              z  }t        j                  t        j                  |      dkD        }t        j                  |||        }d	t        j                  |d
k        z  |z  |z  }d	t        j                  |dk        z  |z  |z  }	t        |dd       t        |dd       t        |	dd       y)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sllrn   r2      r   r    gX$g_2gAfAr   rR   gLJ?皙?gZӼ@N)
r   r*   r   rj   log10absamaxargmaxdiffr   )
r=   M_winN_fftwfspec
first_zeroPSLLBW_3dBBW_18dBs
             r>   test_correctnesszTestTaylor.test_correctness   s      NN5qbu%H5MBHHRVVA
N344YYrwwt}q01
wwtJ
{34299T%8899EAEIBIId&99::UBUJhQ/S1c2r@   N)rB   rC   rD   rk   rs   r   r   r@   r>   r`   r`   a   s    
$
$!3r@   r`   c                       e Zd Zd Zy)
TestBohmanc                     t        t        j                  d      g d       t        t        j                  dd      g d       t        t        j                  dd      g d       y )	Nr0   )r   g$I ?6 D?r   g I ?r   r8   Tr1   )r   PG?4}|?r;   6}|?r   r   F)r   r   r   r;   r   r   )r   r   r   r<   s    r>   r?   zTestBohman.test_basic   sX    q)D	E 	qd3D	E 	q%0A	Br@   NrA   r   r@   r>   r   r      s    	Br@   r   c                       e Zd Zd Zy)
TestBoxcarc                     t        t        j                  d      g d       t        t        j                  d      g d       t        t        j                  dd      g d       y )Nr0   r   r   r   r   r   r   r8   r   r   r   r   r   r   r   F)r   r   r   r<   s    r>   r?   zTestBoxcar.test_basic   s@    q)+=>q)+@Aq%02DEr@   NrA   r   r@   r>   r   r      s    Fr@   r   )5CV?CԳ ?Q&E?:*?;Bu?9#?=[?Z
G?ٵݒ?Lg?(+ ?T=? zR&5?scH?u?]/M`?xC8???9?mo?[?T:?sK!q?/M.?×?)s?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   )6?2?w.v?f*#?灖`?d${!??M?ut\?Ljh?xak?WY?qj?<)[?@ի?MEs?甽/?{l?[^6?:Ug$?: U\?I.!v?Clp?gF?稦$p?VLy?.?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   c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestChebWinc                    t               5 }|j                  t        d       t        t	        j
                  dd      g d       t        t	        j
                  dd      g d       t        t	        j
                  dd      g d       t        t	        j
                  dd      g d	       t        t	        j
                  ddd
      g d       d d d        y # 1 sw Y   y xY w)NThis window is not suitabler0   d   )}	ɺ?L >?r;   r;   r   r   r8   )S?D1mPC?%5R?r;   r   r   r   
   )r;   TEm?	-o?r   r   r;   )r;   F3?NO?	r]?r   r   r;   F)r;   r   r   r   r   r   )r
   filterUserWarningr   r   r&   )r=   sups     r>   r?   zTestChebWin.test_basic   s     CJJ{$ABGOOAs3EF GOOAs3EF GOOAr2JK GOOAr267 GOOAr5912! !  s   CCCc                     t               5 }|j                  t        d       t        j                  dd      }d d d        t        t        d       y # 1 sw Y   xY w)Nr   5   atru   decimal)r
   r   r   r   r&   r   cheb_odd_true)r=   r   cheb_odds      r>   test_cheb_odd_high_attenuationz*TestChebWin.test_cheb_odd_high_attenuation   sE     CJJ{$ABrc2H ! 	"(M1E !    .AAc                     t               5 }|j                  t        d       t        j                  dd      }d d d        t        t        d       y # 1 sw Y   xY w)Nr   6   (   r   ru   r   )r
   r   r   r   r&   r   cheb_even_true)r=   r   	cheb_evens      r>   test_cheb_even_high_attenuationz+TestChebWin.test_cheb_even_high_attenuation  sE     CJJ{$ABr2I ! 	")^QG ! r   c                     t        g d      }t               5 }|j                  t        d       t	        j
                  dd      }d d d        t        |d       y # 1 sw Y   xY w)N)r;   m?燿&k?gc[?r   r   r;   r   r8   r   r   ru   r   r   r
   r   r   r   r&   r   )r=   cheb_odd_low_at_truer   r   s       r>   test_cheb_odd_low_attenuationz)TestChebWin.test_cheb_odd_low_attenuation  sX    $ &0  1  CJJ{$ABqR0H ! 	"(,@!L !    .AA&c                     t        g d      }t               5 }|j                  t        d       t	        j
                  dd      }d d d        t        |d       y # 1 sw Y   xY w)N)r;   R?N(D!T?#R?r   r   r   r;   r      ir   ru   r   r   )r=   cheb_even_low_at_truer   r   s       r>   test_cheb_even_low_attenuationz*TestChebWin.test_cheb_even_low_attenuation  sX     % '; !<  CJJ{$ABc2I ! 	")-BAN ! r   N)rB   rC   rD   r?   r   r   r   r   r   r@   r>   r   r      s    2,FHMOr@   r   )|dy?vS?{?r;   r   )1B?%?r   r   )́R?8,6V?r;   r  )\Kr?
oh?r  r  )r   r   r;   r   r   )r   r  r;   r  r   ))ru   N皙?F)ru   Nr  T)ru   Nr;   F)ru   Nr;   T)ru   r    r  F)ru   r    r  T)ru   r    r;   F)ru   r    r;   T)rc   Nr  T)rc   Nr;   T)rc   r    r  T)rc   r    r;   Tc                      t         j                         D ]G  \  } }| t        t        t        j
                  g|   (t	        j
                  |  }t        ||d       I y )NrQ   r6   )exponential_dataitemsassert_raises
ValueErrorr   r)   r   )kvwins      r>   test_exponentialr  8  sO     &&(19*g&9&9>A>%%q)CC/ )r@   c                       e Zd Zd Zy)TestFlatTopc                    t        t        j                  dd      g d       t        t        j                  dd      g d       t        t        j                  d      g d       t        t        j                  dd      g d	       y )
Nr0   Fr1   )bF;s*?dR	p^?r;   r  r  r8   )r  `p|ܢ?J?r  r  r  )r  <#U_&k?r  r  r  T)r  r  r  r;   r  r  r  )r   r   r   r<   s    r>   r?   zTestFlatTop.test_basicC  sp    u53	4 	u5/	0
 	*'	( 	40A	Br@   NrA   r   r@   r>   r  r  A  s    Br@   r  c                       e Zd Zd Zy)TestGaussianc                    t        t        j                  dd      g d       t        t        j                  dd      g d       t        t        j                  dd      g d       t        t        j                  ddd	      g d
       y )Nr0   r;   )|~?w$?"$j=?r  r  r  r8   g333333?)r  
"?;eܜ?r;   r!  r   r     )r  ?yLE?r;   r$  r#  r  F)r  r#  r$  r;   r$  r#  )r   r   r!   r<   s    r>   r?   zTestGaussian.test_basicW  s    ((C0B	C 	((C0B	C 	((A.A	B 	((Au5-	.r@   NrA   r   r@   r>   r  r  U  s    .r@   r  c                       e Zd Zd Zy)TestGeneralCosinec                     t        t        j                  dg d      g d       t        t        j                  dg dd      g d       y )Nrc   r#   333333?r  )rH   r)  r   r)  rH   ru   Fr1   rH   r)  r   r)  )r   r   general_cosiner<   s    r>   r?   zTestGeneralCosine.test_basicl  s8    ..q/B/	1..q/uM*	,r@   NrA   r   r@   r>   r&  r&  j  s    ,r@   r&  c                       e Zd Zd Zy)TestGeneralHammingc                     t        t        j                  dd      g d       t        t        j                  ddd      g d       t        t        j                  ddd	      g d
       y )Nrc   ffffff?rH   r/  r;   r/  rH         ?Fr1   )r#   y&"?x?r3  r2  r0   T)r#   r2  r3  r3  r2  r#   )r   r   general_hammingr<   s    r>   r?   zTestGeneralHamming.test_basicu  sZ    //371	3//4UC5	6 	//4TB9	:r@   NrA   r   r@   r>   r-  r-  s  s    :r@   r-  c                       e Zd Zd Zy)TestHammingc                    t        t        j                  dd      g d       t        t        j                  dd      g d       t        t        j                  d      g d       t        t        j                  dd      g d	       y )
Nr0   F){Gz?ףp=
?p=
ף?r;   r:  r9  r8   r1   )r8  CW4?	/5?4Cъ?r=  r<  r;  )r8  6 iv?P0?r?  r>  r8  T)r8  r9  r:  r;   r:  r9  r8  )r   r   r   r<   s    r>   r?   zTestHamming.test_basic  sm    51;	=u5A	B 	*G	H 	t4A	Cr@   NrA   r   r@   r>   r6  r6    s    Cr@   r6  c                       e Zd Zd Zy)TestHannc                 .   t        t        j                  dd      g ddd       t        t        j                  dd      g ddd       t        t        j                  dd	      g d
dd       t        t        j                  d      g ddd       y )Nr0   Fr1   )r         ?r1  r;   r1  rC  r4   r5   r8   )r   \$:?H`r?8T^j?rF  rE  rD  Tr   Xhd?Tͻ?rI  rH  r   r   rC  r1  r;   r1  rC  r   )r   r   r(   r<   s    r>   r?   zTestHann.test_basic  s    QE28"	0 	QE2A #		0
 	Q-D"	0 	Q;"	0r@   NrA   r   r@   r>   rA  rA    s    0r@   rA  c                       e Zd Zd Zy)
TestKaiserc                 Z   t        t        j                  dd      g d       t        t        j                  dd      g d       t        t        j                  dd      g d       t        t        j                  dd      g d       t        t        j                  ddd	      g d
       y )Nr0   r#   )l?<3N?i>%?rP  rO  rN  r8   )rN  	$?6?r;   rR  rQ  rN  g@)§Aը?O F?$?rU  rT  rS  )rS  *'?=a?r;   rW  rV  rS  F)rS  rV  rW  r;   rW  rV  )r   r   r   r<   s    r>   r?   zTestKaiser.test_basic  s    q#.A	B 	q#.A	B 	q#.A	B 	q#.A	B 	q#u5-	.r@   NrA   r   r@   r>   rL  rL    s    .r@   rL  c                       e Zd Zd Zd Zy)TestKaiserBesselDerivedc                 4   d}t        j                  |d      }t        j                  d|d      }t        ||       t        |d |dz   dz  || dz  d  dz  z   d       t        t        j                  dt        j
                  dz        d d	 t	        j                  d      dz         t        t        j                  d
t        j
                  dz        d d ddg       t        t        j                  dt        j
                  dz        d d g d       y )Nr         @beta)zkaiser bessel derivedr[  Ffftbinsr    r;   r   ru   gU?gU3|\?r0   r"  )gHZ1?gKf?g"iF5?)r   kaiser_bessel_derivedr   r   rj   pisqrt)r=   Mr   w2s       r>   r?   z"TestKaiserBesselDerived.test_basic  s    ))!#6 > !522 	'16
a!QB!GH+*::B? 	55abeeaiH!L
Q	( 	55abeeaiH!L'8	: 	55abeeaiH!LH	Jr@   c                    d}d}t        t        |      5  t        j                  |dz   d       d d d        d}t        t        |      5  t        j                  |dz   dd	       d d d        y # 1 sw Y   AxY w# 1 sw Y   y xY w)
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]  r2   )r	  r
  r   r`  )r=   rc  msgs      r>   test_exceptionsz'TestKaiserBesselDerived.test_exceptions  sr    ":S1))!a%b9 2":S1))!a%beD 21 21 21s   A1A=1A:=BN)rB   rC   rD   r?   ri  r   r@   r>   rY  rY    s    J0Er@   rY  c                       e Zd Zd Zy)TestNuttallc                    t        t        j                  dd      g d       t        t        j                  dd      g d       t        t        j                  d      g d       t        t        j                  dd      g d	       y )
Nr0   Fr1   )A"7?v;O<g?$2bUs?r;   ro  rn  r8   )rm  gx&yxXW?g??絑?rp  g??g&yxXW?)rm  gEJ?g=`T?g>`T?gEJ?rm  T)rm  rn  ro  r;   ro  rn  rm  )r   r   r   r<   s    r>   r?   zTestNuttall.test_basic  sr    u5$	% 	u5A	B 	*L	M 	40/	0r@   NrA   r   r@   r>   rk  rk    s    0r@   rk  c                       e Zd Zd Zy)
TestParzenc                     t        t        j                  d      g d       t        t        j                  dd      g d       t        t        j                  dd      g d       y )	Nr0   )e/?rC  88?ru  rC  rt  r8   Tr1   )%OZQ%w?2|&?݁?r;   rx  rw  rv  F)rv  rw  rx  r;   rx  rw  )r   r   r   r<   s    r>   r?   zTestParzen.test_basic  sV    q)I	J 	qd3B	C 	q%0-	.r@   NrA   r   r@   r>   rr  rr    s    .r@   rr  c                       e Zd Zd Zy)
TestTriangc                     t        t        j                  dd      g d       t        t        j                  d      g d       t        t        j                  dd      g d       y )	Nr0   T)UUUUUU?r#   竪?r}  r#   r|  r8   )rC  r#   r1  r   r1  r#   rC  Fr1   )rC  r#   r1  r   r1  r#   )r   r   r   r<   s    r>   r?   zTestTriang.test_basic
  sH    q$/6	8q)9	;qe44	6r@   NrA   r   r@   r>   rz  rz    s    6r@   rz  )ru   r#   T)        r;   r;   r~  )ru   ?T)r~  ?r  r~  )ru   r;   T)r~  r1  r1  r~  )ru   r#   F)r~  r;   r;   r;   )ru   r  F)r~  rnOC?r;   r  )ru   r;   F)r~  r#   r;   r#   )rc   r~  T)r;   r;   r;   r;   r;   )rc   rI   T)r~  Yx?r;   r  r~  )rc   r;   T)r~  r#   r;   r#   r~  )r0   r   r   )r8   r   r   )r0   rC  )r   r   r   r   r   r   )r8   rC  )r   r   r   r   r   r   r   )r0   )r   rI  r;   r;   gRͻ?r   )r8   )r   r1  r;   r;   r;   r1  r   )r0   r1  )r   gxų	&?r;   r;   gvų	&?r   )r8   r1  )r   g#}`yq?)!?r;   r  g#}`yq?r   rG  rJ  ))r0   r   )r8   r   c                       e Zd Zd Zd Zy)	TestTukeyc                     t         j                         D ]H  \  }}| t        t        t        j
                  g|  (t	        j
                  | }t        ||dd       J y )Nr4   r5   )
tukey_datar  r	  r
  r   r+   r   )r=   r  r  r  s       r>   r?   zTestTukey.test_basic3  sM    $$&DAqyj'--<!<mmQ'QU? 'r@   c                     t        j                  dd      }t        j                  d      }t        ||       t        j                  dd      }t        j                  d      }t        ||       y )Nr   r   r   )r   r+   r   r   r(   )r=   tuk0box0tuk1han1s        r>   test_extremeszTestTukey.test_extremes<  sR    }}S!$~~c"!$-}}S!$||C !$-r@   N)rB   rC   rD   r?   r  r   r@   r>   r  r  1  s    @.r@   r  )IP?;]L?r  r  )g/vI<t?gE@?gE@̿g/vI<tgV?g$aȲ`?)ыBA?gnjk?r  )g>ef?r~  g>ef)	#n?gLor  )gm/ ?g96+?g雦br?)g w?V?g>J#?g;Wi?g֙}I#?gr?V?)g:7A!(?cHX?r~  cHXS[@!(ܿ)qh4?T1a~²?gEܿr  r  )r  r  r~  gS[@!(?r  )gu+t?X>߿g36?r  g;St?)gML?gh5"z?g\v4?gPa?gd?)dsk8Si?p&p?5Bu?OL{?08À?w-<?kF?^R?kPz?1?Y^Q?X9?dkѐ^ś?3aJ?)IQ?-?ѫ"?給.?~9P?~n[?8Wϭ?	%fҳ?!KI?PJd?/ĳ?$~s	?pkuP?%ꙷ?
?q*?%wo?Zo??矐Ӄ?磓B@%?g3?/ߗ#@?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  r  r  r  r  r  r  r  r  r  r  r  r  r  )dgUw|?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|)d|W◰?煢	͓??
8ρ?\i?ٮ32A?!;f?+?3sXL2??J?5QG?Ao?W? }2?␉k?IǇ?F6?f?ch'?%"a?h/K?:?>}?DC1?XB?QST`?s\NK?
3?<s?o?@1O?5M?#$7?,9ṗ?C)?W]{?#Ys臈En꛿x;i6
v^
m-b3[Ehp[6a0_: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  )dgI!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 `?))ru   rz   r    )r"  gffffff?r"  )rc   r%   rc   )r   r    ru   c                   $    e Zd Zd Zd Zd Zd Zy)TestDPSSc                     t         j                         D ]B  \  }}t        j                  |ddi\  }}t	        ||d   d|       t	        ||d   dd|       D y )	Nreturn_ratiosTr   gHz>)r7   err_msgr   gh㈵>)r6   r7   r   )	dpss_datar  r   r   r   )r=   r  r  r  ratioss        r>   r?   zTestDPSS.test_basicT  sT    OO%DAq!,,>>KCC1D!<FAaDt$J &r@   c                 0   t        dd      D ]  }t        j                  ||dz        }|dz  }t        t	        j
                  |d      j                         ||        t        j                  ||dz  d      }|dkD  r?t        t	        j
                  |d      j                         ||        t        ||d	
       t        j                  ||dz  d      }|dk(  rdnd}t        t	        j
                  |d      j                         ||        	 y )Nr      g @r    r;   )r   	subsamplerm   gQ?r  r   )ranger   r   r   rj   isclosesumr   )r=   rc  r  expectedwin_subwin_2s         r>   
test_unityzTestDPSS.test_unity[  s    q"A,,q!c'*C1uHC,002H$'5+ ll1a#gK@G1uRZZ488:H(/y3W48LLAG!4EFqHE2.224h$)7-! r@   c                     t        j                  dddd      d   }t        |d       t        j                  dddd      d   }t        |d       t        j                  dd	dd      d   }t        |d       y )
N   r0   ru   T)r  r   r;   r8   r   )r   r   r   )r=   lams     r>   r  zTestDPSS.test_extremesp  sk    ll2q!48;!#r*ll2q!48;!#r*ll2q!48;!#r*r@   c                    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       y )	Nru   r%   g?r"  r   r   )r	  r
  r   r   	TypeErrorr<   s    r>   test_degeneratezTestDPSS.test_degeneratey  s    j',,3;j',,3;iq#s;j',,3:j',,2q9j',,1a8j',,Aq9r@   N)rB   rC   rD   r?   r  r  r  r   r@   r>   r  r  R  s    K-*+:r@   r  c                       e Zd Zd Zd Zy)TestLanczosc                     t        t        j                  dd      g dd       t        t        j                  d      g dd       t        t        j                  dd	      g d
d       y )Nr0   Fr1   r~  qϾv?;Fv?r;   r  r  &.>rR   r~  uH%?;9?r  r  r~  r8   T)r~  r  r  r;   r  r  r~  )r   r   r,   r<   s    r>   r?   zTestLanczos.test_basic  sc     	u5& "		#
 	** "		#
 	t4* "		#r@   c           	          dD ]V  }t        t        t        j                  |d            |       t        t        t        j                  |d            |       X y )N)r   r      Fr1   T)r   lenr   r,   )r=   ns     r>   test_array_sizezTestLanczos.test_array_size  s@    AW__QE:;Q?W__QD9:A> r@   N)rB   rC   rD   r?   r#  r   r@   r>   r  r    s    #2?r@   r  c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)TestGetWindowc                     t        j                  dd      }t        |t        j                  |             t        j                  dd      }t        |t        j                  |             y )Nr      )r      )r   r   r   rj   	ones_like)r=   r   s     r>   test_boxcarzTestGetWindow.test_boxcar  sL    x,1bll1o. {B/1bll1o.r@   c                     t               5 }|j                  t        d       t        j                  ddd      }d d d        t        t        d       y # 1 sw Y   xY w)Nr   )r&   r   r   Fr^  ru   r   )r
   r   r   r   r   r   r   r=   r   r   s      r>   test_cheb_oddzTestGetWindow.test_cheb_odd  sJ     CJJ{$AB""#3RGA ! 	"!]A> !    /AAc                     t               5 }|j                  t        d       t        j                  ddd      }d d d        t        t        d       y # 1 sw Y   xY w)Nr   )r&   r   r   Fr^  ru   r   )r
   r   r   r   r   r   r   r,  s      r>   test_cheb_evenzTestGetWindow.test_cheb_even  sI     CJJ{$AB""?BFA ! 	"!^Q? ! r.  c                 |    t        j                  ddd      }t        j                  dd      }t        ||d       y )N)r   r"  @   Fr^  r"  ru   r   )r   r   r   r   r=   win1win2s      r>   	test_dpsszTestGetWindow.test_dpss  s2    !!+r5A||B"!$a8r@   c                 v    t        j                  dd      }t        j                  ddd      }t        ||       y )Ng@r2  F)r   r   r   r   r3  s      r>   test_kaiser_floatzTestGetWindow.test_kaiser_float  s0    !!#r*~~b#u-d#r@   c                     t        t        t        j                  t	        d      d       t        t        t        j                  dd       y )Nr(   r   brokenru   )r	  r
  r   r   setr<   s    r>   test_invalid_inputsz!TestGetWindow.test_invalid_inputs  s0    j'"4"4c&k1E 	j'"4"4hBr@   c                     d}t        j                  d      }t        j                  d|dz        }t	        t
        d      5  t        |t        |      |z  |       d d d        y # 1 sw Y   y xY w)N   )r   g       @r    zmust have the same lengthrf  )window)rj   aranger   r   r	  r
  r   r!  )r=   osfactorsigr  s       r>   test_array_as_windowz"TestGetWindow.test_array_as_window  sW    iin  (a-@:-HIS#c(X-c: JIIs   A&&A/c                 x    t        t        dg dfd      g d       t        t        dg dfdd      g d       y )Nr+  r(  ru   r*  Fr^  )rH   皙?rE  rH   r   r   r<   s    r>   test_general_cosinez!TestGetWindow.test_general_cosine  s;    
$4o#FJ*	,
$4o#F+02.	0r@   c                 h    t        t        dd      g d       t        t        ddd      g d       y )N)r4  r/  rc   )rH   жn?男*?rJ  rI  Fr^  r0  rF  r<   s    r>   test_general_hammingz"TestGetWindow.test_general_hamming  s/    
#;Q?I	K
#;QN1	3r@   c                     t        t        dd      g dd       t        t        ddd      g dd       t        t        dd      t        d	d             y )
Nr,   r0   r  r  rR   Fr^  r  sincrF  r<   s    r>   test_lanczoszTestGetWindow.test_lanczos  sR    
9a0&,0	2 	
9a?*04	6 	
9a0*VQ2GHr@   N)rB   rC   rD   r*  r-  r0  r6  r8  r<  rC  rG  rK  rN  r   r@   r>   r%  r%    s7    /?@9
$
C;03Ir@   r%  c                  4   t         D ]  \  } }t        t        |       }t               5 }|j	                  t
        d        |dg|ddi} |dg|ddi}t        |d d |        |dg|ddi} |dg|ddi}t        |d d |       t        t         |d	g|ddi      d	       t        t         |d	g|ddi      d	       t        t         |dg|ddi      d       t        t         |dg|ddi      d       t        t        |d
g|  t        t        |dg|  t         |dg|ddig        t         |dg|ddig        t         |dg|ddidg       t         |dg|ddidg       t         |dg|ddij                  dk(         t         |dg|ddij                  dk(         t         |dg|ddij                  dk(         t         |dg|ddij                  dk(         t         |d	g|ddij                  dk(         t         |d	g|ddij                  dk(         t         |dg|ddid       t         |dg|ddid       t         |dg|ddid       t         |dg|ddid       t        t!         |dg|ddi      j"                  dd       t        t!         |dg|ddi      j"                  dd       d d d         y # 1 sw Y   xY w)Nr   r   r2   Tr8   Fr  	   r0   g      @ir   r   floatr   g)\(?rQ   rR   r   )window_funcsgetattrr   r
   r   r   r   r   r!  r	  r
  r   r   dtyper	   r   r   imag)window_nameparamsr?  r   w1rd  s         r>   test_windowfunc_basicsrY    sF   +|V+. CJJ{$AB-F--B.F..B%b"gr2-F--B.F..B%b"gr2 VA99D9:A>VA::E:;Q?VA99D9:A>VA::E:;Q? *fc;F;*fb:6: va;&;d;R@va<&<e<bAva;&;d;aSAva<&<e<qcB F10v04066'ABF11v151777BCF10v04066'ABF11v151777BCF10v04066'ABF11v151777BC fR;&;d;TBfR<&<e<dCfQ::T:DAfQ;;U;TB Cr >F > >?DDE+Cr >F > >?DDE+Y !   ,  s   KLL	c                  >    dD ]  } t        t        t        | d        y )N)r   ksrr`  kbdr!   gaussgsszgeneral gaussianr$   zgeneral gaussgeneral_gaussggsdssr   zgeneral cosiner+  r&   chebzgeneral hammingr4  r8   )r	  r
  r   )winstrs    r>   test_needs_paramsrd    s     	j*fa8r@   c                  T    dD ]#  } t        | d      }t        t        |      d       % y )N)r   r   r   r   r   r   r'   r   r   r   r   r*   r)   poissonr+   tuktriangler,   rM  r8   )r   r   r!  )rc  r  s     r>   test_not_needs_paramsri  *  s*    ( #SXq!+r@   c            	      x   t         j                  fD ]  }  | d      }t        j                  t        j                  |t        j
                  |      z
              }t        |d        | d      }t        j                  t        j                  |t        j
                  |      z
              }t        |d        y )Ni   r~  i  )r   r,   rj   maxr|   flipr   )r  r   errors      r>   test_symmetricrn  C  s     Irvva
l+,UC  Irvva
l+,UC  !r@   )6numpyrj   r   numpy.testingr   r   r   r   r   r	   r
   pytestr   r	  	scipy.fftr   scipy.signalr   r   r   rR  r.   rF   rM   rY   r`   r   r   r   r   r   r  r  r  r  r&  r-  r6  rA  rL  rY  rk  rr  rz  r  r  r  r  r  r%  rY  rd  ri  rn  r   r@   r>   <module>rt     s    . . . +  6 640 06 6I I"# #"G3 G3TB BF F  ! "  6 7(4O 4Or 	 ( 	)   !J K  "7 8 !K L 	 A 	B 4 5 A 	B   !J K3 :0B B(. .*, ,
: 
:C C 0 0(. .2&E &ER0 0$. . 	6 	6E./E 5 6 E01	
 U/0 U 6 7 U/0 E34 E : ; E34  !   !" ##$ 	
B%& 	
+'( F)*  :+.$/3
:. .4 HI  A  DO  Q\  C]  ^:<\  _G  H  Jq  rV  YU  WY  [V  Xa  b  dk  l |  ~J(  L(D<  F<`P  aP  cPWQ  XQ	/: /:d? ?BDI DIN0+f9"2!r@   