a
    ü
þdB°  ã                   @   sš  d dl mZmZmZmZ d dlZd dlZd dlm	Z	m
Z
 G dd„ dƒZdd„ ZG dd	„ d	ƒZejjd
ddgddgddejjdg d¢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dG d!d"„ d"ƒƒƒƒZd#d$„ ZG d%d&„ d&ƒZG d'd(„ d(ƒZG d)d*„ d*ƒZd+d,„ Zd-d.„ ZdS )/é    )Úassert_allcloseÚassert_almost_equalÚassert_array_equalÚassert_array_almost_equal_nulpN)ÚmlabÚ_apic                   @   sÔ   e Zd Zdd„ Zejdddd„ ƒZd"dd	„Zejj	d
ddgddgddd„ ƒZ
ejj	dg d¢g d¢ddd„ ƒZejj	dddgddgdejj	dg d¢g d¢ddd„ ƒƒZejj	dddgddgddd „ ƒZd!S )#Ú
TestStridec                 C   s   |}|j d ur|j }q|S ©N)Úbase)ÚselfÚxÚy© r   úc/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/matplotlib/tests/test_mlab.pyÚget_base
   s    
zTestStride.get_baseT)Úautousec                 c   s2   t  ¡  d V  W d   ƒ n1 s$0    Y  d S r	   )r   Z'suppress_matplotlib_deprecation_warning©r   r   r   r   Ústride_is_deprecated   s    
zTestStride.stride_is_deprecatedr   c           
      C   s|   || }t  dt|ƒ| d |¡}t|ƒ}t  ||f¡}t|ƒD ](}	|||	 ||	 | … |dd…|	f< q@|dkrx|j}|S )z²
        This is an adaptation of the original window extraction algorithm.
        This is here to test to make sure the new implementation has the same
        result.
        r   é   N)ÚnpÚarangeÚlenÚzerosÚrangeÚT)
r   r   ÚNFFTÚnoverlapÚaxisÚstepÚindÚnÚresultÚir   r   r   Úcalc_window_target   s    &zTestStride.calc_window_targetÚshaper   )é
   r   Z0DZ2D)Úidsc                 C   sP   t  t  |¡¡ |¡}t t¡ t |d¡ W d   ƒ n1 sB0    Y  d S )Né   )	r   r   ÚprodZreshapeÚpytestÚraisesÚ
ValueErrorr   Ústride_windows)r   r$   r   r   r   r   Ú'test_stride_windows_invalid_input_shape'   s    z2TestStride.test_stride_windows_invalid_input_shapezn, noverlap))r   N)é   N)é   r/   )r/   é   )zn less than 1zn greater than inputznoverlap greater than nznoverlap equal to nc                 C   sF   t  d¡}t t¡ t |||¡ W d   ƒ n1 s80    Y  d S )Nr%   )r   r   r)   r*   r+   r   r,   )r   r    r   r   r   r   r   Ú"test_stride_windows_invalid_params-   s    
z-TestStride.test_stride_windows_invalid_paramsr   r   Zaxis0Zaxis1))r   r   )r'   r   )é   r/   )é   éýÿÿÿ)zn1-noverlap0zn5-noverlap0zn15-noverlap2zn13-noverlapn3c                 C   s”   t  d¡}tj||||d}ddg}|||< d||  |d| < | j||||d}|j|jksbJ ‚t||ƒ t|ƒ|jks~J ‚|  |¡|u sJ ‚d S )Néd   )r   r   r   r   )	r   r   r   r,   r#   r$   r   Útupler   )r   r    r   r   r   r   Zexpected_shapeZytr   r   r   Útest_stride_windows7   s    

zTestStride.test_stride_windowsc                 C   sd   d}t  |¡t j }t  |d¡}| ¡ }tj|||d}|dkrF|j}|j|jksVJ ‚t	||ƒ d S )Né    )é   r   ©r   r   )
r   r   ÚnewaxisÚtileÚflattenr   r,   r   r$   r   )r   r   r    r   Úx1Úx2r   r   r   r   Ú+test_stride_windows_n32_noverlap0_unflattenJ   s    z6TestStride.test_stride_windows_n32_noverlap0_unflattenN)r   r   )Ú__name__Ú
__module__Ú__qualname__r   r)   Úfixturer   r#   ÚmarkÚparametrizer-   r1   r7   r@   r   r   r   r   r   	   s&   



