
    G8c                     F   d dl mZmZmZmZ d dlZd dlZd dlm	Z	m
Z
  G d d      Zd Z G d d      Zej                  j                  d	d
dgddgd      ej                  j                  dg dd      ej                  j                  dg dddddfdgdddddfg ddddddfg dddddfg dddddfg dddddfg dddddfg dddddfg dddddfg dddddfg dddddfgg dd       G d  d!                           Zd" Z G d# d$      Z G d% d&      Z G d' d(      Zd) Zd* Zy)+    )assert_allcloseassert_almost_equalassert_array_equalassert_array_almost_equal_nulpN)mlab_apic                      e Zd Zd Z ej
                  d      d        ZddZej                  j                  ddd	gd
dg      d        Z
ej                  j                  dg dg d      d        Zej                  j                  dddgddg      ej                  j                  dg dg d      d               Zej                  j                  dddgddg      d        Zy)
TestStridec                 T    |}|j                   |j                   }|j                   |S N)base)selfxys      </usr/lib/python3/dist-packages/matplotlib/tests/test_mlab.pyget_basezTestStride.get_base
   s+    ff A ff     T)autousec              #   f   K   t        j                         5  d  d d d        y # 1 sw Y   y xY wwr   )r   'suppress_matplotlib_deprecation_warningr   s    r   stride_is_deprecatedzTestStride.stride_is_deprecated   s)     99; 		 	 	s   1%	1.1r   c                    ||z
  }t        j                  dt        |      |z
  dz   |      }t        |      }t        j                  ||f      }t	        |      D ]  }	|||	   ||	   |z    |dd|	f<    |dk(  r|j
                  }|S )z
        This is an adaptation of the original window extraction algorithm.
        This is here to test to make sure the new implementation has the same
        result.
        r      N)nparangelenzerosrangeT)
r   r   NFFTnoverlapaxisstepindnresultis
             r   calc_window_targetzTestStride.calc_window_target   s     hii3q6D=1,d3H4)$ q 	1ASVCF4K0F1a4L	119XXFr   shape )
   r   0D2D)idsc                     t        j                  t        j                  |            j                  |      }t	        j
                  t              5  t        j                  |d       d d d        y # 1 sw Y   y xY w)N   )	r   r   prodreshapepytestraises
ValueErrorr   stride_windows)r   r*   r   s      r   'test_stride_windows_invalid_input_shapez2TestStride.test_stride_windows_invalid_input_shape'   sT    IIbggen%--e4]]:& 	&1%	& 	& 	&s   A11A:zn, noverlap))r   N)   N)   r:   )r:      )zn less than 1zn greater than inputznoverlap greater than nznoverlap equal to nc                     t        j                  d      }t        j                  t              5  t        j                  |||       d d d        y # 1 sw Y   y xY w)Nr,   )r   r   r4   r5   r6   r   r7   )r   r&   r"   r   s       r   "test_stride_windows_invalid_paramsz-TestStride.test_stride_windows_invalid_params-   sD     IIbM]]:& 	01h/	0 	0 	0s   AAr#   r   axis0axis1))r   r   )r1   r   )   r:   )   )zn1-noverlap0zn5-noverlap0zn15-noverlap2zn13-noverlapn3c                 d   t        j                  d      }t        j                  ||||      }ddg}|||<   d||z
  z  |d|z
  <   | j	                  ||||      }|j
                  |j
                  k(  sJ t        ||       t        |      |j
                  k(  sJ | j                  |      |u sJ y )Nd   )r"   r#   r   r   )	r   r   r   r7   r)   r*   r   tupler   )r   r&   r"   r#   r   r   expected_shapeyts           r   test_stride_windowszTestStride.test_stride_windows7   s     IIcN1xdCQ t#&1x<#8q4x $$QH4$Hxx177"""2q!^$///}}Q1$$$r   c                 @   d}t        j                  |      t         j                     }t        j                  |d      }|j	                         }t        j                  |||      }|dk(  r|j                  }|j                  |j                  k(  sJ t        ||       y )N    )   r   r#   r   )
r   r   newaxistileflattenr   r7   r    r*   r   )r   r#   r&   r   x1x2r   s          r   +test_stride_windows_n32_noverlap0_unflattenz6TestStride.test_stride_windows_n32_noverlap0_unflattenJ   s|    IIaL$WWQ ZZ\AD119Bww"(("""1b!r   N)r   r   )__name__
__module____qualname__r   r4   fixturer   r)   markparametrizer8   r=   rH   rR   r+   r   r   r
   r
   	   s!    V^^D! "$ [[Wr7m$F& G&
 [[]D"9  :
0:
0
 [[VaV'71CD[[]@"E  F%	F E
% [[VaV'71CD
" E
"r   r
   c                  "   t         j                  j                  d       d} t         j                  j                  |       dz   }t        j                  |       }t        t        j                  |      |       t        t        j                  |      |       t        t        j                  t        |            |z  t        j                  |             t        t        j                  t        |            t        j                  |             y )Nr     rD   )r   randomseedstandard_normalonesr   r   window_nonehanningr   window_hanning)r&   randr^   s      r   test_windowrc   X   s    IINN1A99$$Q'#-D771:Dt''-t4t''-t4rzz#d),t3T5H5H5NOrzz#d),d.A.A$.GHr   c                   N    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y)TestDetrendc                 :   t         j                  j                  d       d}t        j                  dd|      }t        j                  |      | _        | j
                  dz   | _        t        j                  dd|      | _        ||j                         z
  | _	        t         j                  j                  |      t        j                  |dz  t         j                  z  |dz  z        z   | _        | xj                  | j                  j                         z  c_        y )	Nr   rZ           rD         Y@g      $g     V@r:   )r   r[   r\   linspacer   	sig_zerossig_off	sig_slopemeansig_slope_meanr]   sinpisig_base)r   r&   r   s      r   setup_methodzTestDetrend.setup_methodd   s    
		qKKC#!~~,T32!&&(l II%%a(266!A#bee)QsU2C+DD 	++--r   c                     t        |ddi y )Natol:0yE>)r   )r   argss     r   allclosezTestDetrend.allcloses   s    )D)r   c                 @   t        j                  d      dk(  sJ t        j                  dd      dk(  sJ t        j                  dd      dk(  sJ t        j                  dt         j                        dk(  sJ d| j                  | j                  | j
                  | j
                  | j                  z   | j                  z   j                         t        j                  | j
                  | j
                  | j                  z   | j
                  | j                  z   | j
                  | j                  z   | j                  z   g      t        j                  | j
                  | j
                  | j                  z   | j
                  | j                  z   | j
                  | j                  z   | j                  z   g      j                  fD ]V  }t        |t        j                        r t        t        j                  |      |       =t        j                  |      |k(  rVJ  y )Nrg   r   rL   nonekey      @)r   detrend_nonedetrendrk   rl   rq   tolistr   vstackr    
