o
    i                     @   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	 d dl
mZ dd ZG dd dZdd	 ZG d
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/d0 Zd1d2 ZdS )3    )assert_allcloseassert_almost_equalassert_array_equalassert_array_almost_equal_nulpN)MatplotlibDeprecationWarningc                  O   >   t t tj| i |W  d    S 1 sw   Y  d S N)pytestwarnsr   mlabstride_repeatargskwargs r   U/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/matplotlib/tests/test_mlab.py_stride_repeat
      $r   c                   @   sP  e Zd Zdd Zd0d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dd Z
ejjdddgddgddd Zdd Zejjdddgdd gdejjd!dd"gd#d$g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-d. Zd/S )1
TestStridec                 C   s"   |}|j d ur|j }|j d us|S r   )base)selfxyr   r   r   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r<|j}|S )z
        This is an adaptation of the original window extraction algorithm.
        This is here to test to make sure the new implementation has the same
        result.
        r      N)nparangelenzerosrangeT)
r   r   NFFTnoverlapaxisstepindnresultir   r   r   calc_window_target   s   &zTestStride.calc_window_targetshaper   )
   r   0D2D)idsc                 C   sR   t t ||}tt t|d W d    d S 1 s"w   Y  d S N   )	r   r   prodreshaper	   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)   r9   )r9      )zn less than 1zn greater than inputznoverlap greater than nznoverlap equal to nc                 C   sH   t d}tt t||| W d    d S 1 sw   Y  d S )Nr+   )r   r   r	   r3   r4   r   r5   )r   r&   r"   r   r   r   r   "test_stride_windows_invalid_params.   s   
"z-TestStride.test_stride_windows_invalid_paramsc                 C   sP   t t ||}tt t|d W d    d S 1 s!w   Y  d S r/   )r   r   r1   r2   r	   r3   r4   r   r6   r   r   r   &test_stride_repeat_invalid_input_shape8   s   "z1TestStride.test_stride_repeat_invalid_input_shaper#   r9   zaxis less than 0zaxis greater than input shapec                 C   sH   t d}tt t|d|d W d    d S 1 sw   Y  d S )Nr   r0   r#   )r   arrayr	   r3   r4   r   )r   r#   r   r   r   r   test_stride_repeat_invalid_axis>   s   
"z*TestStride.test_stride_repeat_invalid_axisc                 C   sD   t d}tt t|d W d    d S 1 sw   Y  d S )Nr+   r   )r   r   r	   r3   r4   r   )r   r   r   r   r   $test_stride_repeat_n_lt_1_ValueErrorF   s   
"z/TestStride.test_stride_repeat_n_lt_1_ValueErrorr   axis0axis1r&   r0   n1n5c                 C   s   t d}t|||d}ddg}|||< t jt ||||d}|j|jks(J t|| t||jks6J | ||u s?J d S )Nr+   r>   )	r   r   r   repeatexpand_dimsr*   r   tupler   )r   r&   r#   r   r   expected_shapeyrr   r   r   test_stride_repeatK   s   

zTestStride.test_stride_repeat))r   r   )r0   r   )   r9   )   )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s1J t|| t||jks?J | ||u sHJ d S )Nd   r"   r#   r   r   )	r   r   r   r5   r)   r*   r   rH   r   )r   r&   r"   r#   r   r   rI   ytr   r   r   test_stride_windowsZ   s   

zTestStride.test_stride_windowsc                 C   sd   d}t |t j }t |d}| }tj|||d}|dkr#|j}|j|jks+J t	|| d S )N    )   r   r>   r   )
r   r   newaxistileflattenr   r5   r    r*   r   )r   r#   r&   r   x1x2r   r   r   r   +test_stride_windows_n32_noverlap0_unflattenm   s   z6TestStride.test_stride_windows_n32_noverlap0_unflattenc                 C   s|   d}t |d t j}|dd }d|d d < tj|ddd}t|d tj|d	d
d}t|d t|dd}t|d d S )NrO      r+   g333333?!   g333333?)r&   r"   gfffff@@r   gQ@@)r&   )r   fullnanr   r5   r   r   )r   Nr   r   	y_stridedr   r   r   test_stride_ensure_integer_typez   s   

z*TestStride.test_stride_ensure_integer_typeN)r   r   )__name__
__module____qualname__r   r)   r	   markparametrizer7   r;   r<   r@   rA   rK   rR   rZ   rb   r   r   r   r   r      s>    





r   c                  O   r   r   )r	   r
   r   r   apply_windowr   r   r   r   _apply_window   r   ri   c                   @   s   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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/d0 Zd1d2 Zd3S )4
TestWindowc                 C   s2   t jd d}t j|d | _t || _d S )Nr           Y@)r   randomseedstandard_normalsig_randonessig_ones)r   r&   r   r   r   setup   s   zTestWindow.setupc                 C   s   || }t dt|| d |}t|}t ||f}t |r$|}	n	|t ||j}	t|D ]}
|	|||
 ||
 |   |dd|
f< q1|S )z
        This is an adaptation of the original window application algorithm.
        This is here to test to make sure the new implementation has the same
        result.
        r   r   N)r   r   r   r   iterablerq   dtyper   )r   r   windowr!   r"   r$   r%   r&   r'   