þ
þr   c                  C   s†   t j d¡ d} t j | ¡d }t  | ¡}tt |¡|ƒ tt |¡|ƒ tt  t	|ƒ¡| t 
|¡ƒ tt  t	|ƒ¡t 
|¡ƒ d S )Nr   éè  r5   )r   ÚrandomÚseedÚstandard_normalÚonesr   r   Úwindow_noneZhanningr   Úwindow_hanning)r    ZrandrK   r   r   r   Útest_windowX   s    
rN   c                   @   sd   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚTestDetrendc                 C   s–   t j d¡ d}t  dd|¡}t  |¡| _| jd | _t  dd|¡| _|| ¡  | _	t j 
|¡t  |d t j |d  ¡ | _|  j| j ¡ 8  _d S )	Nr   rG   ç        r5   ç      Y@g      $Àg     €V@r/   )r   rH   rI   Úlinspacer   Ú	sig_zerosÚsig_offÚ	sig_slopeÚmeanÚsig_slope_meanrJ   ÚsinÚpiÚsig_base)r   r    r   r   r   r   Úsetup_methodd   s    &ÿzTestDetrend.setup_methodc                 G   s   t |ddiŽ d S )NÚatolç:Œ0âŽyE>)r   )r   Úargsr   r   r   Úallcloses   s    zTestDetrend.allclosec                 C   s  t  d¡dksJ ‚t jddddks(J ‚t jddddks>J ‚t jdt jddksVJ ‚d| j| j| j| j| j | j  ¡ t | j| j| j | j| j | j| j | j g¡t | j| j| j | j| j | j| j | j g¡j	fD ]6}t
|tjƒrtt  |¡|ƒ qÞt  |¡|ksÞJ ‚qÞd S )NrP   r   r:   Únone©Úkeyç      @)r   Údetrend_noneÚdetrendrT   rU   rZ   Útolistr   Úvstackr   Ú
isinstanceZndarrayr   ©r   Úsigr   r   r   Útest_detrend_nonev   s(    

ý

ýùzTestDetrend.test_detrend_nonec                 C   sà   dD ]D}t  |¡dksJ ‚t j|dddks0J ‚t j|t jddksJ ‚q|  t  | j¡| j¡ |  t  | j¡| j¡ |  t  | j| j ¡| j¡ |  t  | j| j ¡| j| j ¡ |  t  | j| j | j ¡| j| j ¡ d S )N)rP   rc   rP   rV   ra   )	r   Údetrend_meanre   r_   rS   rZ   rT   rU   rW   ri   r   r   r   Útest_detrend_meanŒ   s     ÿ
ÿ
þzTestDetrend.test_detrend_meanc                 C   sh   | j | j | j }| j | j }|  tj|dd|¡ |  t | ¡ ¡|¡ |  tj| ¡ dd|¡ d S ©Nr   r:   )rZ   rU   rT   rW   r_   r   rl   rf   ©r   ÚinputÚtargetr   r   r   Ú4test_detrend_mean_1d_base_slope_off_list_andor_axis0œ   s
    z@TestDetrend.test_detrend_mean_1d_base_slope_off_list_andor_axis0c                 C   s¤  t  | j| j| j g¡}t  | j| jg¡}|  t |¡|¡ |  tj|d d|¡ |  tj|jd dj|¡ |  t 	|¡|¡ |  tj	|d d|¡ |  tj	|jdd d|j¡ t  | j| j| j | j| j
 | j| j | j
 g¡}t  | j| j| j| j | j| j g¡}|  tj|jdd|j¡ |  tj|dd|¡ |  tj|dd|¡ |  tj	|ddd|¡ |  tj	|jddd|j¡ |  tj	|jtjdd|j¡ d S )	Nr:   Zconstant©rb   r   r   r   éÿÿÿÿÚdefaultrV   )r   rg   rT   rZ   rS   r_   r   rl   r   re   rU   rW   ro   r   r   r   Útest_detrend_mean_2d£   s@    
ÿÿÿ

ý

ýÿz TestDetrend.test_detrend_mean_2dc              	   C   sš   | 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 ]D\}}t t¡" tj|fi |¤Ž W d   ƒ qP1 sŠ0    Y  qPd S )	Nrb   Úspamr'   rc   r   r   r   r/   )rU   r   r;   r)   r*   r+   r   re   ©r   ÚsignalÚkwargsr   r   r   Útest_detrend_ValueErrorÀ   s    
ûz#TestDetrend.test_detrend_ValueErrorc              	   C   sv   dddif| j ddif| j tj ddiffD ]D\}}t t¡" tj|fi |¤Ž W d   ƒ q,1 sf0    Y  q,d S )Nrc   r   r   r   r/   )rU   r   r;   r)   r*   r+   r   rl   rx   r   r   r   Útest_detrend_mean_ValueErrorË   s    
ýz(TestDetrend.test_detrend_mean_ValueErrorc                 C   s†   t  d¡dksJ ‚t  d¡dks$J ‚t jddddks:J ‚t jdt jddksRJ ‚| j| j| j| j fD ]}|  t  |¡| j¡ qhd S )NrP   rc   Úlinearra   )r   Údetrend_linearre   rT   rU   r_   rS   ri   r   r   r   Útest_detrend_linearÔ   s    
ýzTestDetrend.test_detrend_linearc                 C   sZ   | j | j }| j}|  tj|dd|¡ |  tj|tjd|¡ |  t | ¡ ¡|¡ d S )Nr}   ra   )rU   rT   rS   r_   r   re   r~   rf   ro   r   r   r   Útest_detrend_str_linear_1dá   s
    z&TestDetrend.test_detrend_str_linear_1dc                 C   sÞ   t  | j| j| j| j g¡}t  | j| j| jg¡}|  tj|jddd|j¡ |  tj|jtj	dd|j¡ |  tj|ddd|¡ |  tj|tj	dd|¡ t
 t¡" t 	| jt j ¡ W d   ƒ n1 sÐ0    Y  d S )Nr}   r   rs   r   )r   rg   rT   rU   rS   r_   r   re   r   r~   r)   r*   r+   r;   ro   r   r   r   Útest_detrend_linear_2dè   s,    
