
    -i?                    |   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  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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      r0 " S S5      r1g)    N)assert_assert_allcloseassert_array_equalassert_equalassert_array_almost_equal_nulpsuppress_warnings)raises)signal)xp_assert_close)fftfreqrfftfreqfftirfft)	trapezoid)periodogramwelchlombscargle	coherencecsdspectrogram
check_COLA
check_NOLA)hann)_spectral_helper)stft_compare)istft_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        r3   test_real_onesided_odd&TestPeriodogram.test_real_onesided_odd$   sc    HHRL!1~299S>$./GGAJ!	X5)r6   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        r3   test_real_twosided"TestPeriodogram.test_real_twosided.   sX    HHRL!1e472s+,GGB!r6   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/   r0   r1   gr2   s         r3   test_real_spectrum"TestPeriodogram.test_real_spectrum7   sW    HHRL!1j11i02;;q#q12T6"r6   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        r3   test_integer_even!TestPeriodogram.test_integer_even?   sq    HHRs#!1~2;;q#q12GGAJ!	"	Qr6   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 )Nr8   rS   r"   r   r9   r:   r'   r;   r<   r=   )r)   r*   rU   r   r   r?   r,   r-   s        r3   test_integer_odd TestPeriodogram.test_integer_oddJ   sf    HHRs#!1~299S>$./GGAJ!	X5)r6   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!   rS   r"   r   FrC   rE   rF   )r)   r*   rU   r   r   r   rG   r-   s        r3   test_integer_twosided%TestPeriodogram.test_integer_twosidedT   s[    HHRs#!1e472s+,GGB!r6   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   FrC   rE         ?)r)   r*   
complex128r   r   r   rG   r-   s        r3   test_complexTestPeriodogram.test_complex]   s_    HHR'!1e472s+,GGB!!r6   c                 r    [        [        [        [        R                  " S[        R
                  5      SS9  g )N   foorL   )assert_raises
ValueErrorr   r)   r*   ra   r.   s    r3   test_unk_scaling TestPeriodogram.test_unk_scalingf   s"    j+rxx2==/I	r6   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   rS      r"   
   rE   r   rp   r"      r"   <   )	r)   r*   float64reshaper   r   shaper   newaxisr.   r/   r0   r1   f0p0s         r3   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Dr6   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 )
Nrn   rS   rq   rp   r"   rE   r   axisrs   rp   r"   r"   rt   )r)   r*   ru   rv   r   r   rw   r   ry   s         r3   test_nd_axis_0TestPeriodogram.test_nd_axis_0x   s    
 HHRrzz*IIh!Aa%11%177G,&q1Qx1Qq52>Qq1uX&&rQqU84r6   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   rq   r       )r)   r*   r   r
   
get_windowr   rg   rh   r.   r/   r0   r1   winfepewin_errs           r3   test_window_external$TestPeriodogram.test_window_external   s    HHRL!1b&)+QC(&q-&q-##FB/j+q'	#r6   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   nfftrp   )   )r)   r*   r   r   r   rw   )r.   r/   r0   r1   fppps         r3   test_padded_fftTestPeriodogram.test_padded_fft   s_    HHRL!1~QR(cc7#cc7#288U+r6   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      rp   )r   r   rw   r)   emptyr.   r0   r1   rw   s       r3   test_empty_input TestPeriodogram.test_empty_input   sc    2177D)177D)+Erxx/DAqww.qww. ,r6   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   rw   r.   rw   r0   r1   s       r3   test_empty_input_other_axis+TestPeriodogram.test_empty_input_other_axis   s>    %ErxxQ7DAqww.qww. &r6   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        r3   test_short_nfftTestPeriodogram.test_short_nfft   q    HHRL!12&2;;q#q12GGAJ!	"	Qr6   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        r3   test_nfft_is_xshape#TestPeriodogram.test_nfft_is_xshape   r   r6   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!   r0   r"   r   r#   r$   r%   r&   r'   )r)   r*   r   r   r+   r,   r   rT   r-   s        r3   test_real_onesided_even_32*TestPeriodogram.test_real_onesided_even_32   s    HHR!1~2;;q#q12GGAsO!	"	Q177"#r6   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 )Nr8   r0   r"   r   r9   r:   r'   r;   Hz>r=   )r)   r*   r   r   r?   r,   r   rT   r-   s        r3   test_real_onesided_odd_32)TestPeriodogram.test_real_onesided_odd_32   s}    HHR!1~299S>$./GGAsO!	X4(177"#r6   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!   r0   r"   r   FrC   rE   rF   r)   r*   r   r   r   rG   r   rT   r-   s        r3   test_real_twosided_32%TestPeriodogram.test_real_twosided_32   sr    HHR!1e472s+,GGB$!177"#r6   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   FrC   rE   r`   r0   r   r-   s        r3   test_complex_32TestPeriodogram.test_complex_32   sr    HHR!1e472s+,GGB#&!177"#r6   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   rq   zOthe size of the window must be the same size of the input on the specified axismatchwindow)r)   r*   r
   r   rg   rh   r   )r.   r/   r   expected_msgs       r3   test_shorter_window_error)TestPeriodogram.test_shorter_window_error   sO    HHRL!+=:\:& ;::s   