windowValsr(   r   r   r   check_window_apply_repeat   s   
*z$TestWindow.check_window_apply_repeatc                 C      t | j}t|| j d S r   )r   window_nonerr   r   r   resr   r   r   test_window_none_rand      z TestWindow.test_window_none_randc                 C   ry   r   )r   rz   rp   r   r{   r   r   r   test_window_none_ones   r~   z TestWindow.test_window_none_onesc                 C   s4   t t| j| j }t| j}t||dd d S Nư>atol)r   hanningr   rp   r   window_hanningr   r   targr|   r   r   r   test_window_hanning_rand   s   z#TestWindow.test_window_hanning_randc                 C   s.   t t| j}t| j}t||dd d S r   )r   r   r   rr   r   r   r   r   r   r   r   test_window_hanning_ones   s   z#TestWindow.test_window_hanning_onesc                 C   sL   | j }tj}tt t||ddd W d    d S 1 sw   Y  d S Nr   Fr#   return_window)rp   r   r   r	   r3   r4   ri   r   r   rv   r   r   r   %test_apply_window_1D_axis1_ValueError   s
   "z0TestWindow.test_apply_window_1D_axis1_ValueErrorc                 C   sZ   | j }tt|jd d }tt t	|| W d    d S 1 s&w   Y  d S )Nr   r   )
rp   r   r   r   rq   r*   r	   r3   r4   ri   r   r   r   r   -test_apply_window_1D_els_wrongsize_ValueError   s
   "z8TestWindow.test_apply_window_1D_els_wrongsize_ValueErrorc                 C   sP   t d}tj}tt t||ddd W d    d S 1 s!w   Y  d S )Nr   r   Fr   )r   r?   r   r   r	   r3   r4   ri   r   r   r   r   test_apply_window_0D_ValueError   s
   
"z*TestWindow.test_apply_window_0D_ValueErrorc                 C   sX   | j tj tj }tj}tt t||ddd W d    d S 1 s%w   Y  d S r   )	rp   r   rU   r   r   r	   r3   r4   ri   r   r   r   r   test_apply_window_3D_ValueError   s
   "z*TestWindow.test_apply_window_3D_ValueErrorc                 C   sx   | j }tj}tt|jd }t||dd\}}||}|j|jks&J |j|jks.J t||dd t|| d S )Nr   Tr   r   r   )	rp   r   r   r   rq   r*   ri   r   r   r   r   rv   window1r   window2rQ   r   r   r   test_apply_window_hanning_1D   s   z'TestWindow.test_apply_window_hanning_1Dc                 C   sV   | j }tj}t||ddd}||}|j|jksJ |j|jks"J t||dd d S Nr   Fr   r   r   )rp   r   r   ri   r*   r   )r   r   rv   r   rQ   r   r   r   "test_apply_window_hanning_1D_axis0   s   z-TestWindow.test_apply_window_hanning_1D_axis0c                 C   sl   | j }tt|jd }tj}t||ddd}||}|j|jks%J |j|jks-J t||dd d S r   )rp   r   r   r   rq   r*   ri   r   r   r   rv   r   r   rQ   r   r   r   &test_apply_window_hanning_els_1D_axis0   s   z1TestWindow.test_apply_window_hanning_els_1D_axis0c                 C   s   t jddgd }tj}t||ddd}t |}t|jd D ]}||d d |f |d d |f< q!|j|jks<J |j|jksDJ t	||dd	 d S 
Nrk   r+   rl   r   Fr   r   r   r   
r   rm   ro   r   r   ri   
zeros_liker   r*   r   r   r   rv   r   rQ   r(   r   r   r   "test_apply_window_hanning_2D_axis0      
"z-TestWindow.test_apply_window_hanning_2D_axis0c                 C   s   t jddgd }tt |jd }tj}t||ddd}t |}t	|jd D ]}||d d |f |d d |f< q,|j|jksGJ |j|jksOJ t
||dd	 d S r   r   rm   ro   r   r   rq   r*   ri   r   r   r   r   r   rv   r   r   rQ   r(   r   r   r   'test_apply_window_hanning_els1_2D_axis0     
"z2TestWindow.test_apply_window_hanning_els1_2D_axis0c                 C   s   t jddgd }tj}tt |jd }t||ddd\}}t |}t	|jd D ]}||d d |f  |d d |f< q.|j|jksIJ |j|jksQJ t
||dd	 t|| d S )
Nrk   r+   rl   r   Tr   r   r   r   r   rm   ro   r   r   rq   r*   ri   r   r   r   r   r   r   rv   r   r   r   rQ   r(   r   r   r   'test_apply_window_hanning_els2_2D_axis0     
"z2TestWindow.test_apply_window_hanning_els2_2D_axis0c                 C   s   t jddgd }tj}tt |jd }t||ddd\}}t||ddd}|j|jks2J |j|jks:J t||dd	 t	|| d S )
Nrk   r+   rl   r   Tr   Fr   r   )
r   rm   ro   r   r   rq   r*   ri   r   r   r   r   r   r   'test_apply_window_hanning_els3_2D_axis0  s   z2TestWindow.test_apply_window_hanning_els3_2D_axis0c                 C   s   t jddgd }tj}t||ddd}t |}t|jd D ]}|||d d f ||d d f< q!|j|jks<J |j|jksDJ t	||dd	 d S 
Nr+   rk   rl   r   Fr   r   r   r   r   r   r   r   r   "test_apply_window_hanning_2D_axis1'  r   z-TestWindow.test_apply_window_hanning_2D_axis1c                 C   s   t jddgd }tt |jd }tj}t||ddd}t |}t	|jd D ]}|||d d f ||d d f< q,|j|jksGJ |j|jksOJ t
||dd	 d S r   r   r   r   r   r   'test_apply_window_hanning_2D_els1_axis12  r   z2TestWindow.test_apply_window_hanning_2D_els1_axis1c                 C   s   t jddgd }tj}tt |jd }t||ddd\}}t |}t	|jd D ]}|||d d f  ||d d f< q.|j|jksIJ |j|jksQJ t
||dd	 t|| d S )
Nr+   rk   rl   r   Tr   r   r   r   r   r   r   r   r   'test_apply_window_hanning_2D_els2_axis1>  r   z2TestWindow.test_apply_window_hanning_2D_els2_axis1c                 C   s   t jddgd }tj}tt |jd }t||ddd}t||ddd}|j|jks0J |j|jks8J t||dd d S )	Nr+   rk   rl   r   Fr   r   r   )	r   rm   ro   r   r   rq   r*   ri   r   r   r   r   r   'test_apply_window_hanning_2D_els3_axis1K  s   z2TestWindow.test_apply_window_hanning_2D_els3_axis1c                 C   sp   | j }tj}tj|dddd}t||ddd}| ||dd}|j|jks'J |j|jks/J t||dd d S )	NrM   r9   r   )r&   r"   r#   Fr   r   r   )rp   r   r   r5   ri   rx   r*   r   )r   r   rv   yir   rQ   r   r   r   @test_apply_window_stride_windows_hanning_2D_n13_noverlapn3_axis0U  s   zKTestWindow.test_apply_window_stride_windows_hanning_2D_n13_noverlapn3_axis0c                 C      t d}|d }|d }t|tj}t|}t ||g}t ||g}t |d}t |d}t|tjddd}t||dd	 d S 
NrS   r0   ffffff
@r[   r   r   Fr   :0yE>r   r   r   ri   r   r   vstackrV   r   r   ydataydata1ydata2	ycontrol1	ycontrol2ycontrolr'   r   r   r   (test_apply_window_hanning_2D_stack_axis1_     


z3TestWindow.test_apply_window_hanning_2D_stack_axis1c                 C   r   r   r   r   r   r   r   0test_apply_window_hanning_2D_stack_windows_axis1m  r   z;TestWindow.test_apply_window_hanning_2D_stack_windows_axis1c           	      C   s   d}t |}|d }|d }t|tj}t|}t ||g}t ||g}t |d}t |d}| }tj|dddd}t|tjddd}t	|j
|d	d
 d S )NrS   r0   r   r   r   rP   Fr   r   r   )r   r   ri   r   r   r   rV   rW   r5   r   r    )	r   r&   r   r   r   r   r   r   r'   r   r   r   :test_apply_window_hanning_2D_stack_windows_axis1_unflatten{  s    