þþÿÿÿÿz"TestDetrend.test_detrend_linear_2dN)rA   rB   rC   r[   r_   rk   rm   rr   rv   r{   r|   r   r€   r   r   r   r   r   rO   c   s   	rO   Ú	iscomplexFTÚrealÚcomplexÚclass)r&   ÚscopeÚsides)ÚonesidedZtwosidedru   )r†   zFfstims,len_x,NFFT_density,nover_density,pad_to_density,pad_to_spectrumrt   é   )r‰   r'   r%   é   i   é€   é   é!   i  éÿ   r8   )ZnosigZFs4ZFsAllZnosig_noNFFTZnosig_nopad_toZnosig_noNFFT_no_pad_toZ
nosig_trimZ	nosig_oddZnosig_oddlenZnosig_stretchZnosig_overlapc                   @   s   e Zd Zejddddd„ ƒZdd„ Zdd	„ Zd
d„ Zej	 
dddg¡dd„ ƒZej	 
dg d¢¡dd„ ƒZdd„ Zdd„ Zd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d„ ƒZd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zej	 
d*g d+¢¡d,d-„ ƒZej	 
d.i ddiddidd/idd0idd1idd2ig¡d3d4„ ƒZd5d6„ Zd7d8„ Zej	 
dddg¡d9d:„ ƒZ ej	 
d;d/ej!fd1ej"fd2d<d=„ fg¡d>d?„ ƒZ#d@dA„ Z$dBS )CÚTestSpectralr…   T)r†   r   c
           $         sÐ  d‰ t  dddˆ  ¡}
|d ur*|
d |… }
‡ fdd„|D ƒ}|d u rJd}n|dk r\d }}n|}|d u rnd}n|dk r„|d	  }}n|}|d u r–|}n*|dk r¼td	t  t  |¡¡ ƒ}|}n|}|	d u rÒt|
ƒ}n|	dk rèt|
ƒ }}	n|	}|	d u rþ| }}nt|
ƒ }}d}|}|}|}|}|}|d
ks<|dkrÎ|sÎ|d	 rht jdˆ d	 |ddd d d	… }nt jdˆ d	 |d	 d d}|d	 r°t jdˆ d	 |ddd d d	… }nt jdˆ d	 |d	 d d}n¤|d	 rt jˆ  d	 ˆ d	 d	| dddd d	… }nt jˆ  d	 ˆ d	 |dd}|d	 rVt jˆ  d	 ˆ d	 d	| dddd d	… }nt jˆ  d	 ˆ d	 |dd}|}|d	 }t|
ƒ|d	  d }|| }|
|||… }|d	 rÂ|dˆ  d	 7 }t|ƒdkrät  |d	ˆ   g¡}t  |d	ˆ   g¡}|}t  |
¡} t	|ƒD ].\}!}"| t  
|"|
 t j d	 ¡d|!  7 } q|rN|  d¡} |j}#ˆ |#_||#_||#_||#_||#_||#_||#_||#_|	|#_||#_||#_||#_||#_||#_||#_| |#_||#_||#_||#_ ||#_!d S )NrQ   r   r%   r   c                    s   g | ]}ˆ | ‘qS r   r   )Ú.0Úfstim©ÚFsr   r   Ú
<listcomp>(  ó    z%TestSpectral.stim.<locals>.<listcomp>rŒ   r5   r/   rˆ   ru   F)ÚnumZendpoint©r–   r„   )"r   r   ÚintÚceilÚlog2r   rR   ÚarrayÚ
zeros_likeÚ	enumeraterX   rY   ZastypeÚclsr“   r‡   ÚfstimsÚNFFT_densityÚnover_densityÚpad_to_densityÚNFFT_spectrumÚnover_spectrumÚpad_to_spectrumÚNFFT_specgramÚnover_specgramÚpad_to_specgramÚ
t_specgramÚ	t_densityÚ
t_spectrumr   Úfreqs_densityÚfreqs_spectrumÚfreqs_specgramÚNFFT_density_real)$r   ÚrequestrŸ   r‚   r‡   Zlen_xr    r¡   r¢   r¥   r   r¯   Znover_density_realZpad_to_density_realZpad_to_spectrum_realZNFFT_spectrum_realr£   r¤   r¦   r§   r¨   ZNFFT_specgram_realZnover_specgram_realr¬   r­   r®   Zt_startZt_stopZt_stepr©   r«   rª   r   r"   r‘   rž   r   r’   r   Ústim  sæ    



þþ
ÿ
þþ
ÿ
þþþ
þþþ

