a
    ëÝEb«  ã                   @   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	 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_nulpNc                   @   sÀ   e Zd Z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   úZ/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/matplotlib/tests/test_mlab.pyÚget_base
   s    
zTestStride.get_baser   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Ú
ValueErrorÚmlabÚ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 s�J ‚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_windows2   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_unflattenE   s    z6TestStride.test_stride_windows_n32_noverlap0_unflattenN)r   r   )Ú__name__Ú
__module__Ú__qualname__r   r   r#   ÚmarkÚparametrizer(   r,   r2   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   éè  r0   )r   ÚrandomÚseedÚstandard_normalÚonesr   r&   Úwindow_noneZhanningr   Úwindow_hanning)r   ZrandrE   r   r   r   Útest_windowS   s    
rH   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   rA   ç        r0   ç      Y@g      $Àg     €V@r*   )r   rB   rC   Úlinspacer   Ú	sig_zerosÚsig_offÚ	sig_slopeÚmeanÚsig_slope_meanrD   ÚsinÚpiÚsig_base)r   r   r	   r   r   r   Úsetup_   s    &ÿzTestDetrend.setupc                 G   s   t |ddiŽ d S )NÚatolç:Œ0âŽyE>)r   )r   Úargsr   r   r   Úallclosen   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 )NrJ   r   r5   Únone©Úkeyç      @)r&   Údetrend_noneÚdetrendrN   rO   rT   Útolistr   Úvstackr   Ú
isinstanceZndarrayr   ©r   Úsigr   r   r   Útest_detrend_noneq   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)rJ   r]   rJ   rP   r[   )	r&   Údetrend_meanr_   rY   rM   rT   rN   rO   rQ   rc   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   r5   )rT   rO   rN   rQ   rY   r&   rf   r`   ©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 )	Nr5   Zconstant©r\   r   r   r   éÿÿÿÿÚdefaultrP   )r   ra   rN   rT   rM   rY   r&   rf   r   r_   rO   rQ   ri   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 )	Nr\   Úspamr!   r]   r   r   r   r*   )rO   r   r6   r#   r$   r%   r&   r_   ©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 )Nr]   r   r   r   r*   )rO   r   r6   r#   r$   r%   r&   rf   rr   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 )NrJ   r]   Úlinearr[   )r&   Údetrend_linearr_   rN   rO   rY   rM   rc   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 )Nrw   r[   )rO   rN   rM   rY   r&   r_   rx   r`   ri   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 )Nrw   r   rm   r   )r   ra   rN   rO   rM   rY   r&   r_   r   rx   r#   r$   r%   r6   ri   r   r   r   Útest_detrend_linear_2dã   s,    
þþÿÿÿÿz"TestDetrend.test_detrend_linear_2dN)r<   r=   r>   rU   rY   re   rg   rl   rp   ru   rv   ry   rz   r{   r   r   r   r   rI   ^   s   	rI   Ú	iscomplexFTÚrealÚcomplexÚclass)r    ÚscopeÚsides)ÚonesidedZtwosidedro   )r€   zFfstims,len_x,NFFT_density,nover_density,pad_to_density,pad_to_spectrumrn   é   )rƒ   r!   r   é   i   é€   é   é!   i  éÿ   r3   )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ej	 
d(g d)¢¡d*d+„ ƒZej	 
d,i ddiddidd-idd.idd/idd0ig¡d1d2„ ƒZd3d4„ Zd5d6„ Zej	 
dddg¡d7d8„ ƒZej	 
d9d-ej fd/ej!fd0d:d;„ fg¡d<d=„ ƒZ"d>d?„ Z#d@S )AÚTestSpectralr   T)r€   Zautousec
           $         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 )NrK   r   r   r   c                    s   g | ]}ˆ | ‘qS r   r   )Ú.0Úfstim©ÚFsr   r   Ú
<listcomp>#  ó    z%TestSpectral.stim.<locals>.<listcomp>r†   r0   r*   r‚   ro   F)ÚnumZendpoint©r�   r~   )"r   r   ÚintÚceilÚlog2r   rL   ÚarrayÚ
zeros_likeÚ	enumeraterR   rS   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   ç�íµ ÷Æ°>©rV   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   rn   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¹   rq   Úeggs)r
   r�   r   é   )r
   r   r   )r   r   é	   )r
   r   Úwindowr	   )r
   r   rE   r#   r$   r%   r&   Ú_spectral_helper)r   rt   r   r   r   Útest_spectral_helper_raisesÏ  s    
ÿ÷z(TestSpectral.test_spectral_helper_raisesr¹   ro   Ú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¹   Ú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&   rF   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, detrendrP   rw   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�   r_   )r	   r   r�   r   r�   rW   r­   )rš   r   ra   r7   r   r8   r–   r&   rÃ   r�   r�   r   r   r#   r$   ÚAssertionError)r   Z	make_datar_   Ú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   s~  | 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|ƒt |¡d  ¡  9 }t||ƒ t||ƒ t|
|dd� t t¡� t||dd� W d   ƒ n1 �sp0    Y  d S )	Nr!   r×   rØ   r   ©r	   r   r�   r   r�   rÀ   r*   rW   r­   )rš   r   r   r&   rG   Ú	ones_likera   r7   r   r8   rÃ   r�   r�   rF   r   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_hanningC  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|ƒ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�   r_   rÀ   ræ   r*   rW   r­   )rš   r   r   r   r&   rG   rç   ra   r7   r   r8   rÃ   r�   r�   rx   rF   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_psd_window_hanning_detrend_linearm  s^    