zETestWindow.test_apply_window_hanning_2D_stack_windows_axis1_unflattenN)rc   rd   re   rs   rx   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   rj      s4    	


rj   c                   @   s  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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/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=d> Z!d?d@ Z"dAdB Z#dCdD Z$dEdF Z%dGdH Z&dIdJ Z'dKdL Z(dMdN Z)dOdP Z*dQdR Z+dSdT Z,dUdV Z-dWdX Z.dYdZ Z/d[d\ Z0d]d^ Z1d_d` Z2dadb Z3dcdd Z4dedf Z5dgdh Z6didj Z7dkdl Z8dmdn Z9dodp Z:dqdr Z;dsdt Z<dudv Z=dwdx Z>dydz 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  }|| 8 }|| 8 }|| | _d	| _d S )
Nr   rk           rO   rl   g      $g     V@r9   r   )r   rm   rn   linspacer   	sig_zerossig_off	sig_slopemeansig_slope_meanro   sinpisig_baser   )r   r&   r   rp   sig_sinr   r   r   rs     s   

zTestDetrend.setupc                 C   "   d}|}t | ||ksJ d S Nr   r   detrend_noner   inputr   r   r   r   test_detrend_none_0D_zeros     
z&TestDetrend.test_detrend_none_0D_zerosc                 C   &   d}|}t j|dd ||ksJ d S )Nr   r   r>   r   r   r   r   r    test_detrend_none_0D_zeros_axis1     z,TestDetrend.test_detrend_none_0D_zeros_axis1c                 C   r   )Nr   nonekey)r   detrendr   r   r   r   test_detrend_str_none_0D_zeros  r   z*TestDetrend.test_detrend_str_none_0D_zerosc                 C   s(   d}|}t j|t jd ||ksJ d S Nr   r   )r   r   r   r   r   r   r   "test_detrend_detrend_none_0D_zeros  s   z.TestDetrend.test_detrend_detrend_none_0D_zerosc                 C   r   )N      @r   r   r   r   r   test_detrend_none_0D_off  r   z$TestDetrend.test_detrend_none_0D_offc                 C   "   | j }|}t|}t|| d S r   )r   r   r   r   r   r   r   r|   r   r   r   test_detrend_none_1D_off     
z$TestDetrend.test_detrend_none_1D_offc                 C   r   r   )r   r   r   r   r   r   r   r   test_detrend_none_1D_slope  r   z&TestDetrend.test_detrend_none_1D_slopec                 C   r   r   )r   r   r   r   r   r   r   r   test_detrend_none_1D_base  r   z%TestDetrend.test_detrend_none_1D_basec                 C   s8   | j | j | j }| }t| }||ksJ d S r   )r   r   r   tolistr   r   r   r   r   r   (test_detrend_none_1D_base_slope_off_list  s   z4TestDetrend.test_detrend_none_1D_base_slope_off_listc                 C   sR   | j | j | j | j | j | j | j | j g}t|}|}t|}t|| d S r   )r   r   r   r   r   r   r   r   r   arrir   r   r|   r   r   r   test_detrend_none_2D  s   



z TestDetrend.test_detrend_none_2Dc                 C   sV   | j | j | j | j | j | j | j | j g}t|}|}t|j}t|j| d S r   )	r   r   r   r   r   r   r   r    r   r   r   r   r   test_detrend_none_2D_T  s   


