
    e!hk3                    x   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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 d dl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      Z/ G d d      Z0y)    N)assert_assert_allcloseassert_array_equalassert_equalassert_array_almost_equal_nulpsuppress_warnings)raises)signal)fftfreqrfftfreqfftirfft)	trapezoid)periodogramwelchlombscargle	coherencespectrogram
check_COLA
check_NOLA)hann)_spectral_helper)stft_compare)istft_compare)csd_comparec                   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        h/var/www/html/diagnosisapp-backend/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        r1   test_real_onesided_oddz&TestPeriodogram.test_real_onesided_odd$   sg    HHRL!1~1299S>$./GGAJ!	X15)r3   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        r1   test_real_twosidedz"TestPeriodogram.test_real_twosided.   s\    HHRL!1e4172s+,GGB!1r3   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.   r/   gr0   s         r1   test_real_spectrumz"TestPeriodogram.test_real_spectrum7   s]    HHRL!1j111i012;;q#q121T6"r3   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        r1   test_integer_evenz!TestPeriodogram.test_integer_even?   su    HHRs#!1~12;;q#q12GGAJ!	"	Q1r3   c                     t        j                  dt              }d|d<   t        |      \  }}t	        |t        j
                  d      dz         t        j                  d      }d|d<   |dz  }t	        ||d	
       y )Nr5   rM   r    r   r6   r7   r%   r8   r9   r:   )r'   r(   rO   r   r   r<   r*   r+   s        r1   test_integer_oddz TestPeriodogram.test_integer_oddJ   sj    HHRs#!1~1299S>$./GGAJ!	X15)r3   c                     t        j                  dt              }d|d<   t        |d      \  }}t	        |t        dd             t        j                  dd      }d|d<   t	        ||       y )	Nr   rM   r    r   Fr?   rA   rB   )r'   r(   rO   r   r   r   rC   r+   s        r1   test_integer_twosidedz%TestPeriodogram.test_integer_twosidedT   s_    HHRs#!1e4172s+,GGB!1r3   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?   rA         ?)r'   r(   
complex128r   r   r   rC   r+   s        r1   test_complexzTestPeriodogram.test_complex]   sc    HHR'!1e4172s+,GGB!!1r3   c                 v    t        t        t        t        j                  dt        j
                        d       y )N   foorG   )assert_raises
ValueErrorr   r'   r(   rX   r,   s    r1   test_unk_scalingz TestPeriodogram.test_unk_scalingf   s"    j+rxx2==/I	r3   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   rM      r    
   rA   r   re   r       r    <   )	r'   r(   float64reshaper   r   shaper   newaxisr,   r-   r.   r/   f0p0s         r1   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Dr3   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 )
Nrc   rM   rf   re   r    rA   r   axisrh   re   r    r    ri   )r'   r(   rj   rk   r   r   rl   r   rn   s         r1   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4r3   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   rf   r       )r'   r(   r   r
   
get_windowr   r]   r^   r,   r-   r.   r/   winfepewin_errs           r1   test_window_externalz$TestPeriodogram.test_window_external   s    HHRL!1b&)1+QC(B&q"-&q"-##FB/j+q'	#r3   c                     t        j                  d      }d|d<   t        |      \  }}t        |d      \  }}t        ||d d d          t        ||d d d          t	        |j
                  d       y )Nr   r    r   ry   nfftre   )   )r'   r(   r   r   r   rl   )r,   r-   r.   r/   fppps         r1   test_padded_fftzTestPeriodogram.test_padded_fft   sg    HHRL!1~1QR(B2cc7#2cc7#288U+r3   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      re   )r   r   rl   r'   emptyr,   r.   r/   rl   s       r1   test_empty_inputz TestPeriodogram.test_empty_input   sl    21177D)177D)+ 	/Erxx/DAqqww.qww.	/r3   c                     dD ]Q  }t        t        j                  |      d      \  }}t        |j                  |       t        |j                  |       S y Nr   r   r    rt   )r   r'   r   r   rl   r,   rl   r.   r/   s       r1   test_empty_input_other_axisz+TestPeriodogram.test_empty_input_other_axis   sE    % 	/ErxxQ7DAqqww.qww.	/r3   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        r1   test_short_nfftzTestPeriodogram.test_short_nfft   u    HHRL!12&12;;q#q12GGAJ!	"	Q1r3   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        r1   test_nfft_is_xshapez#TestPeriodogram.test_nfft_is_xshape   r   r3   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   rN   r+   s        r1   test_real_onesided_even_32z*TestPeriodogram.test_real_onesided_even_32   s    HHR!1~12;;q#q12GGAsO!	"	Q1177"#r3   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 )Nr5   r.   r    r   r6   r7   r%   r8   Hz>r:   )r'   r(   r   r   r<   r*   r   rN   r+   s        r1   test_real_onesided_odd_32z)TestPeriodogram.test_real_onesided_odd_32   s    HHR!1~1299S>$./GGAsO!	X14(177"#r3   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?   rA   rB   r'   r(   r   r   r   rC   r   rN   r+   s        r1   test_real_twosided_32z%TestPeriodogram.test_real_twosided_32   sv    HHR!1e4172s+,GGB$!1177"#r3   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   FrV   r   Fr?   rA   rW   r.   r   r+   s        r1   test_complex_32zTestPeriodogram.test_complex_32   sv    HHR!1e4172s+,GGB#&!1177"#r3   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   rf   zOthe size of the window must be the same size of the input on the specified axismatchwindow)r'   r(   r
   rz   r]   r^   r   )r,   r-   r|   expected_msgs       r1   test_shorter_window_errorz)TestPeriodogram.test_shorter_window_error   sZ    HHRL!+=:\: 	'#&	' 	' 	's   AA$N)__name__
