
    Џkh:                    |   d dl Z d dlZd dlmZmZmZmZmZm	Z	 d dl
Z
d dl
mZ d dlmZ d dlmZ d dlmZmZmZmZ d dlmZ d dlmZmZmZmZmZmZmZm Z  d d	l!m"Z" d d
l#m$Z$ d dl%m&Z' d dl%m(Z)  G d d      Z* G d d      Z+ G d d      Z, G d d      Z- G d d      Z. G d d      Z/ G d d      Z0 G d d      Z1y)    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                   D   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zej                  j                  ej                   d
k  d      d        Zej                  j                  ej                   d
k  d      d        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestPeriodogramc                    t        j                  d      }d|d<   t        |      \  }}t        |t        j                  ddd             t        j
                  d      }d|d<   |dxx   dz  cc<   |dz  }t        ||       y )	N      r         ?	          @   npzerosr   r   linspaceonesselfxfpqs        \/var/www/teggl/fontify/venv/lib/python3.12/site-packages/scipy/signal/tests/test_spectral.pytest_real_onesided_evenz'TestPeriodogram.test_real_onesided_even   sr    HHRL!1~12;;q#q12GGAJ!	"	Q1    c                     t        j                  d      }d|d<   t        |      \  }}t        |t        j                  d      dz         t        j
                  d      }d|d<   |dz  }t        ||d	       y )
N   r!   r          @      .@r&   ?V瞯<atol)r(   r)   r   r   aranger+   r,   s        r2   test_real_onesided_oddz&TestPeriodogram.test_real_onesided_odd$   sg    HHRL!1~1299S>$./GGAJ!	X15)r4   c                     t        j                  d      }d|d<   t        |d      \  }}t        |t	        dd             t        j
                  dd      }d|d<   t        ||       y )Nr    r!   r   Freturn_onesided      ?      ?)r(   r)   r   r   r   fullr,   s        r2   test_real_twosidedz"TestPeriodogram.test_real_twosided.   s\    HHRL!1e4172s+,GGB!1r4   c                     t        j                  d      }d|d<   t        |d      \  }}t        |d      \  }}t        |t        j                  ddd             t        ||d	z         y )
Nr    r!   r   spectrumscalingdensityr"   r#   g      0@)r(   r)   r   r   r*   )r-   r.   r/   r0   gr1   s         r2   test_real_spectrumz"TestPeriodogram.test_real_spectrum7   s]    HHRL!1j111i012;;q#q121T6"r4   c                    t        j                  dt              }d|d<   t        |      \  }}t	        |t        j
                  ddd             t        j                  d      }d|d<   |dxx   dz  cc<   |d	z  }t	        ||       y )
Nr    dtyper!   r   r"   r#   r$   r%   r&   )r(   r)   intr   r   r*   r+   r,   s        r2   test_integer_evenz!TestPeriodogram.test_integer_even?   su    HHRs#!1~12;;q#q12GGAJ!	"	Q1r4   c                     t        j                  dt              }d|d<   t        |      \  }}t	        |t        j
                  d      dz         t        j                  d      }d|d<   |dz  }t	        ||d	
       y )Nr6   rN   r!   r   r7   r8   r&   r9   r:   r;   )r(   r)   rP   r   r   r=   r+   r,   s        r2   test_integer_oddz TestPeriodogram.test_integer_oddJ   sj    HHRs#!1~1299S>$./GGAJ!	X15)r4   c                     t        j                  dt              }d|d<   t        |d      \  }}t	        |t        dd             t        j                  dd      }d|d<   t	        ||       y )	Nr    rN   r!   r   Fr@   rB   rC   )r(   r)   rP   r   r   r   rD   r,   s        r2   test_integer_twosidedz%TestPeriodogram.test_integer_twosidedT   s_    HHRs#!1e4172s+,GGB!1r4   c                     t        j                  dt         j                        }d|d<   t        |d      \  }}t	        |t        dd             t        j                  dd      }d|d<   t	        ||       y )Nr          ?       @r   Fr@   rB         ?)r(   r)   
complex128r   r   r   rD   r,   s        r2   test_complexzTestPeriodogram.test_complex]   sc    HHR'!1e4172s+,GGB!!1r4   c                 v    t        t        t        t        j                  dt        j
                        d       y )N   foorH   )assert_raises
ValueErrorr   r(   r)   rY   r-   s    r2   test_unk_scalingz TestPeriodogram.test_unk_scalingf   s"    j+rxx2==/I	r4   l        zOn some 32-bit tolerance issue)reasonc                    t        j                  dt         j                        }|j                  d      }d|d d d d df<   t	        |      \  }}t        |j                  d       t        |ddd d f   |ddd d f   d       t	        |ddd d f         \  }}t        |t         j                  d d f   |dd d f   d       y )	N   rN      r!   
   rB   r   rf   r!      r!   <   )	r(   r)   float64reshaper   r   shaper   newaxisr-   r.   r/   r0   f0p0s         r2   test_nd_axis_m1zTestPeriodogram.test_nd_axis_m1j   s    
 HHRrzz*IIh!Aa%1~1177I.&q1Qx1Qq52>Qq1uX&B&r"**Q,'71Q3Dr4   c                 b   t        j                  dt         j                        }|j                  d      }d|dd d d d f<   t	        |d      \  }}t        |j                  d       t        |d d ddf   |d d ddf   d	       t	        |d d ddf         \  }}t        ||d d ddf          y )
Nrd   rN   rg   rf   r!   rB   r   axisri   rf   r!   r!   rj   )r(   r)   rk   rl   r   r   rm   r   ro   s         r2   test_nd_axis_0zTestPeriodogram.test_nd_axis_0x   s    
 HHRrzz*IIh!Aa%11%1177G,&q1Qx1Qq52>Qq1uX&B&r1QqU84r4   c                 .   t        j                  d      }d|d<   t        |dd      \  }}t        j                  dd      }t        |d|      \  }}t        ||       t        ||       t        j                  dd      }t        t        t        |d|       y )Nr    r!   r   rg   r       )r(   r)   r   r
   
get_windowr   r^   r_   r-   r.   r/   r0   winfepewin_errs           r2   test_window_externalz$TestPeriodogram.test_window_external   s    HHRL!1b&)1+QC(B&q"-&q"-##FB/j+q'	#r4   c                     t        j                  d      }d|d<   t        |      \  }}t        |d      \  }}t        ||d d d          t        ||d d d          t	        |j
                  d       y )Nr    r!   r   rz   nfftrf   )   )r(   r)   r   r   r   rm   )r-   r.   r/   r0   fppps         r2   test_padded_fftzTestPeriodogram.test_padded_fft   sg    HHRL!1~1QR(B2cc7#2cc7#288U+r4   c                     t        g       \  }}t        |j                  d       t        |j                  d       dD ]O  }t        t        j                  |            \  }}t        |j                  |       t        |j                  |       Q y Nr   r      r   r      rf   )r   r   rm   r(   emptyr-   r/   r0   rm   s       r2   test_empty_inputz TestPeriodogram.test_empty_input   sl    21177D)177D)+ 	/Erxx/DAqqww.qww.	/r4   c                     dD ]Q  }t        t        j                  |      d      \  }}t        |j                  |       t        |j                  |       S y Nr   r   r!   ru   )r   r(   r   r   rm   r-   rm   r/   r0   s       r2   test_empty_input_other_axisz+TestPeriodogram.test_empty_input_other_axis   sE    % 	/ErxxQ7DAqqww.qww.	/r4   c                 
   t        j                  d      }d|d<   t        |d      \  }}t        |t        j                  ddd             t        j
                  d      }d|d<   |dxx   d	z  cc<   |d
z  }t        ||       y )N   r!   r   r    r   r"   r#   r$   r%   r&   r'   r,   s        r2   test_short_nfftzTestPeriodogram.test_short_nfft   u    HHRL!12&12;;q#q12GGAJ!	"	Q1r4   c                 
   t        j                  d      }d|d<   t        |d      \  }}t        |t        j                  ddd             t        j
                  d      }d|d<   |dxx   dz  cc<   |d	z  }t        ||       y )
Nr    r!   r   r   r"   r#   r$   r%   r&   r'   r,   s        r2   test_nfft_is_xshapez#TestPeriodogram.test_nfft_is_xshape   r   r4   c                 N   t        j                  dd      }d|d<   t        |      \  }}t        |t        j                  ddd             t        j
                  dd      }d|d<   |dxx   dz  cc<   |d	z  }t        ||       t        |j                  |j                  k(         y )
Nr    r/   r!   r   r"   r#   r$   r%   r&   )r(   r)   r   r   r*   r+   r   rO   r,   s        r2   test_real_onesided_even_32z*TestPeriodogram.test_real_onesided_even_32   s    HHR!1~12;;q#q12GGAsO!	"	Q1177"#r4   c                 :   t        j                  dd      }d|d<   t        |      \  }}t        |t        j                  d      dz         t        j
                  dd      }d|d<   |dz  }t        ||d	
       t        |j                  |j                  k(         y )Nr6   r/   r!   r   r7   r8   r&   r9   Hz>r;   )r(   r)   r   r   r=   r+   r   rO   r,   s        r2   test_real_onesided_odd_32z)TestPeriodogram.test_real_onesided_odd_32   s    HHR!1~1299S>$./GGAsO!	X14(177"#r4   c                    t        j                  dd      }d|d<   t        |d      \  }}t        |t	        dd             t        j
                  ddd      }d|d<   t        ||       t        |j                  |j                  k(         y )	Nr    r/   r!   r   Fr@   rB   rC   r(   r)   r   r   r   rD   r   rO   r,   s        r2   test_real_twosided_32z%TestPeriodogram.test_real_twosided_32   sv    HHR!1e4172s+,GGB$!1177"#r4   c                    t        j                  dd      }d|d<   t        |d      \  }}t        |t	        dd             t        j
                  ddd	      }d|d<   t        ||       t        |j                  |j                  k(         y )
Nr    FrW   r   Fr@   rB   rX   r/   r   r,   s        r2   test_complex_32zTestPeriodogram.test_complex_32   sv    HHR!1e4172s+,GGB#&!1177"#r4   c                     t        j                  d      }d|d<   t        j                  dd      }d}t	        t
        |      5  t        ||       d d d        y # 1 sw Y   y xY w)	Nr    r!   r   r   rg   zOthe size of the window must be the same size of the input on the specified axismatchwindow)r(   r)   r
   r{   r^   r_   r   )r-   r.   r}   expected_msgs       r2   test_shorter_window_errorz)TestPeriodogram.test_shorter_window_error   sZ    HHRL!+=:\: 	'#&	' 	' 	's   AA$N)__name__
