B
    `<                 @   s`   d dl Zd dlmZ d dlmZ d dlmZm	Z	m
Z
 d dlmZ ddlmZ G dd	 d	eZdS )
    N)assert_allclose)raises)binned_statisticbinned_statistic_2dbinned_statistic_dd)check_random_state   )check_named_resultsc               @   sP  e Zd Ze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+dQS )RTestBinnedStatisticc             C   sd   t d}|jdd| _|jdd| _|jdd| _|jdd| _|jdd| _|jddd | _d S )Ni&  d   )size)r      g    .A)r   uniformxyvXwu)clsrng r   V/home/dcms/DCMS/lib/python3.7/site-packages/scipy/stats/tests/test_binned_statistic.pysetup_class   s    zTestBinnedStatistic.setup_classc             C   sL   | j }| j}t||ddd\}}}tj|dd\}}t|| t|| d S )Ncount
   )bins)r   r   r   np	histogramr   )selfr   r   count1edges1bccount2edges2r   r   r   test_1d_count   s    
z!TestBinnedStatistic.test_1d_countc             C   s:   | j }| j}ddddg}x|D ]}t|||dd qW d S )Nmeanmedianr   sumr   )r   )r   r   r   )r   r   r   Z
statistics	statisticr   r   r   test_gh5927!   s
    
zTestBinnedStatistic.test_gh5927c             C   sH   | j }| j}t||ddd\}}}t||tjdd\}}}t|| d S )Nstdr   )r   )r   r   r   r   r+   r   )r   r   r   stat1r!   r"   stat2r$   r   r   r   test_big_number_std*   s
    z'TestBinnedStatistic.test_big_number_stdc          	   C   sv   | j }| j}|d }tj|d< ttt||ddd ttt||dtdd tj|d< ttt||ddd ||d< d S )Nr   r+   r   )r   r   )	r   r   r   infassert_raises
ValueErrorr   int64nan)r   r   r   origr   r   r   #test_non_finite_inputs_and_int_bins4   s    

z7TestBinnedStatistic.test_non_finite_inputs_and_int_binsc             C   s.   | j }| j}t||ddd}d}t|| d S )Nr   r   )r   )r)   	bin_edges	binnumber)r   r   r   r	   )r   r   r   res
attributesr   r   r   test_1d_result_attributesD   s
    z-TestBinnedStatistic.test_1d_result_attributesc             C   sN   | j }| j}t||ddd\}}}tj|d|d\}}t|| t|| d S )Nr(   r   )r   )r   weights)r   r   r   r   r   r   )r   r   r   sum1r!   r"   sum2r$   r   r   r   test_1d_sumL   s    
zTestBinnedStatistic.test_1d_sumc             C   sR   | j }| j}t||ddd\}}}t||tjdd\}}}t|| t|| d S )Nr&   r   )r   )r   r   r   r   r&   r   )r   r   r   r,   r!   r"   r-   r$   r   r   r   test_1d_meanV   s    
z TestBinnedStatistic.test_1d_meanc             C   sR   | j }| j}t||ddd\}}}t||tjdd\}}}t|| t|| d S )Nr+   r   )r   )r   r   r   r   r+   r   )r   r   r   r,   r!   r"   r-   r$   r   r   r   test_1d_std`   s    
zTestBinnedStatistic.test_1d_stdc             C   sR   | j }| j}t||ddd\}}}t||tjdd\}}}t|| t|| d S )Nminr   )r   )r   r   r   r   rA   r   )r   r   r   r,   r!   r"   r-   r$   r   r   r   test_1d_minj   s    
zTestBinnedStatistic.test_1d_minc             C   sR   | j }| j}t||ddd\}}}t||tjdd\}}}t|| t|| d S )Nmaxr   )r   )r   r   r   r   rC   r   )r   r   r   r,   r!   r"   r-   r$   r   r   r   test_1d_maxt   s    
zTestBinnedStatistic.test_1d_maxc             C   sR   | j }| j}t||ddd\}}}t||tjdd\}}}t|| t|| d S )Nr'   r   )r   )r   r   r   r   r'   r   )r   r   r   r,   r!   r"   r-   r$   r   r   r   test_1d_median~   s    
z"TestBinnedStatistic.test_1d_medianc                s   | j d d }| jd d }t||ddd\}} tddddddddddddddddddddg} fddt D }t | t|| d S )	N   r   r   )r      r   c                s   g | ]} |k  qS r   )r(   ).0i)r"   r   r   
<listcomp>   s    z7TestBinnedStatistic.test_1d_bincode.<locals>.<listcomp>)r   r   r   r   arrayuniquer   )r   r   r   r    r!   bc2bcountr   )r"   r   test_1d_bincode   s    &
z#TestBinnedStatistic.test_1d_bincodec       
      C   s   t jd t d}t jd}t|d d |d d \}}}t||dgd\}}}t||dd\}}	}t|| t|| t|| t||	 d S )Ni&        )r      )range)r   randomseedZaranger   r   )