(
zTestSpectral.stimc                 C   s†   |  ¡ dksJ ‚| ¡ t|ƒd ks(J ‚t||dd |D ]F}t || ¡  ¡ }|| ||d  kshJ ‚|| ||d  ks:J ‚q:d S )Nr   r   çíµ ÷Æ°>©r\   r/   )ÚargminÚargmaxr   r   r   Úabs)r   ÚvalsZ	targfreqsZresfreqsrŸ   r‘   r"   r   r   r   Úcheck_freqs³  s    zTestSpectral.check_freqsc           
      C   sÄ   t |ƒdkrd S | ¡ dk rnt |¡}| ¡ }|  |d |… |d |… |¡ |  ||d … ||d … |¡ d S |d d … }| ¡ }|rÀ| ¡ }|| }	t|	|d ƒ |d= d||d |d …< q‚d S )Nr   rt   r'   )	r   Úminr   r¶   r´   Úcheck_maxfreqÚcopyrµ   r   )
r   ÚspecÚfsprŸ   ÚfspaZzeroindZfstimstZspectZmaxindZmaxfreqr   r   r   rº   ¼  s     
zTestSpectral.check_maxfreqc                 C   s¼   | j d ddœ| j d ddœ| j d ddœ| j d ddœddi| j d	d
œ| j dddœdddœ| j dt d¡dœf	D ]D}t t¡& tjf d| j i|¤Ž W d   ƒ qr1 s¬0    Y  qrd S )Nr   r„   )r   ÚmodeÚ	magnitudeÚangleÚphaser¿   rw   Úeggs)r   r‡   r%   é   )r   r   r   )r   r   é	   )r   r   Úwindowr   )r   r   rK   r)   r*   r+   r   Ú_spectral_helper)r   rz   r   r   r   Útest_spectral_helper_raisesÔ  s    
ÿ÷z(TestSpectral.test_spectral_helper_raisesr¿   ru   Úpsdc                 C   s>   t  t¡  tj| j|d W d   ƒ n1 s00    Y  d S )N)r   r¿   )r)   r*   r+   r   Z_single_spectrum_helperr   )r   r¿   r   r   r   Ú-test_single_spectrum_helper_unsupported_modeså  s    z:TestSpectral.test_single_spectrum_helper_unsupported_modesz
mode, case))rÉ   Zdensity)rÀ   Úspecgram)rÀ   Zspectrumc              
   C   sÄ   t | d|› ƒ}tj| j| jt | d|› ƒ| jt | d|› ƒt | d|› ƒ| j|d\}}}t||dd t|t | d|› ƒdd |jd	 |jd	 ksœJ ‚|jd
 t | d|› ƒjd	 ksÀJ ‚d S )NZfreqs_ZNFFT_Znover_Zpad_to_)r   r   r   r“   r   Úpad_tor‡   r¿   r²   r³   Zt_r   r   )Úgetattrr   rÇ   r   r“   r‡   r   r$   )r   r¿   ZcaseÚfreqsr¼   r½   Útr   r   r   Útest_spectral_helper_psdê  s    ù	z%TestSpectral.test_spectral_helper_psdc              	   C   sV   | j }tj| j| jd | j| j| j| j| jd\}}t	||dd |j
|j
ksRJ ‚d S )Nr   ©r   r   r   r“   r   rÌ   r‡   r²   r³   )r¬   r   Úcsdr   r    r“   r¡   r¢   r‡   r   r$   ©r   rÎ   r¼   r½   r   r   r   Útest_csdÿ  s    û
zTestSpectral.test_csdc                 C   s    | j du rdS t| j| jd | jtj| jd}tjf d| j i|¤Ž\}}tjf d| j d i|¤Ž\}}tt	 
t	 |¡| ¡jt	 
t	 |d ¡| d ¡jƒ dS )zTest zero padding of csd().Nr   )r   r   r“   rÆ   r‡   r   r/   )r    Údictr   r“   r   rL   r‡   rÒ   r   r   ÚsumÚ	conjugaterƒ   )r   ZsargsZspec0Ú_Zspec1r   r   r   Útest_csd_padding
  s    
ÿÿzTestSpectral.test_csd_paddingc                 C   sR   | j }tj| j| j| j| j| j| jd\}}|j	|j	ks<J ‚|  
|||| j¡ d S )N©r   r   r“   r   rÌ   r‡   )r¬   r   rÉ   r   r    r“   r¡   r¢   r‡   r$   r¸   rŸ   rÓ   r   r   r   Útest_psd  s    û
zTestSpectral.test_psdzmake_data, detrendrV   r}   c                 C   s  | j d u rd S || j ƒ}|d }|d }t ||g¡}t |d¡}|j ¡ }| ¡ }t |¡}tj|| j | j	d| j
|d\}}	tj|| j | j	d| j
|d\}
}tj|| j | j	d| j
d\}}t|	|ƒ t||ƒ t||dd t t¡ t|
|dd W d   ƒ n1 s0    Y  d S )	Nr'   çffffff
@©rÄ   r   r   )r   r   r“   r   r‡   re   )r   r   r“   r   r‡   r]   r³   )r    r   rg   r<   r   r=   rœ   r   rÉ   r“   r‡   r   r   r)   r*   ÚAssertionError)r   Z	make_datare   ÚydataÚydata1Úydata2ÚydatabÚycontrolÚspec_gÚfsp_gÚspec_bÚfsp_bÚspec_cÚfsp_cr   r   r   Útest_psd_detrend!  sF    