__module____qualname__r3   r>   rE   rL   rQ   rS   rU   rZ   ra   pytestmarkskipifsysmaxsizerr   rx   r   r   r   r   r   r   r   r   r   r   r    r4   r2   r   r      s    	*#	* [[u/  E	E [[u/  5	5
#,//		
$	$$$'r4   r   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#y")#	TestWelchc                     t        j                  d      }d|d<   d|d<   t        |d      \  }}t        |t        j                  ddd             t        j
                  g d      }t        ||d	d	
       y Nr    r!   r   r&   npersegr"   r   iKGUU?gS8?#q?r   #q?r   r<   rtolr(   r)   r   r   r*   arrayr,   s        r2   r3   z!TestWelch.test_real_onesided_even   si    HHRL!!Q"12;;q#q12HH " #14d3r4   c                     t        j                  d      }d|d<   d|d<   t        |d      \  }}t        |t        j                  d      dz         t        j
                  g d	      }t        ||d
d
       y Nr    r!   r   r&   r#   r         @      "@g9?g?p0?r   r   r   r   )r(   r)   r   r   r=   r   r,   s        r2   r>   z TestWelch.test_real_onesided_odd   si    HHRL!!Q"1299S>#-.HH " #14d3r4   c                     t        j                  d      }d|d<   d|d<   t        |dd      \  }}t        |t	        dd             t        j
                  g d      }t        ||d	d	
       y Nr    r!   r   r&   Fr   rA   rB   r   S8?r   r   r   r   r   r   r   r   )r(   r)   r   r   r   r   r,   s        r2   rE   zTestWelch.test_real_twosided
  sf    HHRL!!Q59171c?+HH F G14d3r4   c                     t        j                  d      }d|d<   d|d<   t        |dd      \  }}t        |t        j                  ddd             t        j
                  g d	      }t        ||d
d
       y Nr    r!   r   r&   rG   )r   rI   r"   r   )g      ?g-UU?.iqUU?r   g-UU?r   r   r   r,   s        r2   rL   zTestWelch.test_real_spectrum  sk    HHRL!!Q:612;;q#q12HH " #14d3r4   c                     t        j                  dt              }d|d<   d|d<   t        |d      \  }}t	        |t        j
                  ddd             t        j                  g d	      }t	        ||d
d
       y Nr    rN   r!   r   r&   r   r"   r   r   r   r   )r(   r)   rP   r   r   r*   r   r,   s        r2   test_integer_onesided_evenz$TestWelch.test_integer_onesided_even  sl    HHRs#!!Q"12;;q#q12HH " #14d3r4   c                     t        j                  dt              }d|d<   d|d<   t        |d      \  }}t	        |t        j
                  d      d	z         t        j                  g d
      }t	        ||dd       y Nr    rN   r!   r   r&   r#   r   r   r   r   r   r   )r(   r)   rP   r   r   r=   r   r,   s        r2   test_integer_onesided_oddz#TestWelch.test_integer_onesided_odd(  sl    HHRs#!!Q"1299S>#-.HH " #14d3r4   c                     t        j                  dt              }d|d<   d|d<   t        |dd      \  }}t	        |t        dd             t        j                  g d	      }t	        ||d
d
       y Nr    rN   r!   r   r&   Fr   rB   r   r   r   )r(   r)   rP   r   r   r   r   r,   s        r2   rU   zTestWelch.test_integer_twosided2  si    HHRs#!!Q59171c?+HH F G14d3r4   c                     t        j                  dt         j                        }d|d<   d|d<   t        |dd      \  }}t	        |t        dd             t        j                  g d      }t	        ||d	d	
       y Nr    rW   r   r&   Fr   rB   )g&>?#q?n)t?r   r   r   r   r   r   r   )r(   r)   rY   r   r   r   r   r,   s        r2   rZ   zTestWelch.test_complex<  sm    HHR'!!Q59171c?+HH F G14d3r4   c                 x    t        t        t        t        j                  dt        j
                        dd       y Nr\   r]   )rI   r   )r^   r_   r   r(   r)   rY   r`   s    r2   ra   zTestWelch.test_unk_scalingF  s$    j%!R]])C#Q	0r4   c                     t        j                  dt         j                        dz   }t        |dd      \  }}t	        |t        j
                  |      d       y Nrg   rN   {Gz?linearr   detrendr:   r;   r(   r=   rk   r   r   
zeros_liker-   r.   r/   r0   s       r2   test_detrend_linearzTestWelch.test_detrend_linearJ  sB    IIb

+d2QH512==+%8r4   c                     t        j                  dt         j                        dz   }t        |dd      \  }}t        |dd       \  }}t	        ||d       t	        ||d       y )	Nrg   rN   r   Fr   c                     | S Nr   r.   s    r2   <lambda>z.TestWelch.test_no_detrending.<locals>.<lambda>R  s     r4   r:   r;   )r(   r=   rk   r   r   r-   r.   f1p1f2p2s         r2   test_no_detrendingzTestWelch.test_no_detrendingO  sW    IIb

+d2q"e4Bq"k:BBU+BU+r4   c                     t        j                  dt         j                        dz   }t        |dd       \  }}t	        |t        j
                  |      d       y )Nrg   rN   r   c                 0    t        j                  | d      S Nl)typer
   r   segs    r2   r   z1TestWelch.test_detrend_external.<locals>.<lambda>Y      #)F r4   r   r:   r;   r   r   s       r2   test_detrend_externalzTestWelch.test_detrend_externalV  sF    IIb

+d2QFH12==+%8r4   c                     t        j                  dt         j                        dz   }|j                  d      }t	        |dd       \  }}t        |t        j                  |      d	       y )
N(   rN   r   rf   rf   rg   rg   c                 0    t        j                  | d      S r   r   r   s    r2   r   z7TestWelch.test_detrend_external_nd_m1.<locals>.<lambda>`  r  r4   r   r:   r;   )r(   r=   rk   rl   r   r   r   r   s       r2   test_detrend_external_nd_m1z%TestWelch.test_detrend_external_nd_m1\  sT    IIb

+d2IIhQFH12==+%8r4   c                    t        j                  dt         j                        dz   }|j                  d      }t        j                  |dd      }t        |ddd 	      \  }}t        |t        j                  |      d
       y )Nrd   rN   r   re   rf   r   rg   c                 2    t        j                  | dd      S Nr   r   )rv   r   r   r   s    r2   r   z6TestWelch.test_detrend_external_nd_0.<locals>.<lambda>h  s    !#)N r4   r   rv   r   r:   r;   )r(   r=   rk   rl   moveaxisr   r   r   r   s       r2   test_detrend_external_nd_0z$TestWelch.test_detrend_external_nd_0c  sh    IIb

+d2IIhKK1a QNP12==+%8r4   c                    t        j                  dt         j                        dz   }|j                  d      }t	        |d      \  }}t        |j                  d       t        |ddd d f   |d	dd d f   d
d
       t	        |ddd d f   d      \  }}t        |t         j                  d d f   |d	d d f   d
d
       y Nrd   rN   r   re   rg   r   rh   r   r!   vIh%<=r   )	r(   r=   rk   rl   r   r   rm   r   rn   ro   s         r2   rr   zTestWelch.test_nd_axis_m1k  s    IIb

+d2IIhQ#1177I.!Aa%!AaE(UCq1Qx,B2::a<(!AaC&u5Ir4   c                 `   t        j                  dt         j                        dz   }|j                  d      }t	        |dd      \  }}t        |j                  d       t        |d d ddf   |d d d	df   d
d
       t	        |d d ddf   d      \  }}t        ||d d d	df   d
d
       y Nrd   rN   r   rt   rg   r   )r   rv   rw   r!   r  r   r   )r(   r=   rk   rl   r   r   rm   r   ro   s         r2   rx   zTestWelch.test_nd_axis_0t  s    IIb

+d2IIhQ+1177G,!Aa%!AaE(UCq1Qx,BAa!eH5u=r4   c                    t        j                  d      }d|d<   d|d<   t        |ddd      \  }}t        j                  dd      }t        |d|d       \  }}t        ||       t        ||       t        |j                  d       t        |j                  d       t        t        t        |d|d	       t        j                  dd
      }t        t        t        |d|d        y )Nr    r!   r   r&   rg   r   r   r   r\   rz   )
r(   r)   r   r
   r{   r   r   rm   r^   r_   r|   s           r2   r   zTestWelch.test_window_external}  s    HHRL!!QFA.1*q"c40B&q"-&q"-288T*288T*j%#q	*##FB/j%'4	1r4   c                     t        g       \  }}t        |j                  d       t        |j                  d       dD ]O  }t        t        j                  |            \  }}t        |j                  |       t        |j                  |       Q y r   )r   r   rm   r(   r   r   s       r2   r   zTestWelch.test_empty_input  sl    Ry1177D)177D)+ 	/E%)DAqqww.qww.	/r4   c                     dD ]Q  }t        t        j                  |      d      \  }}t        |j                  |       t        |j                  |       S y r   )r   r(   r   r   rm   r   s       r2   r   z%TestWelch.test_empty_input_other_axis  sE    % 	/E%q1DAqqww.qww.	/r4   c                 d   t        j                  d      }d|d<   t               5 }|j                  t        d       t        |d      \  }}t        |dd      \  }}d d d        t        |d	      \  }}t        |       t        |       t        |       t        |       y # 1 sw Y   JxY w)