isinstancendarrayr   r   sigs     r   test_detrend_nonezTestDetrend.test_detrend_nonev   s     $***  !,222||BF+r111||BD$5$56"<<<T\\4>>4==/$,,>FFH		4====4<<7==4>>9==4<<7$..HJ K 		4====4<<7==4>>9==4<<7$..HJ K LM1
 	5C #rzz*"4#4#4S#93?((-444	5r   c                    dD ]b  }t        j                  |      dk(  sJ t        j                  |d      dk(  sJ t        j                  |t         j                        dk(  rbJ  | j                  t        j                  | j                        | j                         | j                  t        j                  | j
                        | j
                         | j                  t        j                  | j
                  | j                  z         | j
                         | j                  t        j                  | j
                  | j                  z         | j
                  | j                  z          | j                  t        j                  | j
                  | j                  z   | j                  z         | j
                  | j                  z          y )N)rg   r|   rg   rm   rz   )	r   detrend_meanr~   rw   rj   rq   rk   rl   rn   r   s     r   test_detrend_meanzTestDetrend.test_detrend_mean   sO    	BC$$S)R///<<0B666<<):):;rAAA	B
 	d''7Hd''6Fd''(DEmm	%d''(FGmmd&9&99	;dmmdnn<t||KLMMD///	1r   c                    | j                   | j                  z   | j                  z   }| j                   | j                  z   }| j	                  t        j                  |d      |       | j	                  t        j                  |j                               |       | j	                  t        j                  |j                         d      |       y Nr   rL   )rq   rl   rk   rn   rw   r   r   r   r   inputtargets      r   4test_detrend_mean_1d_base_slope_off_list_andor_axis0z@TestDetrend.test_detrend_mean_1d_base_slope_off_list_andor_axis0   s    .=!4!44d''A6?d''7@d''Q?Hr   c                    t        j                  | j                  | j                  | j                  z   g      }t        j                  | j                  | j                  g      }| j                  t        j                  |      |       | j                  t        j                  |d       |       | j                  t        j                  |j                  d       j                  |       | j                  t        j                  |      |       | j                  t        j                  |d       |       | j                  t        j                  |j                  dd       |j                         t        j                  | j                  | j                  | j                  z   | j                  | j                  z   | j                  | j                  z   | j                  z   g      }t        j                  | j                  | j                  | j                  | j                  z   | j                  | j                  z   g      }| j                  t        j                  |j                  d      |j                         | j                  t        j                  |d      |       | j                  t        j                  |d      |       | j                  t        j                  |dd      |       | j                  t        j                  |j                  dd      |j                         | j                  t        j                  |j                  t        j                  d      |j                         y )	NrL   constantr{   r#   r   r   defaultrm   )r   r   rk   rq   rj   rw   r   r   r    r~   rl   rn   r   s      r   test_detrend_mean_2dz TestDetrend.test_detrend_mean_2d   s_   		4<<==4<<79 :DNN MM+ ,d''.7d''D96Bd''d;==vFdll5)62dll5t4f=LLjt<fhh	H 		4====4<<7==4>>9==4<<7$..HJ K DMM MM MMD,?,?? MMD,?,??A B 	d''a8&((Cd''A6?d''B7@dll5ia@&Idll577Q?JLLd&7&7a@&((	Lr   c                    | j                   t        j                     ddif| j                   t        j                     ddifdddif| j                   ddif| j                   t        j                     ddiffD ]=  \  }}t        j                  t
              5  t        j                  |fi | d d d        ? y # 1 sw Y   JxY w)	Nr{   spamr1   r|   r#   r   r   r:   )rl   r   rM   r4   r5   r6   r   r~   r   signalkwargss      r   test_detrend_ValueErrorz#TestDetrend.test_detrend_ValueError   s    

+eV_=

+eQZ8vqk"&!-

+fa[9
 	/NFF z* /V.v./ /	// /s   B88C	c                    dddif| j                   ddif| j                   t        j                     ddiffD ]=  \  }}t        j                  t
              5  t        j                  |fi | d d d        ? y # 1 sw Y   JxY w)Nr|   r#   r   r   r:   )rl   r   rM   r4   r5   r6   r   r   r   s      r   test_detrend_mean_ValueErrorz(TestDetrend.test_detrend_mean_ValueError   s    vqk"&!-

+fa[9
 	4NFF
 z* 4!!&3F34 4	4
4 4s   A88B	c                    t        j                  d      dk(  sJ t        j                  d      dk(  sJ t        j                  dd      dk(  sJ t        j                  dt         j                        dk(  sJ | j                  | j                  | j                  | j                  z   fD ]1  }| j                  t        j                  |      | j                         3 y )Nrg   r|   linearrz   )r   detrend_linearr~   rk   rl   rw   rj   r   s     r   test_detrend_linearzTestDetrend.test_detrend_linear   s    ""2&",,,""3'2---||CX."444||CT%8%89R???-
 	DC
 MM$--c2DNNC	Dr   c                 l   | j                   | j                  z   }| j                  }| j                  t	        j
                  |d      |       | j                  t	        j
                  |t        j                        |       | j                  t	        j                  |j                               |       y )Nr   rz   )rl   rk   rj   rw   r   r~   r   r   r   s      r   test_detrend_str_linear_1dz&TestDetrend.test_detrend_str_linear_1d   st    -dll5h7@dll5d.A.ABFKd))%,,.96Br   c                 z   t        j                  | j                  | j                  | j                  | j                  z   g      }t        j                  | j                  | j                  | j                  g      }| j                  t        j                  |j                  dd      |j                         | j                  t        j                  |j                  t        j                  d      |j                         | j                  t        j                  |dd      |       | j                  t        j                  |t        j                  d      |       t        j                  t              5  t        j                  | j                  t         j                            d d d        y # 1 sw Y   y xY w)Nr   r   r   r   )r   r   rk   rl   rj   rw   r   r~   r    r   r4   r5   r6   rM   r   s      r   test_detrend_linear_2dz"TestDetrend.test_detrend_linear_2d   s2   		4<<>>>>DLL8: ; DNN NN NN, - 	LLhQ7	CLLd&9&9BFHH	NLLH15v	?LLD$7$7a@&	J ]]:& 	<rzz :;	< 	< 	<s   71F11F:N)rS   rT   rU   rr   rw   r   r   r   r   r   r   r   r   r   r+   r   r   re   re   c   s=    .*5,1 IL:	/4DC<r   re   	iscomplexFTrealcomplexclass)r/   scopesides)onesidedtwosidedr   )r   zFfstims,len_x,NFFT_density,nover_density,pad_to_density,pad_to_spectrumr      )r   r1   r,      i         !   i     rJ   )nosigFs4FsAllnosig_noNFFTnosig_nopad_tonosig_noNFFT_no_pad_to