__module____qualname__r2   r=   rD   rK   rP   rR   rT   rY   r`   pytestmarkskipifsysmaxsizerq   rw   r   r   r   r   r   r   r   r   r   r   r    r3   r1   r   r      s    	*#	* [[u/  E	E [[u/  5	5
#,//		
$	$$$'r3   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"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        r1   r2   z!TestWelch.test_real_onesided_even   si    HHRL!!Q"12;;q#q12HH " #14d3r3   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        r1   r=   z TestWelch.test_real_onesided_odd   si    HHRL!!Q"1299S>#-.HH " #14d3r3   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   r@   rA   r   S8?r   r   r   r   r   r   r   r   )r'   r(   r   r   r   r   r+   s        r1   rD   zTestWelch.test_real_twosided
  sf    HHRL!!Q59171c?+HH F G14d3r3   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%   rF   )r   rH   r!   r   )g      ?g-UU?.iqUU?r   g-UU?r   r   r   r+   s        r1   rK   zTestWelch.test_real_spectrum  sk    HHRL!!Q:612;;q#q12HH " #14d3r3   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   rM   r    r   r%   r   r!   r   r   r   r   )r'   r(   rO   r   r   r)   r   r+   s        r1   test_integer_onesided_evenz$TestWelch.test_integer_onesided_even  sl    HHRs#!!Q"12;;q#q12HH " #14d3r3   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   rM   r    r   r%   r"   r   r   r   r   r   r   )r'   r(   rO   r   r   r<   r   r+   s        r1   test_integer_onesided_oddz#TestWelch.test_integer_onesided_odd(  sl    HHRs#!!Q"1299S>#-.HH " #14d3r3   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   rM   r    r   r%   Fr   rA   r   r   r   )r'   r(   rO   r   r   r   r   r+   s        r1   rT   zTestWelch.test_integer_twosided2  si    HHRs#!!Q59171c?+HH F G14d3r3   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   rV   r   r%   Fr   rA   )g&>?#q?n)t?r   r   r   r   r   r   r   )r'   r(   rX   r   r   r   r   r+   s        r1   rY   zTestWelch.test_complex<  sm    HHR'!!Q59171c?+HH F G14d3r3   c                 x    t        t        t        t        j                  dt        j
                        dd       y Nr[   r\   )rH   r   )r]   r^   r   r'   r(   rX   r_   s    r1   r`   zTestWelch.test_unk_scalingF  s$    j%!R]])C#Q	0r3   c                     t        j                  dt         j                        dz   }t        |dd      \  }}t	        |t        j
                  |      d       y Nrf   rM   {Gz?linearr   detrendr9   r:   r'   r<   rj   r   r   
zeros_liker,   r-   r.   r/   s       r1   test_detrend_linearzTestWelch.test_detrend_linearJ  sB    IIb

+d2QH512==+%8r3   c                     t        j                  dt         j                        dz   }t        |dd      \  }}t        |dd       \  }}t	        ||d       t	        ||d       y )	Nrf   rM   r   Fr   c                     | S Nr   r-   s    r1   <lambda>z.TestWelch.test_no_detrending.<locals>.<lambda>R  s     r3   r9   r:   )r'   r<   rj   r   r   r,   r-   f1p1f2p2s         r1   test_no_detrendingzTestWelch.test_no_detrendingO  sW    IIb

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

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

+d2IIhQFH12==+%8r3   c                    t        j                  dt         j                        dz   }|j                  d      }t        j                  |dd      }t        |ddd 	      \  }}t        |t        j                  |      d
       y )Nrc   rM   r   rd   re   r   rf   c                 2    t        j                  | dd      S Nr   r   )ru   r   r   r   s    r1   r   z6TestWelch.test_detrend_external_nd_0.<locals>.<lambda>h  s    !#)N r3   r   ru   r   r9   r:   )r'   r<   rj   rk   moveaxisr   r   r   r   s       r1   test_detrend_external_nd_0z$TestWelch.test_detrend_external_nd_0c  sh    IIb