z"TestDetrend.test_detrend_none_2D_Tc                 C       d}d}t |}t|| d S r   r   detrend_meanr   r   r   r   r   test_detrend_mean_0D_zeros     
z&TestDetrend.test_detrend_mean_0D_zerosc                 C   s$   d}d}t j|dd}t|| d S )Nr   r   r   r   r   r   r   r   r   r   test_detrend_str_mean_0D_zeros     z*TestDetrend.test_detrend_str_mean_0D_zerosc                 C   s&   d}d}t j|t jd}t|| d S r   r   r   r   r   r   r   r   r   "test_detrend_detrend_mean_0D_zeros     z.TestDetrend.test_detrend_detrend_mean_0D_zerosc                 C       d}d}t |}t|| d S Nr   r   r   r   r   r   r   test_detrend_mean_0D_off   r   z$TestDetrend.test_detrend_mean_0D_offc                 C   $   d}d}t j|dd}t|| d S )Nr   r   r   r   r   r   r   r   r   test_detrend_str_mean_0D_off  r   z(TestDetrend.test_detrend_str_mean_0D_offc                 C   &   d}d}t j|t jd}t|| d S Nr   r   r   r   r   r   r   r    test_detrend_detrend_mean_0D_off  r   z,TestDetrend.test_detrend_detrend_mean_0D_offc                 C   *   | j }| j }t|}t||| jd d S Nr   )r   r   r   r   r   r   r   r   r   test_detrend_mean_1D_zeros     
z&TestDetrend.test_detrend_mean_1D_zerosc                 C   r  r  )r   r   r   r   r   r   r   r   r   test_detrend_mean_1D_base  r  z%TestDetrend.test_detrend_mean_1D_basec                 C   s0   | j | j }| j }t|}t||| jd d S r  )r   r   r   r   r   r   r   r   r   r   test_detrend_mean_1D_base_off     
z)TestDetrend.test_detrend_mean_1D_base_offc                 C   s6   | j | j }| j | j }t|}t||| jd d S r  )r   r   r   r   r   r   r   r   r   r   r   test_detrend_mean_1D_base_slope$  s   
z+TestDetrend.test_detrend_mean_1D_base_slopec                 C   s:   | j | j | j }| j | j }t|}t||dd d S Nr   r   r   r   r   r   r   r   r   r   r   r   r   #test_detrend_mean_1D_base_slope_off*  s   
z/TestDetrend.test_detrend_mean_1D_base_slope_offc                 C   s>   | j | j | j }| j | j }tj|dd}t||dd d S Nr   r>   r   r   r  r   r   r   r   )test_detrend_mean_1D_base_slope_off_axis00     z5TestDetrend.test_detrend_mean_1D_base_slope_off_axis0c                 C   s>   | j | j | j }| j | j }t| }t||dd d S r
  r   r   r   r   r   r   r   r   r   r   r   r   (test_detrend_mean_1D_base_slope_off_list6  r  z4TestDetrend.test_detrend_mean_1D_base_slope_off_listc                 C   sB   | j | j | j }| j | j }tj| dd}t||dd d S r  r  r   r   r   r   .test_detrend_mean_1D_base_slope_off_list_axis0<  s   z:TestDetrend.test_detrend_mean_1D_base_slope_off_list_axis0c                 C   N   | j | j| j  g}| j| jg}t|}t|}t|}t||dd d S r
  r   r   r   r   r   r   r   r   r   r   arrtr   r   r|   r   r   r   test_detrend_mean_2D_defaultB     



z(TestDetrend.test_detrend_mean_2D_defaultc                 C   R   | j | j| j  g}| j| jg}t|}t|}tj|d d}t||dd d S Nr>   r   r   r  r  r   r   r   test_detrend_mean_2D_noneL  s   



z%TestDetrend.test_detrend_mean_2D_nonec                 C   sV   | j | j| j  g}| j| jg}t|j}t|}tj|d d}t|j|dd d S r  )	r   r   r   r   r   r    r   r   r   r  r   r   r   test_detrend_mean_2D_none_TW  s   


z'TestDetrend.test_detrend_mean_2D_none_Tc                 C   s   | j | j | j | j | j | j | j | j g}| j | j | j | j | j | j g}t|j}t|j}tj|dd}t	||dd d S r  )
r   r   r   r   r   r   r    r   r   r   r  r   r   r   test_detrend_mean_2D_axis0b  s    




z&TestDetrend.test_detrend_mean_2D_axis0c                 C      | j | j | j | j | j | j | j | j g}| j | j | j | j | j | j g}t|}t|}tj|dd}t||dd d S )Nr   r>   r   r   	r   r   r   r   r   r   r   r   r   r  r   r   r   test_detrend_mean_2D_axis1q      






z&TestDetrend.test_detrend_mean_2D_axis1c                 C   r  )Nr=   r>   r   r   r  r  r   r   r   test_detrend_mean_2D_axism1  r!  z'TestDetrend.test_detrend_mean_2D_axism1c                 C   r  r
  r   r   r   r   r   r   r   r   r  r   r   r   test_detrend_2D_default  r  z#TestDetrend.test_detrend_2D_defaultc                 C   r  r  r#  r  r   r   r   test_detrend_2D_none  s   


z TestDetrend.test_detrend_2D_nonec                 C   s   | j | j | j | j | j | j | j | j g}| j | j | j | j | j | j g}t|j}t|j}tj|ddd}t	||dd d S )Nr   r   r   r#   r   r   )
r   r   r   r   r   r   r    r   r   r   r  r   r   r   test_detrend_str_mean_2D_axis0  s    




z*TestDetrend.test_detrend_str_mean_2D_axis0c                 C   sX   | j | j| j  g}| j| jg}t|j}t|}tj|dd d}t|j|dd d S )Nconstantr&  r   r   )	r   r   r   r   r   r    r   r   r   r  r   r   r   #test_detrend_str_constant_2D_none_T  s   


