
    g                     .   d dl mZmZmZmZ d dlZd dlZd dlm	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)mlabc                  "   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     d   )nprandomseedstandard_normalonesr   r   window_nonehanninglenwindow_hanning)nrandr   s      W/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/matplotlib/tests/test_mlab.pytest_windowr   	   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H    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   r	           r
         Y@g      $g     V@   )r   r   r   linspacezeros	sig_zerossig_off	sig_slopemeansig_slope_meanr   sinpisig_base)selfr   xs      r   setup_methodzTestDetrend.setup_method   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.allclose$   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 )Nr      axisnonekey      @)r   detrend_nonedetrendr"   r#   r(   tolistr   vstackT
isinstancendarrayr   r)   sigs     r   test_detrend_nonezTestDetrend.test_detrend_none'   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)r   r8   r   r$   r6   )	r   detrend_meanr:   r0   r!   r(   r"   r#   r%   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   r3   )r(   r#   r"   r%   r0   r   rD   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_axis0M   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 )	Nr3   constantr7   r4   r   r2   defaultr$   )r   r<   r"   r(   r!   r0   r   rD   r=   r:   r#   r%   rH   s      r   test_detrend_mean_2dz TestDetrend.test_detrend_mean_2dT   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)	Nr7   spam   r8   r4   r   r2   r   )r#   r   newaxispytestraises
ValueErrorr   r:   r)   signalkwargss      r   test_detrend_ValueErrorz#TestDetrend.test_detrend_ValueErrorq   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)Nr8   r4   r   r2   r   )r#   r   rU   rV   rW   rX   r   rD   rY   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 )Nr   r8   linearr6   )r   detrend_linearr:   r"   r#   r0   r!   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`   r6   )r#   r"   r!   r0   r   r:   ra   r;   rH   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   rN   r2   )r   r<   r"   r#   r!   r0   r   r:   r=   ra   rV   rW   rX   rU   rH   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)__name__
__module____qualname__r+   r0   rB   rE   rK   rQ   r\   r^   rb   rd   rf    r   r   r   r      s=    .*5,1 IL:	/4DC<r   r   	iscomplexFTrealcomplexclass)idsscopesides)onesidedtwosidedrP   )rp   zFfstims,len_x,NFFT_density,nover_density,pad_to_density,pad_to_spectrumrO      )rt   rT   
      i         !   i         )nosigFs4FsAllnosig_noNFFTnosig_nopad_tonosig_noNFFT_no_pad_to
nosig_trim	nosig_oddnosig_oddlennosig_stretchnosig_overlapc                   r   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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jB                  fd!ejD                  fd"d( fg      d)        Z#d* Z$y+),TestSpectralrn   T)rp   autousec
                 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 )Nr   r   ru   r2   rx   r
   r   rr   rP   F)numendpointr   rm   )"r   arangeintceillog2r   r   array
zeros_like	enumerater&   r'   astypeclsFsrq   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_spectrumyfreqs_densityfreqs_spectrumfreqs_specgramNFFT_density_real)%r)   requestr   rk   rq   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   ir   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   r2   ư>r-   r   )argminargmaxr   r   r   abs)r)   vals	targfreqsresfreqsr   r   r   s          r   check_freqszTestSpectral.check_freqsd  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   rO   rT   )	r   minr   r   r   check_maxfreqcopyr   r   )
r)   specfspr   fspazeroindfstimstspectmaxindmaxfreqs
             r   r   zTestSpectral.check_maxfreqm  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)Nr2   rm   )r   mode	magnitudeanglephaser   rS   eggs)r   rq   ru      )r   NFFTnoverlap)r   r   	   )r   r   windowr*   rj   )r   r   r   rV   rW   rX   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   rP   psdc                     t        j                  t              5  t        j                  | j
                  |       d d d        y # 1 sw Y   y xY w)N)r*   r   )rV   rW   rX   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_torq   r   r   r   t_r   r2   )getattrr   r   r   r   rq   r   shape)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 )Nr2   r*   r   r   r   r   r   rq   r   r   )r   r   csdr   r   r   r   r   rq   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().Nr2   )r*   r   r   r   rq   r   r   rj   )r   dictr   r   r   r   rq   r   r   r   sum	conjugaterl   )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   rq   )r   r   r   r   r   r   r   r   rq   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, detrendr$   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)	NrT   ffffff