û
û
ü


zTestSpectral.test_psd_detrendc                 C   sx  | j d u rd S t | j ¡}|d }|d }t t |¡¡}|| }t |¡}t ||g¡}t ||g¡}t |d¡}t |d¡}|j 	¡ }| 	¡ }	| 	¡ }tj
|	| j | jd| jtjd\}
}tj
|| j | jd| jtjd\}}tj
|| j | jd| jtjd\}}|t|ƒ|d  ¡  9 }t||ƒ t||ƒ t|
|dd t t¡ t||dd W d   ƒ n1 sj0    Y  d S )	Nr'   rÜ   rÝ   r   ©r   r   r“   r   r‡   rÆ   r/   r]   r³   )r    r   r   r   rM   Ú	ones_likerg   r<   r   r=   rÉ   r“   r‡   rL   r   rÖ   r   r   r)   r*   rÞ   )r   rß   rà   rá   Ú
windowValsÚ	ycontrol1Ú	ycontrol2rã   râ   Úydatafrä   rå   ræ   rç   rè   ré   r   r   r   Útest_psd_window_hanningH  sT    


û
û
û


z$TestSpectral.test_psd_window_hanningc              	   C   s”  | j d u rd S t | j ¡}t | j ¡}|d }|d }|}|}t t |¡¡}|| }t |¡}t ||g¡}t ||g¡}t |d¡}t |d¡}|j	 
¡ }| 
¡ }	| 
¡ }tj|	| j | jd| jtjtjd\}
}tj|| j | jd| jtjtjd\}}tj|| j | jd| jtjd\}}|t|ƒ|d  ¡  9 }t||ƒ t||ƒ t|
|dd	 t t¡ t||dd	 W d   ƒ n1 s†0    Y  d S )
Nr'   rÜ   rÝ   r   )r   r   r“   r   r‡   re   rÆ   rë   r/   r]   r³   )r    r   r   r   r   rM   rì   rg   r<   r   r=   rÉ   r“   r‡   r~   rL   r   rÖ   r   r   r)   r*   rÞ   )r   rß   rã   rà   rá   rî   rï   rí   râ   rð   rä   rå   ræ   rç   rè   ré   r   r   r   Ú&test_psd_window_hanning_detrend_linearr  s^    


ú
ú
û


z3TestSpectral.test_psd_window_hanning_detrend_linearc           	   	   C   sÌ   g d¢}t  t j t j| j¡}t  | j¡}tt|ƒƒD ]}||| t  || ¡ 7 }q6tj	| j
| j| jd| j|dd\}}tj	| j
| j| jd| j|d\}}t|| ¡ d  || j |d  ¡  dd d S )	N)gÖ^úM˜Ë?gô+¥€ªÚ?g<¹ÿø­¾Ñ?g'Æÿneµ?gµ§å×t|?r   F)r   r   r“   r   r‡   rÆ   Úscale_by_freqrë   r/   r]   r³   )r   rR   rY   r¯   r   r   r   Úcosr   rÉ   r   r    r“   r‡   r   rÖ   )	r   ÚaZfacÚwinÚkr¼   r½   Zspec_aZfsp_ar   r   r   Útest_psd_window_flattop¡  s0    ú
û
þz$TestSpectral.test_psd_window_flattopc              
   C   sX   | j }tj| j| j| j| j| j| jt	 
| j¡d\}}t||dd |j|jksTJ ‚d S )N©r   r   r“   r   rÌ   r‡   rÆ   r²   r³   )r¬   r   rÉ   r   r    r“   r¡   r¢   r‡   r   rK   r¯   r   r$   rÓ   r   r   r   Útest_psd_windowarray¼  s    
ú
z!TestSpectral.test_psd_windowarrayc              
   C   sâ   t  t | j¡¡}t j| j| j| j| j	| j
| jt jd\}}t j| j| j| j| j	| j
| jt jdd\}}t j| j| j| j| j	| j
| jt jdd\}}t||ƒ t||ƒ t||ƒ t||d  ¡  || j | ¡ d  dd d S )Nrù   T)r   r   r“   r   rÌ   r‡   rÆ   ró   Fr/   r]   r³   )r   rM   r   rK   r¯   rÉ   r   r    r“   r¡   r¢   r‡   r   r   rÖ   )r   rö   r¼   r½   Zspec_sZfsp_sZspec_nZfsp_nr   r   r   Ú"test_psd_windowarray_scale_by_freqÈ  sD    ú
ù
ù



þz/TestSpectral.test_psd_windowarray_scale_by_freqÚkind)r„   rÀ   rÁ   rÂ   c                 C   sz   | j }tt|› dƒ| j| j| j| jd\}}t||dd |j|jksLJ ‚|dkrv|  	||| j
¡ |  |||| j
¡ d S )NZ	_spectrum)r   r“   r‡   rÌ   r²   r³   rÀ   )r­   rÍ   r   r   r“   r‡   r¥   r   r$   rº   rŸ   r¸   )r   rü   rÎ   r¼   r½   r   r   r   Útest_spectrumé  s    þ
zTestSpectral.test_spectrumrz   rÀ   r„   rÁ   rÂ   c              	   C   s  | j }tjf | j| j| j| j| j| jdœ|¤Ž\}}}| 	d¡dkrNt
 |¡}t
