
    P/Ph                     Z   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                            ddd	gd
dgd          ej                            dg dd          e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dS ))    )assert_allcloseassert_almost_equalassert_array_equalassert_array_almost_equal_nulpN)mlabc                  F   t           j                            d           d} t           j                            |           dz   }t          j        |           }t          t          j        |          |           t          t          j        |          |           t          t          j        t          |                    |z  t          j
        |                     t          t          j        t          |                    t          j
        |                     d S )Nr     d   )nprandomseedstandard_normalonesr   r   window_nonehanninglenwindow_hanning)nrandr   s      Z/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/matplotlib/tests/test_mlab.pytest_windowr   	   s    INN1A9$$Q''#-D71::Dt'--t444t'--t444rz#d)),,t3T5H5N5NOOOrz#d)),,d.A$.G.GHHHHH    c                   P    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )TestDetrendc                    t           j                            d           d}t          j        dd|          }t          j        |          | _        | j        dz   | _        t          j        dd|          | _        ||                                z
  | _	        t           j        
                    |          t          j        |dz  t           j        z  |dz  z            z   | _        | xj        | j                                        z  c_        d S )	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KC##!~,T322!&&((l I%%a((26!A#be)QsU2C+D+DD 	++---r   c                     t          |ddi d S )Natol:0yE>)r   )r)   argss     r   allclosezTestDetrend.allclose$   s    )D)))))r   c                 Z   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                                   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 ]Y}t          |t          j                  r#t          t          j        |          |           ?t          j        |          |k    sJ Zd S )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2|BF+++r1111|BD$5666"<<<<T\4>4=/$,>FFHH	4==4<7=4>9=4<7$.HJ K K 	4==4<7=4>9=4<7$.HJ K K LM
 	5 	5C #rz** 5"4#4S#9#93????(--44444	5 	5r   c                    dD ]^}t          j        |          dk    sJ t          j        |d          dk    sJ t          j        |t           j                  dk    sJ _|                     t          j        | j                  | j                   |                     t          j        | j                  | j                   |                     t          j        | j        | j        z             | j                   |                     t          j        | j        | j        z             | j        | j        z              |                     t          j        | j        | j        z   | j        z             | j        | j        z              d S )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=   sp    	B 	BC$S))R////<000B6666<):;;;rAAAAAd'77HHHd'66FFFd'(DEEm	% 	% 	%d'(FGGmd&99	; 	; 	;dmdn<t|KLLMD//	1 	1 	1 	1 	1r   c                    | j         | j        z   | j        z   }| j         | j        z   }|                     t          j        |d          |           |                     t          j        |                                          |           |                     t          j        |                                d          |           d S 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d'A666???d'77@@@d'Q???HHHHHr   c                    t          j        | j        | j        | j        z   g          }t          j        | j        | j        g          }|                     t          j        |          |           |                     t          j        |d           |           |                     t          j        |j        d           j        |           |                     t          j	        |          |           |                     t          j	        |d           |           |                     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          }|                     t          j        |j        d          |j                   |                     t          j        |d          |           |                     t          j        |d          |           |                     t          j	        |dd          |           |                     t          j	        |j        dd          |j                   |                     t          j	        |j        t          j        d          |j                   d S )	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 : :DN M+ , ,d'..777d'D9996BBBd'd;;;=vFFFdl5))6222dl5t444f===Ljt<<<fh	H 	H 	H 	4==4<7=4>9=4<7$.HJ K K DM M MD,?? MD,??A B B 	d'a888&(CCCd'A666???d'B777@@@dl5ia@@@&IIIdl57Q???JJJLd&7a@@@&(	L 	L 	L 	L 	Lr   c                 V   | 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 ]H\  }}t          j        t
                    5  t          j        |fi | d d d            n# 1 swxY w Y   Id S )	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   >BB!	$B!	c                     dddif| j         ddif| j         t          j                 ddiffD ]H\  }}t          j        t
                    5  t          j        |fi | d d d            n# 1 swxY w Y   Id S )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
 	4 	4NFF
 z** 4 4!&33F3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4	4 	4s   