A
A$ N) __name__
__module____qualname____firstlineno__r4   r@   rH   rP   rV   rY   r\   rb   rj   pytestmarkskipifsysmaxsizer|   r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes__r   r6   r3   r   r      s    	*#	* [[u/  E	E [[u/  5	5
#,//		
$	$$$'r6   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$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        r3   r4   !TestWelch.test_real_onesided_even   se    HHRL!!Q"2;;q#q12HH " #4d3r6   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        r3   r@    TestWelch.test_real_onesided_odd   se    HHRL!!Q"299S>#-.HH " #4d3r6   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   rD   rE   r   S8?r   r   r   r   r   r   r   r   )r)   r*   r   r   r   r   r-   s        r3   rH   TestWelch.test_real_twosided
  sb    HHRL!!Q5971c?+HH F G4d3r6   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'   rK   )r   rM   r#   r   )g      ?g-UU?.iqUU?r   g-UU?r   r   r   r-   s        r3   rP   TestWelch.test_real_spectrum  sg    HHRL!!Q:62;;q#q12HH " #4d3r6   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!   rS   r"   r   r'   r   r#   r   r   r   r   )r)   r*   rU   r   r   r+   r   r-   s        r3   test_integer_onesided_even$TestWelch.test_integer_onesided_even  sh    HHRs#!!Q"2;;q#q12HH " #4d3r6   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!   rS   r"   r   r'   r$   r   r   r   r   r   r   )r)   r*   rU   r   r   r?   r   r-   s        r3   test_integer_onesided_odd#TestWelch.test_integer_onesided_odd(  sh    HHRs#!!Q"299S>#-.HH " #4d3r6   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!   rS   r"   r   r'   Fr   rE   r   r   r   )r)   r*   rU   r   r   r   r   r-   s        r3   r\   TestWelch.test_integer_twosided2  se    HHRs#!!Q5971c?+HH F G4d3r6   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   rE   )g&>?#q?n)t?r  r  r  r  r  r   r   )r)   r*   ra   r   r   r   r   r-   s        r3   rb   TestWelch.test_complex<  si    HHR'!!Q5971c?+HH F G4d3r6   c                 t    [        [        [        [        R                  " S[        R
                  5      SSS9  g Nre   rf   )rM   r   )rg   rh   r   r)   r*   ra   ri   s    r3   rj   TestWelch.test_unk_scalingF  s$    j%!R]])C#Q	0r6   c                     [         R                  " S[         R                  S9S-   n[        USSS9u  p#[	        U[         R
                  " U5      SS9  g Nrq   rS   {Gz?linearr   detrendr<   r=   r)   r?   ru   r   r   
zeros_liker.   r/   r0   r1   s       r3   test_detrend_linearTestWelch.test_detrend_linearJ  s@    IIb

+d2QH52==+%8r6   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 )	Nrq   rS   r	  Fr  c                     U $ Nr   r/   s    r3   <lambda>.TestWelch.test_no_detrending.<locals>.<lambda>R  s    r6   r<   r=   )r)   r?   ru   r   r   r.   r/   f1p1f2p2s         r3   test_no_detrendingTestWelch.test_no_detrendingO  sO    IIb

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

+d2QFH2==+%8r6   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(   rS   r	  rp   rp   rq   rq   c                 ,    [         R                  " U SS9$ r!  r$  r%  s    r3   r  7TestWelch.test_detrend_external_nd_m1.<locals>.<lambda>`  r(  r6   r  r<   r=   )r)   r?   ru   rv   r   r   r  r  s       r3   test_detrend_external_nd_m1%TestWelch.test_detrend_external_nd_m1\  sR    IIb

+d2IIhQFH2==+%8r6   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 )Nrn   rS   r	  ro   rp   r   rq   c                 .    [         R                  " U SSS9$ Nr   r"  )r   r#  r$  r%  s    r3   r  6TestWelch.test_detrend_external_nd_0.<locals>.<lambda>h  s    !#)Nr6   r   r   r  r<   r=   )r)   r?   ru   rv   moveaxisr   r   r  r  s       r3   test_detrend_external_nd_0$TestWelch.test_detrend_external_nd_0c  sf    IIb

+d2IIhKK1a QNP2==+%8r6   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 Nrn   rS   r	  ro   rq   r   rr   r   r"   vIh%<=r   )	r)   r?   ru   rv   r   r   rw   r   rx   ry   s         r3   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Ir6   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 Nrn   rS   r	  r   rq   r   )r   r   r   r"   r<  r   r   )r)   r?   ru   rv   r   r   rw   r   ry   s         r3   r   TestWelch.test_nd_axis_0t  s    IIb

+d2IIhQ+177G,!Aa%!AaE(UCq1Qx,a!eH5u=r6   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'   rq   r   r   r   re   r   )
r)   r*   r   r
   r   r   r   rw   rg   rh   r   s           r3   r   TestWelch.test_window_external}  s    HHRL!!QFA.*q"c40&q-&q-288T*288T*j%#q	*##FB/j%'4	1r6   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   rw   r)   r   r   s       r3   r   TestWelch.test_empty_input  sc    Ry177D)177D)+E%)DAqww.qww. ,r6   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   rw   r   s       r3   r   %TestWelch.test_empty_input_other_axis  s>    %E%q1DAqww.qww. &r6   c                 X   [         R                  " S5      nSUS'   [        5        nUR                  [        S5        [        USS9u  p4[        USSS9u  pVS S S 5        [        USS	9u  px[        WU5        [        WU5        [        WU5        [        WU5        g ! , (       d  f       NK= f)