Nr&   r!   r   z$nperseg=256 is greater than signal.*r   r      r   r   r   )r(   r)   r   filterUserWarningr   r   	r-   r.   supr/   r0   r   r   r   r   s	            r2   test_short_datazTestWelch.test_short_data  s    HHQK!   	9CJJ{$JK&)DAq1FC8FB	9 q!$B22BB	9 	9s   8B&&B/c           
         t        t        t        t        j                  d      dt        j
                  g d             t        t        t        t        j                  d      dt        j                  d      j                  d             y Nr\   r!   )r!   r!   r!   r!   r!   ri   )rf   r   )r^   r_   r   r(   r)   r   r=   rl   r`   s    r2   test_window_long_or_ndz TestWelch.test_window_long_or_nd  sQ    j%!a+9NOj%!aiil**51	3r4   c                     t        j                  d      }d|d d d<   t        |dd      \  }}t        j                  g d      }t	        ||d	       y 
N@   r!   r&   r    r\   r   noverlap)	r   gUUUUUU?UUUUUU?皙?r'  r(  r'  r(  gUUUUUU?g-q=r;   )r(   r)   r   r   r   r,   s        r2   test_nondefault_noverlapz"TestWelch.test_nondefault_noverlap  sM    HHRL#A#QQ/1HH  15)r4   c           	      \    t        t        t        t        j                  d      dddd       y Nr\   r!   r   rf      )r^   r_   r   r(   r)   r`   s    r2   test_bad_noverlapzTestWelch.test_bad_noverlap  s    j%!aAFr4   c                 Z    t        t        t        t        j                  d      dd       y N   r   r\   )r   r   )r^   r_   r   r(   r+   r`   s    r2   test_nfft_too_shortzTestWelch.test_nfft_too_short  s    j%1aHr4   c                 8   t        j                  dd      }d|d<   d|d<   t        |d      \  }}t        |t        j                  ddd             t        j
                  g d	d      }t        ||d
d
       t        |j                  |j                  k(         y Nr    r/   r!   r   r&   r   r"   r   r   r   r   )r(   r)   r   r   r*   r   r   rO   r,   s        r2   r   z$TestWelch.test_real_onesided_even_32  s    HHR!!Q"12;;q#q12HH "#&(14d3177"#r4   c                 :   t        j                  dd      }d|d<   d|d<   t        |d      \  }}t        |t        j                  d      d	z         t        j
                  g d
d      }t        ||dd       t        |j                  |j                  k(         y Nr    r/   r!   r   r&   r#   r   r   r   )gx:?gyѲI?r   gw0?r   r   r   )r(   r)   r   r   r=   r   r   rO   r,   s        r2   r   z#TestWelch.test_real_onesided_odd_32  s    HHR!!Q"1299S>#-.HH "#&(14d3177"#r4   c                 $   t        j                  dd      }d|d<   d|d<   t        |dd      \  }}t        |t	        dd             t        j
                  g d	d      }t        ||d
d
       t        |j                  |j                  k(         y Nr    r/   r!   r   r&   Fr   rB   r   r   r   r(   r)   r   r   r   r   r   rO   r,   s        r2   r   zTestWelch.test_real_twosided_32  s    HHR!!Q59171c?+HH "#&( 	14d3177"#r4   c                 Z   t        j                  dd      }d|d<   d|d<   t        |dd      \  }}t        |t	        dd             t        j
                  g d	d
      }t        ||dd       t        |j                  |j                  k(  d|j                   d|j                          y Nr    r   rW   r   r&   Fr   rB   )g%?A2q?d^?r<  g~?r<  r<  r;  r/   r   r   zdtype mismatch, , r8  r,   s        r2   r   zTestWelch.test_complex_32  s    HHR!!Q59171c?+HH FGJL14d3177""177)2aggY7	9r4   c                    t        j                  d      }d}t        |d      d |dz  dz    }|dxx   dz  cc<   t        |d|      \  }}t        |d	|      \  }}t	        ||       t	        ||       d
}t        |d      d |dz   dz   }t        |d|      \  }}t        |d	|      \  }}t	        ||       t	        ||       y Nr0     rB   rf   r!   r$   r   r   r   ri      )r(   r)   r   r   r   )r-   r.   r   r/   fodd_fevens          r2   test_padded_freqszTestWelch.test_padded_freqs  s    HHRLD#za	*	"140aAD1q4 5!D#~A.140aAD1q4 5!r4   c           	         d}d}t        |dz        }d}t        ||z  |z        }t        j                  |      |z  }|t        j                  dt        j                  z  |z  |z        z  }dD ]  }t        ||||d      \  }	}
t        ||||d	      \  }}t        |
|   |dz  d
z         t        t        j                  t        ||            |t        j                  d      z  dz  d        y )Nrd   g     @rg   ,  rf   )r   bartlett)tukey皙?flattoprG   )fsr   r   rI   rJ   r%   gMbP?r   )	rP   r(   r=   sinpir   r   sqrtr   )r-   ArM  r   fsigiittr.   r   rD  p_specfreqp_denss                r2   test_window_correctionz TestWelch.test_window_correction  s    b"f+gr!"YYr]2bffQruuWT\"_%%E 
	'FaB&02IAv r76)24LD& F2J1S1BGGIfd$;<a
l1n!%'
	'r4   c                    t         j                  j                  d       t         j                  j                  d      }t	        |      \  }}t        d      D ]  }dgdz  }d||<   |j                  |      }t	        ||      \  }}t	        |||j                  z
        \  }}t        ||j                         |       t        ||j                         ||j                  z
          y )N     r   r!   r$   ru   err_msg)
r(   randomseedrandnr   rangerl   ndimr   squeeze)	r-   x_flatrD  p_flatanewshaper.   p_plusp_minuss	            r2   test_axis_rollingzTestWelch.test_axis_rolling  s    
		t&&M	6q 		FAtAvHHQKx(Aaa(IAvqqx0JAw!11=!2AaffHE		Fr4   c                 "   t        j                  d      }d|d<   d|d<   t        |dd      \  }}t        |t        j                  ddd             t        j
                  g d	      }t        ||d
d
       t        t        t        |dd       y )Nr    r!   r   r&   median)r   averager"   r   )rK  皙?        g&E    9rp  r   r   zunrecognised-average)r(   r)   r   r   r*   r   r^   r_   r,   s        r2   test_averagezTestWelch.test_average&  sz    HHRL!!Q8412;;q#q12HH6714d3j%A4	6r4   c                 2   t        j                  g d      t        j                  d      d}}}t        ||dd      }t	        |fddi|d	   }t	        |fdd
i|d	   }t        |dz        |z  t        t        |            dz  z  }t        ||z  |       y)zvVerify the factor of ``sum(abs(window)**2)*fs / abs(sum(window))**2``
        used in the `welch`  and `csd` docstrs. )rB   r   r   r   r\   r0  FN)rM  r   rA   r   rI   rJ   r!   rG   rf   )r(   r   r+   dictr   sumabsr   )r-   r.   r}   rM  paramsrX  rV  p_facs           r2   test_ratio_scale_tozTestWelch.test_ratio_scale_to2  s     XXm,bggaj"3CMq6)6v6q9q7*77:CFBSX!11/r4   N)$r   r   r   r3   r>   rE   rL   r   r   rU   rZ   ra   r   r   r  r  r  rr   rx   r   r   r   r  r!  r)  r-  r1  r   r   r   r   rF  rY  rk  rq  rx  r   r4   r2   r   r      s    4444444409
,999J>1"// 3
*GI	$	$
$
9"$',F"
60r4   r   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%y$)%TestCSDc                 "   t        j                  d      }t        j                  d      }t        j                  ddd      }t        j                  dt         j                        }t	        ||d      \  }}t        ||       t        ||       y )Nr&   r0  r   r"   r,  rN   r   r(   r)   r*   rY   r   r   r-   r.   yr/   cr   c1s          r2   test_pad_shorter_xzTestCSD.test_pad_shorter_x=  sh    HHQKHHRLKK3"HHQR]]+Q2&B22r4   c                 "   t        j                  d      }t        j                  d      }t        j                  ddd      }t        j                  dt         j                        }t	        ||d      \  }}t        ||       t        ||       y )Nr0  r&   r   r"   r,  rN   r   r|  r}  s          r2   test_pad_shorter_yzTestCSD.test_pad_shorter_yH  sh    HHRLHHQKKK3"HHQR]]+Q2&B22r4   c                 l   t        j                  g dd      }t        t        |      dd      }t	        j
                  |t        j                  |      fi |d   }t	        j
                  ||dd fi |d   }t	        j
                  |dd |fi |d   }t        ||dz         t        ||dz         y)	zTest zero-padding for input `x.shape[axis] != y.shape[axis]` for 1d arrays.

        This test ensures that issue 23036 is fixed.
        )r\   r   r   r\   boxcar)rM  r   r   r!   Nr&   rf   )r(   tilers  lenr
   r   copyr   )r-   r.   kwX0X1X2s         r2   test_unequal_length_input_1Dz$TestCSD.test_unequal_length_input_1DS  s    
 GGM1%SVHa8ZZ2771:,,Q/ZZ1Ra5'B'*ZZ"1q'B'*BF#BF#r4   c                    d}t        j                  d|z        j                  d|d      }||dddddf<   t        |d|dd	      }t	        j
                  ||j                         fi |d   }t	        j
                  ||ddddddf   fi |d   }t	        j
                  |ddddddf   |fi |d   }t        ||       t        ||       y)
zTest zero-padding for input `x.shape[axis] != y.shape[axis]` for 3d arrays.

        This test ensures that issue 23036 is fixed.
        r&   ri   rf   r   Nr   r  r!   )rM  r   r   r   rv   )r(   r)   rl   rs  r
   r   r  r   )r-   nr.   r  r  r  r  s          r2   test_unequal_length_input_3Dz$TestCSD.test_unequal_length_input_3Da  s    
 HHUQY''1a0!Q'
QxDqIZZ1668*r*1-ZZ1QAX;-"-a0ZZ!RaR(Q-"-a0BBr4   c                     t        j                  d      }d|d<   d|d<   t        ||d      \  }}t        |t        j                  ddd             t        j
                  g d      }t        ||d	d	
       y r   r(   r)   r   r   r*   r   r,   s        r2   r3   zTestCSD.test_real_onesided_evenq  sk    HHRL!!1a#12;;q#q12HH " #14d3r4   c                     t        j                  d      }d|d<   d|d<   t        ||d      \  }}t        |t        j                  d      dz         t        j
                  g d	      }t        ||d
d
       y r   )r(   r)   r   r   r=   r   r,   s        r2   r>   zTestCSD.test_real_onesided_odd{  sk    HHRL!!1a#1299S>#-.HH " #14d3r4   c                     t        j                  d      }d|d<   d|d<   t        ||dd      \  }}t        |t	        dd             t        j
                  g d      }t        ||d	d	
       y r   )r(   r)   r   r   r   r   r,   s        r2   rE   zTestCSD.test_real_twosided  sh    HHRL!!1aE:171c?+HH F G14d3r4   c                     t        j                  d      }d|d<   d|d<   t        ||dd      \  }}t        |t        j                  ddd             t        j
                  g d	      }t        ||d
d
       y r   r  r,   s        r2   rL   zTestCSD.test_real_spectrum  sm    HHRL!!1aJ712;;q#q12HH " #14d3r4   c                     t        j                  dt              }d|d<   d|d<   t        ||d      \  }}t	        |t        j
                  ddd             t        j                  g d	      }t	        ||d
d
       y r   )r(   r)   rP   r   r   r*   r   r,   s        r2   r   z"TestCSD.test_integer_onesided_even  sn    HHRs#!!1a#12;;q#q12HH " #14d3r4   c                     t        j                  dt              }d|d<   d|d<   t        ||d      \  }}t	        |t        j
                  d      d	z         t        j                  g d
      }t	        ||dd       y r   )r(   r)   rP   r   r   r=   r   r,   s        r2   r   z!TestCSD.test_integer_onesided_odd  sn    HHRs#!!1a#1299S>#-.HH " #14d3r4   c                     t        j                  dt              }d|d<   d|d<   t        ||dd      \  }}t	        |t        dd             t        j                  g d	      }t	        ||d
d
       y r   )r(   r)   rP   r   r   r   r   r,   s        r2   rU   zTestCSD.test_integer_twosided  sk    HHRs#!!1aE:171c?+HH F G14d3r4   c                     t        j                  dt         j                        }d|d<   d|d<   t        ||dd      \  }}t	        |t        dd             t        j                  g d      }t	        ||d	d	
       y r   )r(   r)   rY   r   r   r   r   r,   s        r2   rZ   zTestCSD.test_complex  so    HHR'!!1aE:171c?+HH F G14d3r4   c           	          t        t        t        t        j                  dt        j
                        t        j                  dt        j
                        dd       y r   )r^   r_   r   r(   r)   rY   r+   r`   s    r2   ra   zTestCSD.test_unk_scaling  s6    j#rxx2=='Agga/	Kr4   c                     t        j                  dt         j                        dz   }t        ||dd      \  }}t	        |t        j
                  |      d       y r   r(   r=   rk   r   r   r   r   s       r2   r   zTestCSD.test_detrend_linear  sD    IIb

+d21aX612==+%8r4   c                     t        j                  dt         j                        dz   }t        ||dd      \  }}t        ||dd       \  }}t	        ||d       t	        ||d       y )	Nrg   rN   r   Fr   c                     | S r   r   r   s    r2   r   z,TestCSD.test_no_detrending.<locals>.<lambda>  s     r4   r:   r;   )r(   r=   rk   r   r   r   s         r2   r   zTestCSD.test_no_detrending  s[    IIb

+d2Q2u5BQ2{;BBU+BU+r4   c                     t        j                  dt         j                        dz   }t        ||dd       \  }}t	        |t        j
                  |      d       y )Nrg   rN   r   c                 0    t        j                  | d      S r   r   r   s    r2   r   z/TestCSD.test_detrend_external.<locals>.<lambda>      v~~c'D r4   r   r:   r;   r  r   s       r2   r  zTestCSD.test_detrend_external  sH    IIb