A))A-	0A-	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 ]/}|                     t          j        |          | j                   0d S )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4|CT%8999R????-
 	D 	DC
 MM$-c22DNCCCC	D 	Dr   c                 b   | j         | j        z   }| j        }|                     t	          j        |d          |           |                     t	          j        |t          j                  |           |                     t	          j        |                                          |           d S )Nr`   r6   )r#   r"   r!   r0   r   r:   ra   r;   rH   s      r   test_detrend_str_linear_1dz&TestDetrend.test_detrend_str_linear_1d   s    -dl5h777@@@dl5d.ABBBFKKKd)%,,..996BBBBBr   c                    t          j        | j        | j        | j        | j        z   g          }t          j        | j        | j        | j        g          }|                     t          j        |j        dd          |j                   |                     t          j        |j        t          j	        d          |j                   |                     t          j        |dd          |           |                     t          j        |t          j	        d          |           t          j        t                    5  t          j	        | j        t           j                            d d d            d S # 1 swxY w Y   d S )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   s   	4<>>DL8: ; ; DN N N, - - 	LhQ777	C 	C 	CLd&9BBBFH	N 	N 	NLH1555v	? 	? 	?LD$7a@@@&	J 	J 	J ]:&& 	< 	<rz :;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   *E99E= E=N)__name__
__module____qualname__r+   r0   rB   rE   rK   rQ   r\   r^   rb   rd   rf    r   r   r   r      s        . . .* * *5 5 5,1 1 1 I I IL L L:	/ 	/ 	/4 4 4D D DC C 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                   B   e Zd Z ej        dd          d             Zd Zd Zd Zej	        
                    dd	d
g          d             Zej	        
                    dg d          d             Zd Zd Zd Ze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	        
                    dg d          d             Ze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	        
                    dd	d
g          d&             Z ej	        
                    d'dej!        fd!ej"        fd"d( fg          d)             Z#d* Z$d+S ),TestSpectralrn   T)rp   autousec
                   $ d$t          j        ddd$z            }
|
|
d |         }
$fd|D             }|d}n|dk     rdx}}n|}|d}n|dk     r|dz  x}}n|}||}nA|dk     r9t          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 ]5\  }!}"| t          j
        |"|
z  t           j        z  dz            d|!z  z  z  } 6|r|                     d          } |j        }#$|#_        ||#_        ||#_        ||#_        ||#_        ||#_        ||#_        ||#_        |	|#_        ||#_        ||#_        ||#_        ||#_        ||#_        ||#_        | |#_        ||#_        ||#_        ||#_         ||#_!        d S )Nr   r   ru   r2   c                     g | ]}|z  S rj   rj   ).0fstimFss     r   
<listcomp>z%TestSpectral.stim.<locals>.<listcomp>   s    111"u*111r   rx   r
   r   rr   rP   F)numendpointr   rm   )"r   arangeintceillog2r   r   array
zeros_like	enumerater&   r'   astypeclsr   rq   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   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   r   r   s%                                       @r   stimzTestSpectral.stim   sJ    IaQV$$&5&	A 2111&111  #A/22 , !"Q1Ba1GG!.!"3a BGBG4E,F,F$G$G!GHHN"0"0"#&q66  q  58VV; ??#2 "1EE14Q7$&(.0J5I#5#5i#5 #Q& N "ArAv0C5:!< !< !<<?CaC!A !#ArAv0Cq0H10L!N !N !N
 $a' P!#QQ1E6;"= "= "==@SqS"B "$QQ1E1JQ1N"P "P "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BBJX1QV<=>>
	M!!&)) 	7 	7HAu	BE)A-..Q66AA 	$##A
 k	
')+)+-)+-#!#)++ 1r   c                 j   |                                 dk    sJ |                                t          |          dz
  k    sJ t          ||d           |D ]Y}t	          j        ||z
                                             }||         ||dz            k    sJ ||         ||dz
           k    sJ Zd S )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MM!O3333)%8888 	' 	'Ex%'((//11A7T!A#Y&&&&7T!A#Y&&&&&	' 	'r   c                    t          |          dk    rd S |                                dk     rxt          j        |          }|                                }|                     |d |         |d |         |           |                     ||d          ||d          |           d S |d d          }|                                }|rF|                                }||         }	t          |	|d                    |d= d||dz
  |dz   <   |Dd S d S )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;;!F 7799q==6#;;DkkmmGtHWH~tHWH~vFFFtGHH~tGHH~vFFFF)		  	)\\^^F&kG555'(E&(6!8#$  	) 	) 	) 	) 	)r   c                 n   | 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 ]K}t          j        t
                    5  t          j        dd| j         i| d d d            n# 1 swxY w Y   Ld S )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  s4    &(I..&(K00&(G,,&(G,,V&6**&""55R((&"wqzz# #
 	: 	:F z** : :%999&999: : : : : : : : : : : : : : :	: 	:s   B))B-	0B-	r   rP   psdc                     t          j        t                    5  t          j        | j        |           d d d            d S # 1 swxY w Y   d S )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  s    ]:&& 	> 	>(46====	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s   A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 d S )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    otoo..,f~t~~..wT?D??334!14!1!122*  c1 	U////74d55EBBBBz!}A....z!}k4kk : : @ CCCCCCCr   c           	          | j         }t          j        | j        | j        dz   | j        | j        | j        | j        | j                  \  }}t          ||d           |j
        |j
        k    sJ d S )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~    "Htv"&"3 $&*&8$($7#':/ / /	c 	U////zU[((((((r   c           	         | j         dS 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                   dS )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    $Ftvdgd>N:' ' ' 8<<!2<e<<q8>>!21!4>>>qBF2<#6#6u#<==BF2<a#8#8#>q#@AAF	H 	H 	H 	H 	Hr   c                     | j         }t          j        | j        | j        | j        | j        | j        | j                  \  }}|j	        |j	        k    sJ | 
                    |||| j                   d S )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}    "Htv"&"3 $&*&8$($7#':/ / /	c zU[((((uc4;77777r   zmake_data, detrendr$   r`   c                    | j         d S  || j                   }|dz   }|dz   }t          j        ||g          }t          j        |d          }|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            d S # 1 swxY w Y   d S )	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  s   
 $F	$+,,qs	66*++w''""=''5&*&7$(G*+'+z)02 2 2 6&*&7$(G*+'+z)02 2 2 8&*&7$(G*+'+z	3 3 3
 	5%(((5%(((U3333]>** 	8 	8FF7777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   E>>FFc                    | j         d S 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        	                                }|	                                }	|	                                }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                                  z  z  }t!          ||           t!          ||           t#          |
|d           t%          j        t(                    5  t#          ||d           d d d            d S # 1 swxY w Y   d S )	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  si   $F	$+,,qs(f)=)=>>
Z'	'//		66*++9i344w''78W--""##%%6&*&7$(G*+'+z(,(;= = = 6&*&7$(G*+'+z(,(;= = = 8&*&7$(G*+'+z(,(8: : : 	#i..*a-!4!4!6!6665%(((5%(((U3333]>** 	8 	8FF7777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   H::H>H>c           	         | j         d S 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	        
                                }|
                                }	|
                                }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                                  z  z  }t%          ||           t%          ||           t'          |
