U
    e»{jž  ã                	   @   s$  d dl Zd dlZd dlmZ d dlmZmZmZm	Z	m
Z
 d dlmZ d&dd„Zd'dd	„Zejje d
d�d(dd„ƒZejje d
d�d)dd„ƒZddddgZerªedg7 Zej dee ddd¡g ¡d*dd„ƒZej de¡d+dd„ƒZd,dd„Zejje d
d�d d!„ ƒZd"d#„ Zd-d$d%„ZdS ).é    N)Úassert_allclose)Úcalculate_bin_edgesÚfreedman_bin_widthÚ	histogramÚknuth_bin_widthÚscott_bin_width)Ú	HAS_SCIPYé'  c              	   C   sŽ   t j |¡}| | ¡}t|ƒ}t|dt  |¡ | d  ƒ t|dd�\}}t|dt  |¡ | d  ƒ t t	¡� t| d¡ƒ W 5 Q R X d S )Ng      @çUUUUUUÕ?T©Zreturn_bins©é   é
   )
ÚnpÚrandomÚdefault_rngÚstandard_normalr   r   ZstdÚpytestÚraisesÚ
ValueError)ÚNÚrseedÚrngÚXÚdeltaÚbins© r   úa/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/stats/tests/test_histogram.pyÚtest_scott_bin_width   s    
r   c           	   
   C   sH  t j |¡}| | ¡}t  |ddg¡\}}t|ƒ}t|d||  | d  ƒ t|dd�\}}t|d||  | d  ƒ t t	¡� t| d¡ƒ W 5 Q R X ddd	gd
gd  dddg }tjt	dd��, tj
tdd�� t|dd� W 5 Q R X W 5 Q R X t jddd	gd d
g dddg t jd�}|d9 }t|dd�\}}t|dƒ d S )Né   éK   r   r
   Tr   r   é   é   é   éd   é   é   é   zPlease use another bin method)Úmatchzdivide by zero encountered)ZdtypegTäqs*¹>g6
‡
ñ­>)r   r   r   r   Z
percentiler   r   r   r   r   ZwarnsÚRuntimeWarningZasarrayZfloat32)	r   r   r   r   Zv25Zv75r   r   Ztest_xr   r   r   Útest_freedman_bin_width   s"    
 *r*   zrequires scipy)Úreasonc              	   C   sp   t j |¡}| | ¡}t|dd�\}}tt|ƒdƒ t|ƒ}||ksHt‚t 	t
¡� t| d¡ƒ W 5 Q R X d S )NTr   é:   r   )r   r   r   r   r   r   ÚlenÚAssertionErrorr   r   r   )r   r   r   r   Zdxr   Zdx2r   r   r   Útest_knuth_bin_width;   s    
r/   éè  c                 C   sT   t j |¡}| | ¡}t|dƒ\}}| ¡ t|ƒks8t‚t|ƒt|ƒd ksPt‚d S )NÚknuthr!   ©r   r   r   r   r   Úsumr-   r.   )r   r   r   ÚxÚcountsr   r   r   r   Útest_knuth_histogramJ   s
    
r6   é   ÚscottÚfreedmanÚblocksr1   Úbin_typeéûÿÿÿr%   é   c                 C   sT   t j |¡}| |¡}t|| ƒ\}}| ¡ t|ƒks8t‚t|ƒt|ƒd ksPt‚d S )Nr!   r2   )r;   r   r   r   r4   r5   r   r   r   r   Útest_histogramY   s
    
r>   c                 C   sT   t j |¡}| |¡}d}t|| |d�}| ¡ |d ks<t‚| ¡ |d ksPt‚d S )N©gš™™™™™¹?gš™™™™™é?©Úranger!   r   )r   r   r   r   r   Úmaxr.   Úmin)r;   r   r   r   r4   rA   r   r   r   r   Útest_histogram_ranged   s    
rD   c                 C   sJ   t j |¡}| | ¡}d}t  ddd¡}t|||d�}t||kƒsFt‚d S )Nr?   r<   r%   r=   r@   )r   r   r   r   Úlinspacer   Úallr.   )r   r   r   r4   rA   Z
input_binsr   r   r   r   Ú#test_histogram_range_with_bins_listp   s    
rG   c                  C   sd   t j d¡} |  d¡}t|dd�\}}t|ddddd	d
dddg	ƒ t|ddddddddddg
ƒ d S )Nr   r$   r1   ©r   r   r!   é   é   é   é   é   r   é   çå¿z»©™ÀgÐœÔÞ�ý¿gú‡¾hÐõ¿gHæhÀæ=ì¿g:y‘	øµÙ¿g²JÈ‹u?´?g3mÙêá?gW®\â¦ð?g-Ã,rWXø?çÓ¦fæ @©r   r   r   r   r   r   ©r   r   r5   r   r   r   r   Útest_histogram_output_knuth|   s    
    ÿrS   c                  C   s  t j d¡} |  d¡}t|dd�\}}t|ddddddd	d
dd
g
ƒ t|dddddddddddgƒ t|dd�\}}t|ddddd	d	gƒ t|dddddddgƒ t|d d�\}}t|dd!d	d"d#dd$d%gƒ t|dd&d'd(d)d*d+d,d-g	d.d/� t|d0d�\}}t|d1d2gƒ t|dd3dgƒ d S )4Nr   r$   r   rH   r   é   rM   é   é   rN   é	   rO   g¹aF>ÐFþ¿gÍèMZ÷¿g¼ó8ÊÉmð¿g Gµ�ã¿gþ-\±¦Ä¿g³(Ë”ÿ^Ñ?g24"A†ˆæ?g)8@YÆ0ò?gˆž”Iù?rP   r8   é   r   gŽ7±—ù¿g£v}îøë¿gÌ9¡¥eÃ¿gvNkvâ?gÏ±Í×Öô?g«˜Æ=9 @r9   é   rL   é   rI   r#   g°Ë®ƒœÚû¿gºå¸�å�ò¿g‰ÿ…/]Râ¿gƒ*ÚÁ-Ä‡?g–4ó¢~ã?gA€oGöàò?gZ4¶:­9ü?g(V2É@gH¯¼šò×Š>)Zrtolr:   r"   éa   gT«Ž !ñõ¿rQ   rR   r   r   r   Útest_histogram_outputŠ   s>    
    þ ÿ   ÿÿr\   c              
   C   sj   t j |¡}| | ¡}dD ](}t t¡� t|||d� W 5 Q R X qt t¡� t|dd� W 5 Q R X d S )N)r8   r9   r:   )ÚweightsZbad_argumentrH   )	r   r   r   r   r   r   ÚNotImplementedErrorr   r   )r   r   r   r4   r   r   r   r   Útest_histogram_badargs¬   s    
r_   )r	   r   )r	   r   )r	   r   )r0   r   )r0   r   )r0   r   )r0   r   )r0   r   )Únumpyr   r   Znumpy.testingr   Zastropy.statsr   r   r   r   r   Z"astropy.utils.compat.optional_depsr   r   r*   ÚmarkZskipifr/   r6   Z_bin_types_to_testZparametrizerE   r>   rD   rG   rS   r\   r_   r   r   r   r   Ú<module>   s,   





"