+d2IIhKK1a QNP12==+%8r3   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 Nrc   rM   r   rd   rf   r   rg   r   r    vIh%<=r   )	r'   r<   rj   rk   r   r   rl   r   rm   rn   s         r1   rq   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Ir3   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 Nrc   rM   r   rs   rf   r   )r   ru   rv   r    r  r   r   )r'   r<   rj   rk   r   r   rl   r   rn   s         r1   rw   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=r3   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%   rf   r   r   r   r[   ry   )
r'   r(   r   r
   rz   r   r   rl   r]   r^   r{   s           r1   r   zTestWelch.test_window_external}  s    HHRL!!QFA.1*q"c40B&q"-&q"-288T*288T*j%#q	*##FB/j%'4	1r3   c                     t        g       \  }}t        |j                  d       t        |j                  d       dD ]O  }t        t        j                  |            \  }}t        |j                  |       t        |j                  |       Q y r   )r   r   rl   r'   r   r   s       r1   r   zTestWelch.test_empty_input  sl    Ry1177D)177D)+ 	/E%)DAqqww.qww.	/r3   c                     dD ]Q  }t        t        j                  |      d      \  }}t        |j                  |       t        |j                  |       S y r   )r   r'   r   r   rl   r   s       r1   r   z%TestWelch.test_empty_input_other_axis  sE    % 	/E%q1DAqqww.qww.	/r3   c                 h   t        j                  d      }d|d<   t               5 }d}|j                  t        |       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   zBnperseg = 256 is greater than input length  = 8, using nperseg = 8r   r      r   r   r   )r'   r(   r   filterUserWarningr   r   