|d	           t)          j        t,                    5  t'          ||d	           d d d            d S # 1 swxY w Y   d S )
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   $F	$+,,8D-..qs		(i)@)@AA

*	'	22		66*++9i344w''78W--""##%%6&*&7$(G*+'+z)-)<(,(;= = = 6&*&7$(G*+'+z)-)<(,(;= = = 8&*&7$(G*+'+z(,(8: : : 	#i..*a-!4!4!6!6665%(((5%(((U3333]>** 	8 	8FF7777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   I--I14I1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          ||                                dz  z  || j        z  |dz                                  z  d           d S )	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KKk25&"%)?@@ht-..s1vv 	* 	*A1Q4"&S//))CCHtv"&"3 $&'#':$'+02 2 2	c 46&*&7$(G*+'+z(+- - - 	SWWYY\)twQ||~~5"	$ 	$ 	$ 	$ 	$ 	$r   c                    | j         }t          j        | j        | j        | j        | j        | j        | j        t          j
        | j                            \  }}t          ||d           |j        |j        k    sJ d S )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    "Htv"&"3 $&*&8$($7#':$&GD,B$C$CE E E	c 	U////zU[((((((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                                  z  || j        z  |                                dz  z  d           d S )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  sl   !"'$*@"A"ABBHtv"&"3 $&*&8$($7#':$($79 9 9	c 46&*&7$(G*.*<(,(;'+z(,(;/35 5 5 46&*&7$(G*.*<(,(;'+z(,(;/46 6 6 	3&&&3&&&4(((Q||~~-twswwyy!|3"	$ 	$ 	$ 	$ 	$ 	$r   kind)rm   r   r   r   c                 V   | j         } t          t          | d          | j        | j        | j        | j                  \  }}t          ||d           |j        |j        k    sJ |dk    r;| 	                    ||| j
                   |                     |||| j
                   d S d S )N	_spectrum)r*   r   rq   r   r   r   r   )r   r   r   r   r   rq   r   r   r   r   r   r   )r)   r4  r   r   r   s        r   test_spectrumzTestSpectral.test_spectrum  s     #5GDT"4"4"455fwdj1EG G G	c 	U////zU[((((;tS$+666T5#t{;;;;; r   r[   r   rm   r   r   c           
         | j         }t          j        d| j        | j        | j        | j        | j        | j        d|\  }}}|	                    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 |	                    d          d	vrt          j        |                                          dk    r_t          t          j        |d                                          t          j        |                                          z  dd
           |	                    d          dvr|                     |||| j                   d S d S )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   
 #} /tv*.*<(,.2.A,0,@+/:/ / (./ /c1 ::f**6$<<D1%%%U////4?7777z!}A....z!} 5a 88888::f%BBBvdhhjj!!Q&&GDq)))--//"&2D2DDa        ::f%777UE3<<<<< 87r   c                     t          j        t          d          5  t          j        | j        t          | j                  | j                   ddd           dS # 1 swxY w Y   dS )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  s    \+-MNNN 	B 	BMDFTVAAAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs   4AA!$A!c           	      >   t          j        | j        | j        | j        | j        | j        | j                  \  }}t          j        | j        | j        | j        | j        | j        | j        | j                  \  }}t          ||           t          ||           d S )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    x$&%)%6#'7)-);'+':&*j2 2 2W x$&DF%)%6#'7)-);'+':&*j2 2 2W 	'sC0007G,,,,,r   c           	      X   t          j        | j        | j        | j        | j        | j        | j                  \  }}}t          j        | j        | j        | j        | j        | j        | j        |          \  }}}t          ||           t          ||           t          ||           dS )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      $}tv262D046:6I484H37: ?  ?  ?y"  $}tv262D046:6I484H37:26 8  8  8y" 	5%(((9i0002r"""""r   z
mode, convc                 R    t          j        t          j        |           d          S rG   )r   unwrapr   r*   s    r   <lambda>zTestSpectral.<lambda>  s    	"(1++A > > > r   c           	      p   t          j        | j        | j        | j        | j        | j        | j        d          \  }}}t          j        | j        | j        | j        | j        | j        | j        |          \  }}}t          ||           t          ||           t           ||          |d           d S )Nrm   rK  r   r   )
r   r   r   r   r   r   r   rq   r   r   )	r)   r   convspecc	freqspecctcr<  	freqspecmtms	            r    test_specgram_complex_equivalentz-TestSpectral.test_specgram_complex_equivalent  s      $}tv262D046:6I484H37:2; =  =  =y"  $}tv262D046:6I484H37:26 8  8  8y" 	9i0002r"""UU77777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           d S )Nr,  r  r.   r   )r   r   r   r   r   r   r   r   r   r   r   rq   r   r   )r)   r&  rL  r   rO  fspbs         r   test_psd_windowarray_equalz'TestSpectral.test_psd_windowarray_equal  s    !"'$*@"A"ABBh$($5"&'(,(:&*&9%)Z&)+ + +t h$($5"&'(,(:&*&9%)Z1 1 1t 	4&&&u511111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-  r3  r7  r=  rC  rI  rR  r   r   r^  ra  rj   r   r   r   r      s3       D V^'4000R2 R2 10R2h' ' ') ) )0: : :" [Vi%788> > 98> [\ , , ,  
D D 
D 	) 	) 	)
H 
H 
H	8 	8 	8 [
(D%	&6(:
)T(	)BIx+@	BC C!8 !8	C C!8F(8 (8 (8T-8 -8 -8^$ $ $6
) 
) 
)$ $ $B [:::< <	< 	<< <	< [	fi 65/FK3H
)	vw/&'1B	DE E= =	E E=8B B B
- - -  [Vi%788# # 98#, ["&!bh>>?
 8 8 8(2 2 2 2 2r   r   c                     d} t           j                            d           t           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 d S )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_coherero  !  s    AINN8
	A
2A
Arwr{{S(v666A{1aca#>>>HE1BGENNE66669RWU^^$$$$$$$r   c                        e Zd Zd Zd Zd ZdS )TestGaussianKDEc                     t          j        d          }t          j        |          }g d}t           j                             ||          |d           dS )zRegression test for #1181.rT   )B\A?筱ES?g
f?rt  rs     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  s[    Yq\\r""" " "