z/TestDetrend.test_detrend_str_constant_2D_none_Tc                 C   s   | j | j | j | j | j | j | j | j g}| j | j | j | j | j | j g}t|}t|}tj|ddd}t||dd d S )Ndefaultr   r&  r   r   )	r   r   r   r   r   r   r   r   r   r  r   r   r   !test_detrend_str_default_2D_axis1  s    






z-TestDetrend.test_detrend_str_default_2D_axis1c                 C   s   | j | j | j | j | j | j | j | j g}| j | j | j | j | j | j g}t|j}t|j}tj|tj	dd}t
||dd d S )Nr   r&  r   r   )r   r   r   r   r   r   r    r   r   r   r   r  r   r   r   "test_detrend_detrend_mean_2D_axis0  s    




z.TestDetrend.test_detrend_detrend_mean_2D_axis0c                 C   J   | j tj }tt tj|dd W d    d S 1 sw   Y  d S )Nspamr   r   r   rU   r	   r3   r4   r   r   r   r   r   r   r   #test_detrend_bad_key_str_ValueError     "z/TestDetrend.test_detrend_bad_key_str_ValueErrorc                 C   r-  )Nr0   r   r/  r0  r   r   r   #test_detrend_bad_key_var_ValueError  r2  z/TestDetrend.test_detrend_bad_key_var_ValueErrorc                 C   B   d}t t tj|dd W d    d S 1 sw   Y  d S Nr   r   r>   )r	   r3   r4   r   r   r0  r   r   r   "test_detrend_mean_0D_d0_ValueError     "z.TestDetrend.test_detrend_mean_0D_d0_ValueErrorc                 C   r4  r5  )r	   r3   r4   r   r   r0  r   r   r   test_detrend_0D_d0_ValueError  r7  z)TestDetrend.test_detrend_0D_d0_ValueErrorc                 C   D   | j }tt tj|dd W d    d S 1 sw   Y  d S Nr   r>   )r   r	   r3   r4   r   r   r0  r   r   r   "test_detrend_mean_1D_d1_ValueError     "z.TestDetrend.test_detrend_mean_1D_d1_ValueErrorc                 C   r9  r:  )r   r	   r3   r4   r   r   r0  r   r   r   test_detrend_1D_d1_ValueError  r<  z)TestDetrend.test_detrend_1D_d1_ValueErrorc                 C   r-  Nr9   r>   )r   r   rU   r	   r3   r4   r   r   r0  r   r   r   "test_detrend_mean_2D_d2_ValueError  r2  z.TestDetrend.test_detrend_mean_2D_d2_ValueErrorc                 C   r-  r>  r/  r0  r   r   r   test_detrend_2D_d2_ValueError  r2  z)TestDetrend.test_detrend_2D_d2_ValueErrorc                 C   r   r   r   detrend_linearr   r   r   r   r   test_detrend_linear_0D_zeros  r   z(TestDetrend.test_detrend_linear_0D_zerosc                 C   r   r   rA  r   r   r   r   test_detrend_linear_0D_off	  r   z&TestDetrend.test_detrend_linear_0D_offc                 C   r   )Nr   r   linearr   r   r   r   r   r   test_detrend_str_linear_0D_off  r   z*TestDetrend.test_detrend_str_linear_0D_offc                 C   r   r   )r   r   rB  r   r   r   r   r   "test_detrend_detrend_linear_0D_off  r   z.TestDetrend.test_detrend_detrend_linear_0D_offc                 C   *   | j }| j}t|}t||| jd d S r  )r   r   r   rB  r   r   r   r   r   r   test_detrend_linear_1d_off  r  z&TestDetrend.test_detrend_linear_1d_offc                 C   rH  r  )r   r   r   rB  r   r   r   r   r   r   test_detrend_linear_1d_slope!  r  z(TestDetrend.test_detrend_linear_1d_slopec                 C   s0   | j | j }| j}t|}t||| jd d S r  )r   r   r   r   rB  r   r   r   r   r   r    test_detrend_linear_1d_slope_off'  r  z,TestDetrend.test_detrend_linear_1d_slope_offc                 C   s4   | j | j }| j}tj|dd}t||| jd d S )NrE  r   r   )r   r   r   r   r   r   r   r   r   r   r   $test_detrend_str_linear_1d_slope_off-     z0TestDetrend.test_detrend_str_linear_1d_slope_offc                 C   s6   | j | j }| j}tj|tjd}t||| jd d S )Nr   r   )r   r   r   r   r   rB  r   r   r   r   r   r   (test_detrend_detrend_linear_1d_slope_off3  s   z4TestDetrend.test_detrend_detrend_linear_1d_slope_offc                 C   s4   | j | j }| j}t| }t||| jd d S r  )r   r   r   r   rB  r   r   r   r   r   r   r   %test_detrend_linear_1d_slope_off_list9  rM  z1TestDetrend.test_detrend_linear_1d_slope_off_listc                 C   sF   | j tj }tt t| W d    d S 1 sw   Y  d S r   )r   r   rU   r	   r3   r4   r   rB  r0  r   r   r   !test_detrend_linear_2D_ValueError?  s   "z-TestDetrend.test_detrend_linear_2D_ValueErrorc                 C   sb   | j | j| j| j  g}| j| j| jg}t|j}t|j}tj|ddd}t||| j	d d S )NrE  r   r&  r   )
r   r   r   r   r   r    r   r   r   r   r  r   r   r   *test_detrend_str_linear_2d_slope_off_axis0D  s   
z6TestDetrend.test_detrend_str_linear_2d_slope_off_axis0c                 C   sd   | j | j| j| j  g}| j| j| jg}t|j}t|j}tj|tjdd}t	||| j
d d S )Nr   r&  r   )r   r   r   r   r   r    r   r   rB  r   r   r  r   r   r   .test_detrend_detrend_linear_1d_slope_off_axis1P  s   
z:TestDetrend.test_detrend_detrend_linear_1d_slope_off_axis1c                 C   s^   | j | j| j| j  g}| j| j| jg}t|}t|}tj|ddd}t||| jd d S )NrE  r   r&  r   )	r   r   r   r   r   r   r   r   r   r  r   r   r   6test_detrend_str_linear_2d_slope_off_axis0_notranspose\  s   