Nr'   r"   r   z$nperseg=256 is greater than signal.*r   r      r   r   r   )r)   r*   r   filterUserWarningr   r   	r.   r/   supr0   r1   r  r  r  r  s	            r3   test_short_dataTestWelch.test_short_data  s    HHQK!  CJJ{$JK&)DA1FC8FB ! q!$22BB !    0B
B)c           
      "   [        [        [        [        R                  " S5      S[        R
                  " / SQ5      5        [        [        [        [        R                  " S5      S[        R                  " S5      R                  S5      5        g Nre   r"   )r"   r"   r"   r"   r"   rs   )rp   r   )rg   rh   r   r)   r*   r   r?   rv   ri   s    r3   test_window_long_or_nd TestWelch.test_window_long_or_nd  sQ    j%!a+9NOj%!aiil**51	3r6   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!   re   r   noverlap)	r   gUUUUUU?UUUUUU?皙?r[  r\  r[  r\  gUUUUUU?g-q=r=   )r)   r*   r   r   r   r-   s        r3   test_nondefault_noverlap"TestWelch.test_nondefault_noverlap  sI    HHRL#A#QQ/HH  5)r6   c           	      ^    [        [        [        [        R                  " S5      SSSS5        g Nre   r"   r   rp      )rg   rh   r   r)   r*   ri   s    r3   test_bad_noverlapTestWelch.test_bad_noverlap  s    j%!aAFr6   c                 V    [        [        [        [        R                  " S5      SSS9  g N   r   re   )r   r   )rg   rh   r   r)   r,   ri   s    r3   test_nfft_too_shortTestWelch.test_nfft_too_short  s    j%1aHr6   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!   r0   r"   r   r'   r   r#   r   r   r   r   )r)   r*   r   r   r+   r   r   rT   r-   s        r3   r   $TestWelch.test_real_onesided_even_32  s    HHR!!Q"2;;q#q12HH "#&(4d3177"#r6   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!   r0   r"   r   r'   r$   r   r   r   )gx:?gyѲI?r   gw0?r   r   r   )r)   r*   r   r   r?   r   r   rT   r-   s        r3   r   #TestWelch.test_real_onesided_odd_32  s    HHR!!Q"299S>#-.HH "#&(4d3177"#r6   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!   r0   r"   r   r'   Fr   rE   r   r   r   r)   r*   r   r   r   r   r   rT   r-   s        r3   r   TestWelch.test_real_twosided_32  s}    HHR!!Q5971c?+HH "#&( 	4d3177"#r6   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   rE   )g%?A2q?d^?rv  g~?rv  rv  ru  r0   r   r   zdtype mismatch, , rq  r-   s        r3   r   TestWelch.test_complex_32  s    HHR!!Q5971c?+HH FGJL4d3177""177)2aggY7	9r6   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 Nrf  r   rE   rp   r"   r%   r   r   r   rs      )r)   r*   r   r   r   )r.   r/   r   r0   fodd_fevens          r3   test_padded_freqsTestWelch.test_padded_freqs  s    HHRLD#za	*	"140AD1 !D#~A.140AD1 !r6   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 )Nrn   g     @rq   ,  rp   )r   bartlett)tukey皙?flattoprK   )fsr   r   rM   rN   r&   gMbP?r   )	rU   r)   r?   sinpir   r   sqrtr   )r.   Ar  r   fsigiittr/   r   r~  p_specfreqp_denss                r3   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r6   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   rangerv   ndimr   squeeze)	r.   x_flatr~  p_flatanewshaper/   p_plusp_minuss	            r3   test_axis_rollingTestWelch.test_axis_rolling  s    
		t&&M	qAtAvHHKx(Aa(IAqx0JA!11=!2AffHE r6   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   rg   rh   r-   s        r3   test_averageTestWelch.test_average&  sv    HHRL!!Q842;;q#q12HH674d3j%A4	6r6   c                 *   [         R                  " / SQ5      [         R                  " S5      Sp2n[        X2SSS9n[	        U4SS0UD6S	   n[	        U4SS
0UD6S	   n[        US-  5      U-  [        [        U5      5      S-  -  n[        Xe-  U5        g)znVerify the factor of ``sum(abs(window)**2)*fs / abs(sum(window))**2``
used in the `welch`  and `csd` docstrs. )rE   r   r   r   re   rf  FN)r  r   rD   r  rM   rN   r"   rK   rp   )r)   r   r,   dictr   sumabsr   )r.   r/   r   r  paramsr  r  p_facs           r3   test_ratio_scale_toTestWelch.test_ratio_scale_to2  s     XXm,bggaj"Mq6)6v6q9q7*77:CFBSX!11/r6   r   N)&r   r   r   r   r4   r@   rH   rP   r   r   r\   rb   rj   r  r  r)  r0  r8  r|   r   r   r   r   rO  rT  r]  rb  rg  r   r   r   r   r  r  r  r  r  r   r   r6   r3   r   r      s    4444444409
,999J>1"// 3
*GI	$	$
$
9"$',F"
60r6   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$S# r%S$ r&S%r'g&)'TestCSDi<  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'   rf  r   r#   ra  rS   r   r)   r*   r+   ra   r   r   r.   r/   yr0   cr  c1s          r3   test_pad_shorter_xTestCSD.test_pad_shorter_x=  s`    HHQKHHRLKK3"HHQR]]+Q2&r6   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 )Nrf  r'   r   r#   ra  rS   r   r  r  s          r3   test_pad_shorter_yTestCSD.test_pad_shorter_yH  s`    HHRLHHQKKK3"HHQR]]+Q2&r6   c                 j   [         R                  " / SQS5      n[        [        U5      SSS9n[        R
                  " U[         R                  " U5      40 UD6S   n[        R
                  " XSS 40 UD6S   n[        R
                  " USS U40 UD6S   n[        XCS-  5        [        XSS-  5        g)	zzTest zero-padding for input `x.shape[axis] != y.shape[axis]` for 1d arrays.

This test ensures that issue 23036 is fixed.
)re   r   r   re   boxcar)r  r   r   r"   Nr'   rp   )r)   tiler  lenr
   r   copyr   )r.   r/   kwX0X1X2s         r3   test_unequal_length_input_1D$TestCSD.test_unequal_length_input_1DS  s    
 GGM1%SVHa8ZZ2771:,,Q/ZZRa5'B'*ZZ"1q'B'*F#F#r6   c                    Sn[         R                  " SU-  5      R                  SUS5      nXSS2SSS24'   [        USUSSS	9n[        R
                  " X"R                  5       40 UD6S   n[        R
                  " X"SS2SS2SS24   40 UD6S   n[        R
                  " USS2SS2SS24   U40 UD6S   n[        XT5        [        Xd5        g)
zzTest zero-padding for input `x.shape[axis] != y.shape[axis]` for 3d arrays.

This test ensures that issue 23036 is fixed.
r'   rs   rp   r   Nr   r  r"   )r  r   r   r  r   )r)   r*   rv   r  r
   r   r  r   )r.   nr/   r  r  r  r  s          r3   test_unequal_length_input_3D$TestCSD.test_unequal_length_input_3Da  s    
 HHUQY''1a0!Q'
QxDqIZZ668*r*1-ZZQAX;-"-a0ZZ!RaR(Q-"-a0r6   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        r3   r4   TestCSD.test_real_onesided_evenq  se    HHRL!!1#2;;q#q12HH " #4d3r6   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        r3   r@   TestCSD.test_real_onesided_odd{  se    HHRL!!1#299S>#-.HH " #4d3r6   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        r3   rH   TestCSD.test_real_twosided  sb    HHRL!!1E:71c?+HH F G4d3r6   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        r3   rP   TestCSD.test_real_spectrum  sg    HHRL!!1J72;;q#q12HH " #4d3r6   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*   rU   r   r   r+   r   r-   s        r3   r   "TestCSD.test_integer_onesided_even  sh    HHRs#!!1#2;;q#q12HH " #4d3r6   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*   rU   r   r   r?   r   r-   s        r3   r   !TestCSD.test_integer_onesided_odd  sh    HHRs#!!1#299S>#-.HH " #4d3r6   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*   rU   r   r   r   r   r-   s        r3   r\   TestCSD.test_integer_twosided  se    HHRs#!!1E:71c?+HH F G4d3r6   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*   ra   r   r   r   r   r-   s        r3   rb   TestCSD.test_complex  si    HHR'!!1E:71c?+HH F G4d3r6   c           	          [        [        [        [        R                  " S[        R
                  5      [        R                  " S[        R
                  5      SSS9  g r  )rg   rh   r   r)   r*   ra   r,   ri   s    r3   rj   TestCSD.test_unk_scaling  s6    j#rxx2=='Agga/	Kr6   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?   ru   r   r   r  r  s       r3   r  TestCSD.test_detrend_linear  s@    IIb