r,   r-   supmsgr.   r/   r   r   r   r   s
             r1   test_short_datazTestWelch.test_short_data  s    HHQK!   	9CVCJJ{C(&)DAq1FC8FB		9
 q!$B22BB	9 	9s   :B((B1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    rh   )re   r   )r]   r^   r   r'   r(   r   r<   rk   r_   s    r1   test_window_long_or_ndz TestWelch.test_window_long_or_nd  sQ    j%!a+9NOj%!aiil**51	3r3   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        r1   test_nondefault_noverlapz"TestWelch.test_nondefault_noverlap  sM    HHRL#A#QQ/1HH  15)r3   c           	      \    t        t        t        t        j                  d      dddd       y Nr[   r    r   re      )r]   r^   r   r'   r(   r_   s    r1   test_bad_noverlapzTestWelch.test_bad_noverlap  s    j%!aAFr3   c                 Z    t        t        t        t        j                  d      dd       y N   r   r[   )r   r   )r]   r^   r   r'   r*   r_   s    r1   test_nfft_too_shortzTestWelch.test_nfft_too_short  s    j%1aHr3   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   rN   r+   s        r1   r   z$TestWelch.test_real_onesided_even_32  s    HHR!!Q"12;;q#q12HH "#&(14d3177"#r3   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   rN   r+   s        r1   r   z#TestWelch.test_real_onesided_odd_32  s    HHR!!Q"1299S>#-.HH "#&(14d3177"#r3   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   rA   r   r   r   r'   r(   r   r   r   r   r   rN   r+   s        r1   r   zTestWelch.test_real_twosided_32  s    HHR!!Q59171c?+HH "#&( 	14d3177"#r3   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   rV   r   r%   Fr   rA   )g%?A2q?d^?r=  g~?r=  r=  r<  r.   r   r   zdtype mismatch, , r9  r+   s        r1   r   zTestWelch.test_complex_32  s    HHR!!Q59171c?+HH FGJL14d3177""177)2aggY7	9r3   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 Nr1     rA   re   r    r#   r   r   r   rh      )r'   r(   r   r   r   )r,   r-   r   r.   fodd_fevens          r1   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!r3   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 )Nrc   g     @rf   ,  re   )r   bartlett)tukey皙?flattoprF   )fsr   r   rH   rI   r$   gMbP?r   )	rO   r'   r<   sinpir   r   sqrtr   )r,   ArN  r   fsigiittr-   r   rE  p_specfreqp_denss                r1   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!%'
	'r3   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#   rt   err_msg)
r'   randomseedrandnr   rangerk   ndimr   squeeze)	r,   x_flatrE  p_flatanewshaper-   p_plusp_minuss	            r1   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r3   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   )rL  皙?        g&E    9rq  r   r   zunrecognised-average)r'   r(   r   r   r)   r   r]   r^   r+   s        r1   test_averagezTestWelch.test_average'  sz    HHRL!!Q8412;;q#q12HH6714d3j%A4	6r3   N)#r   r   r   r2   r=   rD   rK   r   r   rT   rY   r`   r   r   r  r  r  rq   rw   r   r   r   r  r"  r*  r.  r2  r   r   r   r   rG  rZ  rl  rr  r   r3   r1   r   r      s    4444444409
,999J>1"//  3
*GI	$	$
$
9"$',F"
6r3   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"y!)"TestCSDc                 "   t        j                  d      }t        j                  d      }t        j                  ddd      }t        j                  dt         j                        }t	        ||d      \  }}t        ||       t        ||       y )Nr%   r1  r   r!   r-  rM   r   r'   r(   r)   rX   csdr   r,   r-   yr.   cr   c1s          r1   test_pad_shorter_xzTestCSD.test_pad_shorter_x5  sh    HHQKHHRLKK3"HHQR]]+Q2&B22r3   c                 "   t        j                  d      }t        j                  d      }t        j                  ddd      }t        j                  dt         j                        }t	        ||d      \  }}t        ||       t        ||       y )Nr1  r%   r   r!   r-  rM   r   rv  rx  s          r1   test_pad_shorter_yzTestCSD.test_pad_shorter_y@  sh    HHRLHHQKKK3"HHQR]]+Q2&B22r3   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(   rw  r   r)   r   r+   s        r1   r2   zTestCSD.test_real_onesided_evenK  sk    HHRL!!1a#12;;q#q12HH " #14d3r3   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(   rw  r   r<   r   r+   s        r1   r=   zTestCSD.test_real_onesided_oddU  sk    HHRL!!1a#1299S>#-.HH " #14d3r3   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(   rw  r   r   r   r+   s        r1   rD   zTestCSD.test_real_twosided_  sh    HHRL!!1aE:171c?+HH F G14d3r3   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        r1   rK   zTestCSD.test_real_spectrumi  sm    HHRL!!1aJ712;;q#q12HH " #14d3r3   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(   rO   rw  r   r)   r   r+   s        r1   r   z"TestCSD.test_integer_onesided_evens  sn    HHRs#!!1a#12;;q#q12HH " #14d3r3   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(   rO   rw  r   r<   r   r+   s        r1   r   z!TestCSD.test_integer_onesided_odd}  sn    HHRs#!!1a#1299S>#-.HH " #14d3r3   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(   rO   rw  r   r   r   r+   s        r1   rT   zTestCSD.test_integer_twosided  sk    HHRs#!!1aE:171c?+HH F G14d3r3   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(   rX   rw  r   r   r   r+   s        r1   rY   zTestCSD.test_complex  so    HHR'!!1aE:171c?+HH F G14d3r3   c           	          t        t        t        t        j                  dt        j
                        t        j                  dt        j
                        dd       y r   )r]   r^   rw  r'   r(   rX   r*   r_   s    r1   r`   zTestCSD.test_unk_scaling  s6    j#rxx2=='Agga/	Kr3   c                     t        j                  dt         j                        dz   }t        ||dd      \  }}t	        |t        j
                  |      d       y r   r'   r<   rj   rw  r   r   r   s       r1   r   zTestCSD.test_detrend_linear  sD    IIb

+d21aX612==+%8r3   c                     t        j                  dt         j                        dz   }t        ||dd      \  }}t        ||dd       \  }}t	        ||d       t	        ||d       y )	Nrf   rM   r   Fr   c                     | S r   r   r   s    r1   r   z,TestCSD.test_no_detrending.<locals>.<lambda>  s     r3   r9   r:   )r'   r<   rj   rw  r   r   s         r1   r   zTestCSD.test_no_detrending  s[    IIb

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

+d21aDF12==+%8r3   c                     t        j                  dt         j                        dz   }|j                  d      }t	        ||dd       \  }}t        |t        j                  |      d	       y )
Nr  rM   r   r  rf   c                 0    t        j                  | d      S r   r   r   s    r1   r   z5TestCSD.test_detrend_external_nd_m1.<locals>.<lambda>  r  r3   r   r9   r:   )r'   r<   rj   rk   rw  r   r   r   s       r1   r  z#TestCSD.test_detrend_external_nd_m1  sV    IIb

+d2IIh1aDF12==+%8r3   c                    t        j                  dt         j                        dz   }|j                  d      }t        j                  |dd      }t        ||ddd 	      \  }}t        |t        j                  |      d
       y )Nrc   rM   r   rd   re   r   rf   c                 2    t        j                  | dd      S r	  r   r   s    r1   r   z4TestCSD.test_detrend_external_nd_0.<locals>.<lambda>  s    v~~c'L r3   r
  r9   r:   )r'   r<   rj   rk   r  rw  r   r   r   s       r1   r  z"TestCSD.test_detrend_external_nd_0  sj    IIb