,,SSWWj!,LLLLLr   c                     t          j        g dt                    }t          j        ddd          }g d}t	          j        |d          } ||          }t           j                            ||d	
           d S )Nr2   rt   rT   )dtypeiru   rT   r   )g>L\9?gp4=?gH꟫?g8(H	MT?gĲCR?scott   rv  )r   r   floatr   r   rx  ry  rz  )r)   r{  xsr}  kde2y2s         r   $test_gaussian_kde_covariance_cachingz4TestGaussianKDE.test_gaussian_kde_covariance_caching>  s    X'''u555[ba(((" " "
 G,,T"XX

,,ZQ,GGGGGr   c                 h   t           j                            d           d}t           j                            |          }t	          j        |          }t	          j        |d          }t	          j        ||j                  }t          j        ddd          }|                    |          }|                    |          }|	                                |	                                k    sJ |                    |          }	|	                                |		                                k    sJ d S )N 2   r  	bw_methodr  r  3   )
r   r   r   rg  r   rx  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Y__\** ## W-- t{;;;[Q##r""..$$zz||w{{}},,,,..$$zz||w{{}},,,,,,r   N)rg   rh   ri   r~  r  r  rj   r   r   rq  rq  4  sG        M M MH H H- - - - -r   rq  c                   P    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )TestGaussianKDECustomc                     t          j        t                    5  t          j        g            ddd           dS # 1 swxY w Y   dS )z(Pass no data into the GaussianKDE class.NrV   rW   rX   r   rx  rB  s    r   test_no_dataz"TestGaussianKDECustom.test_no_datab  s    ]:&& 	! 	!R   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   <A A c                     t          j        t                    5  t          j        dg           ddd           dS # 1 swxY w Y   dS )z9Pass a single dataset element into the GaussianKDE class.*   Nr  rB  s    r   test_single_dataset_elementz1TestGaussianKDECustom.test_single_dataset_elementg  s    ]:&& 	# 	#bT"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   =AAc                     t          j        g dg dg dg          }t          j        t           j        j                  5  t          j        |d           ddd           dS # 1 swxY w Y   dS )z/Test silverman's for a multi-dimensional array.r2   r      rt   rT   ru  r     r   	silvermanNr   r   rV   rW   linalgLinAlgErrorr   rx  r)   r{  s     r   test_silverman_multidim_datasetz5TestGaussianKDECustom.test_silverman_multidim_datasetl  s    Xyyy)))YYY788]29011 	. 	.R---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.   A$$A(+A(c                     t          j        g d          }t          j        |d          }d}t	          |                                |d           dS )z4Test silverman's output for a single dimension list.r  r  g/?r  Nr   r   r   rx  r   covariance_factorr)   r{  mygaussr}  s       r    test_silverman_singledim_datasetz6TestGaussianKDECustom.test_silverman_singledim_datasetr  sS    X'''(("2{33(
G5577QGGGGGr   c                     t          j        g dg dg dg          }t          j        t           j        j                  5  t          j        |d           ddd           dS # 1 swxY w Y   dS )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  s    Xyyy)))YYY788]29011 	* 	*R)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*r  c                     t          j        g d          }t          j        |d          }d}t	          |                                |d           dS )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  sS    X'''(("2w//(
G5577QGGGGGr   c                     t          j        t                    5  t          j        g d           ddd           dS # 1 swxY w Y   dS )z0Test the scalar's cov factor for an empty array.rT   r  Nr  rB  s    r   test_scalar_empty_datasetz/TestGaussianKDECustom.test_scalar_empty_dataset  s    ]:&& 	. 	.R1----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s   >AAc                     t           j                            d           dfdt          d          D             }t	          j        |d          }|                                dk    sJ dS )zTest a scalar's cov factor.r  r  c                 N    g | ]!}t           j                                      "S rj   r   r   rg  r   r   r  s     r   r   zHTestGaussianKDECustom.test_scalar_covariance_dataset.<locals>.<listcomp>  '    III166IIIr   rT   g      ?r  Nr   r   r   r"  r   rx  r  )r)   multidim_datar|  r  s      @r   test_scalar_covariance_datasetz4TestGaussianKDECustom.test_scalar_covariance_dataset  ss    
	wIIIIaIII}<<<$$&&#------r   c                     t           j                            d           dfdt          d          D             }d }t	          j        ||          }|                                dk    sJ dS )	z=Test the callable's cov factor for a multi-dimensional array.r  r  c                 N    g | ]!}t           j                                      "S rj   r  r  s     r   r   zJTestGaussianKDECustom.test_callable_covariance_dataset.<locals>.<listcomp>  r  r   rT   c                     dS )N皙?rj   rU  s    r   callable_funzLTestGaussianKDECustom.test_callable_covariance_dataset.<locals>.callable_fun  s    4r   r  r  Nr  )r)   r  r  r|  r  s       @r    test_callable_covariance_datasetz6TestGaussianKDECustom.test_callable_covariance_dataset  s    
	wIIIIaIII	 	 	}EEE$$&&$......r   c                     t           j                            d           d}t           j                            |          }t	          j        |d          }d}t          |                                |d           dS )z>Test the callable's cov factor for a single-dimensional array.r  r  r  r  g}B8 ?r  N)r   r   r   rg  r   rx  r   r  )r)   r  r  r|  r}  s        r   test_callable_singledim_datasetz5TestGaussianKDECustom.test_callable_singledim_dataset  sl    
	w	55}DDD(
C1133ZCCCCCr   c                    t           j                            d           d}t           j                            |          }t	          j        t                    5  t          j        |d           ddd           dS # 1 swxY w Y   dS )z@Test the error message that should be called when bw is invalid.r  r  invalidr  N)	r   r   r   rg  rV   rW   rX   r   rx  )r)   r  datas      r   test_wrong_bw_methodz*TestGaussianKDECustom.test_wrong_bw_method  s    
	wy|,,]:&& 	8 	8TY7777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   A>>B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 H* * *H H H. . .