zBTestDetrend.test_detrend_str_linear_2d_slope_off_axis0_notransposec                 C   s`   | j | j| j| j  g}| j| j| jg}t|}t|}tj|tjdd}t||| j	d d S )Nr   r&  r   )
r   r   r   r   r   r   r   rB  r   r   r  r   r   r   :test_detrend_detrend_linear_1d_slope_off_axis1_notransposeh  s   


zFTestDetrend.test_detrend_detrend_linear_1d_slope_off_axis1_notransposeN)@rc   rd   re   rs   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  r  r  r   r"  r$  r%  r'  r)  r+  r,  r1  r3  r6  r8  r;  r=  r?  r@  rC  rD  rF  rG  rI  rJ  rK  rL  rN  rO  rP  rQ  rR  rS  rT  r   r   r   r   r     s|    




r   	iscomplexFTrealcomplexclass)r.   scopesides)onesidedtwosidedr*  )rY  zFfstims,len_x,NFFT_density,nover_density,pad_to_density,pad_to_spectrumr=      )r]  r0   r+      i         r]   i     rS   )nosigFs4FsAllnosig_noNFFTnosig_nopad_tonosig_noNFFT_no_pad_to
nosig_trim	nosig_oddnosig_oddlennosig_stretch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TestSpectralrX  T)rY  autousec
           $         s  d t ddd  }
|d ur|
d | }
 fdd|D }|d u r%d}n|dk r.d }}n|}|d u r7d}n|dk rB|d	  }}n|}|d u rK|}n|dk r^td	t t | }|}n|}|	d u rit|
}n|	dk rtt|
 }}	n|	}|	d u r| }}nt|
 }}d}|}|}|}|}|}|d
ks|dkr|s|d	 rt jd d	 |ddd d d	 }nt jd d	 |d	 d d}|d	 rt jd d	 |ddd d d	 }n`t jd d	 |d	 d d}nQ|d	 rt j  d	  d	 d	| dddd d	 }nt j  d	  d	 |dd}|d	 r%t 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rlt |d	   g}t |d	   g}|}t |
} t	|D ]\}!}"| t 
|"|
 t j d	 d|!  7 } q|r| d} |j}# |#_||#_||#_||#_||#_||#_||#_||#_|	|#_||#_||#_||#_||#_||#_||#_| |#_||#_||#_||#_ ||#_!d S )Nrl   r   r+   r   c                    s   g | ]} | qS r   r   ).0fstimFsr   r   
<listcomp>      z%TestSpectral.stim.<locals>.<listcomp>r`  rO   r9   r[  r*  F)numendpointru  rW  )"r   r   intceillog2r   r   r?   r   	enumerater   r   astypeclsrr  rZ  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~  rU  rZ  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   r(   rp  r}  r   rq  r   stim  s   







(

zTestSpectral.stimc                 C   s   |  dksJ | t|d ksJ t||dd |D ]#}t||   }|| ||d  ks4J || ||d  ks@J qd S )Nr   r   r   r   r9   )argminargmaxr   r   r   abs)r   vals	targfreqsresfreqsr~  rp  r(   r   r   r   check_freqs,  s   zTestSpectral.check_freqsc           
      C   s   t |dkrd S | dk r7t|}| }| |d | |d | | | ||d  ||d  | d S |d d  }| }|rc| }|| }	t|	|d  |d= d||d |d < |sCd S d S )Nr   r=   r0   )	r   minr   r  r  check_maxfreqcopyr  r   )
r   specfspr~  fspazeroindfstimstspectmaxindmaxfreqr   r   r   r  5  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 ]"}tt tjdd| j i| W d    n1 sVw   Y  q9d S )Nr   rW  )r   mode	magnitudeanglephaser  r.  eggs)r   rZ  r+   r[   )r   r!   r"   )r!   r"   	   )r   r!   rv   r   r   )r   r   rq   r	   r3   r4   r   _spectral_helper)r   r   r   r   r   test_spectral_helper_raisesM  s"   
z(TestSpectral.test_spectral_helper_raisesr  r*  psdc                 C   s@   t t tj| j|d W d    d S 1 sw   Y  d S )N)r   r  )r	   r3   r4   r   _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  density)r  specgram)r  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sNJ |jd
 t | d| jd	 ks`J d S )Nfreqs_NFFT_nover_pad_to_)r   r   r!   rr  r"   pad_torZ  r  r   r   t_r   r   )getattrr   r  r   rr  rZ  r   r*   )r   r  casefreqsr  r  tr   r   r   test_spectral_helper_psdc  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s)J d S )Nr   r   r   r!   rr  r"   r  rZ  r   r   )r  r   csdr   r  rr  r  r  rZ  r   r*   r   r  r  r  r   r   r   test_csdx  s   
zTestSpectral.test_csdc                 C   s   | j du rdS t| j| jd | jtj| jd}tjdd| j i|\}}tjdd| j d i|\}}tt	
t	|| jt	
t	|d | d j dS )zTest zero padding of csd().Nr   )r   r   rr  rv   rZ  r!   r9   r   )r  dictr   rr  r   rz   rZ  r  r   r   sum	conjugaterV  )r   sargsspec0_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!   rr  r"   r  rZ  )r  r   r  r   r  rr  r  r  rZ  r*   r  r~  r  r   r   r   test_psd  s   
zTestSpectral.test_psdzmake_data, detrendr   rE  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    d S 1 sw   Y  d S )	Nr0   r   r   r   )r   r!   rr  r"   rZ  r   )r   r!   rr  r"   rZ  r   r   )r  r   r   rV   r    rW   r   r   r  rr  rZ  r   r   r	   r3   AssertionError)r   	make_datar   r   r   r   ydatabr   spec_gfsp_gspec_bfsp_bspec_cfsp_cr   r   r   test_psd_detrend  sH   