nosig_trim	nosig_oddnosig_oddlennosig_stretchnosig_overlapc                   l   e Zd Z ej                  dd      d        Zd Zd Zd Zej                  j                  dd	d
g      d        Zej                  j                  dg d      d        Zd Zd Zd Zej                  j                  dej"                  ej&                  fej"                  dfej(                  ej*                  fej(                  dfg      d        Zd Zd Zd Zd Zej                  j                  dg d      d        Zej                  j                  di dd	idd
iddiddidd idd!ig      d"        Zd# Zd$ Zej                  j                  dd	d
g      d%        Zej                  j                  d&dej@                  fd ejB                  fd!d' fg      d(        Z"d) Z#y*)+TestSpectralr   T)r   r   c
                 X   d}
t        j                  ddd|
z        }||d | }|D cg c]  }|
|z  	 }}|d}n|dk  rdx}}n|}|d}n|dk  r|dz  x}}n|}||}n>|dk  r7t        dt        j                  t        j                  |            z        }|}n|}|	t        |      }n|	dk  rt        |      x}}	n|	}|	|x}}nt        |      x}}d}|}|}|}|}|}|dk(  s|d	k(  r|s|dz  r#t        j                  d|
dz  |d
      d d d   }n!t        j                  d|
dz  |dz  dz         }|dz  r#t        j                  d|
dz  |d
      d d d   }nt        j                  d|
dz  |dz  dz         }n|dz  r*t        j                  |
 dz  |
dz  d|z  d
      dd d   }n t        j                  |
 dz  |
dz  |d
      }|dz  r*t        j                  |
 dz  |
dz  d|z  d
      dd d   }n t        j                  |
 dz  |
dz  |d
      }|}|dz  }t        |      |dz  z
  dz   }||z
  }||||   }|dz  r|d|
z  dz  z  }t        |      dk(  rt        j                  |d|
z  z  g      }t        j                  |d|
z  z  g      } |}!t        j                  |      }"t        |      D ]:  \  }#}|"t        j                  ||z  t         j                  z  dz        d|#z  z  z  }"< |r|"j                  d      }"|j                  }$|
|$_        ||$_        ||$_        ||$_        ||$_        ||$_        ||$_        ||$_        |	|$_        ||$_        ||$_        ||$_        ||$_        |!|$_        | |$_        |"|$_        ||$_        ||$_        ||$_         ||$_!        y c c}w )Nrh   r   r,   r   r   rD   r:   r   r   F)numendpointr   r   )"r   r   intceillog2r   ri   array
zeros_like	enumeratero   rp   astypeclsFsr   fstimsNFFT_densitynover_densitypad_to_densityNFFT_spectrumnover_spectrumpad_to_spectrumNFFT_specgramnover_specgrampad_to_specgram
t_specgram	t_density
t_spectrumr   freqs_densityfreqs_spectrumfreqs_specgramNFFT_density_real)%r   requestr   r   r   len_xr   r   r   r   r   r   fstimr   nover_density_realpad_to_density_realpad_to_spectrum_realNFFT_spectrum_realr   r   r   r   r   NFFT_specgram_realnover_specgram_realr   r   r   t_startt_stopt_stepr   r   r   r   r(   r   s%                                        r   stimzTestSpectral.stim  s    IIaQV$&5	A +11"u*11  #A/22 , !"Q1Ba1GG!.!"3a BGGBGG4E,F$G!GHN"0"0"#&q6 q 58V; ?#2 "1EE14Q7$&(.0J5I#5i #Q& "ArAv0C5:!<<?aC!A !#ArAv0Cq0H10L!N
 $a'!#QQ1E6;"==@qS"B "$QQ1E1JQ1N"P
 #Q& "RC!GR!V014G0G5:!<<=DqD!B !#RC!GR!V0C5:!< $a'!#bS1Wb1f125I1I6;"==>TT"C "$bS1Wb1f1E6;"= '$)Q,11A5#&99wvf,-
!!b&1*$Jz?a#5R#@"ABJXX1QV<=>
	MM!!&) 	7HAu	BEE)A-.Q66A	7 #A
 kk	