j|dd}t||dd t|| jdd |jd |jd ks’J ‚|jd | jjd ks¬J ‚| 	d¡d	vröt
 | ¡ ¡dkrött
j|dd ¡ t
 | ¡ ¡ dd
d | 	d¡dvr|  |||| j¡ d S )NrÚ   r¿   r„   r   r:   r²   r³   r   )r„   rÁ   rÂ   g{®Gáz„?)rÁ   rÂ   )r®   r   rË   r   r¦   r“   r§   r¨   r‡   Úgetr   r¶   rV   r   r©   r$   ÚmaxÚdiffr¸   rŸ   )r   rz   rÎ   r¼   r½   rÏ   Úspecmr   r   r   Útest_specgramö  s2    
ûú
 þzTestSpectral.test_specgramc                 C   sL   t jtdd* tj| jt| jƒ| jd W d  ƒ n1 s>0    Y  dS )z+Warning should be raised if len(x) <= NFFT.zOnly one segment is calculated)Úmatch)r   r   r“   N)r)   ZwarnsÚUserWarningr   rË   r   r   r“   r   r   r   r   Útest_specgram_warn_only1seg  s    z(TestSpectral.test_specgram_warn_only1segc              	   C   sh   t j| j| j| j| j| j| jd\}}t j| j| j| j| j| j| j| jd\}}t	||ƒ t
||ƒ d S )NrÚ   rÑ   )r   rÉ   r   r    r“   r¡   r¢   r‡   rÒ   r   r   )r   ZPxxZfreqsxxZPxyZfreqsxyr   r   r   Útest_psd_csd_equal  s     û
û

zTestSpectral.test_psd_csd_equalc              	   C   st   t j| j| j| j| j| j| jd\}}}t j| j| j| j| j| j| j|d\}}}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Ì   r‡   r¿   N)	r   rË   r   r¦   r“   r§   r¨   r‡   r   )r   r¿   ÚspecaZ	freqspecaÚtaÚspecbZ	freqspecbÚtbr   r   r   Ú$test_specgram_auto_default_psd_equal+  s$    ûú

z1TestSpectral.test_specgram_auto_default_psd_equalz
mode, convc                 C   s   t jt  | ¡ddS rn   )r   ÚunwraprÁ   ©r   r   r   r   Ú<lambda>F  r•   zTestSpectral.<lambda>c           	   	   C   s~   t j| j| j| j| j| j| jdd\}}}t j| j| j| j| j| j| j|d\}}}t||ƒ t||ƒ t	||ƒ|dd d S )Nr„   r  r²   r³   )
r   rË   r   r¦   r“   r§   r¨   r‡   r   r   )	r   r¿   ÚconvZspeccZ	freqspeccZtcr  Z	freqspecmÚtmr   r   r   Ú test_specgram_complex_equivalentB  s&    úú

z-TestSpectral.test_specgram_complex_equivalentc              	   C   s|   t  t | j¡¡}t j| j| j| j| j	| j
| j|d\}}t j| j| j| j| j	| j
| jd\}}t||ƒ t||dd d S )Nrù   rÚ   r]   r³   )r   rM   r   rK   r¯   rÉ   r   r    r“   r¡   r¢   r‡   r   r   )r   rö   r  r¾   r
  Zfspbr   r   r   Útest_psd_windowarray_equal\  s$    ú
û

z'TestSpectral.test_psd_windowarray_equalN)%rA   rB   rC   r)   rD   r±   r¸   rº   rÈ   rE   rF   rÊ   rÐ   rÔ   rÙ   rÛ   r   r   r   rl   r   r~   rê   rñ   rò   rø   rú   rû   rý   r  r  r  r  r¶   rÁ   r  r  r   r   r   r   r   ü   sb   "
 	

ÿþ
#*/!ÿ
ÿþ


ýÿ
r   c                  C   s†   d} t j d¡ t j | ¡}t  |d¡}t j|t  d¡d dd}tj||ddd	d
\}}t	t  
|¡ddd t  t  
|¡¡s‚J ‚d S )NrŠ   i!N,rÄ   g      4@Zsame)r¿   rŒ   r/   r‹   )r   r“   r   gbX9´Èê?gü©ñÒMbP?r³   )r   rH   rI   ÚrandnZrollZconvolverK   r   Zcoherer   rV   Zisreal)ÚNr   r   ZcohsqÚfr   r   r   Útest_coherep  s    r  c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestGaussianKDEc                 C   s6   t  d¡}t |¡}g d¢}t jj||ƒ|dd dS )zRegression test for #1181.r'   )çB…×\AÁ?ç­±øESÇ?gÔö
f§úÈ?r  r  é   ©ÚdecimalN)r   r   r   ÚGaussianKDEÚtestingÚassert_array_almost_equal)r   r>   ÚkdeÚ
y_expectedr   r   r   Útest_kde_integer_input…  s    