. . .	/ 	/ 	/D D D8 8 8 8 8r   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestGaussianKDEEvaluatec                     t          j        ddd          }t          j        |          }t          j        ddd          }g d}|                    |          }t           j                            ||d           dS )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   rx  r  ry  rz  )r)   r{  r|  x2r}  r   s         r   test_evaluate_diff_dimz.TestGaussianKDEEvaluate.test_evaluate_diff_dim  s~    
 Yq"a  r""Yq"a  
 
 

 LL

,,Q
A>>>>>r   c                 L   t           j                            d           d}t           j                            |          }t	          j        |          }dgdgdgg}t          j        t                    5  |	                    |           ddd           dS # 1 swxY w Y   dS )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   rg  r   rx  rV   rW   rX   r  )r)   r  r  r|  r  s        r   test_evaluate_inv_dimz-TestGaussianKDEEvaluate.test_evaluate_inv_dim  s    
 		w	55}--cA3_]:&& 	 	LL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   6BB Bc                     t          j        ddd          }t          j        dg          }t          j        |          }dg}|                    |          }t           j                            ||d           dS )z-Tests if evaluated against a one by one arrayr  ru   r   r  r  N)r   r   r   r   rx  r  ry  rz  r)   r{  r  r|  r}  r   s         r   test_evaluate_dim_and_numz1TestGaussianKDEEvaluate.test_evaluate_dim_and_num  sl    Yq"a  Xqc]]r"" \
LL