+d2IIhKK1a 1a!LN12==+%8r3   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<   rj   rk   rw  r   rl   r   rm   rn   s         r1   rq   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Ir3   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<   rj   rk   rw  r   rl   r   rn   s         r1   rw   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=r3   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%   rf   r   r   r  r  ry   )
r'   r(   rw  r
   rz   r   r   rl   r]   r^   r{   s           r1   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	)r3   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 )Nrf   r   r   )r   r   )rw  r'   r(   r   rl   r   r*   r   s       r1   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*r3   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    rt   )rf   rf   r   )rf   r   r    )rf   r   r   )rw  r'   r   r   rl   r(   r   s       r1   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-r3   c                 n   t        j                  d      }d|d<   t               5 }d}|j                  t        |       t        ||d      \  }}t        ||dd      \  }}d d d        t        ||d	      \  }}	t        |       t        |	       t        |       t        |	       y # 1 sw Y   KxY wr  )r'   r(   r   r  r  rw  r   r  s
             r1   r  zTestCSD.test_short_data  s    HHQK!   	;CVCJJ{C(q!F+DAqAfc:FB		;
 Q1%B22BB	; 	;s   <B++B4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^   rw  r'   r(   r*   r   r<   rk   r_   s    r1   r"  zTestCSD.test_window_long_or_nd  sh    j#rxx{BGGAJhh{+	-j#rxx{BGGAJiil**51	3r3   c                     t        j                  d      }d|d d d<   t        ||dd      \  }}t        j                  g d      }t	        ||d	       y r$  )r'   r(   rw  r   r   r+   s        r1   r*  z TestCSD.test_nondefault_noverlap  sO    HHRL#A#1aa01HH  15)r3   c           
          t        t        t        t        j                  d      t        j
                  d      dddd       y r,  )r]   r^   rw  r'   r(   r*   r_   s    r1   r.  zTestCSD.test_bad_noverlap&  s+    j#rxx{BGGAJ6	r3   c                     t        t        t        t        j                  d      t        j
                  d      dd       y r0  )r]   r^   rw  r'   r*   r(   r_   s    r1   r2  zTestCSD.test_nfft_too_short*  s'    j#rwwr{BHHRLq	!r3   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 r4  )r'   r(   rw  r   r)   r   r   rN   r+   s        r1   r   z"TestCSD.test_real_onesided_even_32.  s    HHR!!1a#12;;q#q12HH "#&(14d3177"#r3   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 r6  )r'   r(   rw  r   r<   r   r   rN   r+   s        r1   r   z!TestCSD.test_real_onesided_odd_329  s    HHR!!1a#1299S>#-.HH "#&(14d3177"#r3   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 r8  r'   r(   rw  r   r   r   r   rN   r+   s        r1   r   zTestCSD.test_real_twosided_32D  s    HHR!!1aE:171c?+HH "#&( 	14d3177"#r3   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        r1   r   zTestCSD.test_complex_32P  s    HHR!!1aE:171c?+HH FGJL14d3177""177)2aggY7	9r3   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   rw  r   )r,   r-   ry  r   r.   rD  rE  rF  s           r1   rG  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!r3   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   ro  r@   rn  )r'   r`  rb  copyrw  r   )r,   r-   ry  rE  p_samep_copieds         r1   test_copied_datazTestCSD.test_copied_datao  s    IIOOBFFH1a(-/	6!Q6*/18)1a(-/	6!Q8*/18)r3   N)#r   r   r   r|  r~  r2   r=   rD   rK   r   r   rT   rY   r`   r   r   r  r  r  rq   rw   r   r   r   r  r"  r*  r.  r2  r   r   r   r   rG  r  r   r3   r1   rt  rt  4  s    		44444444K9