')+)+-)+-#!#)++ 1S 2s   N'c                 &   |j                         dk(  sJ |j                         t        |      dz
  k(  sJ t        ||d       |D ]H  }t	        j
                  ||z
        j                         }||   ||dz      kD  sJ ||   ||dz
     kD  rHJ  y )Nr   r   ư>rt   r:   )argminargmaxr   r   r   abs)r   vals	targfreqsresfreqsr   r   r(   s          r   check_freqszTestSpectral.check_freqs  s     A%%% CM!O333)%8 	'Ex%'(//1A7T!A#Y&&&7T!A#Y&&&	'r   c                    t        |      dk(  ry |j                         dk  rXt        j                  |      }|j	                         }| j                  |d | |d | |       | j                  ||d  ||d  |       y |d d  }|j                         }|r6|j                         }||   }	t        |	|d          |d= d||dz
  |dz    |r5y y )Nr   r   r1   )	r   minr   r   r   check_maxfreqcopyr   r   )
r   specfspr   fspazeroindfstimstspectmaxindmaxfreqs
             r   r   zTestSpectral.check_maxfreq  s    v;! 779q=66#;DkkmGtHW~tHW~vFtGH~tGH~vF)		 \\^F&kG5'(E&(6!8$ r   c                    | j                   dz   dd| j                   dz   dd| j                   dz   dd| j                   dz   ddddi| j                   d	d
| j                   dddddd| j                   dt        j                  d      df	D ]E  }t        j                  t
              5  t        j                  dd| j                   i| d d d        G y # 1 sw Y   RxY w)Nr   r   )r   mode	magnitudeanglephaser  r   eggs)r   r   r,      )r   r!   r"   )r!   r"   	   )r   r!   windowr   r+   )r   r   r^   r4   r5   r6   r   _spectral_helper)r   r   s     r   test_spectral_helper_raisesz(TestSpectral.test_spectral_helper_raises  s     &&(I.&&(K0&&(G,&&(G,V&&6*&&""5R(&&"wwqz#
 	:F z* :%%99&9: :	:: :s   )"CC	r  r   psdc                     t        j                  t              5  t        j                  | j
                  |       d d d        y # 1 sw Y   y xY w)N)r   r  )r4   r5   r6   r   _single_spectrum_helperr   )r   r  s     r   -test_single_spectrum_helper_unsupported_modesz:TestSpectral.test_single_spectrum_helper_unsupported_modes  s7    ]]:& 	>((466=	> 	> 	>s   "AAz
mode, case))r  density)r  specgram)r  spectrumc                    t        | d|       }t        j                  | j                  | j                  t        | d|       | j                  t        | d|       t        | d|       | j
                  |      \  }}}t        ||d       t        |t        | d|       d       |j                  d	   |j                  d	   k(  sJ |j                  d
   t        | d|       j                  d	   k(  sJ y )Nfreqs_NFFT_nover_pad_to_)r   r   r!   r   r"   pad_tor   r  r   r   t_r   r   )getattrr   r
  r   r   r   r   r*   )r   r  casefreqsr   r   ts          r   test_spectral_helper_psdz%TestSpectral.test_spectral_helper_psd  s     tfo.,,fftf~.wwTVD6?3474&!12**c1 	U/742dV5EBzz!}A...zz!}4&k : @ @ CCCCr   c           	      >   | j                   }t        j                  | j                  | j                  dz   | j                  | j
                  | j                  | j                  | j                        \  }}t        ||d       |j                  |j                  k(  sJ y )Nr   r   r   r!   r   r"   r  r   r   r   )r   r   csdr   r   r   r   r   r   r   r*   r   r  r   r   s       r   test_csdzTestSpectral.test_csd  s|    ""HHtvv"&"3"3 $&*&8&8$($7$7#'::/	c 	U/zzU[[(((r   c           	      6   | j                   yt        | j                  | j                  dz   | j                  t        j
                  | j                        }t	        j                  dd| j                   i|\  }}t	        j                  dd| j                   dz  i|\  }}t        t        j                  t        j                  |      |z        j                  t        j                  t        j                  |dz        |z  dz        j                         y)zTest zero padding of csd().Nr   )r   r   r   r	  r   r!   r:   r+   )r   dictr   r   r   r_   r   r!  r   r   sum	conjugater   )r   sargsspec0_spec1s        r   test_csd_paddingzTestSpectral.test_csd_padding
  s    $tvvdggd>N>N::' 88<!2!2<e<q88>!2!21!4>>qBFF2<<#6u#<=BBFF2<<a#8#>q#@AFF	Hr   c                 B   | j                   }t        j                  | j                  | j                  | j
                  | j                  | j                  | j                        \  }}|j                  |j                  k(  sJ | j                  |||| j                         y )Nr   r!   r   r"   r  r   )r   r   r  r   r   r   r   r   r   r*   r   r   r"  s       r   test_psdzTestSpectral.test_psd  s~    ""HHtvv"&"3"3 $&*&8&8$($7$7#'::/	c zzU[[(((uc4;;7r   zmake_data, detrendrm   r   c                 X   | j                   y  || j                         }|dz   }|dz   }t        j                  ||g      }t        j                  |d      }|j                  j                         }|j                         }t        j                  |      }t        j                  || j                   | j                  d| j                  |      \  }}	t        j                  || j                   | j                  d| j                  |      \  }
}t        j                  || j                   | j                  d| j                        \  }}t        |	|       t        ||       t        ||d       t        j                  t              5  t        |
|d       d d d        y # 1 sw Y   y xY w)	Nr1   ffffff
@r  r   r   )r   r!   r   r"   r   r~   )r   r!   r   r"   r   ru   r   )r   r   r   rN   r    rO   r   r   r  r   r   r   r   r4   r5   AssertionError)r   	make_datar~   ydataydata1ydata2ydatabycontrolspec_gfsp_gspec_bfsp_bspec_cfsp_cs                 r   test_psd_detrendzTestSpectral.test_psd_detrend!  sd   
 $$++,qs		66*+w'"=='5&*&7&7$(GG*+'+zz)02 6&*&7&7$(GG*+'+zz)02 8&*&7&7$(GG*+'+zz	3
 	5%(5%(U3]]>* 	8FF7	8 	8 	8s   F  F)c                    | j                   y t        j                  | j                         }|dz   }|dz   }t        j                  t        j
                  |            }||z  }t        j                  |      }t        j                  ||g      }t        j                  ||g      }t        j                  |d      }t        j                  |d      }|j                  j                         }|j                         }	|j                         }t        j                  |	| j                   | j                  d| j                  t        j                        \  }
}t        j                  || j                   | j                  d| j                  t        j                        \  }}t        j                  || j                   | j                  d| j                  t        j                        \  }}|t        |      t        j                  |      dz  j!                         z  z  }t#        ||       t#        ||       t%        |
|d       t'        j(                  t*              5  t%        ||d       d d d        y # 1 sw Y   y xY w)	Nr1   r1  r2  r   r   r!   r   r"   r   r	  r:   ru   r   )r   r   r   r   ra   	ones_liker   rN   r    rO   r  r   r   r_   r   r   r&  r   r   r4   r5   r3  )r   r5  r6  r7  
windowVals	ycontrol1	ycontrol2r9  r8  ydatafr:  r;  r<  r=  r>  r?  s                   r   test_psd_window_hanningz$TestSpectral.test_psd_window_hanningH  s   $		$++,qs((f)=>
Z'	''/			66*+99i34w'778W-"##%6&*&7&7$(GG*+'+zz(,(;(;= 6&*&7&7$(GG*+'+zz(,(;(;= 8&*&7&7$(GG*+'+zz(,(8(8: 	#i."&&"4a"7!<!<!>>>5%(5%(U3]]>* 	8FF7	8 	8 	8s   I77J c           	         | j                   y t        j                  | j                         }t        j                  | j                         }|dz   }|dz   }|}|}t	        j
                  t        j                  |            }||z  }t	        j
                  |      }t        j                  ||g      }t        j                  ||g      }t        j                  |d      }t        j                  |d      }|j                  j                         }|j                         }	|j                         }t	        j                  |	| j                   | j                  d| j                  t        j                  t        j
                        \  }
}t	        j                  || j                   | j                  d| j                  t        j                  t        j
                        \  }}t	        j                  || j                   | j                  d| j                  t        j                        \  }}|t!        |      t        j"                  |      dz  j%                         z  z  }t'        ||       t'        ||       t)        |