+d21aDF12==+%8r4   c                     t        j                  dt         j                        dz   }|j                  d      }t	        ||dd       \  }}t        |t        j                  |      d	       y )
Nr  rN   r   r  rg   c                 0    t        j                  | d      S r   r   r   s    r2   r   z5TestCSD.test_detrend_external_nd_m1.<locals>.<lambda>  r  r4   r   r:   r;   )r(   r=   rk   rl   r   r   r   r   s       r2   r  z#TestCSD.test_detrend_external_nd_m1  sV    IIb

+d2IIh1aDF12==+%8r4   c                    t        j                  dt         j                        dz   }|j                  d      }t        j                  |dd      }t        ||ddd 	      \  }}t        |t        j                  |      d
       y )Nrd   rN   r   re   rf   r   rg   c                 2    t        j                  | dd      S r
  r   r   s    r2   r   z4TestCSD.test_detrend_external_nd_0.<locals>.<lambda>  s    v~~c'L r4   r  r:   r;   )r(   r=   rk   rl   r  r   r   r   r   s       r2   r  z"TestCSD.test_detrend_external_nd_0  sj    IIb

+d2IIhKK1a 1a!LN12==+%8r4   c                    t        j                  dt         j                        dz   }|j                  d      }t	        ||d      \  }}t        |j                  d       t        |ddd d f   |d	dd d f   d
d
       t	        |ddd d f   |ddd d f   d      \  }}t        |t         j                  d d f   |d	d d f   d
d
       y r  )	r(   r=   rk   rl   r   r   rm   r   rn   ro   s         r2   rr   zTestCSD.test_nd_axis_m1  s    IIb

+d2IIh1a$1177I.!Aa%!AaE(UCQq1uXq1Qx4B2::a<(!AaC&u5Ir4   c                 t   t        j                  dt         j                        dz   }|j                  d      }t	        ||dd      \  }}t        |j                  d       t        |d d ddf   |d d d	df   d
d
       t	        |d d ddf   |d d ddf   d      \  }}t        ||d d d	df   d
d
       y r  )r(   r=   rk   rl   r   r   rm   r   ro   s         r2   rx   zTestCSD.test_nd_axis_0  s    IIb

+d2IIh1a!,1177G,!Aa%!AaE(UCQq1uXq1Qx4BAa!eH5u=r4   c           	      R   t        j                  d      }d|d<   d|d<   t        ||ddd      \  }}t        j                  dd      }t        ||d|d       \  }}t        ||       t        ||       t        |j                  d       t        |j                  d       t        t        t        ||d|d	       t        j                  dd
      }t        t        t        ||d|d        t        j                  t        d      5  t        ||dd       d d d        y # 1 sw Y   y xY w)Nr    r!   r   r&   rg   r   r   r  r  rz   zParameter nperseg=0.*r   )r(   r)   r   r
   r{   r   r   rm   r^   r_   r   r	   r|   s           r2   r   zTestCSD.test_window_external  s   HHRL!!1aVQ'1*Q2sD1B&q"-&q"-288T*288T*j#q!#s	,##FB/j#q!'4	)]]:-DE 	$1a#	$ 	$ 	$s   DD&c                    t        g t        j                  d            \  }}t        |j                  d       t        |j                  d       t        t        j                  d      g       \  }}t        |j                  d       t        |j                  d       dD ]c  }t        t        j
                  |      t        j
                  |            \  }}t        |j                  |       t        |j                  |       e t        t        j                  d      t        j
                  d            \  }}t        |j                  d       t        |j                  d       t        t        j
                  d      t        j                  d            \  }}t        |j                  d       t        |j                  d       y )Nrg   r   r   )r   r   )r   r(   r)   r   rm   r   r+   r   s       r2   r   zTestCSD.test_empty_input  s/   2bhhrl#1177D)177D)288B<#1177D)177D)+ 	/Erxx8DAqqww.qww.	/
 2772;01177E*177E*288E?BGGBK01177E*177E*r4   c                 d   dD ]e  }t        t        j                  |      t        j                  |      d      \  }}t        |j                  |       t        |j                  |       g t        t        j                  d      t        j
                  d      d      \  }}t        |j                  d       t        |j                  d       t        t        j                  d      t        j
                  d      d      \  }}t        |j                  d       t        |j                  d       y )Nr   r!   ru   )rg   rg   r   )rg   r   r!   )rg   r   r   )r   r(   r   r   rm   r)   r   s       r2   r   z#TestCSD.test_empty_input_other_axis!  s    % 	/Erxxa@DAqqww.qww.	/
 288I&(:C1177H-177H-288H%rxx	':C1177H-177H-r4   c                 j   t        j                  d      }d|d<   t               5 }|j                  t        d       t        ||d      \  }}t        ||dd      \  }}d d d        t        ||d	      \  }}t        |       t        |       t        |       t        |       y # 1 sw Y   KxY w)
Nr&   r!   r   z+nperseg=256 is greater than signal length.*r   r   r  r  r   )r(   r)   r   r  r  r   r   r  s	            r2   r  zTestCSD.test_short_data/  s    HHQK!   	;CJJ{$QRq!F+DAqAfc:FB	; Q1%B22BB	; 	;s   :B))B2c                 j   t        t        t        t        j                  d      t        j
                  d      dt        j                  g d             t        t        t        t        j                  d      t        j
                  d      dt        j                  d      j                  d             y r   )	r^   r_   r   r(   r)   r+   r   r=   rl   r`   s    r2   r!  zTestCSD.test_window_long_or_nd?  sh    j#rxx{BGGAJhh{+	-j#rxx{BGGAJiil**51	3r4   c                     t        j                  d      }d|d d d<   t        ||dd      \  }}t        j                  g d      }t	        ||d	       y r#  )r(   r)   r   r   r   r,   s        r2   r)  z TestCSD.test_nondefault_noverlapE  sO    HHRL#A#1aa01HH  15)r4   c           
          t        t        t        t        j                  d      t        j
                  d      dddd       y r+  )r^   r_   r   r(   r)   r+   r`   s    r2   r-  zTestCSD.test_bad_noverlapM  s+    j#rxx{BGGAJ6	r4   c                     t        t        t        t        j                  d      t        j
                  d      dd       y r/  )r^   r_   r   r(   r+   r)   r`   s    r2   r1  zTestCSD.test_nfft_too_shortQ  s'    j#rwwr{BHHRLq	!r4   c                     t        j                  t        d      5  t        t	        j
                  d      t	        j
                  d      d       d d d        y # 1 sw Y   y xY w)Nzx and y cannot be broadcast.*r   )r!   r&   r!   )rf   r&   r\   r   )r   r	   r_   r   r(   r+   r`   s    r2   test_incompatible_inputsz TestCSD.test_incompatible_inputsU  sG    ]]:-LM 	@	"BGGFOQ?	@ 	@ 	@s   5AA#c                 :   t        j                  dd      }d|d<   d|d<   t        ||d      \  }}t        |t        j                  ddd             t        j
                  g d	d      }t        ||d
d
       t        |j                  |j                  k(         y r3  )r(   r)   r   r   r*   r   r   rO   r,   s        r2   r   z"TestCSD.test_real_onesided_even_32Z  s    HHR!!1a#12;;q#q12HH "#&(14d3177"#r4   c                 <   t        j                  dd      }d|d<   d|d<   t        ||d      \  }}t        |t        j                  d      d	z         t        j
                  g d
d      }t        ||dd       t        |j                  |j                  k(         y r5  )r(   r)   r   r   r=   r   r   rO   r,   s        r2   r   z!TestCSD.test_real_onesided_odd_32e  s    HHR!!1a#1299S>#-.HH "#&(14d3177"#r4   c                 &   t        j                  dd      }d|d<   d|d<   t        ||dd      \  }}t        |t	        dd             t        j
                  g d	d      }t        ||d