@r   r2   r   )r*   r   r   r   rq   r:   )r*   r   r   r   rq   r.   r   )r   r   r<   tiler=   flattenr   r   r   r   rq   r   r   rV   rW   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        |      |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)	NrT   r  r  r   r*   r   r   r   rq   r   r   r.   r   )r   r   r   r   r   	ones_liker<   r  r=   r  r   r   rq   r   r   r   r   r   rV   rW   r  )r)   r  r  r	  
windowVals	ycontrol1	ycontrol2r  r
  ydatafr  r  r  r  r  r  s                   r   test_psd_window_hanningz$TestSpectral.test_psd_window_hanning  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.*a-!4!4!6665%(5%(U3]]>* 	8FF7	8 	8 	8s   I$$I-c           	      b   | 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!        |      |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)
NrT   r  r  r   )r*   r   r   r   rq   r:   r   r  r   r.   r   )r   r   r   r    r   r   r  r<   r  r=   r  r   r   rq   ra   r   r   r   r   r   rV   rW   r  )r)   r  r  r  r	  r  r  r  r
  r  r  r  r  r  r  r  s                   r   &test_psd_window_hanning_detrend_linearz3TestSpectral.test_psd_window_hanning_detrend_linear#  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.*a-!4!4!6665%(5%(U3]]>* 	8FF7	8 	8 	8s   J%%J.c           	         g d}t        j                  t         j                   t         j                  | j                        }t        j                  | j                        }t        t        |            D ]#  }|||   t        j                  ||z        z  z  }% t        j                  | j                  | j                  | j                  d| j                  |d      \  }}t        j                  | j                  | j                  | j                  d| j                  |      \  }}t        ||j                         dz  z  || j                  z  |dz  j                         z  d       y )	N)g^M?g+?g<?g'ne?gt|?r   F)r*   r   r   r   rq   r   scale_by_freqr  r   r.   r   )r   r   r'   r   r    ranger   cosr   r   r   r   r   rq   r   r   )	r)   afacwinkr   r   spec_afsp_as	            r   test_psd_window_flattopz$TestSpectral.test_psd_window_flattopR  s    Lkk255&"%%)?)?@hht--.s1v 	*A1Q4"&&S/))C	* HHtvv"&"3"3 $&'#'::$'+02	c 466&*&7&7$(GG*+'+zz(+- 	SWWY\)twwQ||~5"	$r   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   rq   r   r   r   )r   r   r   r   r   r   r   r   rq   r   r   r   r   r   r   s       r   test_psd_windowarrayz!TestSpectral.test_psd_windowarraym  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 )Nr)  T)r*   r   r   r   r   rq   r   r  Fr   r.   r   )r   r   r   r   r   r   r   r   r   r   r   rq   r   r   r   )r)   r#  r   r   spec_sfsp_sspec_nfsp_ns           r   "test_psd_windowarray_scale_by_freqz/TestSpectral.test_psd_windowarray_scale_by_freqy  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)rm   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   rq   r   r   r   r   )r   r   r   r   r   rq   r   r   r   r   r   r   )r)   r1  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   rm   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   rm   r2   r3   r   r   r   )rm   r   r   g{Gz?)r   r   rj   )r   r   r   r   r   r   r   r   rq   getr   r   r$   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)rV   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   rq   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   rq   r   N)	r   r   r   r   r   r   r   rq   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 rG   )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 )Nrm   rH  r   r   )