+d21X62==+%8r6   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 )	Nrq   rS   r	  Fr  c                     U $ r  r   r  s    r3   r  ,TestCSD.test_no_detrending.<locals>.<lambda>  s    r6   r<   r=   )r)   r?   ru   r   r   r  s         r3   r  TestCSD.test_no_detrending  sO    IIb

+d2Q2u5Q2{;U+U+r6   c                     [         R                  " S[         R                  S9S-   n[        XSS S9u  p#[	        U[         R
                  " U5      SS9  g )Nrq   rS   r	  c                 ,    [         R                  " U SS9$ r!  r$  r%  s    r3   r  /TestCSD.test_detrend_external.<locals>.<lambda>      v~~c'Dr6   r  r<   r=   r  r  s       r3   r)  TestCSD.test_detrend_external  sD    IIb

+d21DF2==+%8r6   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,  rS   r	  r-  rq   c                 ,    [         R                  " U SS9$ r!  r$  r%  s    r3   r  5TestCSD.test_detrend_external_nd_m1.<locals>.<lambda>  r  r6   r  r<   r=   )r)   r?   ru   rv   r   r   r  r  s       r3   r0  #TestCSD.test_detrend_external_nd_m1  sR    IIb

+d2IIh1DF2==+%8r6   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 )Nrn   rS   r	  ro   rp   r   rq   c                 .    [         R                  " U SSS9$ r4  r$  r%  s    r3   r  4TestCSD.test_detrend_external_nd_0.<locals>.<lambda>  s    v~~c'Lr6   r6  r<   r=   )r)   r?   ru   rv   r7  r   r   r  r  s       r3   r8  "TestCSD.test_detrend_external_nd_0  sf    IIb

+d2IIhKK1a 1!LN2==+%8r6   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?   ru   rv   r   r   rw   r   rx   ry   s         r3   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Ir6   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?   ru   rv   r   r   rw   r   ry   s         r3   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=r6   c           
      4   [         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  [        R                  " [        SS9   [        XSSS9  S S S 5        g ! , (       d  f       g = f)Nr!   r"   r   r'   rq   r   r   rB  rI  r   zParameter nperseg=0.*r   )r)   r*   r   r
   r   r   r   rw   rg   rh   r   r	   r   s           r3   r   TestCSD.test_window_external  s    HHRL!!1VQ'*Q2sD1&q-&q-288T*288T*j#q#s	,##FB/j#q'4	)]]:-DEa# FEEs   4D		
D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 )Nrq   r   r   )r   r   )r   r)   r*   r   rw   r   r,   r   s       r3   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*r6   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   )rq   rq   r   )rq   r   r"   )rq   r   r   )r   r)   r   r   rw   r*   r   s       r3   r   #TestCSD.test_empty_input_other_axis!  s    %Erxxa@DAqww.qww. &
 288I&(:C177H-177H-288H%rxx	':C177H-177H-r6   c                 X   [         R                  " S5      nSUS'   [        5        nUR                  [        S5        [        XSS9u  p4[        XSSS9u  pVS S S 5        [        XSS	9u  px[        WU5        [        WU5        [        WU5        [        WU5        g ! , (       d  f       NK= f)
Nr'   r"   r   z+nperseg=256 is greater than signal length.*r   r   rI  rJ  r   )r)   r*   r   rK  rL  r   r   rM  s	            r3   rO  TestCSD.test_short_data/  s    HHQK!  CJJ{$QRqF+DAfc:FB ! Q1%22BB ! rQ  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 rS  )	rg   rh   r   r)   r*   r,   r   r?   rv   ri   s    r3   rT  TestCSD.test_window_long_or_nd?  sh    j#rxx{BGGAJhh{+	-j#rxx{BGGAJiil**51	3r6   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 rW  )r)   r*   r   r   r   r-   s        r3   r]   TestCSD.test_nondefault_noverlapE  sI    HHRL#A#1a0HH  5)r6   c           
          [        [        [        [        R                  " S5      [        R
                  " S5      SSSS5        g r`  )rg   rh   r   r)   r*   r,   ri   s    r3   rb  TestCSD.test_bad_noverlapM  s+    j#rxx{BGGAJ6	r6   c           	          [        [        [        [        R                  " S5      [        R
                  " S5      SSS9  g re  )rg   rh   r   r)   r,   r*   ri   s    r3   rg  TestCSD.test_nfft_too_shortQ  s'    j#rwwr{BHHRLq	!r6   c                     [         R                  " [        SS9   [        [        R
                  " S5      [        R
                  " S5      SS9  S S S 5        g ! , (       d  f       g = f)Nzx and y cannot be broadcast.*r   )r"   r'   r"   )rp   r'   re   r   )r   r	   rh   r   r)   r,   ri   s    r3   test_incompatible_inputs TestCSD.test_incompatible_inputsU  s;    ]]:-LM	"BGGFOQ? NMMs   4A
A%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 rj  )r)   r*   r   r   r+   r   r   rT   r-   s        r3   r   "TestCSD.test_real_onesided_even_32Z  s    HHR!!1#2;;q#q12HH "#&(4d3177"#r6   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 rm  )r)   r*   r   r   r?   r   r   rT   r-   s        r3   r   !TestCSD.test_real_onesided_odd_32e  s    HHR!!1#299S>#-.HH "#&(4d3177"#r6   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 rp  r)   r*   r   r   r   r   r   rT   r-   s        r3   r   TestCSD.test_real_twosided_32p  s}    HHR!!1E:71c?+HH "#&( 	4d3177"#r6   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 rt  r  r-   s        r3   r   TestCSD.test_complex_32|  s    HHR!!1E:71c?+HH FGJL4d3177""177)2aggY7	9r6   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 rz  )r)   r*   r,   r   r   r   )r.   r/   r  r   r0   r}  r~  r  s           r3   r  TestCSD.test_padded_freqs  s    HHRLGGBKD#za	*	"aAD1qQT2 !D#~A.aAD1qQT2 !r6   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 )NrX  r'   meanF)r   r  rD   r  )r)   r  r  r  r   r   )r.   r/   r  r~  p_samep_copieds         r3   test_copied_dataTestCSD.test_copied_data  s    IIOOBFFHa(-/	!6*/1)a(-/	!8*/1)r6   r   N)(r   r   r   r   r  r  r  r  r4   r@   rH   rP   r   r   r\   rb   rj   r  r  r)  r0  r8  r|   r   r   r   r   rO  rT  r]  rb  rg  r  r   r   r   r   r  r"  r   r   r6   r3   r  r  <  s    		$  44444444K9
,999J>$&+,.  3*!@
	$	$
$
9"&*r6   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 Nrn   r   r#   rs   rq   r   )r)   r  r  r  r+   r,   r   r   r.   r/   r  r0   Cr  C1s          r3   test_identical_input"TestCoherence.test_identical_input  s^    IIOOBGGAJKK3"GGAJ1,r6   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          r3   test_phase_shifted_input&TestCoherence.test_phase_shifted_input  sX    IIOOBBKK3"GGAJ1,r6   r   N)r   r   r   r   r+  r.  r   r   r6   r3   r%  r%    s    		r6   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  rE   r  g      ?r!   rp   r%   r   )r)   r  r  r   r   r   r  )r.   r/   r  r   r   rZ  r0   r~  PfwPws              r3   test_average_all_segments)TestSpectrogram.test_average_all_segments  sg    IIOOD! aVh?aqfx8+R0r6   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  rE   r3  r!   rp   rY  )r$   )r$   I   r'   r   i   )
r)   r  r  r   r
   r   r   rw   rg   rh   )r.   r/   r  r   r   rZ  r0   r~  r4  r   r   Per   s                r3   r   $TestSpectrogram.test_window_external  s    IIOOD! aVh?a4sD1E	r288T*288V,j+qq	*##OT:j+q4	1r6   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  rE   r3  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  r0   r~  r1   rN  r  r  r  r  f3p3s                r3   rO  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   r7  r   rO  r   r   r6   r3   r1  r1    s    11& r6   r1  c                   z    \ 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)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&   rE   r#   d     ffffff?# {Gz?      $@r"   r   rS   weightsN)r)   r  r  RandomStaterandr+   r  r   argmax	ones_likerT   )r.   amplwphininnoutr1   rngrtr  r0   r4  deltas                 r3   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/r6   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&   rE   r#   rE  rF  rG  rH  rI  g      @r   r  r  )r)   r  r  rL  rM  r+   r  r   r  rw   r   )r.   rP  rQ  rR  rS  rT  r1   rU  rV  rW  r  r0   pgrams                r3   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5r6   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&   rE   r#   rD  rE  rF  g333333?rG  rH  rI  T)	precenterF)r`  floating_mean)
r)   r  r  rL  rM  r+   r  r   r  r   )r.   rP  rQ  rR  rS  rT  r1   offsetrU  rV  rW  r  r0   r\  pgram2s                  r3   test_precenterTestLombscargle.test_precenterC  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 	&r6   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&   rE   r#   rD  rE  rF  rG  rH  rI  T	normalizer   rp   )r)   r  r  rL  rM  r+   r  r   rO  floatrw   r  r   max)r.   rP  rQ  rR  rS  rT  r1   rU  rV  rW  r  r0   r\  rc  rK  YY_hatYYscale_to_uses                     r3   test_normalizeTestLombscargle.test_normalizek  s4    BEEk ii##G,HHSMKKRUU
CIs3AF; 266!#)$$ KKc4( A!$Q15 ,,q/%
"33+/&&("QWWQZ-( 	,f5v,r6   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"   rp   r   r  r   rJ  )r)   r+   rg   rh   r   repeatexpand_dimsr.   rW  r  r0   rK  s        r3   test_wrong_shape TestLombscargle.test_wrong_shape  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Hr6   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   rq   rE  F)endpointre   2   i  r  rp   )r)   r+   r  r   r  )r.   rW  r  r0   s       r3   test_lombscargle_atan_vs_atan2.TestLombscargle.test_lombscargle_atan_vs_atan2  sX     KK2te4FF1Q3KKK2sU3c9A!A#bee)$r6   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  rp   rJ  )r)   r+   rg   rh   r   rs  s        r3   test_wrong_shape_weights(TestLombscargle.test_wrong_shape_weights  s_     KK1a KK1a KK1a 3&++aA&j+qQHr6   c           	          [         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[        [        [
        XX4S9  g Nr"   rJ  r)   r*   r,   rg   rh   r   rs  s        r3   test_zero_division_weights*TestLombscargle.test_zero_division_weights  sF     HHQKHHQKGGAJ((1+j+qQHr6   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&   rE   r   rD  rE  rF  rG  rH  rI  Frg  Tpowerrh  	amplitudelombrp   )r)   r  rL  rM  r+   r  r  r   r   rO  ri  rw   r  wherer  rg   rh   )r.   rP  rQ  rR  rS  rT  r1   rU  rV  rW  r  r0   pgram_false
pgram_truepgram_power
pgram_norm	pgram_amprK  rk  rl  f_is                        r3   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!Dr6   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&   rE   r#   rD  rE  rF  333333@rG  rH  rI  T)ra  )	r)   r  r  rL  rM  r+   r  r   r   r.   rP  rQ  rR  rS  rT  r1   rb  rU  rV  rW  r  r0   r\  pgram_offsets                  r3   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 	,r6   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&   rE   r   rE  rF  rp   rG  rH  rI  TFrh  ra  r#   r)   r  rL  rM  r+   r  cosr   r  s                  r3   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$%$r6   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&   rE   Q?rD  rE  rF  r  rG  rH  rI  r   r  Tr  )r)   r  rL  rM  r+   r  r  r  r   r   r  angle)r.   rP  rQ  rR  rS  rT  r1   rb  rU  rV  rW  r  r0   f_indxr\  s                  r3   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#6r6   c           	          [         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      * n[        [        [
        XX4S9  g r  r  rs  s        r3   test_negative_weight$TestLombscargle.test_negative_weight`  sH     HHQKHHQKGGAJ771:+j+qQHr6   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   rE  rp   T)r`  rh  )r)   r+   r  r   )r.   rW  r  periodsangular_freqs        r3   test_list_inputTestLombscargle.test_list_inputi  sE    >@ ++c3-255y7*A,$$Gr6   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&   rE   r  rD  i  rF  r   rG  rH  rI  Tr  -C6?r  )r.   rP  rQ  rR  rS  rT  r1   rb  rU  rV  rW  r  r0   r\  s                 r3   test_zero_freqTestLombscargle.test_zero_freq  s    
  ii##G,HHSMKKRUU