|d	       t+        j,                  t.              5  t)        ||d	       d d d        y # 1 sw Y   y xY w)
Nr1   r1  r2  r   )r   r!   r   r"   r   r~   r	  rB  r:   ru   r   )r   r   r   r   r   ra   rC  r   rN   r    rO   r  r   r   r   r_   r   r   r&  r   r   r4   r5   r3  )r   r5  r9  r6  r7  rE  rF  rD  r8  rG  r:  r;  r<  r=  r>  r?  s                   r   &test_psd_window_hanning_detrend_linearz3TestSpectral.test_psd_window_hanning_detrend_linearr  s+   $		$++,88D--.qs		((i)@A

*	''	2			66*+99i34w'778W-"##%6&*&7&7$(GG*+'+zz)-)<)<(,(;(;= 6&*&7&7$(GG*+'+zz)-)<)<(,(;(;= 8&*&7&7$(GG*+'+zz(,(8(8: 	#i."&&"4a"7!<!<!>>>5%(5%(U3]]>* 	8FF7	8 	8 	8s    J88Kc                 ^   | j                   }t        j                  | j                  | j                  | j
                  | j                  | j                  | j                  t        j                  | j                              \  }}t        ||d       |j                  |j                  k(  sJ y )Nr   r!   r   r"   r  r   r	  r   r   )r   r   r  r   r   r   r   r   r   r   r^   r   r   r*   r"  s       r   test_psd_windowarrayz!TestSpectral.test_psd_windowarray  s    ""HHtvv"&"3"3 $&*&8&8$($7$7#'::$&GGD,B,B$CE	c 	U/zzU[[(((r   c           
         t        j                  t        j                  | j                              }t        j
                  | j                  | j                  | j                  | j                  | j                  | j                  t         j                        \  }}t        j
                  | j                  | j                  | j                  | j                  | j                  | j                  t         j                  d      \  }}t        j
                  | j                  | j                  | j                  | j                  | j                  | j                  t         j                  d      \  }}t        ||       t        ||       t        ||       t        ||dz  j                         z  || j                  z  |j                         dz  z  d       y )NrL  T)r   r!   r   r"   r  r   r	  scale_by_freqFr:   ru   r   )r   ra   r   r^   r   r  r   r   r   r   r   r   r   r   r&  )r   winr   r   spec_sfsp_sspec_nfsp_ns           r   "test_psd_windowarray_scale_by_freqz/TestSpectral.test_psd_windowarray_scale_by_freq  s_   !!"''$*@*@"ABHHtvv"&"3"3 $&*&8&8$($7$7#'::$($7$79	c 466&*&7&7$(GG*.*<*<(,(;(;'+zz(,(;(;/35 466&*&7&7$(GG*.*<*<(,(;(;'+zz(,(;(;/46 	3&3&4(Q||~-twwswwy!|3"	$r   kind)r   r  r  r  c                    | j                   } t        t        | d      | j                  | j                  | j
                  | j                        \  }}t        ||d       |j                  |j                  k(  sJ |dk(  r<| j                  ||| j                         | j                  |||| j                         y y )N	_spectrum)r   r   r   r  r   r   r  )r   r  r   r   r   r   r   r   r*   r   r   r   )r   rV  r  r   r   s        r   test_spectrumzTestSpectral.test_spectrum  s     ##5GDTF)"45ffwwdjj1E1EG	c 	U/zzU[[(((;tS$++6T5#t{{; r   r   r  r   r  r  c           
         | j                   }t        j                  d| j                  | j                  | j
                  | j                  | j                  | j                  d|\  }}}|j                  d      dk(  rt        j                  |      }t        j                  |d      }t        ||d       t        || j                  d       |j                  d   |j                  d   k(  sJ |j                  d   | j                  j                  d   k(  sJ |j                  d      d	vr{t        j                  |j!                               dk7  rUt        t        j"                  |d      j!                         t        j                  |j!                               z  dd
       |j                  d      dvr| j%                  |||| j&                         y y )Nr.  r  r   r   rL   r   r   r   )r   r  r  g{Gz?)r  r  r+   )r   r   r  r   r   r   r   r   r   getr   r   rm   r   r   r*   maxdiffr   r   )r   r   r  r   r   r  specms          r   test_specgramzTestSpectral.test_specgram  s   
 ##}} /tvv*.*<*<(,.2.A.A,0,@,@+/::/ (./c1 ::f*66$<D1%U/4??7zz!}A...zz!} 5 5a 8888::f%BBvvdhhj!Q&GGDq)--/"&&2DDa  ::f%77UE3< 8r   c                     t        j                  t        d      5  t        j                  | j
                  t        | j
                        | j                         ddd       y# 1 sw Y   yxY w)z+Warning should be raised if len(x) <= NFFT.zOnly one segment is calculated)match)r   r!   r   N)r4   warnsUserWarningr   r  r   r   r   r   s    r   test_specgram_warn_only1segz(TestSpectral.test_specgram_warn_only1seg  sJ    \\+-MN 	BMMDFFTVVA	B 	B 	Bs   A A%%A.c           	         t        j                  | j                  | j                  | j                  | j
                  | j                  | j                        \  }}t        j                  | j                  | j                  | j                  | j                  | j
                  | j                  | j                        \  }}t        ||       t        ||       y )Nr.  r   )r   r  r   r   r   r   r   r   r!  r   r   )r   PxxfreqsxxPxyfreqsxys        r   test_psd_csd_equalzTestSpectral.test_psd_csd_equal   s    xx$&&%)%6%6#'77)-););'+':':&*jj2W xx$&&DFF%)%6%6#'77)-););'+':':&*jj2W 	'sC07G,r   c           	         t        j                  | j                  | j                  | j                  | j
                  | j                  | j                        \  }}}t        j                  | j                  | j                  | j                  | j
                  | j                  | j                  |      \  }}}t        ||       t        ||       t        ||       y)zr
        Test that mlab.specgram without mode and with mode 'default' and 'psd'
        are all the same.
        r.  r   r!   r   r"   r  r   r  N)	r   r  r   r   r   r   r   r   r   )r   r  speca	freqspecataspecb	freqspecbtbs           r   $test_specgram_auto_default_psd_equalz1TestSpectral.test_specgram_auto_default_psd_equal  s      $}}tvv262D2D046:6I6I484H4H37:: ?y"  $}}tvv262D2D046:6I6I484H4H37::26 8y" 	5%(9i02r"r   z