d
       t        |j                  |j                  k(         y r7  r(   r)   r   r   r   r   r   rO   r,   s        r2   r   zTestCSD.test_real_twosided_32p  s    HHR!!1aE:171c?+HH "#&( 	14d3177"#r4   c                 \   t        j                  dd      }d|d<   d|d<   t        ||dd      \  }}t        |t	        dd             t        j
                  g d	d
      }t        ||dd       t        |j                  |j                  k(  d|j                   d|j                          y r:  r  r,   s        r2   r   zTestCSD.test_complex_32|  s    HHR!!1aE:171c?+HH FGJL14d3177""177)2aggY7	9r4   c                    t        j                  d      }t        j                  d      }d}t        |d      d |dz  dz    }|dxx   dz  cc<   t	        ||d|      \  }}t	        ||d	|      \  }}t        ||       t        ||       d
}t        |d      d |dz   dz   }t	        ||d|      \  }}t	        ||d	|      \  }}t        ||       t        ||       y r?  )r(   r)   r+   r   r   r   )r-   r.   r~  r   r/   rC  rD  rE  s           r2   rF  zTestCSD.test_padded_freqs  s    HHRLGGBKD#za	*	"aAD1aq!QT2q4 5!D#~A.aAD1aq!QT2q4 5!r4   c                 *   t         j                  j                  d      }|j                         }t	        ||ddd      \  }}t	        ||ddd      \  }}t        ||       t	        ||ddd      \  }}t	        ||ddd      \  }}t        ||       y )Nr$  r&   meanF)r   rn  rA   rm  )r(   r_  ra  r  r   r   )r-   r.   r~  rD  p_samep_copieds         r2   test_copied_datazTestCSD.test_copied_data  s    IIOOBFFH1a(-/	6!Q6*/18)1a(-/	6!Q8*/18)r4   N)&r   r   r   r  r  r  r  r3   r>   rE   rL   r   r   rU   rZ   ra   r   r   r  r  r  rr   rx   r   r   r   r  r!  r)  r-  r1  r  r   r   r   r   rF  r  r   r4   r2   rz  rz  <  s    		$  44444444K9
,999J>$&+,.  3*!@
	$	$
$
9"&*r4   rz  c                       e Zd Zd Zd Zy)TestCoherencec                    t         j                  j                  d      }t        j                  |      }t        j                  ddd      }t        j
                  d      }t        ||d      \  }}t        ||       t        ||       y Nrd   r   r"   ri   rg   r   )r(   r_  ra  r  r*   r+   r   r   r-   r.   r~  r/   Cr   C1s          r2   test_identical_inputz"TestCoherence.test_identical_input  sf    IIOOBGGAJKK3"GGAJ1a,B22r4   c                     t         j                  j                  d      }| }t        j                  ddd      }t        j                  d      }t        ||d      \  }}t        ||       t        ||       y r  )r(   r_  ra  r*   r+   r   r   r  s          r2   test_phase_shifted_inputz&TestCoherence.test_phase_shifted_input  s`    IIOOBBKK3"GGAJ1a,B22r4   N)r   r   r   r  r  r   r4   r2   r  r    s    		r4   r  c                       e Zd Zd Zd Zd Zy)TestSpectrogramc                     t         j                  j                  d      }d}d}d}d}t        |||||      \  }}}t	        |||||      \  }	}
t        ||	       t        t        j                  |d      |
       y )Nr\  rB   rJ  g      ?r    rf   r$   ru   )r(   r_  ra  r   r   r   r  )r-   r.   rM  r   r   r&  r/   rD  PfwPws              r2   test_average_all_segmentsz)TestSpectrogram.test_average_all_segments  su    IIOOD! aVWh?1aq"fgx8B2+R0r4   c                    t         j                  j                  d      }d}d}d}d}t        |||||      \  }}}t	        j
                  dd      }	t        |||	d d      \  }
}}t        |
j                  d       t        |j                  d       t        t        t        |||	d	
       t	        j
                  dd      }t        t        t        |||d 
       y )Nr\  rB   r  r    rf   r%  )r#   )r#   I   r&   r   i   )
r(   r_  ra  r   r
   r{   r   rm   r^   r_   )r-   r.   rM  r   r   r&  r/   rD  r  r}   r~   Per   s                r2   r   z$TestSpectrogram.test_window_external  s    IIOOD! aVWh?1a42sD1E	Ar288T*288V,j+q#q	*##OT:j+q'4	1r4   c                    t         j                  j                  d      }d}t        ||d      \  }}}t	               5 }|j                  t        d       t        ||dd      \  }}}d d d        t        ||d	      \  }	}}
t        ||d	      \  }}}t        ||	       t        ||
       t        |       t        |       y # 1 sw Y   ^xY w)
Nr\  rB   r  r   zInperseg = 1025 is greater than input length  = 1024, using nperseg = 1024i  r  r  r   )r(   r_  ra  r   r   r  r  r   )r-   r.   rM  r/   rD  r0   r  r   r   r   r   f3p3s                r2   r  zTestSpectrogram.test_short_data  s    IIOOD! aN;1a  	2CJJ{.0 $Ar.,02IB2		2  2s3	Ar2t4	Ar22BB	2 	2s   *CCN)r   r   r   r  r   r  r   r4   r2   r  r    s    11& r4   r  c                   l    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zy)TestLombscarglec           	         d}d}dt         j                  z  }d}d}d}t         j                  j                  d      }|j	                  |      }t        j
                  dt         j                  z  d	t         j                  z  |      ||k\     }	|t        j                  ||	z  |z         z  }
t        j
                  dd	|      }t        |	|
|      }|d
   |d   z
  }||t        j                  |         z
  |dz  k  sJ t        |	|
|t        j                  |	|j                              }|d
   |d   z
  }||t        j                  |         z
  |dz  k  sJ y)zgTest if frequency location of peak corresponds to frequency of
        generated input signal.
        r%   rB   r"   d     ffffff?# {Gz?      $@r!   r   rN   weightsN)r(   rP  r_  RandomStaterandr*   rO  r   argmax	ones_likerO   )r-   amplwphininnoutr0   rngrtr~  r/   r  deltas                 r2   test_frequencyzTestLombscargle.test_frequency  sF    BEEk ii##G,HHSMKKRUU
CIs3AF; 266!A#)$$ KKc4( 1a  !qt1RYYq\?"eBh/0/ 1aaqww)GH !qt1RYYq\?"eBh/0/r4   c                    d}d}dt         j                  z  }d}d}d}t         j                  j                  d      }|j	                  |      }t        j
                  dt         j                  z  dt         j                  z  |      ||k\     }	|t        j                  ||	z  |z         z  }
t        j
                  dd|      }t        |	|
|      }t        j                  d	|z  |	j                  d
   z        }t        |||k(     |d       y )Nr%   rB   r"   r  r  r  r  r  g      @r   ro  rN  )r(   rP  r_  r  r  r*   rO  r   rQ  rm   r   )r-   r  r  r  r  r  r0   r  r  r  r~  r/   pgrams                r2   test_amplitudezTestLombscargle.test_amplitude#  s    
 BEEk ii##G,HHSMKKRUU
CIs3AF; 266!A#)$$ KKc4( Aq!$ eaggaj01 	adT5r4   c                    d}d}dt         j                  z  }d}d}d}d}t         j                  j                  d      }|j	                  |      }	t        j
                  d	t         j                  z  d
t         j                  z  |      |	|k\     }
|t        j                  ||
z  |z         z  |z   }t        j
                  d	d
|      }t        |
||d      }t        |
||j                         z
  |d      }t        ||       t        |
||dd      }t        |
||j                         z
  |dd      }t        ||       y )Nr%   rB   r"   r  r  r  g333333?r  r  r  T)	precenterF)r  floating_mean)
r(   rP  r_  r  r  r*   rO  r   r  r   )r-   r  r  r  r  r  r0   offsetr  r  r  r~  r/   r  pgram2s                  r2   test_precenterzTestLombscargle.test_precenterD  s(   
 BEEk ii##G,HHSMKKRUU
CIs3AF; 266!A#)$$v- KKc4( Aq!t4QAFFHa5A 	v&
 Aq!t4HQAFFHa5PTU 	v&r4   c                    d}d}dt         j                  z  }d}d}d}t         j                  j                  d      }|j	                  |      }t        j
                  dt         j                  z  d	t         j                  z  |      ||k\     }	|t        j                  ||	z  |z         z  }
t        j
                  dd	|      }t        |	|
|      }t        |	|
|d
      }t        j                  |	      t        |	j                  d         z  }||
z  |
z  j                         }|}d||	j                  d   z  z  }t        ||z  |       t        t        j                  |      d       y )Nr%   rB   r"   r  r  r  r  r  r  T	normalizer   rf   )r(   rP  r_  r  r  r*   rO  r   r  floatrm   rt  r   max)r-   r  r  r  r  r  r0   r  r  r  r~  r/   r  r  r  YY_hatYYscale_to_uses                     r2   test_normalizezTestLombscargle.test_normalizel  s>    BEEk ii##G,HHSMKKRUU
CIs3AF; 266!A#)$$ KKc4( Aq!$Q15 ,,q/%
"33A+/&&("QWWQZ-( 	,f5v,r4   c           	      <   t        j                  ddd      }t        j                  ddd      }t        j                  ddd      dz   }t        t        t        |||       t        j
                  t        j                  t        j                  ddd      d      dd      }t        j                  ddd      }t        j                  ddd      dz   }t        t        t        |||       t        j                  ddd      }t        j
                  t        j                  t        j                  ddd      d      dd      }t        j                  ddd      dz   }t        t        t        |||       t        j                  ddd      }t        j                  ddd      }t        j
                  t        j                  t        j                  ddd      d      dz   dd      }t        t        t        |||       t        j                  ddd      }t        j                  ddd      }t        j                  ddd      dz   }t        j
                  t        j                  t        j                  ddd      d      dd      }t        t        t        ||||       y )Nr   r!   rf   r   rK  ru   r  )r(   r*   r^   r_   r   repeatexpand_dimsr-   r  r~  r/   r  s        r2   test_wrong_shapez TestLombscargle.test_wrong_shape  s    KK1a KK1a KK1a 3&j+q!Q7 IIbnnR[[Aq%91=qqIKK1a KK1a 3&j+q!Q7 KK1a IIbnnR[[Aq%91=qqIKK1a 3&j+q!Q7 KK1a KK1a IIbnnR[[Aq%91=CQQOj+q!Q7 KK1a KK1a KK1a 3&))BNN2;;q!Q+?CQQOj+q!QHr4   c                     t        j                  dddd      }t        j                  d|z        }t        j                  dddd      d	z   }t        |||d
z  t         j                  z         y )Nr   rg   r  F)endpointr\   2   i  rK  rf   )r(   r*   rO  r   rP  )r-   r  r~  r/   s       r2   test_lombscargle_atan_vs_atan2z.TestLombscargle.test_lombscargle_atan_vs_atan2  sZ     KK2te4FF1Q3KKK2sU3c9Aq!A#bee)$r4   c                     t        j                  ddd      }t        j                  ddd      }t        j                  ddd      dz   }t        j                  ddd      }t        t        t        ||||       y )Nr   r!   r   rK  rf   r  )r(   r*   r^   r_   r   r  s        r2   test_wrong_shape_weightsz(TestLombscargle.test_wrong_shape_weights  sc     KK1a KK1a KK1a 3&++aA&j+q!QHr4   c                     t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        t        t
        ||||       y Nr!   r  r(   r)   r+   r^   r_   r   r  s        r2   test_zero_division_weightsz*TestLombscargle.test_zero_division_weights  sJ     HHQKHHQKGGAJ((1+j+q!QHr4   c                    d}d}d}d}d}d}t         j                  j                  d      }|j                  |      }t        j                  dt         j
                  z  d	t         j
                  z  |      ||k\     }	|t        j                  ||	z  |z         z  }