r   r   datar&   r   _Z
mean_rangeZ
bins_rangeZmean_range2Zbins_range2r   r   r   test_1d_range_keyword   s    
 


z)TestBinnedStatistic.test_1d_range_keywordc             C   s   | j }| j}| j}t||ddd\}}}t||ddd\}}}	t|||gddd\}
}}t|
d | t|
d | t|| t|| d S )Nr&   r   )r   r   r   )r   r   r   r   r   )r   r   r   r   stat1vedges1vbc1vstat1wedges1wbc1wr-   r$   rM   r   r   r   test_1d_multi_values   s    
z(TestBinnedStatistic.test_1d_multi_valuesc             C   sd   | j }| j}| j}t|||ddd\}}}}tj||dd\}}	}
t|| t||	 t||
 d S )Nr      )r   )r   r   r   r   r   histogram2dr   )r   r   r   r   r    binx1biny1r"   r#   binx2biny2r   r   r   test_2d_count   s    

z!TestBinnedStatistic.test_2d_countc             C   s6   | j }| j}| j}t|||ddd}d}t|| d S )Nr   r`   )r   )r)   Zx_edgeZy_edger7   )r   r   r   r   r	   )r   r   r   r   r8   r9   r   r   r   test_2d_result_attributes   s    z-TestBinnedStatistic.test_2d_result_attributesc             C   sf   | j }| j}| j}t|||ddd\}}}}tj||d|d\}}	}
t|| t||	 t||
 d S )Nr(   r`   )r   )r   r;   )r   r   r   r   r   ra   r   )r   r   r   r   r<   rb   rc   r"   r=   rd   re   r   r   r   test_2d_sum   s    

zTestBinnedStatistic.test_2d_sumc             C   sj   | j }| j}| j}t|||ddd\}}}}t|||tjdd\}}	}
}t|| t||	 t||
 d S )Nr&   r`   )r   )r   r   r   r   r   r&   r   )r   r   r   r   r,   rb   rc   r"   r-   rd   re   r   r   r   test_2d_mean   s    

z TestBinnedStatistic.test_2d_meanc             C   sj   | j }| j}| j}t|||ddd\}}}}t|||tjdd\}}	}
}t|| t||	 t||
 d S )Nr&   r`   )r   )r   r   r   r   r   r&   r   )r   r   r   r   r,   rb   rc   r"   r-   rd   re   r   r   r   test_2d_mean_unicode   s    

z(TestBinnedStatistic.test_2d_mean_unicodec             C   sj   | j }| j}| j}t|||ddd\}}}}t|||tjdd\}}	}
}t|| t||	 t||
 d S )Nr+   r`   )r   )r   r   r   r   r   r+   r   )r   r   r   r   r,   rb   rc   r"   r-   rd   re   r   r   r   test_2d_std   s    

zTestBinnedStatistic.test_2d_stdc             C   sj   | j }| j}| j}t|||ddd\}}}}t|||tjdd\}}	}
}t|| t||	 t||
 d S )NrA   r`   )r   )r   r   r   r   r   rA   r   )r   r   r   r   r,   rb   rc   r"   r-   rd   re   r   r   r   test_2d_min   s    