z&TestGaussianKDE.test_kde_integer_inputc                 C   sT   t jg d¢td}t jdddd}g d¢}t |d¡}||ƒ}t jj||d	d
 d S )N©éùÿÿÿéûÿÿÿr   r‰   r'   )Zdtypeiöÿÿÿr%   r'   r—   )g>L\ž9™?gp4=¨?gùHŒ–êŸ«?g8(H	MT«?gÄ²™CR‘?Úscotté   r  )r   r›   ÚfloatrR   r   r  r  r   )r   r>   Úxsr"  Zkde2Úy2r   r   r   Ú$test_gaussian_kde_covariance_caching  s    z4TestGaussianKDE.test_gaussian_kde_covariance_cachingc           
      C   sš   t j d¡ d}t j |¡}t |¡}t |d¡}tj||jd}t  ddd¡}| |¡}| |¡}| 	¡ | 	¡ ksxJ ‚| |¡}	| 	¡ |	 	¡ ks–J ‚d S )NéîÀ… é2   r'  ©Z	bw_methodr%  r(  é3   )
r   rH   rI   r  r   r  ZfactorrR   ÚevaluateÚall)
r   Ún_basesampleZxnZgkdeZgkde2Zgkde3r*  ZkdepdfZkdepdf2Zkdepdf3r   r   r   Útest_kde_bandwidth_method›  s    



z)TestGaussianKDE.test_kde_bandwidth_methodN)rA   rB   rC   r#  r,  r4  r   r   r   r   r  ƒ  s   r  c                   @   sd   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚTestGaussianKDECustomc                 C   s8   t  t¡ t g ¡ W d  ƒ n1 s*0    Y  dS )z(Pass no data into the GaussianKDE class.N©r)   r*   r+   r   r  r   r   r   r   Útest_no_data±  s    z"TestGaussianKDECustom.test_no_datac                 C   s:   t  t¡ t dg¡ W d  ƒ n1 s,0    Y  dS )z9Pass a single dataset element into the GaussianKDE class.é*   Nr6  r   r   r   r   Útest_single_dataset_element¶  s    z1TestGaussianKDECustom.test_single_dataset_elementc                 C   sZ   t  g d¢g d¢g d¢g¡}t t jj¡ t |d¡ W d  ƒ n1 sL0    Y  dS )z/Test silverman's for a multi-dimensional array.©r   r/   r0   ©r‰   r'   r  ©r(  é   rÅ   Ú	silvermanN©r   r›   r)   r*   ZlinalgZLinAlgErrorr   r  ©r   r>   r   r   r   Útest_silverman_multidim_dataset»  s    z5TestGaussianKDECustom.test_silverman_multidim_datasetc                 C   s2   t  g d¢¡}t |d¡}d}t| ¡ |dƒ dS )z4Test silverman's output for a single dimension list.r$  r>  g/²ŒÄ‘è?r(  N©r   r›   r   r  r   Úcovariance_factor©r   r>   Zmygaussr"  r   r   r   Ú test_silverman_singledim_datasetÁ  s    z6TestGaussianKDECustom.test_silverman_singledim_datasetc                 C   sZ   t  g d¢g d¢g d¢g¡}t t jj¡ t |d¡ W d  ƒ n1 sL0    Y  dS )z2Test scott's output for a multi-dimensional array.r:  r;  r<  r'  Nr?  r@  r   r   r   Útest_scott_multidim_datasetÈ  s    z1TestGaussianKDECustom.test_scott_multidim_datasetc                 C   s2   t  g d¢¡}t |d¡}d}t| ¡ |dƒ dS )z/Test scott's output a single-dimensional array.r$  r'  gŽ¦	e1ç?r(  NrB  rD  r   r   r   Útest_scott_singledim_datasetÎ  s    z2TestGaussianKDECustom.test_scott_singledim_datasetc                 C   s<   t  t¡ tjg dd W d  ƒ n1 s.0    Y  dS )z0Test the scalar's cov factor for an empty array.r'   r/  Nr6  r   r   r   r   Útest_scalar_empty_datasetÕ  s    z/TestGaussianKDECustom.test_scalar_empty_datasetc                    sH   t j d¡ d‰ ‡ fdd„tdƒD ƒ}tj|dd}| ¡ dksDJ ‚dS )	zTest a scalar's cov factor.r-  r.  c                    s   g | ]}t j ˆ ¡‘qS r   ©r   rH   r  ©r   r"   ©r3  r   r   r”   Þ  r•   zHTestGaussianKDECustom.test_scalar_covariance_dataset.<locals>.<listcomp>r'   g      à?r/  N©r   rH   rI   r   r   r  rC  )r   Úmultidim_datar!  r   rK  r   Útest_scalar_covariance_datasetÚ  s
    z4TestGaussianKDECustom.test_scalar_covariance_datasetc                    sP   t j d¡ d‰ ‡ fdd„tdƒD ƒ}dd„ }tj||d}| ¡ d	ksLJ ‚d