t        j                  dd	|      }t        |	|
|d
      }t        |	|
|d      }t        |	|
|d      }t        |	|
|d      }t        |	|
|d      }t        ||       t        ||       t        j                  |
      t        |
j                  d         z  }||
z  |
z  j                         }|}t        |dz  t        |	j                  d         |z  z  |       t        j                  ||k(        d   d   }t        t        j                  ||         |       t        t         t        |	|
|d       t        t         t        |	|
|d       y )Nr%   rB   r   r  r  r  r  r  r  Fr  Tpowerr  	amplitudelombrf   )r(   r_  r  r  r*   rP  rO  r   r   r  r  rm   rt  whereru  r^   r_   )r-   r  r  r  r  r  r0   r  r  r  r~  r/   pgram_false
pgram_truepgram_power
pgram_norm	pgram_ampr  r  r  f_is                        r2   test_normalize_parameterz(TestLombscargle.test_normalize_parameter  s     ii##G,HHSMKKRUU
CIs3AF; 266!A#)$$ KKc4( "!QU; AqD9
!!QW= AqK@
1a;?	 	[1
J/ ,,q/%
"33A+/&&(c)U1771:->-CDjQ hhq!tnQ"y~.5 	j+q!Q&Ij+q!Q!Dr4   c                    d}d}dt         j                  z  }d}d}d}d}t         j                  j                  d      }|j	                  |      }	t        j
                  d	t         j                  z  d
t         j                  z  |      |	|k\     }
|t        j                  ||
z  |z         z  }t        j
                  d	d
|      }t        |
||d      }t        |
||z   |d      }t        ||       y )Nr%   rB   r"   r  r  r  333333@r  r  r  T)r  )	r(   rP  r_  r  r  r*   rO  r   r   r-   r  r  r  r  r  r0   r  r  r  r  r~  r/   r  pgram_offsets                  r2   test_offset_removalz#TestLombscargle.test_offset_removal  s    
 BEEk ii##G,HHSMKKRUU
CIs3AF; 266!A#)$$ KKc4( Aq!48"1a&j!4H 	|,r4   c                    d}d}d}d}d}d}d}t         j                  j                  d      }|j                  |      }	t        j                  dt         j
                  z  d	t         j
                  z  |      |	|k\     }
|t        j                  ||
z  |z         z  }t        j                  dd	|      }t        |
||d
d      }t        |
||z   |d
d      }|d   dk  sJ |d   dkD  sJ y )Nr%   rB   r   r  r  rf   r  r  r  TFr  r  r"   r(   r_  r  r  r*   rP  cosr   r  s                  r2   test_floating_mean_falsez(TestLombscargle.test_floating_mean_false  s      ii##G,HHSMKKRUU
CIs3AF; 266!A#)$$ KKc4( Aq!t5I"1a&j!t168
 Qx$A$%$r4   c                 T   d}d}d}d}d}d}d}t         j                  j                  d      }|j                  |      }	t        j                  d	t         j
                  z  d
t         j
                  z  |      |	|k\     }
|t        j                  ||
z  |z         z  |z   }t        j                  d	d
|      }t        j                  ||k(        d   d   }t        |
||dd      }t        t        j                  ||         |       t        t        j                  ||          |       y )Nr%   rB   Q?r  r  r  r  r  r  r  r   r  Tr"  )r(   r_  r  r  r*   rP  r$  r  r   r   ru  angle)r-   r  r  r  r  r  r0   r  r  r  r  r~  r/   f_indxr  s                  r2   test_amplitude_is_correctz)TestLombscargle.test_amplitude_is_correct=  s     ii##G,HHSMKKRUU
CIs3AF; 266!A#)$$v- KKc4( !Q$"1% Aq!{$O 	uV}-t4 	%-00#6r4   c                     t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d       }t        t        t
        ||||       y r  r  r  s        r2   test_negative_weightz$TestLombscargle.test_negative_weighta  sL     HHQKHHQKGGAJ771:+j+q!QHr4   c                     g d}g d}t        j                  ddd      }dt         j                  z  |z  }t        |||dd       y )	N)yg   ˈAg   ˈAg   ̈Ag   ͈Ag   ΈAg   ψAg   ЈAg   шAg   ҈Ag   ӈAg   ԈAg   ՈAg   ֈAg   ׈Ag   ؈Ag   وAg   ڈAg   ۈAg   ܈Ag   ݈Ag   Ag   Ag   Ag   Ag   Ag    Ag   Ag   Ag   Ag   Ag   Ag   Ag   Ag   Ag   Ag   Ag   Ag    Ag   Ag   Ag   "Ag   Ag   Ag   Ag   
Ag   Ag   Ag   Ag    Ag   !Ag   "Ag   #Ag   $Ag   %Ag   &Ag   'Ag   (Ag   )Ag   *Ag   +Ag   ZcAg   TdAg   NeAg   HfAg   BgAg   <hAg   6iAg   0jAg   *kAg   $lAg   mAg   nAg   oAg   pAg   qAg    rAg   rAg   sAg   tAg   uAg   wAg   xAg   yAg   zAg   {Ag   |Ag   }Ag   ~Ag   Ag   Ag   Ag   Ag   Ag   Ag   Ag   Ag   |Ag   vAg   pAg   jAg   Ag   
Ag   Ag   Ag   Ag   Ag   잉Ag   柉Ag   ࠉAg   ڡAg   ԢAg   ΣAg   ȤAg   ¥Ag   Ag   Ag   Ag   Ag   Ag   Ag   A)yg     @@g     ܨ@g     J@g     @g     9@g     @g     @g     2@g    @g     @g     i@g     @g    j@g    @g     @g    @g     @g     @g    ?@g    @g     n@g     ײ@g     .@g     @g     h@g     @g     ޫ@g     Ӱ@g     >@g     @g     @g     b@g     @g    H@g    @g     @g    @g    d@g     @g    @g     p@g     ̳@g     m@g     D@g     ҧ@g     @g     @g     @g     G@g     @g     @g     _@g     @g    @g    @g     "@g    @g    @g     M@g     n@g    @g     @g     0@g     @g      @g    D@g     w@g     9@g     y@g     µ@g     6@g     @g     \@g     F@g     @g     Ь@g     k@g     @g     @g     V@g     @g     @g     D@g    @g    J@g    @g     @g     @g    @g    @g    3@g    @g    @g    @g     @g     @g    s@g    @g    :@g    b@g     @g     @g     p@g     @g     @g     @g     Q@g     @g     \@g     !@g     @g    j@g     @g    F@g    @g    @g    @g     e@g    @g     @g    @i  x   r  rf   T)r  r  )r(   r*   rP  r   )r-   r  r~  periodsangular_freqs        r2   test_list_inputzTestLombscargle.test_list_inputj  sG    >@ ++c3-255y7*Aq,$$Gr4   c                    d}d}d}d}d}d}d}t         j                  j                  d      }|j                  |      }	t        j                  d	t         j
                  z  d
t         j
                  z  |      |	|k\     }
|t        j                  ||
z  |z         z  |z   }t        j                  dd
|      }t        |
||dd      }|d   dk  sJ y )Nr%   rB   r'  r  i  r  r   r  r  r  Tr"  -C6?r#  )r-   r  r  r  r  r  r0   r  r  r  r  r~  r/   r  s                 r2   test_zero_freqzTestLombscargle.test_zero_freq  s    
  ii##G,HHSMKKRUU
CIs3AF; 266!A#)$$v- KK3% Aq!t4H Qx$r4   c                    t        dd      D cg c]  }|dz   	 c}}t        j                  t        |            }dt        j                  z  gdz  }t        |||       t        dd      D cg c]
  }|dz  dz    c}}t        j                  t        |            }t        j                  dz  gdz  }t        |||       y c c}w c c}w )Nr   rz   r!   r%   rf   r\   )rb  r(   r+   r  rP  r   )r-   r  r~  freqss       r2   test_simple_div_zeroz$TestLombscargle.test_simple_div_zero  s    
 "!RL)qQU)GGCFORUUaAq%  $Arl+QqS1W+GGCFOsaAq%  * ,s   C.CN)r   r   r   r  r  r  r   r  r	  r  r  r  r   r%  r*  r,  r1  r4  r7  r   r4   r2   r  r    sb    &1R6B&'P"-HIB%II/Eb-> &D"7HIFHP >!r4   r  c                      e Zd Zej                  j
                  d        Zd Zd Zd Z	d Z