zTestBinnedStatistic.test_2d_minc             C   sj   | j }| j}| j}t|||ddd\}}}}t|||tjdd\}}	}
}t|| t||	 t||
 d S )NrC   r`   )r   )r   r   r   r   r   rC   r   )r   r   r   r   r,   rb   rc   r"   r-   rd   re   r   r   r   test_2d_max  s    

zTestBinnedStatistic.test_2d_maxc             C   sj   | j }| j}| j}t|||ddd\}}}}t|||tjdd\}}	}
}t|| t||	 t||
 d S )Nr'   r`   )r   )r   r   r   r   r   r'   r   )r   r   r   r   r,   rb   rc   r"   r-   rd   re   r   r   r   test_2d_median  s    

z"TestBinnedStatistic.test_2d_medianc       
         s   | j d d }| jd d }| jd d }t|||ddd\}}} tddddddd	ddd
dd	ddddddddg} fddt D }t | ||  }	t||	 d S )NrF   r   r   )r                        c                s   g | ]} |k  qS r   )r(   )rH   rI   )r"   r   r   rJ   '  s    z7TestBinnedStatistic.test_2d_bincode.<locals>.<listcomp>)	r   r   r   r   r   rK   rL   r   nonzero)
r   r   r   r   r    rb   rc   rM   rN   	count1adjr   )r"   r   test_2d_bincode  s    
z#TestBinnedStatistic.test_2d_bincodec             C   s   | j }| j}| j}| j}t|||ddd\}}}}t|||ddd\}	}
}}t||||gddd\}}}}t|d | t|d |	 t|| t|| t|| d S )Nr&   ru   )r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   rY   Zbinx1vZbiny1vr[   r\   Zbinx1wZbiny1wr^   r-   rd   re   rM   r   r   r   test_2d_multi_values-  s    

z(TestBinnedStatistic.test_2d_multi_valuesc             C   s   | j }| j}| j}t||ddd\}}}t||ddd\}}}t|||dddd\}	}
}}tj||dd	}tj||dd	}||| k  d
8  < ||| k  d
8  < t||d  t||d
  t||d  t||d
  d S )Nr&   rF   )r   r   )rF   r   T)r   expand_binnumbersright)Zsider   r   )	r   r   r   r   r   r   ZsearchsortedrC   r   )r   r   r   r   statedgesxbcxedgesybcyr-   Zedgesx2Zedgesy2rM   Zbcx3Zbcy3r   r   r   test_2d_binnumbers_unraveled@  s    z0TestBinnedStatistic.test_2d_binnumbers_unraveledc             C   sL   | j }| j}t||ddd\}}}tj|dd\}}t|| t|| d S )Nr   r   )r   )r   r   r   r   histogramddr   )r   r   r   r    r!   r"   r#   r$   r   r   r   test_dd_countW  s    
z!TestBinnedStatistic.test_dd_countc             C   s.   | j }| j}t||ddd}d}t|| d S )Nr   r   )r   )r)   r6   r7   )r   r   r   r	   )r   r   r   r8   r9   r   r   r   test_dd_result_attributesa  s
    z-TestBinnedStatistic.test_dd_result_attributesc             C   sN   | j }| j}t||ddd\}}}tj|d|d\}}t|| t|| d S )Nr(   r   )r   )r   r;   )r   r   r   r   r   r   )r   r   r   r<   r!   r"   r=   r$   r   r   r   test_dd_sumi  s    