CIs3AF; 266!#)$$v- KK3% A!t4H Qx$r6   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&   rp   re   )r  r)   r,   r  r  r   )r.   rW  r  freqss       r3   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c                    SnSnS[         R                  -  nSnSnSn[         R                  R                  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[         R                  " U
5      nU	R                  5       nU
R                  5       nUR                  5       nUR                  5       n[        XUS	US
9  [        X5        [        X5        [        X5        [        UU5        g )Nr&   rE   r#   rD  rE  rF  rH  rI  T)r`  rK  )
r)   r  r  default_rngr+   r  rO  r  r   r   )r.   rP  rQ  rR  rS  rT  r1   rU  rV  rW  r  r0   rK  t_orgy_orgf_orgweights_orgs                    r3   test_input_mutation#TestLombscargle.test_input_mutation  s   
 BEEk ii##%JJsOKKRUU
CIs3AF; 266!#)$$ KKc4(,,q/ llnA!tW= 	1$1$1$7K0r6   r   N)r   r   r   r   rY  r]  rd  rn  rt  ry  r|  r  r  r  r  r  r  r  r  r  r  r   r   r6   r3   rB  rB    sg    &1P6B&'P"-HIB%II/Eb-> &D"7HIFHP >!"%1r6   rB  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	   rh   r   s    r3   chk_VE.TestSTFT.test_input_validation.<locals>.chk_VE  s    
 ==599r6   z"nperseg must be a positive integerr   ir   z#noverlap must be less than nperseg.rq   rn   zwindow must be 1-D)rp   rp   z"window must have length of npersegz"noverlap must be less than npersegz&noverlap must be a nonnegative integerrX  ir  rp   r   z>value specified for nperseg is different from length of windowrI  rJ  i r   rY  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   rZ  r   z/Must specify differing time and frequency axes!	time_axis	freq_axisz=Unknown value for mode foo, must be one of: \{'psd', 'stft'\}rf   )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'\]!rL   )r   r)   r,   r   r*   r  istftr   warnsrL  r   )r.   r  r/   zrM   s        r3   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)r  rq   r   r  rq   r$   r  3      r   rI     r   rI     blackmanr     r  r#   rI  rX  r   rI     
{}, {}, {}Tr  )formatr   r   )r.   settingssettingmsgs       r3   test_check_COLATestSTFT.test_check_COLA]  s6    	  G%%w/Cz73SA  r6   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  rq   ra  r  )r  r  rq   r  r  )r   rI  %   r  )r  r  {   r  )r  rI  &   r  )r   rI  '   r  Tr  r!   r   rp   )r   rX  r   F)r  r   r   r)   r,   r  )r.   settings_passr  r  w_failsettings_fails         r3   test_check_NOLATestSTFT.test_check_NOLAm  s      %G%%w/Cz73SA % ssS[#f+*:;#
 %G%%w/C