mode, convc                 V    t        j                  t        j                  |       d      S r   )r   unwrapr  r   s    r   <lambda>zTestSpectral.<lambda>+  s    		"((1+A > r   c           	         t        j                  | j                  | j                  | j                  | j
                  | j                  | j                  d      \  }}}t        j                  | j                  | j                  | j                  | j
                  | j                  | j                  |      \  }}}t        ||       t        ||       t         ||      |d       y )Nr   rl  r   r   )
r   r  r   r   r   r   r   r   r   r   )	r   r  convspecc	freqspecctcr^  	freqspecmtms	            r    test_specgram_complex_equivalentz-TestSpectral.test_specgram_complex_equivalent'  s      $}}tvv262D2D046:6I6I484H4H37::2; =y"  $}}tvv262D2D046:6I6I484H4H37::26 8y" 	9i02r"UU7r   c           	         t        j                  t        j                  | j                              }t        j
                  | j                  | j                  | j                  | j                  | j                  | j                  |      \  }}t        j
                  | j                  | j                  | j                  | j                  | j                  | j                        \  }}t        ||       t        ||d       y )NrL  r.  ru   r   )r   ra   r   r^   r   r  r   r   r   r   r   r   r   r   )r   rP  rm  r   rp  fspbs         r   test_psd_windowarray_equalz'TestSpectral.test_psd_windowarray_equalA  s    !!"''$*@*@"ABhh$($5$5"&''(,(:(:&*&9&9%)ZZ&)+t hh$($5$5"&''(,(:(:&*&9&9%)ZZ1t 	4&u51r   N)$rS   rT   rU   r4   rV   r   r   r   r  rW   rX   r  r  r#  r,  r/  r   r   r   r   r   r   r@  rH  rJ  rM  rU  rY  r_  rd  rj  rs  r   r  r  r  r+   r   r   r   r      s&   D V^^'40R2 1R2h')0:" [[Vi%78> 9> [[\ , 