,999J>)"+,. "3*!	$	$
$
9"&*r3   rt  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 Nrc   r   r!   rh   rf   r   )r'   r`  rb  r  r)   r*   r   r   r,   r-   ry  r.   Cr   C1s          r1   test_identical_inputz"TestCoherence.test_identical_input  sf    IIOOBGGAJKK3"GGAJ1a,B22r3   c                     t         j                  j                  d      }| }t        j                  ddd      }t        j                  d      }t        ||d      \  }}t        ||       t        ||       y r  )r'   r`  rb  r)   r*   r   r   r  s          r1   test_phase_shifted_inputz&TestCoherence.test_phase_shifted_input  s`    IIOOBBKK3"GGAJ1a,B22r3   N)r   r   r   r  r  r   r3   r1   r  r    s    		r3   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]  rA   rK  g      ?r   re   r#   rt   )r'   r`  rb  r   r   r   r  )r,   r-   rN  r   r   r'  r.   rE  PfwPws              r1   test_average_all_segmentsz)TestSpectrogram.test_average_all_segments  su    IIOOD! aVWh?1aq"fgx8B2+R0r3   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]  rA   r  r   re   r&  )r"   )r"   I   r%   r   i   )
r'   r`  rb  r   r
   rz   r   rl   r]   r^   )r,   r-   rN  r   r   r'  r.   rE  r  r|   r}   Per   s                r1   r   z$TestSpectrogram.test_window_external  s    IIOOD! aVWh?1a42sD1E	Ar288T*288V,j+q#q	*##OT:j+q'4	1r3   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]  rA   r  r   zInperseg = 1025 is greater than input length  = 1024, using nperseg = 1024i  r  r  r   )r'   r`  rb  r   r   r  r  r   )r,   r-   rN  r.   rE  r/   r  r   r   r   r   f3p3s                r1   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   r3   r1   r  r    s    11& r3   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$   rA   r!   d     ffffff?# {Gz?      $@r    r   rM   weightsN)r'   rQ  r`  RandomStaterandr)   rP  r   argmax	ones_likerN   )r,   amplwphininnoutr/   rngrtry  r.   r  deltas                 r1   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/r3   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$   rA   r!   r  r  r  r  r  g      @r   rp  rO  )r'   rQ  r`  r  r  r)   rP  r   rR  rl   r   )r,   r  r  r  r  r  r/   r  r  r  ry  r.   pgrams                r1   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5r3   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$   rA   r!   r  r  r  g333333?r  r  r  T)	precenterF)r  floating_mean)
r'   rQ  r`  r  r  r)   rP  r   r  r   )r,   r  r  r  r  r  r/   offsetr  r  r  ry  r.   r  pgram2s                  r1   test_precenterzTestLombscargle.test_precenter  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&r3   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$   rA   r!   r  r  r  r  r  r  T	normalizer   re   )r'   rQ  r`  r  r  r)   rP  r   r  floatrl   sumr   max)r,   r  r  r  r  r  r/   r  r  r  ry  r.   r  r  r  YY_hatYYscale_to_uses                     r1   test_normalizezTestLombscargle.test_normalize@  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,r3   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    re   r   rL  rt   r  )r'   r)   r]   r^   r   repeatexpand_dimsr,   r  ry  r.   r  s        r1   test_wrong_shapez TestLombscargle.test_wrong_shaped  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Hr3   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   rf   r  F)endpointr[   2   i  rL  re   )r'   r)   rP  r   rQ  )r,   r  ry  r.   s       r1   test_lombscargle_atan_vs_atan2z.TestLombscargle.test_lombscargle_atan_vs_atan2  sZ     KK2te4FF1Q3KKK2sU3c9Aq!A#bee)$r3   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   rL  re   r  )r'   r)   r]   r^   r   r  s        r1   test_wrong_shape_weightsz(TestLombscargle.test_wrong_shape_weights  sc     KK1a KK1a KK1a 3&++aA&j+q!QHr3   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        r1   test_zero_division_weightsz*TestLombscargle.test_zero_division_weights  sJ     HHQKHHQKGGAJ((1+j+q!QHr3   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$   rA   r   r  r  r  r  r  r  Fr  Tpowerr  	amplitudelombre   )r'   r`  r  r  r)   rQ  rP  r   r   r  r  rl   r  whereabsr]   r^   )r,   r  r  r  r  r  r/   r  r  r  ry  r.   pgram_false
pgram_truepgram_power
pgram_norm	pgram_ampr  r  r  f_is                        r1   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!Dr3   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$   rA   r!   r  r  r  333333@r  r  r  T)r  )	r'   rQ  r`  r  r  r)   rP  r   r   r,   r  r  r  r  r  r/   r  r  r  r  ry  r.   r  pgram_offsets                  r1   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 	|,r3   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$   rA   r   r  r  re   r  r  r  TFr  r  r!   r'   r`  r  r  r)   rQ  cosr   r  s                  r1   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$%$r3   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$   rA   Q?r  r  r  r  r  r  r  r   r  Tr  )r'   r`  r  r  r)   rQ  r  r  r   r   r  angle)r,   r  r  r  r  r  r/   r  r  r  r  ry  r.   f_indxr  s                  r1   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#6r3   c                     t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d       }t        t        t
        ||||       y r  r  r  s        r1   test_negative_weightz$TestLombscargle.test_negative_weight5  sL     HHQKHHQKGGAJ771:+j+q!QHr3   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  re   T)r  r  )r'   r)   rQ  r   )r,   r  ry  periodsangular_freqs        r1   test_list_inputzTestLombscargle.test_list_input>  sG    >@ ++c3-255y7*Aq,$$Gr3   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$   rA   r  r  i  r  r   r  r  r  Tr  -C6?r  )r,   r  r  r  r  r  r/   r  r  r  r  ry  r.   r  s                 r1   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$r3   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   ry   r    r$   re   r[   )rc  r'   r*   lenrQ  r   )r,   r  ry  freqss       r1   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  r  r"  r&  r   r3   r1   r  r    sb    &1R6B&'P"-HIB%II/Eb-> &D"7HIFHP >!r3   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    r1   chk_VEz.TestSTFT.test_input_validation.<locals>.chk_VE  s    
 ==599r3   z"nperseg must be a positive integerr   ir   z#noverlap must be less than nperseg.rf   rc   zwindow must be 1-D)re   re   z"window must have length of npersegz"noverlap must be less than npersegz&noverlap must be a nonnegative integerr%  ir]  re   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%   rB  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'\]!rG   )r   r'   r*   r   r(   r2  istftr   warnsr  r   )r,   r+  r-   zrH   s        r1   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)boxcarrf   r   r;  rf   r"   rJ  3      r   r     r   r     blackmanrI     rK  r!   r  r%  r   r     
{}, {}, {}Tr^  )formatr   r   )r,   settingssettingr  s       r1   test_check_COLAzTestSTFT.test_check_COLA  s?    	   	BG%,%%w/Cz73SA	Br3   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)r:  r<  )r;  rf   r-  r=  )rJ  r>  rf   r@  rB  )r   r  %   rD  )rE  rI  {   rG  )rH  r  &   rI  )r   r  '   rK  Tr^  r   r   re   )r   r%  r   F)rL  r   r   r'   r*   r$  )r,   settings_passrN  r  w_failsettings_fails         r1   test_check_NOLAzTestSTFT.test_check_NOLA  s      % 	BG%,%%w/Cz73SA	B ssS[#f+*:;#
 % 	CG%,%%w/C
G 4cB	Cr3   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]  rA   r   r   r%   F)paddedr@   r3  rF   )r@   rH   r   re   r#   rt   )	r'   r`  r  rb  r2  r   r   r  r  )r,   r  r-   rN  r   r   r'  r.   rE  Zr  r  s               r1   r  z"TestSTFT.test_average_all_segments:  s    ii##D)IIdO
 q"fgx',t=1aq"fgx)5:B 	2q	126;r3   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]  rA   r   r   r%   )r#   r    r    r   rt   r#   r-  )	r'   r`  r  rb  r2  rk   r5  Tr   )r,   r  r-   rN  r   r   r'  r   t1Z1r   t2Z2t3x1t4x2s                    r1   test_permute_axeszTestSTFT.test_permute_axesN  s    ii##D)IIdO!R(;