G 4cB %r6   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  rE   r   r!   r'   F)paddedrD   r  rK   )rD   rM   r  rp   r%   r   )	r)   r  rL  r  r  r   r   r  r  )r.   rU  r/   r  r   r   rZ  r0   r~  Zr5  r6  s               r3   r7  "TestSTFT.test_average_all_segments  s    ii##D)IIdO
 qfx',t=aqfx)5: 	q	126;r6   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  rE   r   r!   r'   )r%   r"   r"   r   r   r%   r  )	r)   r  rL  r  r  rv   r  Tr   )r.   rU  r/   r  r   r   rZ  r  t1Z1r  t2Z2t3x1t4x2s                    r3   test_permute_axesTestSTFT.test_permute_axes  s    ii##D)IIdO!(;
!))J/W "
 rv9rttRa!#%B 	q!QzN+Bq!QwK(r6   rM   rK   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  rD  rq   r   r  rD  rq   r$   )r  e   r  r  r   r  rI  r  )r    rI  rX  )r   r  rI  r  rq   F)r   rZ  r   r  r  rM   )r   rZ  r   rM   rw  r  	r)   r  rL  r?   r  sizer  r  r   )r.   rM   rU  r  r   Nr   rZ  rW  r/   r~  zztrxrr  s                  r3   test_roundtrip_realTestSTFT.test_roundtrip_real  s    ii##D) -5(Fw		!A399QVV$$AA#)4$+-HAq 2"(;FB HBxj)CA3/A3/ -5r6   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   rp   rI  )r   rI  rX  r   rw  rq   Tr*   r   rZ  r   r  r  r  NOLAr   r   rZ  r   r  )r)   r  rL  r,   r  r   r?   r  r
  r  r   r  rL  r  allclose)r.   rU  r  r  r   r  r   rZ  r  rW  r/   r~  r  r  r  s                  r3   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  rD  rq   r   )r  r  r  r  )r   r  rI     )r  r  rI     )r   r  rI  r   rw  rq   Tr*   r  r  r  )r)   r  rL  r   r   r?   r  r
  r  r  r   r  )r.   rU  r  r   r  r   rZ  r  rW  r/   r~  r  r  r  s                 r3   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# -5r6   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  rq   Fr   rZ  r   r  r  r  rw  r  r  gh㈵>)r  r   r>   )r)   r  rL  r?   r  r
  astypefloat32r  r  r   r   rT   r.   rU  r  r   r  r   rZ  rW  r/   r~  r  r  r  r  s                 r3   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'( -5r6   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  rq   y              $@F)r   rZ  r   r  r  rD   rM   )r   rZ  r   input_onesidedrM   rw  r  z9Input data is complex, switching to return_onesided=FalseT)r)   r  rL  r?   r  r
  r  r  r   r   rK  rL  )r.   rM   rU  r  r   r  r   rZ  rW  r/   r~  r  r  r  r  rN  s                   r3   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  rq   Tr  F)rZ  r   r  )evenoddconstantr*   rw  r  r	  )r.   rU  r  r   r  r   rZ  rW  r/   r~  r  r  r  zz_extxr_extr  s                   r3   !test_roundtrip_boundary_extension*TestSTFT.test_roundtrip_boundary_extensionO  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 -5r6   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  rq   r   )r   rE  rI  r  rq   Tr  )rZ  r   rw  r  r	  r!  s                 r3   test_roundtrip_padded_signal%TestSTFT.test_roundtrip_padded_signalp  s    ii##D) +,
 -5(Fw		!A399QVV$$AA#)4FHAq 2@FBHBxj)CA'166{C8A'166{C8 -5r6   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  rD  rq   r   !   )r  r  rI  rX  r  rq   y              ?re   T)r   rZ  r   r   r  r  F)r   rZ  r   r   r  r  rD   )r   rZ  r   r   )r   rZ  r   r   r%  rw  r  )r)   r  rL  r?   r  r
  expr  r  r  r   )r.   rU  r  r   r  r   rZ  r   rW  r/   xcr~  r  zcr  r  xcrr  s                     r3   test_roundtrip_padded_FFT"TestSTFT.test_roundtrip_padded_FFT  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;r6   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  rL  r  r  r  rv   r  r   r  r  r  r   )r.   rU  r  r~  z_flatr  r  r/   z_plusz_minusx_transpose_mx_transpose_ps               r3   r  TestSTFT.test_axis_rolling  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Nr6   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  rS   r  rI  rp   r)  rK   )r  rM   Tr"   ?   Nr%   r#   rX  A   r   B   r=   Fr  )rD   r  rM   r   )r%  r  rM   r<     )r)   r*   complexr   r   r  r  r  r  r   r  finforT   