zTestBinnedStatistic.test_dd_sumc             C   sR   | j }| j}t||ddd\}}}t||tjdd\}}}t|| t|| d S )Nr&   r   )r   )r   r   r   r   r&   r   )r   r   r   r,   r!   r"   r-   r$   r   r   r   test_dd_means  s    
z TestBinnedStatistic.test_dd_meanc             C   sR   | j }| j}t||ddd\}}}t||tjdd\}}}t|| t|| d S )Nr+   r   )r   )r   r   r   r   r+   r   )r   r   r   r,   r!   r"   r-   r$   r   r   r   test_dd_std}  s    
zTestBinnedStatistic.test_dd_stdc             C   sR   | j }| j}t||ddd\}}}t||tjdd\}}}t|| t|| d S )NrA   r   )r   )r   r   r   r   rA   r   )r   r   r   r,   r!   r"   r-   r$   r   r   r   test_dd_min  s    
zTestBinnedStatistic.test_dd_minc             C   sR   | j }| j}t||ddd\}}}t||tjdd\}}}t|| t|| d S )NrC   r   )r   )r   r   r   r   rC   r   )r   r   r   r,   r!   r"   r-   r$   r   r   r   test_dd_max  s    
zTestBinnedStatistic.test_dd_maxc             C   sR   | j }| j}t||ddd\}}}t||tjdd\}}}t|| t|| d S )Nr'   r   )r   )r   r   r   r   r'   r   )r   r   r   r,   r!   r"   r-   r$   r   r   r   test_dd_median  s    
z"TestBinnedStatistic.test_dd_medianc                s   | j d d }| jd d }t||ddd\}} tddddd	d
ddddddddddddddg} fddt D }t | ||  }t|| d S )NrF   r   r   )r   ?   !   V   S   X   C   9   *   )   R   \       $   [   +   W   Q   c                s   g | ]} |k  qS r   )r(   )rH   rI   )r"   r   r   rJ     s    z7TestBinnedStatistic.test_dd_bincode.<locals>.<listcomp>)r   r   r   r   rK   rL   r   rv   )r   r   r   r    r!   rM   rN   rw   r   )r"   r   test_dd_bincode  s    
z#TestBinnedStatistic.test_dd_bincodec             C   s   | j }| j}| j}t||tjdd\}}}t||tjdd\}}}	t|||gtjdd\}
}}t|
d | t|
d | t|| t|| t|| d S )Nru   )r   r   r   )r   r   r   r   r   r+   r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   r-   r$   rM   r   r   r   test_dd_multi_values  s    

z(TestBinnedStatistic.test_dd_multi_valuesc             C   s   | j }| j}t|d d df |ddd\}}}t|d d df |ddd\}}}t|d d df |ddd\}}}	t||dd	d
d\}
}}t||d  t||d  t|	|d  d S )Nr   r&   rQ   )r   r   rF   rG   r   )rQ   rF   r   T)r   rz   )r   r   r   r   r   )r   r   r   r|   r}   r~   r   r   ZedgeszZbczr-   r$   rM   r   r   r   test_dd_binnumbers_unraveled  s    """z0TestBinnedStatistic.test_dd_binnumbers_unraveledc             C   sj   t jd}t jd}t ddd}|||f}t||d|d}|j}t||d|d}|j}t|| d S )	N)i'  r   i'  r   r   r   r&   )r   )Zbinned_statistic_result)r   rT   linspacer   r)   r   )r   r   r   r   resultr|   r-   r   r   r   test_dd_binned_statistic_result  s    
z3TestBinnedStatistic.test_dd_binned_statistic_resultc          	   C   sh   t jd}t jd}t ddd}t |d}|||f}ttdd t||d|d	 W d Q R X d S )
N)i'  r   i'  r   r   r   zdifference is numerically 0)matchr&   )r   )r   rT   r   appendr0   r1   r   )r   r   r   r   r   r   r   test_dd_zero_dedges  s    
z'TestBinnedStatistic.test_dd_zero_dedgesN),__name__
__module____qualname__classmethodr   r%   r*   r.   r5   r:   r>   r?   r@   rB   rD   rE   rO   rX   r_   rf   rg   rh   ri   rj   rk   rl   rm   rn   rx   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
      sP   

	






	






r
   )numpyr   Znumpy.testingr   Zpytestr   r0   Zscipy.statsr   r   r   Zscipy._lib._utilr   Zcommon_testsr	   objectr
   r   r   r   r   <module>   s   