,,Q
A>>>>>r   c                 @   t          j        ddd          }t          j        ddd          t          j        ddd          g}t          j        |          }t	          j        t                    5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr  ru   r   )r   r   r   rx  rV   rW   rX   r  )r)   r{  r  r|  s       r   test_evaluate_point_dim_not_onez7TestGaussianKDEEvaluate.test_evaluate_point_dim_not_one  s    Yq"a  i2q!!29QA#6#67r""]:&& 	 	LL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   0BBBc                     t          j        ddd          }t          j        ddd          }t          j        |          }g d}|                    |          }t           j                            ||d           d S )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  st    Yq"a  Yq!Qr""99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                            |           |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
           d S )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Prn  Su_1sides         r   test_psd_onesided_normr    s    
&&&''A	B	

1"	#	#Q	&"qv+	6B8AAFqtD4D -$"&$& & &DAq y"Q%"QqS'BqrrF44R4L"899HAxe,,,,,,r   c                     t          j        g d          } d}t          j        t           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        |                     dS )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	&"qv+	6B8AAF1H2d6F -$"&$& & &DAq y"Q%"QqS'BqrrF44R4L"899Hq		26(#3#344444r   )numpy.testingr   r   r   r   numpyr   rV   
matplotlibr   r   r   rc  rd  r   ro  rq  r  r  r  r  rj   r   r   <module>r     s  O O O O O O O O O O O O           I I IV< V< V< V< V< V< V< V<r udm$i0  A A"E"E"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 O	2 O	2 O	2 O	2 O	2; ( (A ABO	2f
% 
% 
%&*- *- *- *- *- *- *- *-ZN8 N8 N8 N8 N8 N8 N8 N8b3? 3? 3? 3? 3? 3? 3? 3?l	- 	- 	-
5 
5 
5 
5 
5r   