B!))J/VWh "
B r2vw9BrttR(a!#%B 	BBBBq!QzN+Bq!QwK(r3   rH   rF   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  rf   r   r;  r  rf   r"   )rJ  e   r>  r?  r   r]  r  rA  )rH    r  r%  )r   r]  r  rJ  rf   F)r   r'  r   r   rZ  rH   )r   r'  r   rH   r>  r^  	r'   r`  r  r<   rb  sizer2  r5  r   )r,   rH   r  rM  r   Nr   r'  r  r-   rE  zztrxrr  s                  r1   test_roundtrip_realzTestSTFT.test_roundtrip_reale  s    ii##D) -5 	0(FAw		!A399QVV$$AAw#)4$+-HAq" 2w"(';FB HBxj)CAr3/Ar3/	0r3   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   re   r  )r   r  r%  r   r>  rf   Tr(   r   r'  r   r   rZ  r3  NOLAr   r   r'  r   r3  )r'   r`  r  r*   r$  r   r<   rb  rp  r2  r   r6  r  r5  allclose)r,   r  rV  rM  r   rq  r   r'  r  r  r-   rE  rr  rs  rt  s                  r1   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  rf   r   )rJ  rl  r>  rQ  )r   r]  r     )rH  rn  r     )r   r]  r  r   r>  rf   Tr(   rw  ry  r^  )r'   r`  r  r   r   r<   rb  rp  r2  r5  r   r$  )r,   r  rM  r   rq  r   r'  r  r  r-   rE  rr  rs  rt  s                 r1   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#	9r3   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\  rm  rf   Fr   r'  r   r   rZ  r,  r>  r^  r!  gh㈵>)r_  r   r;   )r'   r`  r  r<   rb  rp  astypefloat32r2  r5  r   r   rN   r,   r  rM  r   rq  r   r'  r  r-   rE  rr  rs  rt  r  s                 r1   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'(	)r3   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\  ri  rf   y              $@F)r   r'  r   r   rZ  r@   rH   )r   r'  r   input_onesidedrH   r>  r^  z9Input data is complex, switching to return_onesided=FalseT)r'   r`  r  r<   rb  rp  r2  r5  r   r   r  r  )r,   rH   r  rM  r   rq  r   r'  r  r-   rE  rr  rs  rt  r  r  s                   r1   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\  rj  rk  rf   Trw  F)r'  r   r3  )evenoddconstantr(   r>  r^  ro  )r,   r  rM  r   rq  r   r'  r  r-   rE  rr  rt  r3  zz_extxr_extr  s                   r1   !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	8r3   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;  rl  rf   r   )r   r  r  rA  rf   Tr  )r'  r   r>  r^  ro  r  s                 r1   test_roundtrip_padded_signalz%TestSTFT.test_roundtrip_padded_signal  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	9r3   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  rA  r1  )r   r]  r  rA  i  )r;  r  rf   r   !   )rH  rn  r  r%  r]  rf   y              ?r[   T)r   r'  r   r   r   rZ  F)r   r'  r   r   r   rZ  r@   )r   r'  r   r   )r   r'  r   r   r  r>  r^  )r'   r`  r  r<   rb  rp  exprQ  r2  r5  r   )r,   r  rM  r   rq  r   r'  r   r  r-   xcrE  r7  zcrs  rt  xcrr  s                     r1   test_roundtrip_padded_FFTz"TestSTFT.test_roundtrip_padded_FFT4  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/	2r3   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#   rt   r^  r-  r   zistft transpose minuszistft transpose plus)r'   r`  r  rb  r2  rc  rk   rd  r   re  r5  r]  r   )r,   r  rf  rE  z_flatrh  ri  r-   z_plusz_minusx_transpose_mx_transpose_ps               r1   rl  zTestSTFT.test_axis_rollingW  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Nr3   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  rM   r]  r  re   r  rF   )r3  rH   Tr    ?   Nr#   r!   r%  A   r   B   r:   Frg  )r@   r3  rH   rt   )r  r3  rH   r     )r'   r(   complexr   r   r  r$  r2  r5  r   r  finforN   
resolutionrealimagrl   conj)r,   Xr-   power_xZsrc  Zppsd_ZpZp0Zp1s2psd_Zp01s               r1   test_roundtrip_scalingzTestSTFT.test_roundtrip_scalingq  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r3   N)r   r   r   r   r   thread_unsafer8  rO  rX  r  rf  parametrizeru  r{  r  r  r  r  r  r  rl  r  r   r3   r1   r(  r(    s    [[P& P&dB C><(). [[YU(;<0 =06 [[8 869<)* [[[[YU(;<), = ),V8B9,!2FO4?r3   r(  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``
    ry   nrB   r]  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   re   N)r   r  r]  r'   r   r  r  r   r  r   r  taur  r  )r,   r.   r  s      r1   setup_methodz/TestSampledSpectralRepresentations.setup_method  s    TVVTVV$a **Q,/dhh5\
_
 XX

A-1
ZZ]Q&
r3   returnc                 4    | j                   | j                  z  S )zDuration of signal. r  r]  r_   s    r1   r  z&TestSampledSpectralRepresentations.tau  s     vvr3   c                 :    d| j                   | j                  z  z  S )z
Bin width r    r  r_   s    r1   delta_fz*TestSampledSpectralRepresentations.delta_f  s     DFFTVVO$$r3   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. re   rL  rO  r    N)r   r  r'   ptpr  r]  r  r  r  r  r  r  r  )r,   sum_X_ref_squareds     r1   test_reference_signalz8TestSampledSpectralRepresentations.test_reference_signal  s     	$**bffTZZ&8sCTZZ1_!55tzzB  

 2TZZ__a5G GHtvv(994::F$&&!)&77Dr3   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)symre   r    )rN  r   r   r@   rH   rF   rI   r:   r   r&  Nr   )r   r  r  r  r'   rR  r  r  r   r  r   r  r  r  r]  r  r  r  dictr   r  rN   r  r  r$  r   )r,   r  c_ampc_rmsXwX_ESDX_PSDkwrE  P_magP_psd	float_ress               r1   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	3r3   N)r   r   r   __doc__r  rO   __annotations__r]  r  r  r  r'   ndarrayr  propertyr  r  r  r  r   r3   r1   r  r    s     AsKAuOE5CL::::LL' U   % % %
E$3r3   r  )1r   numpyr'   numpy.testingr   r   r   r   r   r   r   r	   r]   scipyr
   	scipy.fftr   r   r   r   scipy.integrater   scipy.signalr   r   r   r   r   r   r   scipy.signal.windowsr   scipy.signal._spectral_pyr   ,scipy.signal.tests._scipy_spectral_test_shimr   r2  r   r5  r   rw  r   r   rt  r  r  r  r(  r  r   r3   r1   <module>r     s    
 N N  *  3 3 %? ? ? % 6 N O KZ' Z'z|6 |6~	I* I*X
 03  3 jg! g!Ty yxX3 X3r3   