D
D 	)
H	8 [[
((D%%	&6(:
))T((	)BIIx+@	BC!8	C!8F(8T-8^
)$B [[:<	<<	< [[	fi 65/FK3H
)	vw/&'1B	DE=	E=8B
-  [[Vi%78# 9#, [["&&!bhh>?
88(2r   r   c                     d} t         j                  j                  d       t         j                  j                  |       }t        j                  |d      }t        j
                  |t        j                  d      dz  d      }t        j                  ||ddd	
      \  }}t        t        j                  |      dd       t        j                  t        j                  |            sJ y )Nr   i!N,r  g      4@same)r  r   r:   r   )r!   r   r"   gbX9?gMbP?r   )r   r[   r\   randnrollconvolver^   r   coherer   rm   isreal)Nr   r   cohsqfs        r   test_coherer  U  s    AIINN8
		A
2A
Arwwr{S(v6A{{1aca#>HE1BGGENE699RWWU^$$$r   c                       e Zd Zd Zd Zd Zy)TestGaussianKDEc                     t        j                  d      }t        j                  |      }g d}t         j                  j                   ||      |d       y)zRegression test for #1181.r1   )B\A?筱ES?g
f?r  r     decimalN)r   r   r   GaussianKDEtestingassert_array_almost_equal)r   rP   kde
y_expecteds       r   test_kde_integer_inputz&TestGaussianKDE.test_kde_integer_inputj  sC    YYq\r""



,,SWj!,Lr   c                     t        j                  g dt              }t        j                  ddd      }g d}t	        j
                  |d      } ||      }t         j                  j                  ||d	
       y )Nr   r   r1   )dtypeir,   r1   r   )g>L\9?gp4=?gH꟫?g8(H	MT?gĲCR?scott   r  )r   r   floatri   r   r  r  r  )r   rP   xsr  kde2y2s         r   $test_gaussian_kde_covariance_cachingz4TestGaussianKDE.test_gaussian_kde_covariance_cachingr  sb    XX'u5[[ba("
 G,"X


,,ZQ,Gr   c                 <   t         j                  j                  d       d}t         j                  j                  |      }t	        j
                  |      }t	        j
                  |d      }t	        j
                  ||j                        }t        j                  ddd      }|j                  |      }|j                  |      }|j                         |j                         k(  sJ |j                  |      }	|j                         |	j                         k(  sJ y )N 2   r  	bw_methodr  r  3   )
r   r[   r\   r  r   r  factorri   evaluateall)
r   n_basesamplexngkdegkde2gkde3r  kdepdfkdepdf2kdepdf3s
             r   test_kde_bandwidth_methodz)TestGaussianKDE.test_kde_bandwidth_method  s    
		wYY__\* #  W-  t{{;[[Q#r"..$zz|w{{},,,..$zz|w{{},,,r   N)rS   rT   rU   r  r  r  r+   r   r   r  r  h  s    MH-r   r  c                   N    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y)TestGaussianKDECustomc                     t        j                  t              5  t        j                  g        ddd       y# 1 sw Y   yxY w)z(Pass no data into the GaussianKDE class.Nr4   r5   r6   r   r  r   s    r   test_no_dataz"TestGaussianKDECustom.test_no_data  s1    ]]:& 	!R 	! 	! 	!s	   9Ac                     t        j                  t              5  t        j                  dg       ddd       y# 1 sw Y   yxY w)z9Pass a single dataset element into the GaussianKDE class.*   Nr  r   s    r   test_single_dataset_elementz1TestGaussianKDECustom.test_single_dataset_element  s3    ]]:& 	#bT"	# 	# 	#s	   :Ac                     t        j                  g dg dg dg      }t        j                  t         j                  j
                        5  t        j                  |d       ddd       y# 1 sw Y   yxY w)z/Test silverman's for a multi-dimensional array.r   r:   r;   r   r1   r  r     r  	silvermanNr   r   r4   r5   linalgLinAlgErrorr   r  r   rP   s     r   test_silverman_multidim_datasetz5TestGaussianKDECustom.test_silverman_multidim_dataset  sR    XXy)Y78]]299001 	.R-	. 	. 	.   A,,A5c                     t        j                  g d      }t        j                  |d      }d}t	        |j                         |d       y)z4Test silverman's output for a single dimension list.r  r  g/?r  Nr   r   r   r  r   covariance_factorr   rP   mygaussr  s       r    test_silverman_singledim_datasetz6TestGaussianKDECustom.test_silverman_singledim_dataset  s=    XX'(""2{3(
G557QGr   c                     t        j                  g dg dg dg      }t        j                  t         j                  j
                        5  t        j                  |d       ddd       y# 1 sw Y   yxY w)z2Test scott's output for a multi-dimensional array.r  r  r  r  Nr  r  s     r   test_scott_multidim_datasetz1TestGaussianKDECustom.test_scott_multidim_dataset  sR    XXy)Y78]]299001 	*R)	* 	* 	*r  c                     t        j                  g d      }t        j                  |d      }d}t	        |j                         |d       y)z/Test scott's output a single-dimensional array.r  r  g	e1?r  Nr  r  s       r   test_scott_singledim_datasetz2TestGaussianKDECustom.test_scott_singledim_dataset  s=    XX'(""2w/(
G557QGr   c                     t        j                  t              5  t        j                  g d       ddd       y# 1 sw Y   yxY w)z0Test the scalar's cov factor for an empty array.r1   r  Nr  r   s    r   test_scalar_empty_datasetz/TestGaussianKDECustom.test_scalar_empty_dataset  s3    ]]:& 	.R1-	. 	. 	.s	   ;Ac                    t         j                  j                  d       d}t        d      D cg c]!  }t         j                  j	                  |      # }}t        j                  |d      }|j                         dk(  sJ yc c}w )zTest a scalar's cov factor.r  r  r1   g      ?r  Nr   r[   r\   r   r  r   r  r  )r   r  r(   multidim_datar  s        r   test_scalar_covariance_datasetz4TestGaussianKDECustom.test_scalar_covariance_dataset  sj    
		w@EaI16II}<$$&#--- Js   &Bc                    t         j                  j                  d       d}t        d      D cg c]!  }t         j                  j	                  |      # }}d }t        j                  ||      }|j                         dk(  sJ yc c}w )z=Test the callable's cov factor for a multi-dimensional array.r  r  r1   c                      y)N皙?r+   rv  s    r   callable_funzLTestGaussianKDECustom.test_callable_covariance_dataset.<locals>.callable_fun  s    r   r  r  Nr  )r   r  r(   r  r  r  s         r    test_callable_covariance_datasetz6TestGaussianKDECustom.test_callable_covariance_dataset  so    
		w@EaI16II	}E$$&$... Js   &Bc                     t         j                  j                  d       d}t         j                  j                  |      }t	        j
                  |d      }d}t        |j                         |d       y)z>Test the callable's cov factor for a single-dimensional array.r  r  r  r  g}B8 ?r  N)r   r[   r\   r  r   r  r   r  )r   r  r  r  r  s        r   test_callable_singledim_datasetz5TestGaussianKDECustom.test_callable_singledim_dataset  sU    
		w		5}D(
C113ZCr   c                    t         j                  j                  d       d}t         j                  j                  |      }t	        j
                  t              5  t        j                  |d       ddd       y# 1 sw Y   yxY w)z@Test the error message that should be called when bw is invalid.r  r  invalidr  N)	r   r[   r\   r  r4   r5   r6   r   r  )r   r  datas      r   test_wrong_bw_methodz*TestGaussianKDECustom.test_wrong_bw_method  sZ    
		wyy|,]]:& 	8TY7	8 	8 	8s   A;;BN)rS   rT   rU   r  r  r  r  r  r  r  r  r  r  r  r+   r   r   r  r    s<    !