ej                  j                  dddg      d	        Zej                  j
                  d
        Zd Zd Zej                  j
                  ej                  j                  dddg      d               Zd Zd Zd Zd Zd Zy)TestSTFTc                 
   d } |d      5  t        ddd       d d d         |d      5  t        ddd       d d d         |d	      5  t        t        j                  d
      dd       d d d         |d      5  t        t        j                  d      dd       d d d         |d      5  t        ddd       d d d         |d      5  t        ddd       d d d         |d	      5  t        t        j                  d
      dd       d d d         |d      5  t        t        j                  d      dd       d d d         |d      5  t        ddd       d d d        t        j                  d      }t        |      d   } |d	      5  t        |t        j                  d
             d d d         |d      5  t        |t        j                  d      d       d d d         |d      5  t        |d       d d d         |d      5  t        |dd       d d d         |d      5  t        |dd       d d d         |d      5  t        |       d d d         |d	      5  t        |t        j                  d
             d d d         |d      5  t        |t        j                  d      d       d d d         |d      5  t        |d       d d d         |d      5  t        |dd       d d d         |d      5  t        |dd       d d d        t        j                  t        d      5  t        |ddd        d d d         |d!      5  t        |dd"       d d d         |d#      5  t        ||d$%       d d d         |d&      5  t        |d d' |d'd  d(%       d d d         |d)      5  t        ||d$*       d d d        d+} |d,|d-      5  t        ||.       d d d         |d,|d-      5  t        ||.       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   `xY w# 1 sw Y   <xY w# 1 sw Y   +xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   {xY w# 1 sw Y   WxY w# 1 sw Y   2xY w# 1 sw Y   !xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   rxY w# 1 sw Y   y xY w)/Nc                 8    t        j                  t        |       S )zAssert for a ValueError matching regexp `match`.

            This little wrapper allows a more concise code layout.
            r   )r   r	   r_   r   s    r2   chk_VEz.TestSTFT.test_input_validation.<locals>.chk_VE  s    
 ==599r4   z"nperseg must be a positive integerr   ir   z#noverlap must be less than nperseg.rg   rd   zwindow must be 1-D)rf   rf   z"window must have length of npersegz"noverlap must be less than npersegz&noverlap must be a nonnegative integerr$  ir\  rf   r   z>value specified for nperseg is different from length of windowr  r  i r   r%  z.nfft must be greater than or equal to nperseg.r&   rA  zInput stft must be at least 2d!zwindow must have length of 256z1NOLA condition failed, STFT may not be invertibler   r   r&  r   z/Must specify differing time and frequency axes!	time_axis	freq_axisz=Unknown value for mode foo, must be one of: \{'psd', 'stft'\}r]   )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'\]!rH   )r   r(   r+   r   r)   rC  istftr   warnsr  r   )r-   r<  r.   zrI   s        r2   test_input_validationzTestSTFT.test_input_validation  s   	: 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?+	, , - 	52772;4	5 89 	"D!	"9: 	0C$/	0DE 	)Ca(	) 56 	!H	() 	-!BGGFO,	-45 	6!BGGBK5	689 	#!T"	#9: 	1!S40	1DE 	*!Sq)	*\\+ .7 8 	=!S1V<	= EF 	/!qA.	/  ) * 	/Q.	/ => 	<QtWagF;	< D E 	3QE2	3 *'+IJK 	%G$	%*'+IJK 	&!W%	& 	&K	' 	'	' 	'	/ 	/	+ 	+	' 	'	' 	'	/ 	/	+ 	+	( 	(	, 	,	5 	5	" 	"	0 	0	) 	)	 		- 	-	6 	6	# 	#	1 	1	* 	*	= 	=	/ 	/	/ 	/	< 	<	3 	3
	% 	%	& 	&sB  PP$!P19!P>*QQ&!Q%!Q2Q?	!R:"R,R&
R3)S S$!S"S'S4%TT6TT(5T5U9UU U)P!$P.1P;>QQQ"%Q/2Q<?R	RR#&R03R= S
SS$'S14S>TTT%(T25T?UUU&)U2c                 `    g d}|D ]%  } dj                   | }t        dt        | |       ' y )N)r  rg   r   r  rg   r#   rI  3      r   r     r   r     blackmanrH     rJ  r"   r  r$  r   r     
{}, {}, {}Tr]  )formatr   r   )r-   settingssettingmsgs       r2   test_check_COLAzTestSTFT.test_check_COLA7  s?    	   	BG%,%%w/Cz73SA	Br4   c                 &   g d}|D ]%  } dj                   | }t        dt        | |       ' t        j                  d      }d|d d d<   |t        |      t        |      dz  fdg}|D ]%  } dj                   | }t        d	t        | |       ' y )
N)rK  rL  )r  rg   r,  rM  )rI  rN  rg   rP  rR  )r   r  %   rT  )rU  rH  {   rW  )rX  r  &   rY  )r   r  '   r[  Tr]  r    r   rf   )r   r$  r   F)r\  r   r   r(   r+   r  )r-   settings_passr^  r_  w_failsettings_fails         r2   test_check_NOLAzTestSTFT.test_check_NOLAG  s      % 	BG%,%%w/Cz73SA	B ssS[#f+*:;#
 % 	CG%,%%w/C
G 4cB	Cr4   c           
      T   t         j                  j                  d      }|j                  d      }d}d}d}d}t	        |||||ddd       \  }}}	t        |||||dd	d
      \  }
}t        ||
       t        t        j                  t        j                  |	      dz  d      |       y )Nr[  r\  rB   r   r    r&   F)paddedrA   rD  rG   )rA   rI   r   rf   r$   ru   )	r(   r_  r  ra  rC  r   r   r  ru  )r-   r  r.   rM  r   r   r&  r/   rD  Zr  r  s               r2   r  z"TestSTFT.test_average_all_segmentsf  s    ii##D)IIdO
 q"fgx',t=1aq"fgx)5:B 	2q	126;r4   c           	         t         j                  j                  d      }|j                  d      }d}d}d}d}t	        |||||      \  }}}	t	        |j                  d      ||||d	      \  }
}}t        |	||||      \  }}t        |j                  ||||dd
      \  }}t        ||
       t        ||       t        ||       t        |	|d d ddd d f          t        ||d d ddf          y )Nr[  r\  rB   r   r    r&   )r$   r!   r!   r   ru   r$   r>  )	r(   r_  r  ra  rC  rl   rF  Tr   )r-   r  r.   rM  r   r   r&  r   t1Z1r   t2Z2t3x1t4x2s                    r2   test_permute_axeszTestSTFT.test_permute_axesz  s    ii##D)IIdO!R(;
B!))J/VWh "
B r2vw9BrttR(a!#%B 	BBBBq!QzN+Bq!QwK(r4   rI   rG   psdc           
      `   t         j                  j                  d      }g d}|D ]  \  }}}}t        j                  |      }d|j	                  |j
                        z  }	t        |	|||d d|      \  }
}
}t        |||||      \  }}| d| }t        |||       t        |	||        y )	Nr[  r  r  rg   r   r  r  rg   r#   )rI  e   rN  rO  r   r\  r  rQ  )rX    r  r$  )r   r\  r  rZ  rg   F)r   r&  r   r   rk  rI   )r   r&  r   rI   r=  r]  	r(   r_  r  r=   ra  sizerC  rF  r   )r-   rI   r  r]  r   Nr   r&  r  r.   rD  zztrxrr_  s                  r2   test_roundtrip_realzTestSTFT.test_roundtrip_real  s    ii##D) -5 	0(FAw		!A399QVV$$AAw#)4$+-HAq" 2w"(';FB HBxj)CAr3/Ar3/	0r4   c           
         t         j                  j                  d      }t        j                  d      }d|d d d<   |dt	        |      t	        |      dz  fdg}|D ]  \  }}}}| d| d| d| }t        |||      rJ |       t        j                  |      }	d|j                  |	j                        z  }
t        |
|||d d	d
      \  }}}t        j                  t        d      5  t        ||||d	      \  }}d d d        t        j                  |	d t	        |	             sJ |       t        j                  |
d t	        |
             sJ |        y # 1 sw Y   ^xY w)Nr[  r    r   rf   r  )r   r  r$  r   r=  rg   Tr)   r   r&  r   r   rk  rD  NOLAr   r   r&  r   rD  )r(   r_  r  r+   r  r   r=   ra  r  rC  r   rG  r  rF  allclose)r-   r  rg  r]  r   r  r   r&  r_  r  r.   rD  r  r  r  s                  r2   test_roundtrip_not_nolaz TestSTFT.test_roundtrip_not_nola  sj   ii##D)ssS#f+s6{a/?@(

 -5 	8(FAwHBqcG9Bxj9C!&'8<AcA<		!ASYYqvv&&AAw#)4%,.HAq" k8 =r7X&,t=B= ;;q"Wc!f+.33.{{1b#a&k27C72	8= =s   )EE#	c           
         t         j                  j                  d      }g d}|D ]  \  }}}}| d| d| }t        |||      sJ |       t	        |||      rJ |       t        j
                  |      }d|j                  |j                        z  }	t        |	|||d dd      \  }
}
}t        ||||d      \  }}| d| }t        ||d t        |       |	       t        |	|d t        |	       |	        y )
Nr[  ))r  r  rg   r   )rI  r}  rN  rb  )r   r\  r     )rX  r  r     )r   r\  r  r   r=  rg   Tr)   r  r  r]  )r(   r_  r  r   r   r=   ra  r  rC  rF  r   r  )r-   r  r]  r   r  r   r&  r_  r  r.   rD  r  r  r  s                 r2   test_roundtrip_nola_not_colaz%TestSTFT.test_roundtrip_nola_not_cola  s   ii##D) -5 	9(FAwHBwir(4Cfgx8=#=8!&'8<AcA<		!ASYYqvv&&AAw#)4%,.HAq" 2w"(49FB HBxj)CAr'3q6{C8Ar'3q6{C8#	9r4   c           	         t         j                  j                  d      }dg}|D ]  \  }}}}t        j                  |      }d|j	                  |j
                        z  }|j                  t         j                        }t        ||||d d      \  }	}	}
t        |
|||      \  }}| d| }t        |||       t        |||d	d
       t        |j                  |j                  k(          y )Nr[  r~  rg   Fr   r&  r   r   rk  r=  r=  r]  r3  gh㈵>)r^  r   r<   )r(   r_  r  r=   ra  r  astypefloat32rC  rF  r   r   rO   r-   r  r]  r   r  r   r&  r  r.   rD  r  r  r  r_  s                 r2   test_roundtrip_float32zTestSTFT.test_roundtrip_float32  s    ii##D),-,4 	)(FAw		!A399QVV$$A$AAw#)4GHAq" 2w"(*FB HBxj)CAq#.Ar3TEAGGrxx'(	)r4   c                    t         j                  j                  d      }g d}|D ]  \  }}}}t        j                  |      }d|j	                  |j
                        z  d|j	                  |j
                        z  z   }	t        |	|||d dd|      \  }
}
}t        ||||d|      \  }}| d| d| }t        |||	       t        |	||	        t               5 }|j                  t        d
       t        	d dd|      \  }
}
}d d d        t        d|      \  }}| d| d| }t        ||	       t        	||	       y # 1 sw Y   DxY w)Nr[  rz  rg   y              $@F)r   r&  r   r   rk  rA   rI   )r   r&  r   input_onesidedrI   r=  r]  z9Input data is complex, switching to return_onesided=FalseT)r(   r_  r  r=   ra  r  rC  rF  r   r   r  r  )r-   rI   r  r]  r   r  r   r&  r  r.   rD  r  r  r  r_  r  s                   r2   test_roundtrip_complexzTestSTFT.test_roundtrip_complex  s    ii##D) -5 	0(FAw		!A399QVV$$s399QVV+<'<<AAw#)4,17DHAq" 2w"(#*,FB HBwir(4CAr3/Ar3/	0"   	CCJJ{RTAw#)4,0'CHAq"	C r7X$UGMB 7)2hZ02s+2s+	C 	Cs   .EEc                    t         j                  j                  d      }ddg}|D ]  \  }}}}t        j                  |      }d|j	                  |j
                        z  }t        ||||d dd       \  }	}	}
t        |
||d      \  }	}d	D ]P  }t        ||||d d|      \  }	}	}t        |||d      \  }	}| d
| d
| }t        |||       t        |||       R  y )Nr[  r{  r|  rg   Tr  F)r&  r   rD  )evenoddconstantr)   r=  r]  r  )r-   r  r]  r   r  r   r&  r  r.   rD  r  r  rD  zz_extxr_extr_  s                   r2   !test_roundtrip_boundary_extensionz*TestSTFT.test_roundtrip_boundary_extension)  s   ii##D) +*
 -5 	8(FAw		!A399QVV$$AAw"($t$(*HAq" "xOEAr@ 
8#Aw'-tD)1 31f "&8F)-/	6  8*Bxj92s3637
8	8r4   c           	         t         j                  j                  d      }ddg}|D ]  \  }}}}t        j                  |      }d|j	                  |j
                        z  }t        ||||d d      \  }	}	}
t        |
||      \  }}| d| }t        ||d |j
                   |	       t        ||d |j
                   |	        y )
Nr[  )r  r}  rg   r   )r   r  r  rQ  rg   Tr  )r&  r   r=  r]  r  r  s                 r2   test_roundtrip_padded_signalz%TestSTFT.test_roundtrip_padded_signalJ  s    ii##D) +,
 -5 	9(FAw		!A399QVV$$AAw#)4FHAq" 2@FBHBxj)CAr'166{C8Ar'166{C8	9r4   c                 ,   t         j                  j                  d      }g d}|D ]  \  }}}}}t        j                  |      }d|j	                  |j
                        z  }	|	t        j                  dt         j                  z  dz        z  }
t        |	||||d d      \  }}}t        |
||||d dd	      \  }}}t        |||||
      \  }}t        |||||d      \  }}| d| }t        |||       t        |	||       t        |
||        y )Nr[  ))r   r\  r  rQ  rB  )r   r\  r  rQ  i  )r  r  rg   r   !   )rX  r  r  r$  r\  rg   y              ?r\   T)r   r&  r   r   r   rk  F)r   r&  r   r   r   rk  rA   )r   r&  r   r   )r   r&  r   r   r  r=  r]  )r(   r_  r  r=   ra  r  exprP  rC  rF  r   )r-   r  r]  r   r  r   r&  r   r  r.   xcrD  rH  zcr  r  xcrr_  s                     r2   test_roundtrip_padded_FFTz"TestSTFT.test_roundtrip_padded_FFT`  s1   ii##D) 3; 	2.FAw$		!A399QVV$$A266"RUU(1*%%B 1gt#)4FGAq! B(#)4,13HAq" 1gt"(*FB B(#)%AGB HBxj)CAr3/Ar3/BS1/	2r4   c                 f   t         j                  j                  d      }|j                  d      }t	        |      \  }}}t        d      D ]  }dgdz  }d||<   |j                  |      }t	        ||      \  }}}t	        |||j                  z
        \  }}}	t        ||j                         |       t        ||	j                         ||j                  z
          t        |j                  dd	      \  }}