resolutionrealimagrw   conj)r.   Xr/   power_xZsr  Zppsd_ZpZp0Zp1s2psd_Zp01s               r3   test_roundtrip_scalingTestSTFT.test_roundtrip_scaling  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r6   r   N)r   r   r   r   r   r   thread_unsafer  r  r  r7  r  parametrizer  r  r  r"  r&  r.  r1  r9  r  rW  r   r   r6   r3   r  r  	  s    [[P& P&dB C><(). [[YU(;<0 =06 [[8 869<)* [[[[YU(;<), = ),V8B9,!2FO4?r6   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   r  rF   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   rp   N)r   r  r  r)   r  r^  r]  r   r_  r   r`  taura  rb  )r.   r0   r`  s      r3   setup_method/TestSampledSpectralRepresentations.setup_method  s    TVVTVV$a **Q,/hh5\
_
 XX

A-1
ZZ]Q&
r6   returnc                 4    U R                   U R                  -  $ )zDuration of signal. r  r  ri   s    r3   rd  &TestSampledSpectralRepresentations.tau#  s     vvr6   c                 :    SU R                   U R                  -  -  $ )z
Bin width r"   ri  ri   s    r3   delta_f*TestSampledSpectralRepresentations.delta_f(  s     DFFTVVO$$r6   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. rp   r  r  r"   N)r   r]  r)   ptpr_  r  r  ra  r`  rK  rL  r  rb  )r.   sum_X_ref_squareds     r3   test_reference_signal8TestSampledSpectralRepresentations.test_reference_signal-  s     	$**bffTZZ&8sCTZZ1_!55tzzB  

 2TZZ__a5G GHtvv(994::F$&&!)&77Dr6   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)symrp   r"   )r  r   r  rD   rM   rK   rN   r=   r   rY  Nr   )r   r  r  r  r)   r  rK  rL  r   r_  r   rd  r^  r]  r  rl  ra  rb  r  r   rI  rT   rJ  rj  r  r   )r.   rQ  c_ampc_rmsXwX_ESDX_PSDr  r~  P_magP_psd	float_ress               r3   test_windowed_DFT4TestSampledSpectralRepresentations.test_windowed_DFT9  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	3r6   )ra  rb  r`  r^  r_  N)r   r   r   r   __doc__r  rU   __annotations__r  ri  r]  r^  r)   ndarrayre  propertyrd  rl  rq  r}  r   r   r6   r3   r\  r\    s     AsKAuOE5CL::::LL' U   % % %
E$3r6   r\  )2r   numpyr)   numpy.testingr   r   r   r   r   r   r   r	   rg   scipyr
   scipy._lib._array_apir   	scipy.fftr   r   r   r   scipy.integrater   scipy.signalr   r   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%  r1  rB  r  r\  r   r6   r3   <module>r     s    
 N N  *  1 3 3 %? ? ? % 6 N OZ' Z'zE0 E0N
m* m*` 03  3 jM1 M1`y yxX3 X3r6   