r   r   r   r   r   r   r   rq   r   r   )	r)   r   convspecc	freqspecctcr9  	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 )Nr)  r   r.   r   )r   r   r   r   r   r   r   r   r   r   r   rq   r   r   )r)   r#  rI  r   rL  fspbs         r   test_psd_windowarray_equalz'TestSpectral.test_psd_windowarray_equal  s    !!"''$*@*@"ABhh$($5$5"&''(,(:(:&*&9&9%)ZZ&)+t hh$($5$5"&''(,(:(:&*&9&9%)ZZ1t 	4&u51r   N)%rg   rh   ri   rV   fixturer   r   r   r   markparametrizer   r   r   r   r   r   r    r   rD   r   ra   r  r  r  r'  r*  r0  r4  r:  r@  rF  rO  r   r   r[  r^  rj   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^$6
)$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 )Nrv   i!N,r   g      4@same)r   rx   r   rw   )r   r   r   gbX9?gMbP?r   )r   r   r   randnrollconvolver   r   coherer   r$   isreal)Nr*   r   cohsqfs        r   test_cohererl  !  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.rT   )B\A?筱ES?g
f?rq  rp     decimalN)r   r   r   GaussianKDEtestingassert_array_almost_equal)r)   x1kde
y_expecteds       r   test_kde_integer_inputz&TestGaussianKDE.test_kde_integer_input6  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r2   rt   rT   )dtypeiru   rT   r   )g>L\9?gp4=?gH꟫?g8(H	MT?gĲCR?scott   rs  )r   r   floatr   r   ru  rv  rw  )r)   rx  xsrz  kde2y2s         r   $test_gaussian_kde_covariance_cachingz4TestGaussianKDE.test_gaussian_kde_covariance_caching>  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   rd  r   ru  factorr   evaluateall)
r)   n_basesamplexngkdegkde2gkde3r  kdepdfkdepdf2kdepdf3s
             r   test_kde_bandwidth_methodz)TestGaussianKDE.test_kde_bandwidth_methodL  s    
		wYY__\* #  W-  t{{;[[Q#r"..$zz|w{{},,,..$zz|w{{},,,r   N)rg   rh   ri   r{  r  r  rj   r   r   rn  rn  4  s    MH-r   rn  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rV   rW   rX   r   ru  r?  s    r   test_no_dataz"TestGaussianKDECustom.test_no_datab  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_elementg  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.r2   r      rt   rT   rr  r     r   	silvermanNr   r   rV   rW   linalgLinAlgErrorr   ru  r)   rx  s     r   test_silverman_multidim_datasetz5TestGaussianKDECustom.test_silverman_multidim_datasetl  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   ru  r   covariance_factorr)   rx  mygaussrz  s       r    test_silverman_singledim_datasetz6TestGaussianKDECustom.test_silverman_singledim_datasetr  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_datasety  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.rT   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  rT   g      ?r  Nr   r   r   r  rd  r   ru  r  )r)   r  r   multidim_datary  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  rT   c                      y)N皙?rj   rR  s    r   callable_funzLTestGaussianKDECustom.test_callable_covariance_dataset.<locals>.callable_fun  s    r   r  r  Nr  )r)   r  r   r  r  ry  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   rd  r   ru  r   r  )r)   r  r  ry  rz  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   rd  rV   rW   rX   r   ru  )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)rg   rh   ri   r  r  r  r  r  r  r  r  r  r  r  rj   r   r   r  r  a  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  ru   r      )X]?AG$?r  r  g;]?r  Nr   r   r   ru  r  rv  rw  )r)   rx  ry  x2rz  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  r2   r   r  N)
r   r   r   rd  r   ru  rV   rW   rX   r  )r)   r  r  ry  r  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  ru   r   r  r  N)r   r   r   r   ru  r  rv  rw  r)   rx  r  ry  rz  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  ru   r   )r   r   r   ru  rV   rW   rX   r  )r)   rx  r  ry  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  ru   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)rg   rh   ri   r  r  r  r  r  rj   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   r2   r   r  r2   r   r2         ?r   r2   r   rr   r   r   r   r:   r   r   r  rq   rt   rO   r   r   )r   r   r   fftsizer   r   r   r9   appendr   udtSuPrk  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   r2   r   Nrr   r  rt   rO   )r   r   r   r  r  r   r   r   r9   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   rV   
matplotlibr   r   r   r`  ra  r   rl  rn  r  r  r  r  rj   r   r   <module>r     s  O O   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  :O	2 O	2;(ABO	2f
%&*- *-ZN8 N8b3? 3?l	-
5r   