
    (phk3                    x   S SK r S SKrS SKJrJrJrJrJrJ	r	  S SK
r
S SK
Jr  S SKJr  S SKJrJrJrJr  S SKJr  S SKJrJrJrJrJrJrJr  S SKJr  S S	K J!r!  S S
K"J#r$  S SK"J%r&  S SK"J'r(   " S S5      r) " S S5      r* " S S5      r+ " S S5      r, " S S5      r- " S S5      r. " S S5      r/ " S S5      r0g)    N)assert_assert_allcloseassert_array_equalassert_equalassert_array_almost_equal_nulpsuppress_warnings)raises)signal)fftfreqrfftfreqfftirfft)	trapezoid)periodogramwelchlombscargle	coherencespectrogram
check_COLA
check_NOLA)hann)_spectral_helper)stft_compare)istft_compare)csd_comparec                   @   \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 r\R                  R                  \R"                  S:*  SS9S 5       r\R                  R                  \R"                  S:*  SS9S 5       rS rS rS rS rS rS rS rS rS rS rS rSrg)TestPeriodogram   c                    [         R                  " S5      nSUS'   [        U5      u  p#[        U[         R                  " SSS5      5        [         R
                  " S5      nSUS'   US==   S-  ss'   US-  n[        X45        g )	N      r         ?	          @   npzerosr   r   linspaceonesselfxfpqs        S/var/www/html/venv/lib/python3.13/site-packages/scipy/signal/tests/test_spectral.pytest_real_onesided_even'TestPeriodogram.test_real_onesided_even   sn    HHRL!1~2;;q#q12GGAJ!	"	Q    c                     [         R                  " S5      nSUS'   [        U5      u  p#[        U[         R                  " S5      S-  5        [         R
                  " S5      nSUS'   US-  n[        X4SS	9  g )
N   r!   r          @      .@r&   ?V瞯<atol)r(   r)   r   r   aranger+   r,   s        r2   test_real_onesided_odd&TestPeriodogram.test_real_onesided_odd$   sc    HHRL!1~299S>$./GGAJ!	X5)r5   c                     [         R                  " S5      nSUS'   [        USS9u  p#[        U[	        SS5      5        [         R
                  " SS5      nSUS'   [        X45        g )Nr    r!   r   Freturn_onesided      ?      ?)r(   r)   r   r   r   fullr,   s        r2   test_real_twosided"TestPeriodogram.test_real_twosided.   sX    HHRL!1e472s+,GGB!r5   c                     [         R                  " S5      nSUS'   [        USS9u  p#[        USS9u  pE[        U[         R                  " SSS5      5        [        X5S	-  5        g )
Nr    r!   r   spectrumscalingdensityr"   r#   g      0@)r(   r)   r   r   r*   )r-   r.   r/   r0   gr1   s         r2   test_real_spectrum"TestPeriodogram.test_real_spectrum7   sW    HHRL!1j11i02;;q#q12T6"r5   c                    [         R                  " S[        S9nSUS'   [        U5      u  p#[	        U[         R
                  " SSS5      5        [         R                  " S5      nSUS'   US==   S-  ss'   US	-  n[	        X45        g )
Nr    dtyper!   r   r"   r#   r$   r%   r&   )r(   r)   intr   r   r*   r+   r,   s        r2   test_integer_even!TestPeriodogram.test_integer_even?   sq    HHRs#!1~2;;q#q12GGAJ!	"	Qr5   c                     [         R                  " S[        S9nSUS'   [        U5      u  p#[	        U[         R
                  " S5      S-  5        [         R                  " S5      nSUS'   US-  n[	        X4S	S
9  g )Nr7   rR   r!   r   r8   r9   r&   r:   r;   r<   )r(   r)   rT   r   r   r>   r+   r,   s        r2   test_integer_odd TestPeriodogram.test_integer_oddJ   sf    HHRs#!1~299S>$./GGAJ!	X5)r5   c                     [         R                  " S[        S9nSUS'   [        USS9u  p#[	        U[        SS5      5        [         R                  " SS5      nSUS'   [	        X45        g )	Nr    rR   r!   r   FrB   rD   rE   )r(   r)   rT   r   r   r   rF   r,   s        r2   test_integer_twosided%TestPeriodogram.test_integer_twosidedT   s[    HHRs#!1e472s+,GGB!r5   c                     [         R                  " S[         R                  5      nSUS'   [        USS9u  p#[	        U[        SS5      5        [         R                  " SS5      nSUS'   [	        X45        g )Nr          ?       @r   FrB   rD         ?)r(   r)   
complex128r   r   r   rF   r,   s        r2   test_complexTestPeriodogram.test_complex]   s_    HHR'!1e472s+,GGB!!r5   c                 r    [        [        [        [        R                  " S[        R
                  5      SS9  g )N   foorK   )assert_raises