ú
ú
û


z3TestSpectral.test_psd_window_hanning_detrend_linearc              
   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   rE   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À   Úscale_by_freqFr*   rW   r­   )r&   rG   r   rE   r©   rÃ   r
   rš   r�   r›   rœ   r�   r   r   rÑ   )r   Úwinr¶   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_spectrumrt   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   r5   r¬   r­   r   )r~   r»   r¼   g{®Gáz„?)r»   r¼   )r¨   r&   rÅ   r
   r    r�   r¡   r¢   r�   Úgetr   r°   rP   r   r£   r   ÚmaxÚdiffr²   r™   )r   rt   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 rh   )r   Úunwrapr»   ©r	   r   r   r   Ú<lambda>&  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_equivalent"  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Õ   rW   r­   )r&   rG   r   rE   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)$r<   r=   r>   r#   Zfixturer«   r²   r´   rÂ   r?   r@   rÄ   rË   rÏ   rÔ   rÖ   r   r   r&   rf   r   rx   rå   rì   rí   rï   rò   rô   rù   rý   rþ   r  r°   r»   r
  r  r   r   r   r   r‰   ÷   s`   "
 	

ÿþ
#*/!ÿ
ÿþ


ýÿ
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   rB   rC   ÚrandnZrollZconvolverE   r&   Zcoherer   rP   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   r9   ÚkdeÚ
y_expectedr   r   r   Útest_kde_integer_inpute  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•   ÚfloatrL   r&   r  r  r  )r   r9   Úxsr  Zkde2Úy2r   r   r   Ú$test_gaussian_kde_covariance_cachingm  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   rB   rC   r  r&   r  ÚfactorrL   Ú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)r<   r=   r>   r  r$  r-  r   r   r   r   r  c  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.é*   Nr/  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*   r+   ©rƒ   r!   r  ©r   é   r¿   Ú	silvermanN©r   r•   r#   r$   ZlinalgZLinAlgErrorr&   r  ©r   r9   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  r7  g/²ŒÄ‘è?r   N©r   r•   r&   r  r   Úcovariance_factor©r   r9   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.r3  r4  r5  r  Nr8  r9  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   Nr;  r=  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'  Nr/  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   rB   r  ©rŠ   r   ©r,  r   r   rŽ   ¾  r�   zHTestGaussianKDECustom.test_scalar_covariance_dataset.<locals>.<listcomp>r!   g      à?r'  N©r   rB   rC   r   r&   r  r<  )r   Úmultidim_datar  r   rD  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   rB  rC  rD  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'  rH  NrE  )r   rF  rI  r  r   rD  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&  r7  r'  g}ÇB8 ß?r   N)r   rB   rC   r  r&   r  r   r<  )r   r,  rF  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   rB   rC   r  r#   r$   r%   r&   r  )r   r,  Údatar   r   r   Útest_wrong_bw_methodØ  s
    z*TestGaussianKDECustom.test_wrong_bw_methodN)r<   r=   r>   r0  r2  r:  r>  r?  r@  rA  rG  rJ  rK  rN  r   r   r   r   r.  �  s   	
r.  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.
        r+   r   r*   é   )ç¸ÁXø]…¶?çAò²G$¾?rR  rQ  gä;ç]«ó¢?r   N©r   r   r&   r  r*  r  r  )r   r9   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*   r+   N)
r   rB   rC   r  r&   r  r#   r$   r%   r*  )r   r,  rF  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 arrayr+   r   r*   rQ  r   N)r   r   r•   r&   r  r*  r  r  ©r   r9   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 )Nr+   r   r*   )r   r   r&   r  r#   r$   r%   r*  )r   r9   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 )Nr+   r   r*   r6  )rQ  rR  rR  r   rS  rV  r   r   r   Ú"test_evaluate_equal_dim_and_num_lt  s    

z:TestGaussianKDEEvaluate.test_evaluate_equal_dim_and_num_ltN)r<   r=   r>   rT  rU  rW  rX  rY  r   r   r   r   rO  á  s
   	rO  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*   r+   r   r*   r   ç      ð?r*   r   r   r‚   ©r   r�   rÀ   r_   r   rÆ   rð   r�   rƒ   rn   r¬   r­   )r   r•   r°   ÚfftÚsizer&   rÃ   rF   r^   Úappendr   ©ÚuÚdtZSuÚPr  ZSu_1sider   r   r   Útest_psd_onesided_norm  s    $ý
0rd  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().rZ  r[  r*   r   r   Nr‚   r\  rƒ   rn   )r   r•   r°   r]  r^  r&   rÃ   rF   r^   r_  r   rÑ   r`  r   r   r   Útest_psd_oversampling#  s    $ý
0re  )Znumpy.testingr   r   r   r   Únumpyr   r#   Zmatplotlib.mlabr&   r   rH   rI   r?   r@   r‰   r  r  r.  rO  rd  re  r   r   r   r   Ú<module>   sR   J ÿÿõä    <-Q6