"zTestSpectral.test_psd_detrendc                 C   sz  | j d u rd S t| j }|d }|d }t|tjdd\}}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    d S 1 sw   Y  d S )Nr0   r   Tr   r   r   r   r!   rr  r"   rZ  rv   r9   r   r   )r  r   r   ri   r   r   r   rV   r    rW   r  rr  rZ  rz   r   r  r  r   r   r	   r3   r  )r   r   r   r   r   rw   r   r   r  ydatafr  r  r  r  r  r  r   r   r   test_psd_window_hanning  sZ   








"z$TestSpectral.test_psd_window_hanningc              	   C   s  | j d u rd S t| j }t| j }|d }|d }|}|}t|tjdd\}}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    d S 1 sw   Y  d S )Nr0   r   Tr   r   r   )r   r!   rr  r"   rZ  r   rv   r  r9   r   r   )r  r   r   r   ri   r   r   r   rV   r    rW   r  rr  rZ  rB  rz   r   r  r  r   r   r	   r3   r  )r   r   r   r   r   r   r   rw   r  r  r  r  r  r  r  r  r   r   r   &test_psd_window_hanning_detrend_linear  sd   








"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s*J d S )Nr   r!   rr  r"   r  rZ  rv   r   r   )r  r   r  r   r  rr  r  r  rZ  r   rq   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!   rr  r"   r  rZ  rv   scale_by_freqFr9   r   r   )r   r   r   rq   r  r  r   r  rr  r  r  rZ  r   r   r  )r   winr  r  spec_sfsp_sspec_nfsp_nr   r   r   "test_psd_windowarray_scale_by_freq(  sD   






z/TestSpectral.test_psd_windowarray_scale_by_freqkind)rW  r  r  r  c                 C   s~   | j }tt| d| j| j| j| jd\}}t||dd |j|jks&J |dkr=| 	||| j
 | |||| j
 d S d S )N	_spectrum)r   rr  rZ  r  r   r   r  )r  r  r   r   rr  rZ  r  r   r*   r  r~  r  )r   r  r  r  r  r   r   r   test_spectrumI  s   
zTestSpectral.test_spectrumr   r  rW  r  r  c              	   C   s  | j }tjd| j| j| j| j| j| jd|\}}}|	ddkr't
|}t
j|dd}t||dd t|| jdd |jd |jd ksIJ |jd | jjd ksVJ |	dd	vr{t
| dkr{tt
j|dd t
|  dd
d |	ddvr| |||| j d S d S )Nr  r  rW  r   r>   r   r   r   )rW  r  r  g{Gz?)r  r  r   )r  r   r  r   r  rr  r  r  rZ  getr   r  r   r   r  r*   maxdiffr  r~  )r   r   r  r  r  r  specmr   r   r   test_specgramV  s4   

 zTestSpectral.test_specgramc                 C   sN   t jtdd tj| jt| j| jd W d   dS 1 s w   Y  dS )z+Warning should be raised if len(x) <= NFFT.zOnly one segment is calculated)match)r   r!   rr  N)r	   r
   UserWarningr   r  r   r   rr  r   r   r   r   test_specgram_warn_only1segv  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  rr  r  r  rZ  r  r   r   )r   PxxfreqsxxPxy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!   rr  r"   r  rZ  r  N)	r   r  r   r  rr  r  r  rZ  r   )r   r  speca	freqspecataspecb	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 )Nr   r>   )r   unwrapr  r   r   r   r   <lambda>  rt  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 )NrW  r  r   r   )
r   r  r   r  rr  r  r  rZ  r   r   )	r   r  convspecc	freqspecctcr  	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  r   r   )r   r   r   rq   r  r  r   r  rr  r  r  rZ  r   r   )r   r  r  r  r   fspbr   r   r   test_psd_windowarray_equal  s$   


z'TestSpectral.test_psd_windowarray_equalN)$rc   rd   re   r	   fixturer  r  r  r  rf   rg   r  r  r  r  r  r   r   r   r   r   rB  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   rm  u  sb    "
 	


#+0!




rm  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 
|sAJ d S )Nr^  i!N,r[   g      4@same)r  r`  r9   r_  )r!   rr  r"   gbX9?gMbP?r   )r   rm   rn   randnrollconvolverq   r   coherer   r   isreal)r`   r   r   cohsqfr   r   r   test_cohere  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.r0   )B\A?筱ES?g
f?r  r     decimalN)r   r   r   GaussianKDEtestingassert_array_almost_equal)r   rX   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]  r0   )ru   r\   r+   r0   rw  )g>L\9?gp4=?gH꟫?g8(H	MT?gĲCR?scott   r  )r   r?   floatr   r   r   r!  r"  )r   rX   xsr$  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s<J ||}	|	 |		 ksKJ d S )N 2   r)  	bw_methodr'  r*  3   )
r   rm   rn   r  r   r   factorr   evaluateall)
r   n_basesamplexngkdegkde2gkde3r,  kdepdfkdepdf2kdepdf3r   r   r   test_kde_bandwidth_method  s   