ValueErrorr   r(   r)   r`   r-   s    r2   test_unk_scaling TestPeriodogram.test_unk_scalingf   s"    j+rxx2==/I	r5   l        zOn some 32-bit tolerance issue)reasonc                    [         R                  " S[         R                  S9nUR                  S5      nSUS S 2S S 2S4'   [	        U5      u  p#[        UR                  S5        [        USSS S 24   USSS S 24   S5        [	        USSS S 24   5      u  pE[        U[         R                  S S 24   USS S 24   S5        g )	N   rR      r!   
   rD   r   ro   r!      r!   <   )	r(   r)   float64reshaper   r   shaper   newaxisr-   r.   r/   r0   f0p0s         r2   test_nd_axis_m1TestPeriodogram.test_nd_axis_m1j   s    
 HHRrzz*IIh!Aa%1~177I.&q1Qx1Qq52>Qq1uX&&r"**Q,'71Q3Dr5   c                 R   [         R                  " S[         R                  S9nUR                  S5      nSUSS S 2S S 24'   [	        USS9u  p#[        UR                  S5        [        US S 2SS4   US S 2SS4   S	5        [	        US S 2SS4   5      u  pE[        XSS S 2SS4   5        g )
Nrm   rR   rp   ro   r!   rD   r   axisrr   ro   r!   r!   rs   )r(   r)   rt   ru   r   r   rv   r   rx   s         r2   test_nd_axis_0TestPeriodogram.test_nd_axis_0x   s    
 HHRrzz*IIh!Aa%11%177G,&q1Qx1Qq52>Qq1uX&&rQqU84r5   c                 ,   [         R                  " S5      nSUS'   [        USS5      u  p#[        R                  " SS5      n[        USU5      u  pV[        X65        [        X%5        [        R                  " SS5      n[        [        [        USU5        g )Nr    r!   r   rp   r       )r(   r)   r   r
   
get_windowr   rf   rg   r-   r.   r/   r0   winfepewin_errs           r2   test_window_external$TestPeriodogram.test_window_external   s    HHRL!1b&)+QC(&q-&q-##FB/j+q'	#r5   c                     [         R                  " S5      nSUS'   [        U5      u  p#[        USS9u  pE[        X$S S S2   5        [        X5S S S2   5        [	        UR
                  S5        g )Nr    r!   r   r   nfftro   )   )r(   r)   r   r   r   rv   )r-   r.   r/   r0   fppps         r2   test_padded_fftTestPeriodogram.test_padded_fft   s_    HHRL!1~QR(cc7#cc7#288U+r5   c                 "   [        / 5      u  p[        UR                  S5        [        UR                  S5        S HP  n[        [        R                  " U5      5      u  p[        UR                  U5        [        UR                  U5        MR     g Nr   r      r   r      ro   )r   r   rv   r(   emptyr-   r/   r0   rv   s       r2   test_empty_input TestPeriodogram.test_empty_input   sc    2177D)177D)+Erxx/DAqww.qww. ,r5   c                     S HO  n[        [        R                  " U5      SS9u  p#[        UR                  U5        [        UR                  U5        MQ     g Nr   r   r!   r   )r   r(   r   r   rv   r-   rv   r/   r0   s       r2   test_empty_input_other_axis+TestPeriodogram.test_empty_input_other_axis   s>    %ErxxQ7DAqww.qww. &r5   c                    [         R                  " S5      nSUS'   [        USS9u  p#[        U[         R                  " SSS5      5        [         R
                  " S5      nSUS'   US==   S	-  ss'   US
-  n[        X45        g )N   r!   r   r    r   r"   r#   r$   r%   r&   r'   r,   s        r2   test_short_nfftTestPeriodogram.test_short_nfft   q    HHRL!12&2;;q#q12GGAJ!	"	Qr5   c                    [         R                  " S5      nSUS'   [        USS9u  p#[        U[         R                  " SSS5      5        [         R
                  " S5      nSUS'   US==   S-  ss'   US	-  n[        X45        g )
Nr    r!   r   r   r"   r#   r$   r%   r&   r'   r,   s        r2   test_nfft_is_xshape#TestPeriodogram.test_nfft_is_xshape   r   r5   c                 P   [         R                  " SS5      nSUS'   [        U5      u  p#[        U[         R                  " SSS5      5        [         R
                  " SS5      nSUS'   US==   S-  ss'   US	-  n[        X45        [        UR                  UR                  :H  5        g )
Nr    r/   r!   r   r"   r#   r$   r%   r&   )r(   r)   r   r   r*   r+   r   rS   r,   s        r2   test_real_onesided_even_32*TestPeriodogram.test_real_onesided_even_32   s    HHR!1~2;;q#q12GGAsO!	"	Q177"#r5   c                 6   [         R                  " SS5      nSUS'   [        U5      u  p#[        U[         R                  " S5      S-  5        [         R
                  " SS5      nSUS'   US-  n[        X4S	S
9  [        UR                  UR                  :H  5        g )Nr7   r/   r!   r   r8   r9   r&   r:   Hz>r<   )r(   r)   r   r   r>   r+   r   rS   r,   s        r2   test_real_onesided_odd_32)TestPeriodogram.test_real_onesided_odd_32   s}    HHR!1~299S>$./GGAsO!	X4(177"#r5   c                    [         R                  " SS5      nSUS'   [        USS9u  p#[        U[	        SS5      5        [         R
                  " SSS5      nSUS'   [        X45        [        UR                  UR                  :H  5        g )	Nr    r/   r!   r   FrB   rD   rE   r(   r)   r   r   r   rF   r   rS   r,   s        r2   test_real_twosided_32%TestPeriodogram.test_real_twosided_32   sr    HHR!1e472s+,GGB$!177"#r5   c                    [         R                  " SS5      nSUS'   [        USS9u  p#[        U[	        SS5      5        [         R
                  " SSS	5      nSUS'   [        X45        [        UR                  UR                  :H  5        g )
Nr    Fr^   r   FrB   rD   r_   r/   r   r,   s        r2   test_complex_32TestPeriodogram.test_complex_32   sr    HHR!1e472s+,GGB#&!177"#r5   c                     [         R                  " S5      nSUS'   [        R                  " SS5      nSn[	        [
        US9   [        XS9  S S S 5        g ! , (       d  f       g = f)	Nr    r!   r   r   rp   zOthe size of the window must be the same size of the input on the specified axismatchwindow)r(   r)   r
   r   rf   rg   r   )r-   r.   r   expected_msgs       r2   test_shorter_window_error)TestPeriodogram.test_shorter_window_error   sO    HHRL!+=:\:& ;::s   
A
A$ N) __name__
__module____qualname____firstlineno__r3   r?   rG   rO   rU   rX   r[   ra   ri   pytestmarkskipifsysmaxsizer{   r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes__r   r5   r2   r   r      s    	*#	* [[u/  E	E [[u/  5	5
#,//		
$	$$$'r5   r   c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S"r$g#)$	TestWelch   c                     [         R                  " S5      nSUS'   SUS'   [        USS9u  p#[        U[         R                  " SSS5      5        [         R
                  " / SQ5      n[        X4S	S	S
9  g Nr    r!   r   r&   npersegr"   r   iKGUU?gS8?#q?r   #q?r   r=   rtolr(   r)   r   r   r*   arrayr,   s        r2   r3   !TestWelch.test_real_onesided_even   se    HHRL!!Q"2;;q#q12HH " #4d3r5   c                     [         R                  " S5      nSUS'   SUS'   [        USS9u  p#[        U[         R                  " S5      S-  5        [         R
                  " / S	Q5      n[        X4S
S
S9  g Nr    r!   r   r&   r#   r         @      "@g9?g?p0?r   r   r   r   )r(   r)   r   r   r>   r   r,   s        r2   r?    TestWelch.test_real_onesided_odd   se    HHRL!!Q"299S>#-.HH " #4d3r5   c                     [         R                  " S5      nSUS'   SUS'   [        USSS9u  p#[        U[	        SS5      5        [         R
                  " / SQ5      n[        X4S	S	S
9  g Nr    r!   r   r&   Fr   rC   rD   r   S8?r   r   r   r   r   r   r   r   )r(   r)   r   r   r   r   r,   s        r2   rG   TestWelch.test_real_twosided
  sb    HHRL!!Q5971c?+HH F G4d3r5   c                     [         R                  " S5      nSUS'   SUS'   [        USSS9u  p#[        U[         R                  " SSS5      5        [         R
                  " / S	Q5      n[        X4S
S
S9  g Nr    r!   r   r&   rJ   )r   rL   r"   r   )g      ?g-UU?.iqUU?r   g-UU?r   r   r   r,   s        r2   rO   TestWelch.test_real_spectrum  sg    HHRL!!Q:62;;q#q12HH " #4d3r5   c                     [         R                  " S[        S9nSUS'   SUS'   [        USS9u  p#[	        U[         R
                  " SSS5      5        [         R                  " / S	Q5      n[	        X4S
S
S9  g Nr    rR   r!   r   r&   r   r"   r   r   r   r   )r(   r)   rT   r   r   r*   r   r,   s        r2   test_integer_onesided_even$TestWelch.test_integer_onesided_even  sh    HHRs#!!Q"2;;q#q12HH " #4d3r5   c                     [         R                  " S[        S9nSUS'   SUS'   [        USS9u  p#[	        U[         R
                  " S5      S	-  5        [         R                  " / S
Q5      n[	        X4SSS9  g Nr    rR   r!   r   r&   r#   r   r   r   r   r   r   )r(   r)   rT   r   r   r>   r   r,   s        r2   test_integer_onesided_odd#TestWelch.test_integer_onesided_odd(  sh    HHRs#!!Q"299S>#-.HH " #4d3r5   c                     [         R                  " S[        S9nSUS'   SUS'   [        USSS9u  p#[	        U[        SS5      5        [         R                  " / S	Q5      n[	        X4S
S
S9  g Nr    rR   r!   r   r&   Fr   rD   r   r   r   )r(   r)   rT   r   r   r   r   r,   s        r2   r[   TestWelch.test_integer_twosided2  se    HHRs#!!Q5971c?+HH F G4d3r5   c                     [         R                  " S[         R                  5      nSUS'   SUS'   [        USSS9u  p#[	        U[        SS5      5        [         R                  " / SQ5      n[	        X4S	S	S
9  g Nr    r^   r   r&   Fr   rD   )g&>?#q?n)t?r  r  r  r  r   r   r   )r(   r)   r`   r   r   r   r   r,   s        r2   ra   TestWelch.test_complex<  si    HHR'!!Q5971c?+HH F G4d3r5   c                 t    [        [        [        [        R                  " S[        R
                  5      SSS9  g Nrd   re   )rL   r   )rf   rg   r   r(   r)   r`   rh   s    r2   ri   TestWelch.test_unk_scalingF  s$    j%!R]])C#Q	0r5   c                     [         R                  " S[         R                  S9S-   n[        USSS9u  p#[	        U[         R
                  " U5      SS9  g Nrp   rR   {Gz?linearr   detrendr;   r<   r(   r>   rt   r   r   
zeros_liker-   r.   r/   r0   s       r2   test_detrend_linearTestWelch.test_detrend_linearJ  s@    IIb

+d2QH52==+%8r5   c                     [         R                  " S[         R                  S9S-   n[        USSS9u  p#[        USS S9u  pE[	        X$SS9  [	        X5SS9  g )	Nrp   rR   r  Fr
  c                     U $ Nr   r.   s    r2   <lambda>.TestWelch.test_no_detrending.<locals>.<lambda>R  s    r5   r;   r<   )r(   r>   rt   r   r   r-   r.   f1p1f2p2s         r2   test_no_detrendingTestWelch.test_no_detrendingO  sO    IIb

+d2q"e4q"k:U+U+r5   c                     [         R                  " S[         R                  S9S-   n[        USS S9u  p#[	        U[         R
                  " U5      SS9  g )Nrp   rR   r  c                 ,    [         R                  " U SS9$ Nl)typer
   r  segs    r2   r  1TestWelch.test_detrend_external.<locals>.<lambda>Y      #)Fr5   r
  r;   r<   r  r  s       r2   test_detrend_externalTestWelch.test_detrend_externalV  sD    IIb

+d2QFH2==+%8r5   c                     [         R                  " S[         R                  S9S-   nUR                  S5      n[	        USS S9u  p#[        U[         R                  " U5      SS	9  g )
N(   rR   r  ro   ro   rp   rp   c                 ,    [         R                  " U SS9$ r   r#  r$  s    r2   r  7TestWelch.test_detrend_external_nd_m1.<locals>.<lambda>`  r'  r5   r
  r;   r<   )r(   r>   rt   ru   r   r   r  r  s       r2   test_detrend_external_nd_m1%TestWelch.test_detrend_external_nd_m1\  sR    IIb

+d2IIhQFH2==+%8r5   c                     [         R                  " S[         R                  S9S-   nUR                  S5      n[         R                  " USS5      n[        USSS S	9u  p#[        U[         R                  " U5      S
S9  g )Nrm   rR   r  rn   ro   r   rp   c                 .    [         R                  " U SSS9$ Nr   r!  )r   r"  r#  r$  s    r2   r  6TestWelch.test_detrend_external_nd_0.<locals>.<lambda>h  s    !#)Nr5   r   r   r  r;   r<   )r(   r>   rt   ru   moveaxisr   r   r  r  s       r2   test_detrend_external_nd_0$TestWelch.test_detrend_external_nd_0c  sf    IIb

+d2IIhKK1a QNP2==+%8r5   c                 f   [         R                  " S[         R                  S9S-   nUR                  S5      n[	        USS9u  p#[        UR                  S5        [        USSS S 24   US	SS S 24   S
S
S9  [	        USSS S 24   SS9u  pE[        U[         R                  S S 24   US	S S 24   S
S
S9  g Nrm   rR   r  rn   rp   r   rq   r   r!   vIh%<=r   )	r(   r>   rt   ru   r   r   rv   r   rw   rx   s         r2   r{   TestWelch.test_nd_axis_m1k  s    IIb

+d2IIhQ#177I.!Aa%!AaE(UCq1Qx,2::a<(!AaC&u5Ir5   c                 >   [         R                  " S[         R                  S9S-   nUR                  S5      n[	        USSS9u  p#[        UR                  S5        [        US S 2SS4   US S 2S	S4   S
S
S9  [	        US S 2SS4   SS9u  pE[        XSS S 2S	S4   S
S
S9  g Nrm   rR   r  r~   rp   r   )r   r   r   r!   r;  r   r   )r(   r>   rt   ru   r   r   rv   r   rx   s         r2   r   TestWelch.test_nd_axis_0t  s    IIb

+d2IIhQ+177G,!Aa%!AaE(UCq1Qx,a!eH5u=r5   c           	         [         R                  " S5      nSUS'   SUS'   [        USSSS9u  p#[        R                  " SS5      n[        USUS S9u  pV[        X65        [        X%5        [        UR                  S5        [        UR                  S5        [        [        [        USUS	S9  [        R                  " SS
5      n[        [        [        USUS S9  g )Nr    r!   r   r&   rp   r   r   r   rd   r   )
r(   r)   r   r
   r   r   r   rv   rf   rg   r   s           r2   r   TestWelch.test_window_external}  s    HHRL!!QFA.*q"c40&q-&q-288T*288T*j%#q	*##FB/j%'4	1r5   c                 "   [        / 5      u  p[        UR                  S5        [        UR                  S5        S HP  n[        [        R                  " U5      5      u  p[        UR                  U5        [        UR                  U5        MR     g r   )r   r   rv   r(   r   r   s       r2   r   TestWelch.test_empty_input  sc    Ry177D)177D)+E%)DAqww.qww. ,r5   c                     S HO  n[        [        R                  " U5      SS9u  p#[        UR                  U5        [        UR                  U5        MQ     g r   )r   r(   r   r   rv   r   s       r2   r   %TestWelch.test_empty_input_other_axis  s>    %E%q1DAqww.qww. &r5   c                 \   [         R                  " S5      nSUS'   [        5        nSnUR                  [        U5        [        USS9u  pE[        USSS9u  pgS S S 5        [        USS	9u  p[        WU5        [        WU	5        [        WU5        [        WU	5        g ! , (       d  f       NK= f
Nr&   r!   r   zBnperseg = 256 is greater than input length  = 8, using nperseg = 8r   r      r   r   r   )r(   r)   r   filterUserWarningr   r   
r-   r.   supmsgr/   r0   r  r  r  r  s
             r2   test_short_dataTestWelch.test_short_data  s    HHQK!  CVCJJ{C(&)DA1FC8FB	 !
 q!$22BB !    2B
B+c           
      "   [        [        [        [        R                  " S5      S[        R
                  " / SQ5      5        [        [        [        [        R                  " S5      S[        R                  " S5      R                  S5      5        g Nrd   r!   )r!   r!   r!   r!   r!   rr   )ro   r   )rf   rg   r   r(   r)   r   r>   ru   rh   s    r2   test_window_long_or_nd TestWelch.test_window_long_or_nd  sQ    j%!a+9NOj%!aiil**51	3r5   c                     [         R                  " S5      nSUS S S2'   [        USSS9u  p#[         R                  " / SQ5      n[	        X4SS	9  g 
N@   r!   r&   r    rd   r   noverlap)	r   gUUUUUU?UUUUUU?皙?r\  r]  r\  r]  gUUUUUU?g-q=r<   )r(   r)   r   r   r   r,   s        r2   test_nondefault_noverlap"TestWelch.test_nondefault_noverlap  sI    HHRL#A#QQ/HH  5)r5   c           	      ^    [        [        [        [        R                  " S5      SSSS5        g Nrd   r!   r   ro      )rf   rg   r   r(   r)   rh   s    r2   test_bad_noverlapTestWelch.test_bad_noverlap  s    j%!aAFr5   c                 V    [        [        [        [        R                  " S5      SSS9  g N   r   rd   )r   r   )rf   rg   r   r(   r+   rh   s    r2   test_nfft_too_shortTestWelch.test_nfft_too_short  s    j%1aHr5   c                 .   [         R                  " SS5      nSUS'   SUS'   [        USS9u  p#[        U[         R                  " SSS5      5        [         R
                  " / S	QS5      n[        X4S
S
S9  [        UR                  UR                  :H  5        g Nr    r/   r!   r   r&   r   r"   r   r   r   r   )r(   r)   r   r   r*   r   r   rS   r,   s        r2   r   $TestWelch.test_real_onesided_even_32  s    HHR!!Q"2;;q#q12HH "#&(4d3177"#r5   c                 0   [         R                  " SS5      nSUS'   SUS'   [        USS9u  p#[        U[         R                  " S5      S	-  5        [         R
                  " / S
QS5      n[        X4SSS9  [        UR                  UR                  :H  5        g Nr    r/   r!   r   r&   r#   r   r   r   )gx:?gyѲI?r   gw0?r   r   r   )r(   r)   r   r   r>   r   r   rS   r,   s        r2   r   #TestWelch.test_real_onesided_odd_32  s    HHR!!Q"299S>#-.HH "#&(4d3177"#r5   c                    [         R                  " SS5      nSUS'   SUS'   [        USSS9u  p#[        U[	        SS5      5        [         R
                  " / S	QS5      n[        X4S
S
S9  [        UR                  UR                  :H  5        g Nr    r/   r!   r   r&   Fr   rD   r   r   r   r(   r)   r   r   r   r   r   rS   r,   s        r2   r   TestWelch.test_real_twosided_32  s}    HHR!!Q5971c?+HH "#&( 	4d3177"#r5   c                 N   [         R                  " SS5      nSUS'   SUS'   [        USSS9u  p#[        U[	        SS5      5        [         R
                  " / S	QS
5      n[        X4SSS9  [        UR                  UR                  :H  SUR                   SUR                   35        g Nr    r   r^   r   r&   Fr   rD   )g%?A2q?d^?rw  g~?rw  rw  rv  r/   r   r   zdtype mismatch, , rr  r,   s        r2   r   TestWelch.test_complex_32  s    HHR!!Q5971c?+HH FGJL4d3177""177)2aggY7	9r5   c                 f   [         R                  " S5      nSn[        US5      S US-  S-    nUS==   S-  ss'   [        USUS9u  pE[        US	US9u  pe[	        X45        [	        X65        S
n[        US5      S US-   S-   n[        USUS9u  pE[        US	US9u  pe[	        X45        [	        X65        g Nrg  r   rD   ro   r!   r$   r   r   r   rr      )r(   r)   r   r   r   )r-   r.   r   r/   fodd_fevens          r2   test_padded_freqsTestWelch.test_padded_freqs  s    HHRLD#za	*	"140AD1 !D#~A.140AD1 !r5   c           	         SnSn[        US-  5      nSn[        XC-  U-  5      n[        R                  " U5      U-  nU[        R                  " S[        R                  -  U-  U-  5      -  nS Hs  n[        XrX8SS9u  p[        XrX8S	S9u  p[        X   US-  S
-  5        [        [        R                  " [        X5      5      U[        R                  " S5      -  S-  SS9  Mu     g )Nrm   g     @rp   ,  ro   )r   bartlett)tukey皙?flattoprJ   )fsr   r   rL   rM   r%   gMbP?r   )	rT   r(   r>   sinpir   r   sqrtr   )r-   Ar  r   fsigiittr.   r   r  p_specfreqp_denss                r2   test_window_correction TestWelch.test_window_correction   s    b"f+r!"YYr]2bffQruuWT\"_%%EFa&02IA 7)24LD FJ1S1BGGIf$;<a
l1n!%' Fr5   c                    [         R                  R                  S5        [         R                  R                  S5      n[	        U5      u  p#[        S5       H}  nS/S-  nSXT'   UR                  U5      n[	        XdS9u  p'[	        XdUR                  -
  S9u  p([        X7R                  5       US9  [        X8R                  5       XFR                  -
  S9  M     g )N     r   r!   r$   r   err_msg)
r(   randomseedrandnr   rangeru   ndimr   squeeze)	r-   x_flatr  p_flatanewshaper.   p_plusp_minuss	            r2   test_axis_rollingTestWelch.test_axis_rolling  s    
		t&&M	qAtAvHHKx(Aa(IAqx0JA!11=!2AffHE r5   c                    [         R                  " S5      nSUS'   SUS'   [        USSS9u  p#[        U[         R                  " SSS5      5        [         R
                  " / S	Q5      n[        X4S
S
S9  [        [        [        USSS9  g )Nr    r!   r   r&   median)r   averager"   r   )r  皙?        g&E    9r  r   r   zunrecognised-average)r(   r)   r   r   r*   r   rf   rg   r,   s        r2   test_averageTestWelch.test_average'  sv    HHRL!!Q842;;q#q12HH674d3j%A4	6r5   r   N)%r   r   r   r   r3   r?   rG   rO   r   r   r[   ra   ri   r  r  r(  r/  r7  r{   r   r   r   r   rP  rU  r^  rc  rh  r   r   r   r   r  r  r  r  r   r   r5   r2   r   r      s    4444444409
,999J>1"//  3
*GI	$	$
$
9"$',F"
6r5   r   c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S"r$g#)$TestCSDi4  c                    [         R                  " S5      n[         R                  " S5      n[         R                  " SSS5      n[         R                  " S[         R                  S9n[	        XSS9u  pV[        X55        [        XF5        g )Nr&   rg  r   r"   rb  rR   r   r(   r)   r*   r`   csdr   r-   r.   yr/   cr  c1s          r2   test_pad_shorter_xTestCSD.test_pad_shorter_x5  s`    HHQKHHRLKK3"HHQR]]+Q2&r5   c                    [         R                  " S5      n[         R                  " S5      n[         R                  " SSS5      n[         R                  " S[         R                  S9n[	        XSS9u  pV[        X55        [        XF5        g )Nrg  r&   r   r"   rb  rR   r   r  r  s          r2   test_pad_shorter_yTestCSD.test_pad_shorter_y@  s`    HHRLHHQKKK3"HHQR]]+Q2&r5   c                     [         R                  " S5      nSUS'   SUS'   [        XSS9u  p#[        U[         R                  " SSS5      5        [         R
                  " / SQ5      n[        X4S	S	S
9  g r   r(   r)   r  r   r*   r   r,   s        r2   r3   TestCSD.test_real_onesided_evenK  se    HHRL!!1#2;;q#q12HH " #4d3r5   c                     [         R                  " S5      nSUS'   SUS'   [        XSS9u  p#[        U[         R                  " S5      S-  5        [         R
                  " / S	Q5      n[        X4S
S
S9  g r   )r(   r)   r  r   r>   r   r,   s        r2   r?   TestCSD.test_real_onesided_oddU  se    HHRL!!1#299S>#-.HH " #4d3r5   c                     [         R                  " S5      nSUS'   SUS'   [        XSSS9u  p#[        U[	        SS5      5        [         R
                  " / SQ5      n[        X4S	S	S
9  g r   )r(   r)   r  r   r   r   r,   s        r2   rG   TestCSD.test_real_twosided_  sb    HHRL!!1E:71c?+HH F G4d3r5   c                     [         R                  " S5      nSUS'   SUS'   [        XSSS9u  p#[        U[         R                  " SSS5      5        [         R
                  " / S	Q5      n[        X4S
S
S9  g r   r  r,   s        r2   rO   TestCSD.test_real_spectrumi  sg    HHRL!!1J72;;q#q12HH " #4d3r5   c                     [         R                  " S[        S9nSUS'   SUS'   [        XSS9u  p#[	        U[         R
                  " SSS5      5        [         R                  " / S	Q5      n[	        X4S
S
S9  g r   )r(   r)   rT   r  r   r*   r   r,   s        r2   r   "TestCSD.test_integer_onesided_evens  sh    HHRs#!!1#2;;q#q12HH " #4d3r5   c                     [         R                  " S[        S9nSUS'   SUS'   [        XSS9u  p#[	        U[         R
                  " S5      S	-  5        [         R                  " / S
Q5      n[	        X4SSS9  g r   )r(   r)   rT   r  r   r>   r   r,   s        r2   r   !TestCSD.test_integer_onesided_odd}  sh    HHRs#!!1#299S>#-.HH " #4d3r5   c                     [         R                  " S[        S9nSUS'   SUS'   [        XSSS9u  p#[	        U[        SS5      5        [         R                  " / S	Q5      n[	        X4S
S
S9  g r   )r(   r)   rT   r  r   r   r   r,   s        r2   r[   TestCSD.test_integer_twosided  se    HHRs#!!1E:71c?+HH F G4d3r5   c                     [         R                  " S[         R                  5      nSUS'   SUS'   [        XSSS9u  p#[	        U[        SS5      5        [         R                  " / SQ5      n[	        X4S	S	S
9  g r   )r(   r)   r`   r  r   r   r   r,   s        r2   ra   TestCSD.test_complex  si    HHR'!!1E:71c?+HH F G4d3r5   c           	          [        [        [        [        R                  " S[        R
                  5      [        R                  " S[        R
                  5      SSS9  g r  )rf   rg   r  r(   r)   r`   r+   rh   s    r2   ri   TestCSD.test_unk_scaling  s6    j#rxx2=='Agga/	Kr5   c                     [         R                  " S[         R                  S9S-   n[        XSSS9u  p#[	        U[         R
                  " U5      SS9  g r  r(   r>   rt   r  r   r  r  s       r2   r  TestCSD.test_detrend_linear  s@    IIb

+d21X62==+%8r5   c                     [         R                  " S[         R                  S9S-   n[        XSSS9u  p#[        XSS S9u  pE[	        X$SS9  [	        X5SS9  g )	Nrp   rR   r  Fr
  c                     U $ r  r   r  s    r2   r  ,TestCSD.test_no_detrending.<locals>.<lambda>  s    r5   r;   r<   )r(   r>   rt   r  r   r  s         r2   r  TestCSD.test_no_detrending  sO    IIb

+d2Q2u5Q2{;U+U+r5   c                     [         R                  " S[         R                  S9S-   n[        XSS S9u  p#[	        U[         R
                  " U5      SS9  g )Nrp   rR   r  c                 ,    [         R                  " U SS9$ r   r#  r$  s    r2   r  /TestCSD.test_detrend_external.<locals>.<lambda>      v~~c'Dr5   r
  r;   r<   r  r  s       r2   r(  TestCSD.test_detrend_external  sD    IIb

+d21DF2==+%8r5   c                     [         R                  " S[         R                  S9S-   nUR                  S5      n[	        XSS S9u  p#[        U[         R                  " U5      SS	9  g )
Nr+  rR   r  r,  rp   c                 ,    [         R                  " U SS9$ r   r#  r$  s    r2   r  5TestCSD.test_detrend_external_nd_m1.<locals>.<lambda>  r  r5   r
  r;   r<   )r(   r>   rt   ru   r  r   r  r  s       r2   r/  #TestCSD.test_detrend_external_nd_m1  sR    IIb

+d2IIh1DF2==+%8r5   c                     [         R                  " S[         R                  S9S-   nUR                  S5      n[         R                  " USS5      n[        XSSS S	9u  p#[        U[         R                  " U5      S
S9  g )Nrm   rR   r  rn   ro   r   rp   c                 .    [         R                  " U SSS9$ r3  r#  r$  s    r2   r  4TestCSD.test_detrend_external_nd_0.<locals>.<lambda>  s    v~~c'Lr5   r5  r;   r<   )r(   r>   rt   ru   r6  r  r   r  r  s       r2   r7  "TestCSD.test_detrend_external_nd_0  sf    IIb

+d2IIhKK1a 1!LN2==+%8r5   c                 x   [         R                  " S[         R                  S9S-   nUR                  S5      n[	        XSS9u  p#[        UR                  S5        [        USSS S 24   US	SS S 24   S
S
S9  [	        USSS S 24   USSS S 24   SS9u  pE[        U[         R                  S S 24   US	S S 24   S
S
S9  g r:  )	r(   r>   rt   ru   r  r   rv   r   rw   rx   s         r2   r{   TestCSD.test_nd_axis_m1  s    IIb

+d2IIh1$177I.!Aa%!AaE(UCQq1uXq1Qx42::a<(!AaC&u5Ir5   c                 P   [         R                  " S[         R                  S9S-   nUR                  S5      n[	        XSSS9u  p#[        UR                  S5        [        US S 2SS4   US S 2S	S4   S
S
S9  [	        US S 2SS4   US S 2SS4   SS9u  pE[        XSS S 2S	S4   S
S
S9  g r>  )r(   r>   rt   ru   r  r   rv   r   rx   s         r2   r   TestCSD.test_nd_axis_0  s    IIb

+d2IIh1!,177G,!Aa%!AaE(UCQq1uXq1Qx4a!eH5u=r5   c           
         [         R                  " S5      nSUS'   SUS'   [        XSSS5      u  p#[        R                  " SS5      n[        XSUS S9u  pV[        X65        [        X%5        [        UR                  S5        [        UR                  S5        [        [        [        XSUS	S9  [        R                  " SS
5      n[        [        [        XSUS S9  g )Nr    r!   r   r&   rp   r   r   rA  rI  r   )
r(   r)   r  r
   r   r   r   rv   rf   rg   r   s           r2   r   TestCSD.test_window_external  s    HHRL!!1VQ'*Q2sD1&q-&q-288T*288T*j#q#s	,##FB/j#q'4	)r5   c                    [        / [        R                  " S5      5      u  p[        UR                  S5        [        UR                  S5        [        [        R                  " S5      / 5      u  p[        UR                  S5        [        UR                  S5        S He  n[        [        R
                  " U5      [        R
                  " U5      5      u  p[        UR                  U5        [        UR                  U5        Mg     [        [        R                  " S5      [        R
                  " S5      5      u  p[        UR                  S5        [        UR                  S5        [        [        R
                  " S5      [        R                  " S5      5      u  p[        UR                  S5        [        UR                  S5        g )Nrp   r   r   )r   r   )r  r(   r)   r   rv   r   r+   r   s       r2   r   TestCSD.test_empty_input  s    2bhhrl#177D)177D)288B<#177D)177D)+Erxx8DAqww.qww. ,
 2772;0177E*177E*288E?BGGBK0177E*177E*r5   c                 \   S Hd  n[        [        R                  " U5      [        R                  " U5      SS9u  p#[        UR                  U5        [        UR                  U5        Mf     [        [        R                  " S5      [        R
                  " S5      SS9u  p#[        UR                  S5        [        UR                  S5        [        [        R                  " S5      [        R
                  " S5      SS9u  p#[        UR                  S5        [        UR                  S5        g )Nr   r!   r   )rp   rp   r   )rp   r   r!   )rp   r   r   )r  r(   r   r   rv   r)   r   s       r2   r   #TestCSD.test_empty_input_other_axis  s    %Erxxa@DAqww.qww. &
 288I&(:C177H-177H-288H%rxx	':C177H-177H-r5   c                 \   [         R                  " S5      nSUS'   [        5        nSnUR                  [        U5        [        XSS9u  pE[        XSSS9u  pgS S S 5        [        XSS	9u  p[        WU5        [        WU	5        [        WU5        [        WU	5        g ! , (       d  f       NK= frH  )r(   r)   r   rK  rL  r  r   rM  s
             r2   rP  TestCSD.test_short_data  s    HHQK!  CVCJJ{C(qF+DAfc:FB	 !
 Q1%22BB ! rR  c                 v   [        [        [        [        R                  " S5      [        R
                  " S5      S[        R                  " / SQ5      5        [        [        [        [        R                  " S5      [        R
                  " S5      S[        R                  " S5      R                  S5      5        g rT  )	rf   rg   r  r(   r)   r+   r   r>   ru   rh   s    r2   rU  TestCSD.test_window_long_or_nd  sh    j#rxx{BGGAJhh{+	-j#rxx{BGGAJiil**51	3r5   c                     [         R                  " S5      nSUS S S2'   [        XSSS9u  p#[         R                  " / SQ5      n[	        X4SS	9  g rX  )r(   r)   r  r   r   r,   s        r2   r^   TestCSD.test_nondefault_noverlap  sI    HHRL#A#1a0HH  5)r5   c           
          [        [        [        [        R                  " S5      [        R
                  " S5      SSSS5        g ra  )rf   rg   r  r(   r)   r+   rh   s    r2   rc  TestCSD.test_bad_noverlap&  s+    j#rxx{BGGAJ6	r5   c           	          [        [        [        [        R                  " S5      [        R
                  " S5      SSS9  g rf  )rf   rg   r  r(   r+   r)   rh   s    r2   rh  TestCSD.test_nfft_too_short*  s'    j#rwwr{BHHRLq	!r5   c                 .   [         R                  " SS5      nSUS'   SUS'   [        XSS9u  p#[        U[         R                  " SSS5      5        [         R
                  " / S	QS5      n[        X4S
S
S9  [        UR                  UR                  :H  5        g rk  )r(   r)   r  r   r*   r   r   rS   r,   s        r2   r   "TestCSD.test_real_onesided_even_32.  s    HHR!!1#2;;q#q12HH "#&(4d3177"#r5   c                 0   [         R                  " SS5      nSUS'   SUS'   [        XSS9u  p#[        U[         R                  " S5      S	-  5        [         R
                  " / S
QS5      n[        X4SSS9  [        UR                  UR                  :H  5        g rn  )r(   r)   r  r   r>   r   r   rS   r,   s        r2   r   !TestCSD.test_real_onesided_odd_329  s    HHR!!1#299S>#-.HH "#&(4d3177"#r5   c                    [         R                  " SS5      nSUS'   SUS'   [        XSSS9u  p#[        U[	        SS5      5        [         R
                  " / S	QS5      n[        X4S
S
S9  [        UR                  UR                  :H  5        g rq  r(   r)   r  r   r   r   r   rS   r,   s        r2   r   TestCSD.test_real_twosided_32D  s}    HHR!!1E:71c?+HH "#&( 	4d3177"#r5   c                 N   [         R                  " SS5      nSUS'   SUS'   [        XSSS9u  p#[        U[	        SS5      5        [         R
                  " / S	QS
5      n[        X4SSS9  [        UR                  UR                  :H  SUR                   SUR                   35        g ru  r  r,   s        r2   r   TestCSD.test_complex_32P  s    HHR!!1E:71c?+HH FGJL4d3177""177)2aggY7	9r5   c                    [         R                  " S5      n[         R                  " S5      nSn[        US5      S US-  S-    nUS==   S-  ss'   [	        XSUS9u  pV[	        XS	US9u  pv[        XE5        [        XG5        S
n[        US5      S US-   S-   n[	        XSUS9u  pV[	        XS	US9u  pv[        XE5        [        XG5        g r{  )r(   r)   r+   r   r  r   )r-   r.   r  r   r/   r~  r  r  s           r2   r  TestCSD.test_padded_freqs\  s    HHRLGGBKD#za	*	"aAD1qQT2 !D#~A.aAD1qQT2 !r5   c                     [         R                  R                  S5      nUR                  5       n[	        XSSSS9u  p4[	        XSSSS9u  p5[        XE5        [	        XSSSS9u  p4[	        XSSSS9u  p5[        XE5        g )NrY  r&   meanF)r   r  rC   r  )r(   r  r  copyr  r   )r-   r.   r  r  p_samep_copieds         r2   test_copied_dataTestCSD.test_copied_datao  s    IIOOBFFHa(-/	!6*/1)a(-/	!8*/1)r5   r   N)%r   r   r   r   r  r  r3   r?   rG   rO   r   r   r[   ra   ri   r  r  r(  r/  r7  r{   r   r   r   r   rP  rU  r^  rc  rh  r   r   r   r   r  r
  r   r   r5   r2   r  r  4  s    		44444444K9
,999J>)"+,. "3*!	$	$
$
9"&*r5   r  c                        \ rS rSrS rS rSrg)TestCoherencei  c                    [         R                  R                  S5      n[         R                  " U5      n[         R                  " SSS5      n[         R
                  " S5      n[        XSS9u  pV[        X55        [        XF5        g Nrm   r   r"   rr   rp   r   )r(   r  r  r  r*   r+   r   r   r-   r.   r  r/   Cr  C1s          r2   test_identical_input"TestCoherence.test_identical_input  s^    IIOOBGGAJKK3"GGAJ1,r5   c                     [         R                  R                  S5      nU* n[         R                  " SSS5      n[         R                  " S5      n[        XSS9u  pV[        X55        [        XF5        g r  )r(   r  r  r*   r+   r   r   r  s          r2   test_phase_shifted_input&TestCoherence.test_phase_shifted_input  sX    IIOOBBKK3"GGAJ1,r5   r   N)r   r   r   r   r  r  r   r   r5   r2   r  r    s    		r5   r  c                   &    \ rS rSrS rS rS rSrg)TestSpectrogrami  c                     [         R                  R                  S5      nSnSnSnSn[        XX4U5      u  pgn[	        XX4U5      u  p[        Xi5        [        [         R                  " USS9U
5        g )Nr  rD   r  g      ?r    ro   r$   r   )r(   r  r  r   r   r   r  )r-   r.   r  r   r   r[  r/   r  PfwPws              r2   test_average_all_segments)TestSpectrogram.test_average_all_segments  sg    IIOOD! aVh?aqfx8+R0r5   c           	         [         R                  R                  S5      nSnSnSnSn[        XX4U5      u  pgn[        R
                  " SS5      n	[        XU	S SS9u  pn[        U
R                  S5        [        UR                  S5        [        [        [        UX)S	S
9  [        R
                  " SS5      n[        [        [        UX,S S
9  g )Nr  rD   r  r    ro   rZ  )r#   )r#   I   r&   r   i   )
r(   r  r  r   r
   r   r   rv   rf   rg   )r-   r.   r  r   r   r[  r/   r  r  r   r   Per   s                r2   r   $TestSpectrogram.test_window_external  s    IIOOD! aVh?a4sD1E	r288T*288V,j+qq	*##OT:j+q4	1r5   c                    [         R                  R                  S5      nSn[        XSS9u  p4n[	        5        nUR                  [        S5        [        XSSS9u  ptnS S S 5        [        XSS	9u  pn
[        XSS	9u  pn[        X95        [        XZ5        [        WU5        [        WU5        g ! , (       d  f       NW= f)
Nr  rD   r  r   zInperseg = 1025 is greater than input length  = 1024, using nperseg = 1024i  rJ  rI  r   )r(   r  r  r   r   rK  rL  r   )r-   r.   r  r/   r  r0   rN  r  r  r  r  f3p3s                r2   rP  TestSpectrogram.test_short_data  s    IIOOD! aN;a CJJ{.0 $A.,02IB2	 !  s3	rt4	rBB ! s   %B//
B=r   N)r   r   r   r   r  r   rP  r   r   r5   r2   r  r    s    11& r5   r  c                   t    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rSrg)TestLombscarglei  c           
         SnSnS[         R                  -  nSnSnSn[         R                  R                  S5      nUR	                  U5      n[         R
                  " S[         R                  -  S	[         R                  -  U5      X:     n	U[         R                  " X)-  U-   5      -  n
[         R
                  " SS	U5      n[        XU5      nUS
   US   -
  nX+[         R                  " U5         -
  US-  :  d   e[        XU[         R                  " XR                  S9S9nUS
   US   -
  nX+[         R                  " U5         -
  US-  :  d   eg)zWTest if frequency location of peak corresponds to frequency of
generated input signal.
r%   rD   r"   d     ffffff?# {Gz?      $@r!   r   rR   weightsN)r(   r  r  RandomStaterandr*   r  r   argmax	ones_likerS   )r-   amplwphininnoutr0   rngrtr  r/   r  deltas                 r2   test_frequencyTestLombscargle.test_frequency  s8    BEEk ii##G,HHSMKKRUU
CIs3AF; 266!#)$$ KKc4( a  !qtRYYq\?"eBh/0/ aaww)GH !qtRYYq\?"eBh/0/r5   c                    SnSnS[         R                  -  nSnSnSn[         R                  R                  S5      nUR	                  U5      n[         R
                  " S[         R                  -  S[         R                  -  U5      X:     n	U[         R                  " X)-  U-   5      -  n
[         R
                  " SSU5      n[        XU5      n[         R                  " S	U-  U	R                  S
   -  5      n[        XU:H     USS9  g )Nr%   rD   r"   r-  r.  r/  r0  r1  g      @r   r  r  )r(   r  r  r4  r5  r*   r  r   r  rv   r   )r-   r8  r9  r:  r;  r<  r0   r=  r>  r?  r  r/   pgrams                r2   test_amplitudeTestLombscargle.test_amplitude  s    
 BEEk ii##G,HHSMKKRUU
CIs3AF; 266!#)$$ KKc4( A!$ eaggaj01 	dT5r5   c                 ^   SnSnS[         R                  -  nSnSnSnSn[         R                  R                  S5      nUR	                  U5      n	[         R
                  " S	[         R                  -  S
[         R                  -  U5      X:     n
U[         R                  " X*-  U-   5      -  U-   n[         R
                  " S	S
U5      n[        XUSS9n[        XUR                  5       -
  USS9n[        X5        [        XUSSS9n[        XUR                  5       -
  USSS9n[        X5        g )Nr%   rD   r"   r,  r-  r.  g333333?r/  r0  r1  T)	precenterF)rH  floating_mean)
r(   r  r  r4  r5  r*   r  r   r  r   )r-   r8  r9  r:  r;  r<  r0   offsetr=  r>  r?  r  r/   rD  pgram2s                  r2   test_precenterTestLombscargle.test_precenter  s   
 BEEk ii##G,HHSMKKRUU
CIs3AF; 266!#)$$v- KKc4( A!t4QAFFHa5A 	&
 A!t4HQAFFHa5PTU 	&r5   c                    SnSnS[         R                  -  nSnSnSn[         R                  R                  S5      nUR	                  U5      n[         R
                  " S[         R                  -  S	[         R                  -  U5      X:     n	U[         R                  " X)-  U-   5      -  n
[         R
                  " SS	U5      n[        XU5      n[        XUS
S9n[         R                  " U	5      [        U	R                  S   5      -  nX-  U
-  R                  5       nUnSUU	R                  S   -  -  n[        UU-  U5        [        [         R                  " U5      S5        g )Nr%   rD   r"   r,  r-  r.  r/  r0  r1  T	normalizer   ro   )r(   r  r  r4  r5  r*   r  r   r7  floatrv   sumr   max)r-   r8  r9  r:  r;  r<  r0   r=  r>  r?  r  r/   rD  rK  r3  YY_hatYYscale_to_uses                     r2   test_normalizeTestLombscargle.test_normalize@  s4    BEEk ii##G,HHSMKKRUU
CIs3AF; 266!#)$$ KKc4( A!$Q15 ,,q/%
"33+/&&("QWWQZ-( 	,f5v,r5   c           	      B   [         R                  " SSS5      n[         R                  " SSS5      n[         R                  " SSS5      S-   n[        [        [        XU5        [         R
                  " [         R                  " [         R                  " SSS5      S5      SSS9n[         R                  " SSS5      n[         R                  " SSS5      S-   n[        [        [        XU5        [         R                  " SSS5      n[         R
                  " [         R                  " [         R                  " SSS5      S5      SSS9n[         R                  " SSS5      S-   n[        [        [        XU5        [         R                  " SSS5      n[         R                  " SSS5      n[         R
                  " [         R                  " [         R                  " SSS5      S5      S-   SSS9n[        [        [        XU5        [         R                  " SSS5      n[         R                  " SSS5      n[         R                  " SSS5      S-   n[         R
                  " [         R                  " [         R                  " SSS5      S5      SSS9n[        [        [        XX4S9  g )Nr   r!   ro   r   r  r   r2  )r(   r*   rf   rg   r   repeatexpand_dimsr-   r?  r  r/   r3  s        r2   test_wrong_shape TestLombscargle.test_wrong_shaped  s    KK1a KK1a KK1a 3&j+qQ7 IIbnnR[[Aq%91=qqIKK1a KK1a 3&j+qQ7 KK1a IIbnnR[[Aq%91=qqIKK1a 3&j+qQ7 KK1a KK1a IIbnnR[[Aq%91=CQQOj+qQ7 KK1a KK1a KK1a 3&))BNN2;;q!Q+?CQQOj+qQHr5   c                     [         R                  " SSSSS9n[         R                  " SU-  5      n[         R                  " SSSSS9S	-   n[        XUS
-  [         R                  -  5        g )Nr   rp   r-  F)endpointrd   2   i  r  ro   )r(   r*   r  r   r  )r-   r?  r  r/   s       r2   test_lombscargle_atan_vs_atan2.TestLombscargle.test_lombscargle_atan_vs_atan2  sX     KK2te4FF1Q3KKK2sU3c9A!A#bee)$r5   c           	          [         R                  " SSS5      n[         R                  " SSS5      n[         R                  " SSS5      S-   n[         R                  " SSS5      n[        [        [        XX4S9  g )Nr   r!   r   r  ro   r2  )r(   r*   rf   rg   r   r\  s        r2   test_wrong_shape_weights(TestLombscargle.test_wrong_shape_weights  s_     KK1a KK1a KK1a 3&++aA&j+qQHr5   c           	          [         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[        [        [
        XX4S9  g Nr!   r2  r(   r)   r+   rf   rg   r   r\  s        r2   test_zero_division_weights*TestLombscargle.test_zero_division_weights  sF     HHQKHHQKGGAJ((1+j+qQHr5   c           	         SnSnSnSnSnSn[         R                  R                  S5      nUR                  U5      n[         R                  " S[         R
                  -  S	[         R
                  -  U5      X:     n	U[         R                  " X)-  U-   5      -  n
[         R                  " SS	U5      n[        XUS
S9n[        XUSS9n[        XUSS9n[        XUSS9n[        XUSS9n[        X5        [        X5        [         R                  " U
5      [        U
R                  S   5      -  nUU
-  U
-  R                  5       nUn[        US-  [        U	R                  S   5      U-  -  U5        [         R                  " X:H  5      S   S   n[        [         R                  " UU   5      U5        [        [         [        XUSS9  [        [         [        XUSS9  g )Nr%   rD   r   r,  r-  r.  r/  r0  r1  FrO  TpowerrP  	amplitudelombro   )r(   r  r4  r5  r*   r  r  r   r   r7  rQ  rv   rR  whereabsrf   rg   )r-   r8  r9  r:  r;  r<  r0   r=  r>  r?  r  r/   pgram_false
pgram_truepgram_power
pgram_norm	pgram_ampr3  rT  rU  f_is                        r2   test_normalize_parameter(TestLombscargle.test_normalize_parameter  s     ii##G,HHSMKKRUU
CIs3AF; 266!#)$$ KKc4( "!U; qD9
!!W= qK@
a;?	 	1
/ ,,q/%
"33A+/&&(c)U1771:->-CDjQ hhqtnQ"y~.5 	j+qQ&Ij+qQ!Dr5   c                    SnSnS[         R                  -  nSnSnSnSn[         R                  R                  S5      nUR	                  U5      n	[         R
                  " S	[         R                  -  S
[         R                  -  U5      X:     n
U[         R                  " X*-  U-   5      -  n[         R
                  " S	S
U5      n[        XUSS9n[        XU-   USS9n[        X5        g )Nr%   rD   r"   r,  r-  r.  333333@r/  r0  r1  T)rI  )	r(   r  r  r4  r5  r*   r  r   r   r-   r8  r9  r:  r;  r<  r0   rJ  r=  r>  r?  r  r/   rD  pgram_offsets                  r2   test_offset_removal#TestLombscargle.test_offset_removal  s    
 BEEk ii##G,HHSMKKRUU
CIs3AF; 266!#)$$ KKc4( A!48"1&j!4H 	,r5   c                    SnSnSnSnSnSnSn[         R                  R                  S5      nUR                  U5      n	[         R                  " S[         R
                  -  S	[         R
                  -  U5      X:     n
U[         R                  " X*-  U-   5      -  n[         R                  " SS	U5      n[        XUS
SS9n[        XU-   US
SS9nUS   S:  d   eUS   S:  d   eg )Nr%   rD   r   r-  r.  ro   r/  r0  r1  TFrP  rI  r"   r(   r  r4  r5  r*   r  cosr   r|  s                  r2   test_floating_mean_false(TestLombscargle.test_floating_mean_false  s      ii##G,HHSMKKRUU
CIs3AF; 266!#)$$ KKc4( A!t5I"1&j!t168
 Qx$A$%$r5   c                 N   SnSnSnSnSnSnSn[         R                  R                  S5      nUR                  U5      n	[         R                  " S	[         R
                  -  S
[         R
                  -  U5      X:     n
U[         R                  " X*-  U-   5      -  U-   n[         R                  " S	S
U5      n[         R                  " X:H  5      S   S   n[        XUSSS9n[        [         R                  " X   5      U5        [        [         R                  " X   5      * U5        g )Nr%   rD   Q?r,  r-  r.  r{  r/  r0  r1  r   rn  Tr  )r(   r  r4  r5  r*   r  r  rp  r   r   rq  angle)r-   r8  r9  r:  r;  r<  r0   rJ  r=  r>  r?  r  r/   f_indxrD  s                  r2   test_amplitude_is_correct)TestLombscargle.test_amplitude_is_correct  s     ii##G,HHSMKKRUU
CIs3AF; 266!#)$$v- KKc4( !$"1% A!{$O 	u}-t4 	%-00#6r5   c           	          [         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      * n[        [        [
        XX4S9  g rh  ri  r\  s        r2   test_negative_weight$TestLombscargle.test_negative_weight5  sH     HHQKHHQKGGAJ771:+j+qQHr5   c                     / SQn/ SQn[         R                  " SSS5      nS[         R                  -  U-  n[        XUSSS9  g )	N)yg   ˈAg   ˈAg   ̈Ag   ͈Ag   ΈAg   ψAg   ЈAg   шAg   ҈Ag   ӈAg   ԈAg   ՈAg   ֈAg   ׈Ag   ؈Ag   وAg   ڈAg   ۈAg   ܈Ag   ݈Ag   Ag   Ag   Ag   Ag   Ag    Ag   Ag   Ag   Ag   Ag   Ag   Ag   Ag   Ag   Ag   Ag   Ag    Ag   Ag   Ag   "Ag   Ag   Ag   Ag   
Ag   Ag   Ag   Ag    Ag   !Ag   "Ag   #Ag   $Ag   %Ag   &Ag   'Ag   (Ag   )Ag   *Ag   +Ag   ZcAg   TdAg   NeAg   HfAg   BgAg   <hAg   6iAg   0jAg   *kAg   $lAg   mAg   nAg   oAg   pAg   qAg    rAg   rAg   sAg   tAg   uAg   wAg   xAg   yAg   zAg   {Ag   |Ag   }Ag   ~Ag   Ag   Ag   Ag   Ag   Ag   Ag   Ag   Ag   |Ag   vAg   pAg   jAg   Ag   
Ag   Ag   Ag   Ag   Ag   잉Ag   柉Ag   ࠉAg   ڡAg   ԢAg   ΣAg   ȤAg   ¥Ag   Ag   Ag   Ag   Ag   Ag   Ag   A)yg     @@g     ܨ@g     J@g     @g     9@g     @g     @g     2@g    @g     @g     i@g     @g    j@g    @g     @g    @g     @g     @g    ?@g    @g     n@g     ײ@g     .@g     @g     h@g     @g     ޫ@g     Ӱ@g     >@g     @g     @g     b@g     @g    H@g    @g     @g    @g    d@g     @g    @g     p@g     ̳@g     m@g     D@g     ҧ@g     @g     @g     @g     G@g     @g     @g     _@g     @g    @g    @g     "@g    @g    @g     M@g     n@g    @g     @g     0@g     @g      @g    D@g     w@g     9@g     y@g     µ@g     6@g     @g     \@g     F@g     @g     Ь@g     k@g     @g     @g     V@g     @g     @g     D@g    @g    J@g    @g     @g     @g    @g    @g    3@g    @g    @g    @g     @g     @g    s@g    @g    :@g    b@g     @g     @g     p@g     @g     @g     @g     Q@g     @g     \@g     !@g     @g    j@g     @g    F@g    @g    @g    @g     e@g    @g     @g    @i  x   r-  ro   T)rH  rP  )r(   r*   r  r   )r-   r?  r  periodsangular_freqs        r2   test_list_inputTestLombscargle.test_list_input>  sE    >@ ++c3-255y7*A,$$Gr5   c                    SnSnSnSnSnSnSn[         R                  R                  S5      nUR                  U5      n	[         R                  " S	[         R
                  -  S
[         R
                  -  U5      X:     n
U[         R                  " X*-  U-   5      -  U-   n[         R                  " SS
U5      n[        XUSSS9nUS   S:  d   eg )Nr%   rD   r  r,  i  r.  r   r/  r0  r1  Tr  -C6?r  )r-   r8  r9  r:  r;  r<  r0   rJ  r=  r>  r?  r  r/   rD  s                 r2   test_zero_freqTestLombscargle.test_zero_freq  s    
  ii##G,HHSMKKRUU
CIs3AF; 266!#)$$v- KK3% A!t4H Qx$r5   c                    [        SS5       Vs/ s H  oS-   PM	     snn[        R                  " [        U5      5      nS[        R                  -  /S-  n[        XU5        [        SS5       Vs/ s H
  oS-  S-   PM     snn[        R                  " [        U5      5      n[        R                  S-  /S-  n[        XU5        g s  snf s  snf )Nr   r   r!   r%   ro   rd   )r  r(   r+   lenr  r   )r-   r?  r  freqss       r2   test_simple_div_zero$TestLombscargle.test_simple_div_zero  s    
 "!RL)LqUL)GGCFORUUaA%  $Arl+lqS1Wl+GGCFOsaA%  * ,s   C0Cr   N)r   r   r   r   rA  rE  rL  rW  r]  rb  re  rj  rx  r~  r  r  r  r  r  r  r   r   r5   r2   r*  r*    sb    &1R6B&'P"-HIB%II/Eb-> &D"7HIFHP >!r5   r*  c                      \ rS rSr\R
                  R                  S 5       rS rS r	S r
S r\R
                  R                  SSS	/5      S
 5       r\R
                  R                  S 5       rS rS r\R
                  R                  \R
                  R                  SSS	/5      S 5       5       rS rS rS rS rS rSrg)TestSTFTi  c                    S nU" S5         [        SSS5        S S S 5        U" S5         [        SSS5        S S S 5        U" S	5         [        [        R                  " S
5      SS5        S S S 5        U" S5         [        [        R                  " S5      SS5        S S S 5        U" S5         [        SSS5        S S S 5        U" S5         [        SSS5        S S S 5        U" S	5         [        [        R                  " S
5      SS5        S S S 5        U" S5         [        [        R                  " S5      SS5        S S S 5        U" S5         [        SSS5        S S S 5        [        R                  " S5      n[        U5      S   nU" S	5         [        U[        R                  " S
5      S9  S S S 5        U" S5         [        U[        R                  " S5      SS9  S S S 5        U" S5         [        USS9  S S S 5        U" S5         [        USSS9  S S S 5        U" S5         [        USSS9  S S S 5        U" S5         [        U5        S S S 5        U" S	5         [        U[        R                  " S
5      S9  S S S 5        U" S5         [        U[        R                  " S5      SS9  S S S 5        U" S5         [        USS9  S S S 5        U" S5         [        USSS9  S S S 5        U" S5         [        USSS9  S S S 5        [        R                  " [        SS9   [        USSSS 9  S S S 5        U" S!5         [        USSS"9  S S S 5        U" S#5         [        X"S$S%9  S S S 5        U" S&5         [        US S' US'S  S(S%9  S S S 5        U" S)5         [        X"S$S*9  S S S 5        S+nU" S,U< S-35         [        X$S.9  S S S 5        U" S,U< S-35         [        X4S.9  S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN~= f! , (       d  f       GNr= f! , (       d  f       GNR= f! , (       d  f       GN2= f! , (       d  f       GN&= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNe= f! , (       d  f       GN\= f! , (       d  f       GNR= f! , (       d  f       GNH= f! , (       d  f       GN,= f! , (       d  f       GN"= f! , (       d  f       GN= f! , (       d  f       GN	= f! , (       d  f       GN = f! , (       d  f       GN= f! , (       d  f       g = f)/Nc                 4    [         R                  " [        U S9$ )ziAssert for a ValueError matching regexp `match`.

This little wrapper allows a more concise code layout.
r   )r   r	   rg   r   s    r2   chk_VE.TestSTFT.test_input_validation.<locals>.chk_VE  s    
 ==599r5   z"nperseg must be a positive integerr   ir   z#noverlap must be less than nperseg.rp   rm   zwindow must be 1-D)ro   ro   z"window must have length of npersegz"noverlap must be less than npersegz&noverlap must be a nonnegative integerrY  ir  ro   r   z>value specified for nperseg is different from length of windowrI  rJ  i r   rZ  z.nfft must be greater than or equal to nperseg.r&   r|  zInput stft must be at least 2d!zwindow must have length of 256z1NOLA condition failed, STFT may not be invertibler   r   r[  r   z/Must specify differing time and frequency axes!	time_axis	freq_axisz=Unknown value for mode foo, must be one of: \{'psd', 'stft'\}re   )modez'x and y must be equal if mode is 'stft'   stftz[Unknown boundary option 'foo', must be one of: \['even', 'odd', 'constant', 'zeros', None\])boundary	not_validzParameter scaling=z not in \['spectrum', 'psd'\]!rK   )r   r(   r+   r   r)   r  istftr   warnsrL  r   )r-   r  r.   zrL   s        r2   test_input_validationTestSTFT.test_input_validation  sD   	: 89vsA& :9:vr2& ;()rwwvA. *89rwwr{B* : 89vsA& :89vr2& :()rwwvA. *89rwwr{B* :<=vr3' > HHTNGAJ ()2776?+ * , -2772;4- 89D! :9:C$/ ;DECa( F 56!H 7()!BGGFO, *45!BGGBK5 689!T" :9:!S40 ;DE!Sq) F\\+ .7 8!S1V<8 EF!qA. G  ) *Q.* =>QtWagF; ? D EQE2E *'+IJK$ L*'+IJK!% LKK :9::))99 :999))99== *)- - :9::EE 76))5599::EE8 8 GF* * ?>E E
 LKKKsB  O)O;"P:"P,P1
Q("Q"Q'Q9R= R-R/S$S S%S7 T	;TT-2T?U<U#U53VV7
V+
V=)
O8;
P

P
P.1
Q 
Q
Q$'
Q69
R
R
R,/
R>
S
S"%
S47
T	
T
T*-
T<?
U
U #
U25
V
V
V(+
V:=
Wc                 ^    / SQnU H#  nSR                   " U6 n[        S[        U6 US9  M%     g )N)boxcarrp   r   r  rp   r#   r  3      r   rI     r   rI     blackmanr     r  r"   rI  rY  r   rI     
{}, {}, {}Tr  )formatr   r   )r-   settingssettingrO  s       r2   test_check_COLATestSTFT.test_check_COLA  s6    	  G%%w/Cz73SA  r5   c                 $   / SQnU H#  nSR                   " U6 n[        S[        U6 US9  M%     [        R                  " S5      nSUS S S2'   U[        U5      [        U5      S-  4S/nU H#  nSR                   " U6 n[        S	[        U6 US9  M%     g )
N)r  r  )r  rp   rb  r  )r  r  rp   r  r  )r   rI  %   r  )r  r  {   r  )r  rI  &   r  )r   rI  '   r  Tr  r    r   ro   )r   rY  r   F)r  r   r   r(   r+   r  )r-   settings_passr  rO  w_failsettings_fails         r2   test_check_NOLATestSTFT.test_check_NOLA  s      %G%%w/Cz73SA % ssS[#f+*:;#
 %G%%w/C
G 4cB %r5   c                 8   [         R                  R                  S5      nUR                  S5      nSnSnSnSn[	        X#XEUSSS S9u  pxn	[        X#XEUSS	SS
9u  p[        Xz5        [        [         R                  " [         R                  " U	5      S-  SS9U5        g )Nr  r  rD   r   r    r&   F)paddedrC   r  rJ   )rC   rL   r  ro   r$   r   )	r(   r  r4  r  r  r   r   r  rq  )r-   r=  r.   r  r   r   r[  r/   r  Zr  r  s               r2   r  "TestSTFT.test_average_all_segments:  s    ii##D)IIdO
 qfx',t=aqfx)5: 	q	126;r5   c           
         [         R                  R                  S5      nUR                  S5      nSnSnSnSn[	        X#XEU5      u  pxn	[	        UR                  S5      X4XVSS	9u  pn[        XXEU5      u  p[        UR                  X4XVSS
S9u  nn[        Xz5        [        X5        [        X5        [        XS S 2SSS S 24   5        [        UUS S 2SS4   5        g )Nr  r  rD   r   r    r&   )r$   r!   r!   r   r   r$   r  )	r(   r  r4  r  r  ru   r  Tr   )r-   r=  r.   r  r   r   r[  r  t1Z1r  t2Z2t3x1t4x2s                    r2   test_permute_axesTestSTFT.test_permute_axesN  s    ii##D)IIdO!(;
!))J/W "
 rv9rttRa!#%B 	q!QzN+Bq!QwK(r5   rL   rJ   psdc                 <   [         R                  R                  S5      n/ SQnU Hs  u  pEpg[         R                  " U5      nSUR	                  UR
                  5      -  n	[        XUUS SUS9u    p[        XUXAS9u  pU SU 3n[        XUS9  [        XUS9  Mu     g )	Nr  r  r,  rp   r   r  r,  rp   r#   )r  e   r  r  r   r  rI  r  )r    rI  rY  )r   r  rI  r  rp   F)r   r[  r   r  r  rL   )r   r[  r   rL   rx  r  	r(   r  r4  r>   r  sizer  r  r   )r-   rL   r=  r  r   Nr   r[  r?  r.   r  zztrxrrO  s                  r2   test_roundtrip_realTestSTFT.test_roundtrip_reale  s    ii##D) -5(Fw		!A399QVV$$AA#)4$+-HAq 2"(;FB HBxj)CA3/A3/ -5r5   c                    [         R                  R                  S5      n[         R                  " S5      nSUS S S2'   US[	        U5      [	        U5      S-  4S/nU H  u  pEpgU SU SU SU 3n[        XFU5      (       a   U5       e[         R                  " U5      n	SUR                  U	R                  5      -  n
[        XUUS S	S
S9u    p[        R                  " [        SS9   [        XUUS	S9u  pS S S 5        [         R                  " U	WS [	        U	5       5      (       d   U5       e[         R                  " U
WS [	        U
5       5      (       d  M   U5       e   g ! , (       d  f       Nq= f)Nr  r    r   ro   rI  )r   rI  rY  r   rx  rp   Tr)   r   r[  r   r  r  r  NOLAr   r   r[  r   r  )r(   r  r4  r+   r  r   r>   r  r  r  r   r  rL  r  allclose)r-   r=  r  r  r   r  r   r[  rO  r?  r.   r  r  r  r  s                  r2   test_roundtrip_not_nola TestSTFT.test_roundtrip_not_nola  sY   ii##D)ssS#f+s6{a/?@(

 -5(FwHBqcG9Bxj9C!&8<<AcA<		!ASYYqvv&&AA#)4%,.HAq k8rX&,t= 9 ;;q"Wc!f+..33.{{1b#a&k227C72 -5 98s   &E  
E.	c                    [         R                  R                  S5      n/ SQnU H  u  p4pVU SU SU 3n[        X5U5      (       d   U5       e[	        X5U5      (       a   U5       e[         R
                  " U5      nSUR                  UR                  5      -  n	[        XUUS SSS9u    p[        XUUSS9u  pU SU 3n[        XS [        U5       US	9  [        XS [        U	5       US	9  M     g )
Nr  ))r  r,  rp   r   )r  r  r  r  )r   r  rI     )r  r  rI     )r   r  rI  r   rx  rp   Tr)   r  r  r  )r(   r  r4  r   r   r>   r  r  r  r  r   r  )r-   r=  r  r   r  r   r[  rO  r?  r.   r  r  r  r  s                 r2   test_roundtrip_nola_not_cola%TestSTFT.test_roundtrip_nola_not_cola  s   ii##D) -5(FwHBwir(4Cfx88=#=8!&8<<AcA<		!ASYYqvv&&AA#)4%,.HAq 2"(49FB HBxj)CA'3q6{C8A'3q6{C8# -5r5   c           
         [         R                  R                  S5      nS/nU H  u  p4pV[         R                  " U5      nSUR	                  UR
                  5      -  nUR                  [         R                  5      n[        XUUS SS9u    p[        XUUS9u  pU SU 3n[        XwUS9  [        XUS	S
S9  [        UR                  UR                  :H  5        M     g )Nr  r  rp   Fr   r[  r   r  r  r  rx  r  r  gh㈵>)r  r   r=   )r(   r  r4  r>   r  r  astypefloat32r  r  r   r   rS   r-   r=  r  r   r  r   r[  r?  r.   r  r  r  r  rO  s                 r2   test_roundtrip_float32TestSTFT.test_roundtrip_float32  s    ii##D),-,4(Fw		!A399QVV$$A$AA#)4GHAq 2"(*FB HBxj)CA#.A3TEAGGrxx'( -5r5   c                 |   [         R                  R                  S5      n/ SQnU H  u  pEpg[         R                  " U5      nSUR	                  UR
                  5      -  SUR	                  UR
                  5      -  -   n	[        XUUS SSUS9u    p[        XUUSUS9u  pU SU SU 3n[        XUS	9  [        XUS	9  M     [        5        nUR                  [        S
5        [        W	WWWS SSUS9u    pS S S 5        [        WWWWSUS9u  pU SU SU 3n[        WXS	9  [        W	XS	9  g ! , (       d  f       N== f)Nr  r  rp   y              $@F)r   r[  r   r  r  rC   rL   )r   r[  r   input_onesidedrL   rx  r  z9Input data is complex, switching to return_onesided=FalseT)r(   r  r4  r>   r  r  r  r  r   r   rK  rL  )r-   rL   r=  r  r   r  r   r[  r?  r.   r  r  r  r  rO  rN  s                   r2   test_roundtrip_complexTestSTFT.test_roundtrip_complex  sc    ii##D) -5(Fw		!A399QVV$$s399QVV+<'<<AA#)4,17DHAq 2"(#*,FB HBwir(4CA3/A3/ -5"  CJJ{RTAw#)4,0'CHAq ! r7X$UGM 7)2hZ02+2+ ! s   *D--
D;c                    [         R                  R                  S5      nSS/nU H  u  p4pV[         R                  " U5      nSUR	                  UR
                  5      -  n[        XUUS SS S9u    p[        XUSS9u  pS	 H?  n[        XUUS SUS9u    p[        XUSS9u  pU S
U S
U 3n[        XUS9  [        XUS9  MA     M     g )Nr  r  r  rp   Tr  F)r[  r   r  )evenoddconstantr)   rx  r  r  )r-   r=  r  r   r  r   r[  r?  r.   r  r  r  r  zz_extxr_extrO  s                   r2   !test_roundtrip_boundary_extension*TestSTFT.test_roundtrip_boundary_extension  s    ii##D) +*
 -5(Fw		!A399QVV$$AA"($t$(*HAq "OEA@#A'-tD)1 31 "&F)-/	  8*Bxj9s337 A -5r5   c           
      l   [         R                  R                  S5      nSS/nU H  u  p4pV[         R                  " U5      nSUR	                  UR
                  5      -  n[        XUUS SS9u    p[        XUS9u  pU SU 3n[        X{S UR
                   US	9  [        XS UR
                   US	9  M     g )
Nr  )r  r  rp   r   )r   r-  rI  r  rp   Tr  )r[  r   rx  r  r  r  s                 r2   test_roundtrip_padded_signal%TestSTFT.test_roundtrip_padded_signal  s    ii##D) +,
 -5(Fw		!A399QVV$$AA#)4FHAq 2@FBHBxj)CA'166{C8A'166{C8 -5r5   c                    [         R                  R                  S5      n/ SQnU H  u  p4pVn[         R                  " U5      nSUR	                  UR
                  5      -  n	U	[         R                  " S[         R                  -  S-  5      -  n
[        XXgUS SS9u    p[        XXgUS SSS	9u    p[        XXgUS
9u  p[        XXgUSS9u  nnU SU 3n[        XUS9  [        XUS9  [        U
UUS9  M     g )Nr  ))r   r  rI  r  r  )r   r  rI  r  i  )r  r,  rp   r   !   )r  r  rI  rY  r  rp   y              ?rd   T)r   r[  r   r   r  r  F)r   r[  r   r   r  r  rC   )r   r[  r   r   )r   r[  r   r   r  rx  r  )r(   r  r4  r>   r  r  expr  r  r  r   )r-   r=  r  r   r  r   r[  r   r?  r.   xcr  r  zcr  r  xcrrO  s                     r2   test_roundtrip_padded_FFT"TestSTFT.test_roundtrip_padded_FFT4  s   ii##D) 3;.Fw$		!A399QVV$$A266"RUU(1*%%B 1#)4FGAq B(#)4,13HAq 1"(*FB B(#)%AGB HBxj)CA3/A3/BS1/ 3;r5   c                     [         R                  R                  S5      nUR                  S5      n[	        U5      u    p4[        S5       H  nS/S-  nSXe'   UR                  U5      n[	        XuS9u    p8[	        XuUR                  -
  S9u    p9[        XHR                  5       US9  [        XIR                  5       XWR                  -
  S9  M     [        UR                  SSS	9u  p:[        UR                  S
SS	9u  p;[        X*SS9  [        X+SS9  g )Nr  r  r   r!   r$   r   r  r  r   zistft transpose minuszistft transpose plus)r(   r  r4  r  r  r  ru   r  r   r  r  r  r   )r-   r=  r  r  z_flatr  r  r.   z_plusz_minusx_transpose_mx_transpose_ps               r2   r  TestSTFT.test_axis_rollingW  s    ii##D)4F|1qAtAvHHKx(A?LAq 1662MAq!11=!2AffHE  !R2F Q!D7NO7MNr5   c                 *   [         R                  " S[        S9nSUS'   [         R                  R	                  U5      n[        US-  5      [        U5      -  n[        USSS9S   n[        US	SS9S
   n[        XR5        [        [        USSS24   5      S5        [        [        USSS24   5      S
5        [        [        USSS24   5      S5        SUSS2SS24'   [        USS2SS24   S[         R                  " UR                  5      R                  S9  [        USSSS9S   n[         R
                  " UR                  S-  UR                  S-  -   SS9UR                   S   -  n[        Xs5        [        USS	SS9S
   n[        XR5        [        US	SSS9S   n[         R"                  " USSS2SS24   5      n	[        USS2SS24   U5        [        USS2SS24   U	5        [         R
                  " UR                  S-  UR                  S-  -   SS9[         R
                  " U	R                  S-  U	R                  S-  -   SS9-   n
XR                   S   U	R                   S   -   -  n[        X5        [        US	S	SS9S
   n[        XR5        g)z&Verify behavior of scaling parameter. i  rR   r  rI  ro   r  rJ   )r  rL   Tr!   ?   Nr$   r"   rY  A   r   B   r<   Fr  )rC   r  rL   r   )r  r  rL   r     )r(   r)   complexr   r   rR  r  r  r  r   rq  finforS   
resolutionrealimagrv   conj)r-   Xr.   power_xZsr  Zppsd_ZpZp0Zp1s2psd_Zp01s               r2   test_roundtrip_scalingTestSTFT.test_roundtrip_scalingq  sm    HHS(#FFLLOad)c!f$ !fj9!< 2j9!< 	Br3B3wK(#.Br3B3wK(!,Br3B3wK(#.2b5#2#:1crc6
ABHHRXX,>,I,IJ !UVUKAN 
RWWaZ/a8288A;F( 2edEJ1M 1dVUKAN ggc"Qr'1*o&4C47S)347S) ffSXX]SXX]2;ffSXX]SXX]2;<1		!45* 3tdEJ1Mr5   r   N)r   r   r   r   r   r   thread_unsafer  r  r  r  r  parametrizer  r  r  r  r	  r  r  r  r  r:  r   r   r5   r2   r  r    s    [[P& P&dB C><(). [[YU(;<0 =06 [[8 869<)* [[[[YU(;<), = ),V8B9,!2FO4?r5   r  c                       \ rS rSr% SrSr\\S'   Sr\	\S'   Sr
\	\S'   Sr\\S	'   \R                  \S
'   \R                  \S'   \	\S'   \	\S'   S r\S\	4S j5       r\S\	4S j5       rS rS rSrg)"TestSampledSpectralRepresentationsi  zCheck energy/power relations from `Spectral Analysis` section in the user guide.

A 32 sample cosine signal is used to compare the numerical to the expected results
stated in :ref:`tutorial_SpectralAnalysis` in
file ``doc/source/tutorial/signal.rst``
r   nrE   r  r   a_refl_ax_refX_refE_refP_refc                    [        U R                  U R                  5      n[        R                  " U5      nSU l        U R                  S-  U R                  -  X R
                  '   [        U5      U l        [        U R                  5      U l
        U R                  U R                  S-  -  S-  U l        U R                  S-  S-  U l        g)z5Create Cosine signal with amplitude a from spectrum. r   ro   N)r   r@  r  r(   r  rB  rA  r   rC  r   rD  taurE  rF  )r-   r/   rD  s      r2   setup_method/TestSampledSpectralRepresentations.setup_method  s    TVVTVV$a **Q,/hh5\
_
 XX

A-1
ZZ]Q&
r5   returnc                 4    U R                   U R                  -  $ )zDuration of signal. r@  r  rh   s    r2   rH  &TestSampledSpectralRepresentations.tau  s     vvr5   c                 :    SU R                   U R                  -  -  $ )z
Bin width r!   rM  rh   s    r2   delta_f*TestSampledSpectralRepresentations.delta_f  s     DFFTVVO$$r5   c                    [        SU R                  -  [        R                  " U R                  5      SS9  [        U R
                  [        U R                  S-  5      -  U R                  5        [        U R                  R                  S-  U R                  R                  S-  -   5      n[        U R
                  U R                  -  U-  U R                  5        [        SU R                  S-  -  U-  U R                  5        g)z Test energy and power formulas. ro   r  r  r!   N)r   rA  r(   ptprC  r  rR  rE  rD  r.  r/  r@  rF  )r-   sum_X_ref_squareds     r2   test_reference_signal8TestSampledSpectralRepresentations.test_reference_signal  s     	$**bffTZZ&8sCTZZ1_!55tzzB  

 2TZZ__a5G GHtvv(994::F$&&!)&77Dr5   c                 r   [        U R                  SS9n[        [        U5      5      [        R
                  " [        UR                  S-  UR                  S-  -   5      5      p2[        U R                  U-  5      n[        U R                  X@R                     -  U-  U R                  U R                  -  S-  5        [        X@R                     U-  U R                  S-  5        U R                  U R                  -  [        XC-  5      S-  -  nU R                  [        XC-  5      S-  -  n[        U R                  [        U5      -  U R                   5        [        U R                  [        U5      -  U R"                  5        [%        SU R                  -  USSS9n['        U R                  4SS0UD6u  p['        U R                  4SS0UD6u  p[        R(                  " U	R*                  5      R,                  n[        U	[        XB-  5      S-  U[/        U	5      -  S	9  [        XU[/        U
5      -  S	9  [%        S[1        U R                  5      S
S.UD6n[        [3        U R                  4SS0UD6S   U	U[/        U	5      -  S	9  [        [3        U R                  4SS0UD6S   U
U[/        U
5      -  S	9  g)zwVerify spectral representations of windowed DFT.

Furthermore, the scalings of `periodogram` and `welch` are verified.
F)symro   r!   )r  r   r  rC   rL   rJ   rM   r<   r   rZ  Nr   )r   r@  rq  rR  r(   r  r.  r/  r   rC  r   rH  rB  rA  r  rP  rE  rF  dictr   r,  rS   r-  rS  r  r   )r-   r9  c_ampc_rmsXwX_ESDX_PSDkwr  P_magP_psd	float_ress               r2   test_windowed_DFT4TestSampledSpectralRepresentations.test_windowed_DFT  s4   
 U#3q6{BGGC	AFFAI0E,F$GuA 	2hh</%7dhh9NQR9RS88u,djjl; 466!C
OQ$66RZ!++s5z14::>s5z14::> QtvvXaNtzzD:DDtzzC9CC HHU[[)44	s28}a/iE
6JK9SZ+?@ <#djj/A<<djjC*CCAF&s5z1	3djjB)BrB1Eu&s5z1	3r5   )rE  rF  rD  rB  rC  N)r   r   r   r   __doc__r@  rT   __annotations__r  rQ  rA  rB  r(   ndarrayrI  propertyrH  rP  rU  rc  r   r   r5   r2   r?  r?    s     AsKAuOE5CL::::LL' U   % % %
E$3r5   r?  )1r   numpyr(   numpy.testingr   r   r   r   r   r   r   r	   rf   scipyr
   	scipy.fftr   r   r   r   scipy.integrater   scipy.signalr   r   r   r   r   r   r   scipy.signal.windowsr   scipy.signal._spectral_pyr   ,scipy.signal.tests._scipy_spectral_test_shimr   r  r   r  r   r  r   r   r  r  r  r*  r  r?  r   r5   r2   <module>rr     s    
 N N  *  3 3 %? ? ? % 6 N O KZ' Z'z|6 |6~	I* I*X
 03  3 jg! g!Ty yxX3 X3r5   