t        |j                  d
d	      \  }}t        ||
d       t        ||d       y )Nr[  r\  r   r!   r$   ru   r]  r>  r   zistft transpose minuszistft transpose plus)r(   r_  r  ra  rC  rb  rl   rc  r   rd  rF  rn  r   )r-   r  re  rD  z_flatrg  rh  r.   z_plusz_minusx_transpose_mx_transpose_ps               r2   rk  zTestSTFT.test_axis_rolling  s   ii##D)4F|1fq 		FAtAvHHQKx(A?LAq& 1662MAq'!11=!2AaffHE		F !R2F= Q!D=7NO7MNr4   c                 l   t        j                  dt              }d|d<   t         j                  j	                  |      }t        |dz        t        |      z  }t        |dd      d   }t        |d	d      d
   }t        ||       t        t        |dddf         d       t        t        |dddf         d
       t        t        |dddf         d       d|ddddf<   t        |ddddf   dt        j                  |j                        j                         t        |ddd      d   }t        j
                  |j                  dz  |j                  dz  z   d      |j                   d   z  }t        ||       t        |dd	d      d
   }t        ||       t        |d	dd      d   }t        j"                  |dddddf         }	t        |ddddf   |       t        |ddddf   |	       t        j
                  |j                  dz  |j                  dz  z   d      t        j
                  |	j                  dz  |	j                  dz  z   d      z   }
|
|j                   d   |	j                   d   z   z  }t        ||       t        |d	d	d      d
   }t        ||       y)z&Verify behavior of scaling parameter. i  rN   r\  r  rf   r  rG   )rD  rI   Tr!   ?   Nr$   r"   r$  A   r   B   r;   Frx  )rA   rD  rI   ru   )r  rD  rI   r     )r(   r)   complexr   r   rt  r  rC  rF  r   ru  finforO   
resolutionrealimagrm   conj)r-   Xr.   power_xZsrt  Zppsd_ZpZp0Zp1s2psd_Zp01s               r2   test_roundtrip_scalingzTestSTFT.test_roundtrip_scaling  sy    HHS(#FFLLOad)c!f$ !fj9!< 2j9!<A 	Br3B3wK(#.Br3B3wK(!,Br3B3wK(#.2b5#2#:1crc6
ABHHRXX,>,I,IJ !UVUKAN 
RWWaZ/a8288A;F( 2edEJ1MA 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Ar4   N)r   r   r   r   r   thread_unsaferI  r`  ri  r  rw  parametrizer  r  r  r  r  r  r  r  rk  r  r   r4   r2   r9  r9    s    [[P& P&dB C><(). [[YU(;<0 =06 [[8 869<)* [[[[YU(;<), = ),V8B9,!2FO4?r4   r9  c                       e Zd ZU dZdZeed<   dZeed<   dZ	eed<   dZ
eed<   ej                  ed	<   ej                  ed
<   eed<   eed<   d Zedefd       Zedefd       Zd Zd Zy)"TestSampledSpectralRepresentationsa  Check 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``
    rz   r  rC   rn  r   a_refl_ax_refX_refE_refP_refc                    t        | j                  | j                        }t        j                  |      }d| _        | j                  dz  | j                  z  || j
                  <   t        |      | _        t        | j                        | _
        | j                  | j                  dz  z  dz  | _        | j                  dz  dz  | _        y)z5Create Cosine signal with amplitude a from spectrum. r   rf   N)r   r  rn  r(   r   r  r  r   r  r   r  taur  r  )r-   r/   r  s      r2   setup_methodz/TestSampledSpectralRepresentations.setup_method  s    TVVTVV$a **Q,/dhh5\
_
 XX

A-1
ZZ]Q&
r4   returnc                 4    | j                   | j                  z  S )zDuration of signal. r  rn  r`   s    r2   r  z&TestSampledSpectralRepresentations.tau  s     vvr4   c                 :    d| j                   | j                  z  z  S )z
Bin width r!   r  r`   s    r2   delta_fz*TestSampledSpectralRepresentations.delta_f  s     DFFTVVO$$r4   c                    t        d| j                  z  t        j                  | j                        d       t        | j
                  t        | j                  dz        z  | j                         t        | j                  j                  dz  | j                  j                  dz  z         }t        | j
                  | j                  z  |z  | j                         t        d| j                  dz  z  |z  | j                         y)z Test energy and power formulas. rf   rK  rN  r!   N)r   r  r(   ptpr  rn  rt  r  r  r  r  r  r  )r-   sum_X_ref_squareds     r2   test_reference_signalz8TestSampledSpectralRepresentations.test_reference_signal  s     	$**bffTZZ&8sCTZZ1_!55tzzB  

 2TZZ__a5G GHtvv(994::F$&&!)&77Dr4   c                    t        | j                  d      }t        t        |            t	        j
                  t        |j                  dz  |j                  dz  z               }}t        | j                  |z        }t        | j                  || j                     z  |z  | j                  | j                  z  dz         t        || j                     |z  | j                  dz         | j                  | j                  z  t        ||z        dz  z  }| j                  t        ||z        dz  z  }t        | j                  t        |      z  | j                          t        | j                  t        |      z  | j"                         t%        d| j                  z  |dd      }t'        | j                  fddi|\  }}	t'        | j                  fddi|\  }}
t	        j(                  |	j*                        j,                  }t        |	t        ||z        dz  |t/        |	      z  	       t        |
||t/        |
      z  	       t%        dt1        | j                        d
d|}t        t3        | j                  fddi|d   |	|t/        |	      z  	       t        t3        | j                  fddi|d   |
|t/        |
      z  	       y)zVerify spectral representations of windowed DFT.

        Furthermore, the scalings of `periodogram` and `welch` are verified.
        F)symrf   r!   )rM  r   r   rA   rI   rG   rJ   r;   r   r%  Nr   )r   r  ru  rt  r(   rQ  r  r  r   r  r   r  r  r  rn  r  r  r  rs  r   r  rO   r  r  r  r   )r-   r  c_ampc_rmsXwX_ESDX_PSDr  rD  P_magP_psd	float_ress               r2   test_windowed_DFTz4TestSampledSpectralRepresentations.test_windowed_DFT  sF   
 U#3q6{BGGC	AFFAI0E,F$GuA 	2dhh</%7dhh9NQR9RS488u,djjl; 466!CU
OQ$66R%Z!++s5z14::>s5z14::> QtvvXaNtzzD:DD5tzzC9CC5 HHU[[)44	s2e8}a/iE
6JKu9SZ+?@ <#djj/A<<djjC*CCAF&s5z1	3djjB)BrB1Eu&s5z1	3r4   N)r   r   r   __doc__r  rP   __annotations__rn  r  r  r  r(   ndarrayr  propertyr  r  r  r  r   r4   r2   r  r    s     AsKAuOE5CL::::LL' U   % % %
E$3r4   r  )2r   numpyr(   numpy.testingr   r   r   r   r   r   r   r	   r^   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   rC  r   rF  r   r   rz  r  r  r  r9  r  r   r4   r2   <module>r     s    
 N N  *  1 3 3 %? ? ? % 6 N OZ' Z'zE0 E0N
m* m*` 03  3 jg! g!Ty yxX3 X3r4   