S )z=Test the callable's cov factor for a multi-dimensional array.r-  r.  c                    s   g | ]}t j ˆ ¡‘qS r   rI  rJ  rK  r   r   r”   ç  r•   zJTestGaussianKDECustom.test_callable_covariance_dataset.<locals>.<listcomp>r'   c                 S   s   dS )Nçš™™™™™á?r   r  r   r   r   Úcallable_funé  s    zLTestGaussianKDECustom.test_callable_covariance_dataset.<locals>.callable_funr/  rO  NrL  )r   rM  rP  r!  r   rK  r   Ú test_callable_covariance_datasetã  s    z6TestGaussianKDECustom.test_callable_covariance_datasetc                 C   sB   t j d¡ d}t j |¡}tj|d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   rH   rI   r  r   r  r   rC  )r   r3  rM  r!  r"  r   r   r   Útest_callable_singledim_datasetî  s    z5TestGaussianKDECustom.test_callable_singledim_datasetc                 C   sX   t j d¡ d}t j |¡}t t¡ tj|dd W d  ƒ n1 sJ0    Y  dS )z@Test the error message that should be called when bw is invalid.r-  r.  Úinvalidr/  N)	r   rH   rI   r  r)   r*   r+   r   r  )r   r3  Údatar   r   r   Útest_wrong_bw_methodø  s
    z*TestGaussianKDECustom.test_wrong_bw_methodN)rA   rB   rC   r7  r9  rA  rE  rF  rG  rH  rN  rQ  rR  rU  r   r   r   r   r5  °  s   	
r5  c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestGaussianKDEEvaluatec                 C   sL   t  ddd¡}t |¡}t  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.
        r0   r%   r/   é   )ç¸ÁXø]…¶?çAò²G$¾?rY  rX  gä;ç]«ó¢?r(  N©r   r   r   r  r1  r  r   )r   r>   r!  r?   r"  r   r   r   r   Útest_evaluate_diff_dim  s    

z.TestGaussianKDEEvaluate.test_evaluate_diff_dimc                 C   sn   t j d¡ d}t j |¡}t |¡}dgdgdgg}t t¡ | 	|¡ W d  ƒ n1 s`0    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.  r   r/   r0   N)
r   rH   rI   r  r   r  r)   r*   r+   r1  )r   r3  rM  r!  r?   r   r   r   Útest_evaluate_inv_dim  s    
z-TestGaussianKDEEvaluate.test_evaluate_inv_dimc                 C   sH   t  ddd¡}t  dg¡}t |¡}dg}| |¡}t j ||d¡ dS )z-Tests if evaluated against a one by one arrayr0   r%   r/   rX  r(  N)r   r   r›   r   r  r1  r  r   ©r   r>   r?   r!  r"  r   r   r   r   Útest_evaluate_dim_and_num  s    

z1TestGaussianKDEEvaluate.test_evaluate_dim_and_numc                 C   sl   t  ddd¡}t  ddd¡t  ddd¡g}t |¡}t t¡ | |¡ W d   ƒ n1 s^0    Y  d S )Nr0   r%   r/   )r   r   r   r  r)   r*   r+   r1  )r   r>   r?   r!  r   r   r   Útest_evaluate_point_dim_not_one'  s
    
z7TestGaussianKDEEvaluate.test_evaluate_point_dim_not_onec                 C   sL   t  ddd¡}t  ddd¡}t |¡}g d¢}| |¡}t j ||d¡ d S )Nr0   r%   r/   r=  )rX  rY  rY  r(  rZ  r]  r   r   r   Ú"test_evaluate_equal_dim_and_num_lt.  s    

z:TestGaussianKDEEvaluate.test_evaluate_equal_dim_and_num_ltN)rA   rB   rC   r[  r\  r^  r_  r`  r   r   r   r   rV    s
   	rV  c                  C   s¢   t  g d¢¡} d}t  t j | ¡| ¡d || j  }tj| | jd| tjtjdd d dd	\}}t  	|d g|dd… |dd … d d d	…  ¡}t
||d
d d S )N©r   r   r/   r0   r   r/   r   ç      ð?r/   r   r   rˆ   ©r   r“   rÆ   re   r   rÌ   ró   r‡   r‰   rt   r²   r³   )r   r›   r¶   ÚfftÚsizer   rÉ   rL   rd   Úappendr   ©ÚuÚdtZSuÚPr  ZSu_1sider   r   r   Útest_psd_onesided_norm7  s    $ý
0rk  c                  C   s®   t  g d¢¡} d}t  t j | ¡| ¡d || j  }tj| | jd d| tjtjddddd	\}}t  	|d g|dd	… |d	d… ddd
…  ¡}t
t  |¡t  |¡ƒ dS )z&Test the case len(x) < NFFT for psd().ra  rb  r/   r   r   Nrˆ   rc  r‰   rt   )r   r›   r¶   rd  re  r   rÉ   rL   rd   rf  r   rÖ   rg  r   r   r   Útest_psd_oversamplingC  s    $ý
0rl  )Znumpy.testingr   r   r   r   Únumpyr   r)   Z
matplotlibr   r   r   rN   rO   rE   rF   r   r  r  r5  rV  rk  rl  r   r   r   r   Ú<module>   sR   O ÿÿõä    W-Q6