#
.H*H.
.	/D8r   r  c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestGaussianKDEEvaluatec                     t        j                  ddd      }t        j                  |      }t        j                  ddd      }g d}|j	                  |      }t         j
                  j                  ||d       y)zr
        Test the evaluate method when the dim's of dataset and points have
        different dimensions.
        r;   r,   r:      )X]?AG$?r  r  g;]?r  Nr   r   r   r  r  r  r  )r   rP   r  rQ   r  r   s         r   test_evaluate_diff_dimz.TestGaussianKDEEvaluate.test_evaluate_diff_dim  se    
 YYq"a r"YYq"a 

 LL


,,Q
A>r   c                 <   t         j                  j                  d       d}t         j                  j                  |      }t	        j
                  |      }dgdgdgg}t        j                  t              5  |j                  |       ddd       y# 1 sw Y   yxY w)z
        Invert the dimensions; i.e., for a dataset of dimension 1 [3, 2, 4],
        the points should have a dimension of 3 [[3], [2], [4]].
        r  r  r   r:   r;   N)
r   r[   r\   r  r   r  r4   r5   r6   r  )r   r  r  r  rQ   s        r   test_evaluate_inv_dimz-TestGaussianKDEEvaluate.test_evaluate_inv_dim  sy    
 			w		5}-cA3_]]:& 	LL	 	 	s   7BBc                     t        j                  ddd      }t        j                  dg      }t        j                  |      }dg}|j                  |      }t         j                  j                  ||d       y)z-Tests if evaluated against a one by one arrayr;   r,   r:   r  r  N)r   r   r   r   r  r  r  r  r   rP   rQ   r  r  r   s         r   test_evaluate_dim_and_numz1TestGaussianKDEEvaluate.test_evaluate_dim_and_num  s^    YYq"a XXqc]r" \
LL


,,Q
A>r   c                 6   t        j                  ddd      }t        j                  ddd      t        j                  ddd      g}t        j                  |      }t	        j
                  t              5  |j                  |       d d d        y # 1 sw Y   y xY w)Nr;   r,   r:   )r   r   r   r  r4   r5   r6   r  )r   rP   rQ   r  s       r   test_evaluate_point_dim_not_onez7TestGaussianKDEEvaluate.test_evaluate_point_dim_not_one  su    YYq"a ii2q!299QA#67r"]]:& 	LL	 	 	s   4BBc                     t        j                  ddd      }t        j                  ddd      }t        j                  |      }g d}|j	                  |      }t         j
                  j                  ||d       y )Nr;   r,   r:   r  )r  r  r  r  r  r  s         r   "test_evaluate_equal_dim_and_num_ltz:TestGaussianKDEEvaluate.test_evaluate_equal_dim_and_num_lt  s_    YYq"a YYq!Qr"9
LL


,,Q
A>r   N)rS   rT   rU   r  r  r  r  r  r+   r   r   r  r    s    ???r   r  c                     t        j                  g d      } d}t        j                  t         j                  j                  |       |z        dz  || j                  z  z  }t        j                  | | j                  d|z  t
        j                  t
        j                  dd d d	      \  }}t        j                  |d   g|dd |dd  d d d	   z         }t        ||d
       y )Nr   r   r:   r;   r   r:   r         ?r:   r   r   r   r!   r   r	  r~   r"   r  rO  r   r   r   r   r   )r   r   r   fftsizer   r  r_   r}   appendr   udtSuPr  Su_1sides         r   test_psd_onesided_normr    s    
&'A	B	

1"	#Q	&"qvv+	6B88AAFFqtD4D4D --$"&$&DAq yy"Q%"Qq'BqrF4R4L"89HAxe,r   c                     t        j                  g d      } d}t        j                  t         j                  j                  |       |z        dz  || j                  z  z  }t        j                  | | j                  dz  d|z  t
        j                  t
        j                  dddd	      \  }}t        j                  |d   g|dd	 |d	d ddd
   z         }t        t        j                  |      t        j                  |             y)z&Test the case len(x) < NFFT for psd().r  r  r:   r   r   Nr   r  r   r   )r   r   r   r  r  r   r  r_   r}   r   r   r&  r  s         r   test_psd_oversamplingr	  (  s    
&'A	B	

1"	#Q	&"qvv+	6B88AAFF1H2d6F6F --$"&$&DAq yy"Q%"Qq'BqrF4R4L"89Hq	266(#34r   )numpy.testingr   r   r   r   numpyr   r4   
matplotlibr   r   r
   rc   re   rW   rX   r   r  r  r  r  r  r	  r+   r   r   <module>r     s  O O   !L" L"^IV< V<r udm$i0  A"E&  (L	T2r2r"
dBB#	T2r2r*	T4R&	T2r4&	T4T4(	T3B$	S"b"c"	S"b"d#	S#r3$	T2r2r"	 9  :t2 t2;(ABt2p
%&*- *-ZN8 N8b3? 3?l	-
5r   