z)TestGaussianKDE.test_kde_bandwidth_methodN)rc   rd   re   r%  r/  r@  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   s:   t t tg  W d   dS 1 sw   Y  dS )z(Pass no data into the GaussianKDE class.Nr	   r3   r4   r   r   r  r   r   r   test_no_data  s   "z"TestGaussianKDECustom.test_no_datac                 C   s<   t t tdg W d   dS 1 sw   Y  dS )z9Pass a single dataset element into the GaussianKDE class.*   NrB  r  r   r   r   test_single_dataset_element  s   "z1TestGaussianKDECustom.test_single_dataset_elementc                 C   \   t g dg dg dg}tt jj t|d W d   dS 1 s'w   Y  dS )z/Test silverman's for a multi-dimensional array.r   r9   r:   r]  r0   r  r*     r  	silvermanNr   r?   r	   r3   linalgLinAlgErrorr   r   r   rX   r   r   r   test_silverman_multidim_dataset     "z5TestGaussianKDECustom.test_silverman_multidim_datasetc                 C   2   t g d}t|d}d}t| |d dS )z4Test silverman's output for a single dimension list.r&  rK  g/?r*  Nr   r?   r   r   r   covariance_factorr   rX   mygaussr$  r   r   r    test_silverman_singledim_dataset!     z6TestGaussianKDECustom.test_silverman_singledim_datasetc                 C   rF  )z2Test scott's output for a multi-dimensional array.rG  rH  rI  r)  NrL  rO  r   r   r   test_scott_multidim_dataset(  rQ  z1TestGaussianKDECustom.test_scott_multidim_datasetc                 C   rR  )z/Test scott's output a single-dimensional array.r&  r)  g	e1?r*  NrS  rU  r   r   r   test_scott_singledim_dataset.  rX  z2TestGaussianKDECustom.test_scott_singledim_datasetc                 C   s>   t t tjg dd W d   dS 1 sw   Y  dS )z0Test the scalar's cov factor for an empty array.r0   r2  NrB  r  r   r   r   test_scalar_empty_dataset5  s   "z/TestGaussianKDECustom.test_scalar_empty_datasetc                    sH   t jd d  fddtdD }tj|dd}| dks"J dS )	zTest a scalar's cov factor.r0  r1  c                       g | ]}t j qS r   r   rm   r  ro  r(   r8  r   r   rs  >      zHTestGaussianKDECustom.test_scalar_covariance_dataset.<locals>.<listcomp>r0   g      ?r2  Nr   rm   rn   r   r   r   rT  )r   multidim_datar#  r   r_  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s&J d
S )z=Test the callable's cov factor for a multi-dimensional array.r0  r1  c                    r\  r   r]  r^  r_  r   r   rs  G  r`  zJTestGaussianKDECustom.test_callable_covariance_dataset.<locals>.<listcomp>r0   c                 S   s   dS )N皙?r   r  r   r   r   callable_funI  s   zLTestGaussianKDECustom.test_callable_covariance_dataset.<locals>.callable_funr2  rd  Nra  )r   rb  re  r#  r   r_  r    test_callable_covariance_datasetC  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.r0  r1  rK  r2  g}B8 ?r*  N)r   rm   rn   r  r   r   r   rT  )r   r8  rb  r#  r$  r   r   r   test_callable_singledim_datasetN  s   z5TestGaussianKDECustom.test_callable_singledim_datasetc                 C   sZ   t jd d}t j|}tt tj|dd W d   dS 1 s&w   Y  dS )z@Test the error message that should be called when bw is invalid.r0  r1  invalidr2  N)	r   rm   rn   r  r	   r3   r4   r   r   )r   r8  datar   r   r   test_wrong_bw_methodX  s   "z*TestGaussianKDECustom.test_wrong_bw_methodN)rc   rd   re   rC  rE  rP  rW  rY  rZ  r[  rc  rf  rg  rj  r   r   r   r   rA    s    	
rA  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+   r9      )X]?AG$?rn  rm  g;]?r*  Nr   r   r   r   r6  r!  r"  )r   rX   r#  rY   r$  r   r   r   r   test_evaluate_diff_dimc  s   

z.TestGaussianKDEEvaluate.test_evaluate_diff_dimc                 C   sp   t jd d}t j|}t|}dgdgdgg}tt |	| W d   dS 1 s1w   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]].
        r0  r1  r   r9   r:   N)
r   rm   rn   r  r   r   r	   r3   r4   r6  )r   r8  rb  r#  rY   r   r   r   test_evaluate_inv_dimq  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+   r9   rm  r*  N)r   r   r?   r   r   r6  r!  r"  r   rX   rY   r#  r$  r   r   r   r   test_evaluate_dim_and_num~  s   

z1TestGaussianKDEEvaluate.test_evaluate_dim_and_numc                 C   sn   t ddd}t dddt dddg}t|}tt || W d    d S 1 s0w   Y  d S )Nr:   r+   r9   )r   r   r   r   r	   r3   r4   r6  )r   rX   rY   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+   r9   rJ  )rm  rn  rn  r*  ro  rr  r   r   r   "test_evaluate_equal_dim_and_num_lt  s   

z:TestGaussianKDEEvaluate.test_evaluate_equal_dim_and_num_ltN)rc   rd   re   rp  rq  rs  rt  ru  r   r   r   r   rk  a  s    	rk  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   r9   r:   r   r9   r         ?r9   r   r   r[  r!   rr  rv   r   r"   r  r  rZ  r]  r=   r   r   )r   r?   r  fftsizer   r  rz   r   appendr   udtSuPr  Su_1sider   r   r   test_psd_onesided_norm  s   $
0r  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().rv  rw  r9   r   r   Nr[  rx  r]  r=   )r   r?   r  ry  rz  r   r  rz   r   r{  r   r  r|  r   r   r   test_psd_oversampling  s   $
0r  )numpy.testingr   r   r   r   numpyr   r	   matplotlib.mlabr   matplotlib.cbook.deprecationr   r   r   ri   rj   r   rf   rg   rm  r  r  rA  rk  r  r  r   r   r   r   <module>   s`    } }   k    >-Q6