U
    e»{jFv  ã                   @   s€  d dl Zd dlZd dlmZmZ d dlmZ d dl	m
Z
 d dlmZmZ d dlmZ dd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zejje dd�dd„ ƒZejje dd�dd„ ƒZdd„ Zdd„ Zdd„ Zejje dd�dd „ ƒZd!d"„ Zd#d$„ Zd%d&„ Z ej !d'¡d(d)„ ƒZ"d*d+„ Z#d,d-„ Z$d.d/„ Z%d0d1„ Z&d2d3„ Z'd4d5„ Z(d6d7„ Z)ejje dd�ej *d8d9d:d;d<g¡d=d>„ ƒƒZ+d?d@„ Z,ejje dd�dAdB„ ƒZ-dCdD„ Z.dEdF„ Z/ejje dd�dGdH„ ƒZ0ejje dd�dIdJ„ ƒZ1ejje dd�dKdL„ ƒZ2ejje dd�dMdN„ ƒZ3ejje dd�ej *dOd dPdQdRdSdTdUg¡dVdW„ ƒƒZ4ejje dd�dXdY„ ƒZ5ejje dZd�d[d\„ ƒZ6ejje dd�d]d^„ ƒZ7ejje dd�d_d`„ ƒZ8ejje�pÄedad�dbdc„ ƒZ9ejje dd�ej *dddSdUdedfg¡dgdh„ ƒƒZ:ejje dd�ej *didjdkdldmdndog¡dpdq„ ƒƒZ;ejje dd�ej *didjdkdldmdndog¡drds„ ƒƒZ<ejje dd�dtdu„ ƒZ=ejje dd�ej *didjdkdldmdndog¡dvdw„ ƒƒZ>ejje dd�dxdy„ ƒZ?ejje dd�dzd{„ ƒZ@ejje dd�ej *d|d}d~dd€d�g¡d‚dƒ„ ƒƒZAejje dd�ej *d„ejBdUdfd…ej Cd†¡d‡�ejBdˆdfd‰ej Cd†¡d‡�dŠd‹g¡dŒd�„ ƒƒZDdS )Žé    N)Úassert_allcloseÚassert_equal)Úunits)Úfuncs)Ú
HAS_MPMATHÚ	HAS_SCIPY)ÚNumpyRNGContextc                     sš  t dƒ��† tj d¡} t | ¡}|  d¡} tj| dd�}t|ƒdksJt‚|j	| j	k sZt‚tj| dd�}t|ƒdksxt‚|j	| j	k sˆt‚t 
d	¡‰ t ‡ fd
d„ttˆ ƒƒD ƒ¡ ddd¡}t |¡}|dksÒt‚tj|dd�}t|dddddgdddddgdddddgdd d!d"d#ggƒ tj|dd�}t|d$d%d&d'd(gd)d*d+d,d-gd.d/d0d1d2ggƒ tj|d3d�}t|d4d5d6d7gd8d9d:d;gd<d=d>d?ggƒ W 5 Q R X d S )@Né90  é'  )é
   éè  é   ©Úaxisr   r   r   é<   c                    s    g | ]}t ˆ d |d … ƒ‘qS ©Nr   )Úsum©Ú.0Úi©Úx© ú]/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/stats/tests/test_funcs.pyÚ
<listcomp>   s     z2test_median_absolute_deviation.<locals>.<listcomp>é   é   é   g     Xx@g     @j@g     Àl@g     @o@g     àp@g      r@g     `s@g      t@g     àu@g      w@g     `x@g      y@g     àz@g      |@g     `}@g      ~@g     à@g     �€@g     0�@g     Ð�@g     p‚@g     €;@g     @@@g     ÀB@g     @E@g     ÀG@g     à_@g     �`@g     0a@g     Ða@g     pb@g     pl@g     m@g     °m@g     Pn@g     ðn@é   g      @g       @g      *@g      2@g      7@g      <@g     €@@g      C@g     €E@g      H@g     €J@g      M@)r   ÚnpÚrandomZrandnr   Úmedian_absolute_deviationZreshapeÚlenÚAssertionErrorÚsizeÚarangeÚarrayÚranger   )ZrandvarÚmadÚar   r   r   Útest_median_absolute_deviation   sN    


*
üþ	ýþ


ýþr*   c                  C   s
  t j dddg¡} t | ¡dks$t‚t jjdddgdddgd�} t | ¡dksRt‚t | ¡t | | j  ¡ksrt‚t jjddgddggddgddggd�} t | ¡ t | ¡dks¶t‚t | j¡dksÊt‚t j 	tj| dd�jddg¡ t j 	tj| dd�jddg¡ d S )	Nr   r   r   r   r   ©Úmaskç      à?r   )
r   Úmar&   r   r!   r#   r,   ÚdataZtestingZassert_array_equal©r&   r   r   r   Ú%test_median_absolute_deviation_masked>   s&    ÿ(
 ÿ ÿr1   c                  C   s`   t  dddt jgddt jdgg¡} ttj| t jdd�ddgƒ t j | ¡} t | ¡dks\t	‚d S )Nr   r   r   r   r   )Úfuncr   )
r   r&   Únanr   r   r!   Z	nanmedianr.   Zmasked_invalidr#   r0   r   r   r   Ú#test_median_absolute_deviation_nans`   s    " ÿr4   c                  C   sb   t  dt jdt jg¡} t jj| dd�}tj| dd�}tj|dd�}t||ƒ t  	|d ¡s^t
‚dS )	z}
    Regression test to ensure ignore_nan=True gives same results for
    ndarray and masked arrays that contain +/-inf.
    ç      ð?r   Fr+   T©Ú
ignore_nanr   N)r   r&   r3   Úinfr.   Zmasked_arrayr   r!   r   Úisnanr#   )Zdata1Zdata2Úmad1Úmad2r   r   r   Ú*test_median_absolute_deviation_nans_maskedj   s    
r<   c                  C   s`   t  d¡t  d¡d d …t jt jf  } tj| dd�}tj| dd�}t|t  d¡ƒ t||ƒ d S )N)r   r   r   r   ©r   r   r   )r   r   )r   Úonesr%   Znewaxisr   r!   r   Úzeros)r&   r:   r;   r   r   r   Ú,test_median_absolute_deviation_multidim_axisz   s
    &r@   c                  C   sJ   t  dddg¡tj } t | ¡}|j| jks0t‚|jt | j¡ksFt‚d S )Nr   é   r   )	r   r&   ÚuÚmr   r!   Úunitr#   Úvalue)r)   r(   r   r   r   Ú'test_median_absolute_deviation_quantity‚   s    
rF   zrequires scipy)Úreasonc                     sÒ  d‰dddg} dD ]X‰ t j| ˆˆ dd�}|dk|dk@  ¡ s@t‚t j| ˆˆ d	d�}|dk|dk@  ¡ st‚qdd
dddg} d‰d‰ t j| ˆˆ d	d�}t dddddgdddddgg¡}t||ddd� t ‡ ‡fdd„| D ƒ¡ ¡ }t||ddd� t j| ˆˆ dd�}t ddddd gd!d"d#d$d%gg¡}t||ddd� t jddd&d'�}t|dƒ t jddd&d'�}t|dƒ t jd(d)d*d&d�}t|d d+d+t d,¡  ƒ t|d
 d+d+t d,¡  ƒ d} d‰d-D ]&}t j| ˆ|d'�}|j	d.k�sÂt‚�qÂt | ¡} d-D ]&}t j| ˆ|d'�}|j	d.k�søt‚�qøt ˆ¡‰d-D ]&}t j| ˆ|d'�}|j	d.k�s.t‚�q.t d
ddg¡} d-D ]&}t j| ˆ|d'�}|j	d/k�sjt‚�qjt dddg¡‰d-D ]&}t j| ˆ|d'�}|j	d/k�s¦t‚�q¦d S )0Nr   r   r   )ç        r-   r5   Úwilson©Úconfidence_levelÚintervalrH   r5   Újeffreysr   r   r   é   çffffffî?gü©ñÒMb�?g¤p=
×£°?g˜nƒÀÊÁ?gÁÊ¡E¶óÍ?gã¥›Ä °Ò?gÕxé&1à?g#Ûù~j¼ä?gP�—nƒè?gZd;ßO�ë?çü©ñÒMbP?)ÚatolÚrtolc                    s   g | ]}t j|ˆˆ d d�‘qS )rM   rJ   )r   Úbinom_conf_interval)r   Zkval©ÚconfÚnr   r   r   ª   s   ý   ÿz,test_binom_conf_interval.<locals>.<listcomp>ÚflatgÊTÁ¨¤N ?g6Y£¢Ñµ?gŽ’WçÄ?g��Ž’WÏ?gÜ.4×i¤×?g+‡Ùà?gO@aÃÓä?gµOÇc*è?g™Óe1±ùê?Úwald©rL   éô  r   g¸Ìé²˜Øå?r-   ç     @�@)rX   rI   rM   rW   )r   )r   r   )
r   rS   Úallr#   r   r&   r   Z	transposeÚsqrtÚshape)ÚkÚresÚresultÚtablerL   r   rT   r   Útest_binom_conf_interval�   s„    
   ÿÿüÿþÿ

   ÿ

rc   c                  C   sÆ   d} t  ddd¡}t jt|ƒtd�}tj||| d�\}}}}|j| fksLt‚|j| fks\t‚|j| fkslt‚|jd| fks~t‚|dk 	¡ sŽt‚d	|d d …< tj||| d�\}}}}|dk 	¡ sÂt‚d S )
Né   rH   ç      $@éd   )Zdtype)Úbinsr   r5   F)
r   Zlinspacer>   r"   Úboolr   Úbinned_binom_proportionr^   r#   r\   )Znbinsr   ÚsuccessZbin_ctrZbin_hwÚpZperrr   r   r   Útest_binned_binom_proportionä   s    rl   c                	   C   s0   t  t¡� tjdgddgdd� W 5 Q R X d S )Nr   r   r   g      è?©rK   )ÚpytestÚraisesÚ
ValueErrorr   ri   r   r   r   r   Ú&test_binned_binom_proportion_exceptionû   s    rq   c               	   C   sÆ   t  dddddd¡} d| ks t‚t  ddddddd¡} d| ksBt‚t  dddddd¡} | dk sbt‚t  dddddd¡} | dk s‚t‚t  dddddd¡} | dk s¢t‚t  dddddd¡} | dksÂt‚d S )Nr   é   r   ç      @r   r   )r   Zsignal_to_noise_oir_ccdr#   )ra   r   r   r   Útest_signal_to_noise_oir_ccd   s    rt   c                  C   s¾   t  ddddddddd	d
g
¡} t  dddddd
ddddg
ddddddddddg
g¡}tdƒ� t|t | d¡ƒ W 5 Q R X tdƒ�2 t  tj| dt jd�¡}tt  | ¡|dd� W 5 Q R X d S )Nr   r   r   r   r   é   rN   é   é	   r   é*   r
   ©Úbootfuncç{®Gáz„?©rQ   )r   r&   r   r   r   Ú	bootstrapZmeanr   )ÚbootarrÚanswerÚ
bootresultr   r   r   Útest_bootstrap  s    6

r�   c                     sh  ddl m‰  tdƒ�r t dddddd	d
dddg
ddddd	dddd	dg
g¡j} t d¡}‡ fdd„}tj| d|d�}t||dd� W 5 Q R X tdƒ�r t dddddd	d
dddg
ddddd	dddd	dg
g¡j} t d¡}‡ fdd„}tj| d|d�}t||dd� W 5 Q R X tdƒ�J t d¡}‡ fdd„}tj| d|d�}|j	dk�sLt
‚t||dd� W 5 Q R X d S )Nr   ©Ú	spearmanrrx   r   r   r   r   r   ru   rN   rv   rw   )gw¾Ÿ/ÝÈ?gŒ„¶œKq•?c                    s   ˆ | ƒd S )Nr   r   r   r‚   r   r   rz   /  s    z1test_bootstrap_multiple_outputs.<locals>.bootfuncry   rP   r|   )çé·¯çâ?çœ¢#¹ü‡î?c                    s   ˆ | ƒd S r   r   r   r‚   r   r   rz   ?  s    ))g³q¬‹ÛÈ?r„   )g×òAÏf•?r…   )gÊ2Ä±.nÛ?gƒÀÊ¡E¶Ë?c                    s   ˆ | ƒS )Nr   r   r‚   r   r   rz   J  s    )r   r   )Úscipy.statsrƒ   r   r   r&   ÚTr   r}   r   r^   r#   )r~   r   rz   r€   r   r‚   r   Útest_bootstrap_multiple_outputs"  s.    
.ÿ

.ÿ


rˆ   c               	   C   s>   t dƒ�, tjjdddd�} tt | ¡ddd� W 5 Q R X d S )	Nr	   r   r   ©rf   rf   ©r$   ç       @çš™™™™™©?©rR   )r   r   r    Únormalr   r   Úmad_std©r/   r   r   r   Útest_mad_stdS  s    
r‘   c               	   C   s¢   t dƒ�� tjjdddd�} tj t | ¡| ¡} t | ¡}t 	|¡sHt
‚tj| d< tj| dd�}t 	|¡snt
‚t | ¡}t 	|¡s†t
‚t |¡s”t
‚W 5 Q R X d S )	Nr	   r   r   ©r   r   rŠ   ©r   r   Tr6   )r   r   r    rŽ   r.   Úmasked_wherer9   r   r�   Zisscalarr#   r3   ©r/   Zrsltr   r   r   Útest_mad_std_scalar_returnY  s    



r–   c               	   C   sP   t dƒ�> tjjdddd�} tj| d< tj| dd�}t |¡sBt‚W 5 Q R X d S )	Nr	   r   r   r’   rŠ   r“   Fr6   )	r   r   r    rŽ   r3   r   r�   r9   r#   r•   r   r   r   Útest_mad_std_warnsk  s
    

r—   z*ignore:Invalid value encountered in medianc               
   C   s²   t dƒ�\ t ddg¡} tj| d d …< tjjdddd�| dd…dd…f< ttj| d	d
�ddd� W 5 Q R X t 	t dddddtjg¡¡sŒt
‚ttjdddddtjgd	d
�dƒ d S )Nr	   éf   r   r   r‰   rŠ   r   éÿÿÿÿTr6   r‹   rŒ   r�   r   r   gtV—½¸÷?)r   r   Úemptyr3   r    rŽ   r   r   r�   r9   r#   r�   r   r   r   Útest_mad_std_withnans  s    
""" ÿr›   c                  C   sj   t  ddddgddddgg¡} t  ddddg¡}t  ddg¡}ttj| dd	�|ƒ ttj| dd	�|ƒ d S )
Nr   r   r   r   ç#†>Ô�Ê@ç.þ½¸ç?ç.þ½¸÷?r   r   )r   r&   r   r   r�   ©r/   Zresult_axis0Zresult_axis1r   r   r   Útest_mad_std_with_axis�  s
    r    c               	   C   s”   t  ddddt jgddddt jgg¡} t  ddddt jg¡}t  ddg¡}tjtdd	��2 ttj| d
dd�|ƒ ttj| ddd�|ƒ W 5 Q R X d S )Nr   r   r   r   rœ   r�   rž   úAll-NaN slice encountered©Úmatchr   T©r   r7   )	r   r&   r3   rn   ÚwarnsÚRuntimeWarningr   r   r�   rŸ   r   r   r   Útest_mad_std_with_axis_and_nanŠ  s    &r§   c               	   C   s˜   t  ddddt jgddddt jgg¡} tjtdd�� tj| ddd	�}W 5 Q R X t j 	|¡r`t
‚t j t  | ¡| ¡} tj| ddd	�}t j 	|¡s”t
‚d S )
Nr   r   r   r   r¡   r¢   r   Tr¤   )r   r&   r3   rn   r¥   r¦   r   r�   r.   ZisMaskedArrayr#   r”   r9   )r/   ra   r   r   r   Ú)test_mad_std_with_axis_and_nan_array_type•  s    &r¨   c                  C   s0   dt  dt  d¡ ¡ } ttj|  ddd� d S )Nr‹   r5   ç�íµ ÷Æ°>r�   )r   r]   Úlogr   r   Úgaussian_fwhm_to_sigma)Zfwhmr   r   r   Útest_gaussian_fwhm_to_sigma¢  s    r¬   c                  C   s4   ddt  dt  d¡ ¡  } ttj|  ddd� d S )Nr5   r‹   r©   r�   )r   r]   rª   r   r   Úgaussian_sigma_to_fwhm©Úsigmar   r   r   Útest_gaussian_sigma_to_fwhm§  s    r°   c                   C   s   t tjtj dƒ d S )Nr5   )r   r   r«   r­   r   r   r   r   Ú$test_gaussian_sigma_to_fwhm_to_sigma¬  s    r±   c                   C   s   t tjddd�dƒ d S )NrA   úroot-nrY   )é   rd   ©r   r   Úpoisson_conf_intervalr   r   r   r   Ú test_poisson_conf_interval_rootn°  s    r¶   rL   úroot-n-0ÚpearsonÚsherpagehrelsúfrequentist-confidencec                 C   s*   d}t tj|dd�tj|| d�dd� d S )Nrf   r²   rY   ç{®Gáz”?r�   r´   )rL   rV   r   r   r   Útest_poisson_conf_large´  s    ýr¼   c                  C   sh   t  d¡} ttj| dd�tj| d dd�d d …d d d f t  | ¡ ƒ t  t  tj| dd�¡¡rdt‚d S )N©r   r   r   r·   rY   ©r   r   r   ©	r   r?   r   r   rµ   Ú	ones_likeÚanyr9   r#   ©rV   r   r   r   Ú#test_poisson_conf_array_rootn0_zeroÁ  s    
  ÿýþrÃ   c                  C   sh   t  d¡} ttj| dd�tj| d dd�d d …d d d f t  | ¡ ƒ t  t  tj| dd�¡¡rdt‚d S )Nr½   rº   rY   r¾   r·   r¿   rÂ   r   r   r   Ú3test_poisson_conf_array_frequentist_confidence_zeroÎ  s    
  ÿýþrÄ   c                  C   sP   dddg} t tj| dd�dddgdddggƒ t t tj| dd�¡¡rLt‚d S )Nr   r·   rY   r   )r   r   rµ   r   rÁ   r9   r#   rÂ   r   r   r   Ú"test_poisson_conf_list_rootn0_zeroÜ  s    
 ÿrÅ   c                  C   st   dt  d¡ } ttj| dd�tj| d dd�d d …d d d f t  | ¡ ƒ d| d< t  t  tj| dd�¡¡rpt‚d S )NrN   r½   r·   rY   r¾   r   ©r   r   r   ©	r   r>   r   r   rµ   rÀ   rÁ   r9   r#   rÂ   r   r   r   Útest_poisson_conf_array_rootn0å  s      ÿýþrÈ   c                  C   st   dt  d¡ } ttj| dd�tj| d dd�d d …d d d f t  | ¡ ƒ d| d< t  t  tj| dd�¡¡rpt‚d S )NrN   r½   rº   rY   r¾   r   rÆ   rÇ   rÂ   r   r   r   Útest_poisson_conf_array_fcó  s      ÿýþÿrÉ   c                  C   s\   t  ddddddddd	d
dg¡} ttj| dd…df dd�| dd…dd…f jddd� dS )ú6Test intervals against those published in Gehrels 1986)r   r   gÛù~j¼tý?)r   g¾Ÿ/Ý$Æ?gffffff
@)r   g-²�ï§æ?gZd;ßO�@)r   g¬Zd;ßõ?gyé&1¬@)r   gã¥›Ä ° @gôýÔxé¦@)r   g¸…ëQ¸@gÝ$�•Ã @)ru   gö(\�Âõ@g^ºI+#@)rN   g“V­@g
×£p=Š%@)rv   g!°rh‘í@gfffffæ'@)rw   gî|?5^:@g¸…ëQ8*@)r   gªñÒMb�@g
×£p=Š,@Nr   rº   rY   r   rP   )rR   rQ   ©r   r&   r   r   rµ   r‡   ©Znlhr   r   r   Ú0test_poisson_conf_frequentist_confidence_gehrels  s(    õÿürÍ   c                  C   s\   t  ddddddddd	d
dg¡} ttj| dd…df ddd�j| dd…dd…f dd� dS )a   Test intervals against those published in Gehrels 1986

    Note: I think there's a typo (transposition of digits) in Gehrels 1986,
    specifically for the two-sigma lower limit for 3 events; they claim
    0.569 but this function returns 0.59623...

    )r   r   r   gÝ$�•C@)r   r   gZd;ßO�—?g¬Zd»@)r   r   gq=
×£pÍ?g1¬Zd@)r   r   gßO�—nã?gçû©ñÒÍ!@)r   r   g!°rh‘íð?gHáz®Ç$@)r   r   g‡ÙÎ÷Sù?g¤p=
×£'@)ru   r   gÓMbX9@gq=
×£p*@)rN   r   gªñÒMb@g®Gáz.-@)rv   r   gTã¥›Ä @gáz®Gá/@)rw   r   gÉv¾Ÿ/@g…ëQ¸E1@)r   r   gÇK7‰Aà@g®Gáz”2@Nr   r   rº   ©r¯   rL   r{   r�   rË   rÌ   r   r   r   Ú7test_poisson_conf_frequentist_confidence_gehrels_2sigma  s.    	õÿ  ÿûrÏ   c                  C   s^   t  ddddddddd	d
dg¡} ttj| dd…df ddd�j| dd…dd…f ddd� dS )rÊ   )r   r   r   g;ßO�—n@)r   r   g®Ø_vOV?gÍÌÌÌÌÌ!@)r   r   gh³êsµ«?g=
×£p½%@)r   r   g‰A`åÐ"Ë?g\�Âõ(\)@)r   r   gÃõ(\�ÂÝ?gHáz®Ç,@)r   r   gòÒMbXé?gHáz®0@)ru   r   gÍÌÌÌÌÌò?g…ëQ¸ž1@)rN   r   gÙÎ÷Sã¥ù?gìQ¸…+3@)rv   r   g%�•C‹ @gq=
×£°4@)rw   r   g/Ý$�@g®Gáz.6@)r   r   gyé&1¬@g¤p=
×£7@Nr   r   rº   rÎ   r   r{   T)rR   ÚverboserË   rÌ   r   r   r   Ú7test_poisson_conf_frequentist_confidence_gehrels_3sigma?  s0    õÿ  ÿúrÑ   rV   r   r   r   r   rd   rf   c                 C   s.   t tj| dd�d tj| dd�d dd� d S )Nr¹   rY   r   rº   r»   r�   r´   rÂ   r   r   r   Útest_poisson_conf_gehrels86[  s
    ýrÒ   c                  C   s"  t t ddd¡ddd� t t t d¡dd¡ddd� t t t d¡dd¡ddd� t t dt d¡d¡ddd� t t dt d¡d¡ddd� t t ddt d¡¡ddd� t t ddt d¡¡ddd� tjddgd	dd
gddgd�} t | dd…df ddd� t | dd…df ddd� dS )zÛTest that the lower-level routine gives the snae number.

    Test numbers are from table1 1, 3 in
    Kraft, Burrows and Nousek in
    `ApJ 374, 344 (1991) <https://ui.adsabs.harvard.edu/abs/1991ApJ...374..344K>`_
    r   ç      @ç®Gáz®ï?©r   g×£p=
W%@rP   r�   rs   ru   úkraft-burrows-nousekr‹   çÍÌÌÌÌÌì?©Ú
backgroundrK   Nr   r   ©gìQ¸…ëé?g{®Gáú!@ç{®Gázt?)	r   r   Z_scipy_kraft_burrows_nousekr   Úint32Úint64Úfloat32Úfloat64rµ   )rU   r   r   r   Útest_scipy_poisson_limite  sV      ÿýýýýýýürà   zrequires mpmathc                  C   sb  t t ddd¡ddd� t t ddd¡d	dd� t t d
dd¡ddd� t t d
dd¡ddd� t t t d¡dd¡ddd� t t t d¡dd¡ddd� t t dt d¡d¡ddd� t t dt d¡d¡ddd� t t ddt d¡¡ddd� t t ddt d¡¡ddd� t t d
dd¡ddd� t tjddddd�d d …df dƒ t ddd¡} d S )Nr5   gš™™™™™¹?rÔ   )rH   g)\�Âõ(@rÛ   r�   r-   rO   )rH   gq=
×£p@rs   rH   )g¸…ëQ¸ò?g¤p=
×£*@rÓ   rÕ   rP   ru   r‹   r×   rÚ   ç      @é    gL7‰A`Qc@rÖ   )rV   rÙ   rK   rL   r   )r   g™“ÝíöM>@r[   g      Œ@)	r   r   Z_mpmath_kraft_burrows_nousekr   rÜ   rÝ   rÞ   rß   rµ   )Ú_r   r   r   Útest_mpmath_poisson_limit˜  s†      ÿ  ÿ  ÿ  ÿýýýýýý  ÿü
ûùrä   c                	   C   s¼   t jtdd�� tjddgddd� W 5 Q R X t jtdd�� tjddgd	d
dgd� W 5 Q R X t jtdd�� tjddgdd
dgd� W 5 Q R X t jtdd�� t dd¡ W 5 Q R X d S )NzOnly sigma=1 supportedr¢   r   ru   r²   r   r®   zbackground not supportedr¸   rÓ   r‹   ©rÙ   zconfidence_level not supportedr¹   rm   zInvalid methodr   Zfoo)rn   ro   rp   r   rµ   r   r   r   r   Útest_poisson_conf_value_errors×  s    "  ÿræ   c                	   C   sê   t jtdd�� tjddddd� W 5 Q R X t jtdd�� tjdddd	� W 5 Q R X t jtd
d�� tjddddd� W 5 Q R X t jtdd�� tjddddd� W 5 Q R X t jtdd��$ tjddgdddgddgd� W 5 Q R X d S )Nznumber between 0 and 1r¢   r   rÖ   rÓ   éc   rØ   zSet confidence_level for methodrå   zBackground must beg      ÀrÔ   z Number of counts must be integerrs   rá   r‹   r×   )rn   ro   rp   r   rµ   Ú	TypeErrorr   r   r   r   Ú"test_poisson_conf_kbn_value_errorsè  s<       ÿ   ÿ   ÿüré   z!requires neither scipy nor mpmathc                	   C   s,   t  t¡� tjddddd� W 5 Q R X d S )Nrd   rÖ   re   rO   )rL   rÙ   rK   )rn   ro   ÚImportErrorr   rµ   r   r   r   r   Ú!test_poisson_limit_nodependencies  s       ÿrë   ÚNr   r
   c              	   C   s6   t dƒ�$ t tj | ¡¡d dks(t‚W 5 Q R X d S ©Nr	   r   r{   )r   r   Úkuiperr   r    r#   ©rì   r   r   r   Útest_uniform  s    
rð   zN,Mr‰   )rd   rf   )rf   rd   )r   rd   r“   )r   rf   c              	   C   s@   t dƒ�. t tj | ¡tj |¡¡d dks2t‚W 5 Q R X d S rí   ©r   r   Ú
kuiper_twor   r    r#   ©rì   ÚMr   r   r   Útest_kuiper_two_uniform  s    
rõ   c              	   C   sH   t dƒ�6 t tj | ¡d tj |¡d ¡d dks:t‚W 5 Q R X d S )Nr	   r   r   r{   rñ   ró   r   r   r   Útest_kuiper_two_nonuniform  s
    
&ÿÿrö   c               	   C   sH   t dƒ�6 t tj d¡d tj d¡¡\} }|dk s:t‚W 5 Q R X d S )Nr	   rZ   r-   r{   rñ   )ÚDÚfr   r   r   Ú test_detect_kuiper_two_different)  s    
$rù   c           	   	   C   s¦   ddl m} tdƒ�ˆ d}d}d}t|ƒD ]4}t tj | ¡tj |¡¡\}}||k r*|d7 }q*|||ƒ |d ¡dks|t	‚|||ƒ 
|d ¡dks˜t	‚W 5 Q R X d S )Nr   ©Úbinomr	   rf   rŒ   r   rÛ   )r†   rû   r   r'   r   rò   r   r    Úsfr#   Úcdf)	rì   rô   rû   ÚRÚfppZfpsr   r÷   rø   r   r   r   Útest_fpp_kuiper_two0  s    
 
r   c                  C   s   t  dd¡} | dkst‚d S )Ngÿä^s!á?g     p—@r   )r   Z!kuiper_false_positive_probabilityr#   )rÿ   r   r   r   Ú&test_kuiper_false_positive_probabilityC  s    r  c            
   	   C   s
  ddl m}  tdƒ�ì d\}}tj ||d¡d }t ||d||  fg¡\}}t d||¡}tj	|t
|ƒd	d
�\}}t |¡}t
|ƒ| | t
|ƒ t
|ƒ| | t
|ƒ  }}t |d | d ¡}	| t
|ƒƒ |	¡dksât‚| t
|ƒƒ |	¡dksüt‚W 5 Q R X d S )Nr   )Úchi2éÒ  )g333333Ó?g…ëQ¸	@r
   r   r5   rA   ©r   r   )rg   r'   r   r{   )r†   r  r   r   r    Úuniformr   Zfold_intervalsÚhistogram_intervalsZ	histogramr"   r]   r   rý   r#   rü   )
r  r)   ÚbÚsÚwÚhÚnnZbbÚuuÚc2r   r   r   Útest_histogramI  s    

2r  zii,rr))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   g      ø?r   c              	   C   s(   t dƒ� ttj| Ž |ƒ W 5 Q R X d S )Nr  )r   r   r   r  )ÚiiZrrr   r   r   Útest_histogram_intervals_known_  s    
r  zN,m,pr{   zTest too slow)Zmarksi,  rP   )r   r
   rP   )r   r
   rP   c              	      s¦   ddl m} tdƒ�ˆ t ‡ fdd„t|ƒD ƒ¡}|dk ¡ sBt‚|dk ¡ sRt‚|||d� d¡}|||d� d	¡}|t	||k ƒ  k r’|k s˜n t‚W 5 Q R X d
S )a'  Check that the false positive probability is right

    In particular, run m trials with N uniformly-distributed photons
    and check that the number of false positives is consistent with
    a binomial distribution. The more trials, the tighter the bounds
    but the longer the runtime.

    r   rú   r  c                    s"   g | ]}t  tj ˆ ¡¡d  ‘qS r  )r   rî   r   r    r   rï   r   r   r   …  s     z)test_uniform_binomial.<locals>.<listcomp>r   )rV   rk   r{   rÔ   N)
r†   rû   r   r   r&   r'   r\   r#   Zppfr   )rì   rC   rk   rû   ZfppsÚlowÚhighr   rï   r   Útest_uniform_binomialo  s    
r  )EÚnumpyr   rn   Znumpy.testingr   r   Zastropyr   rB   Zastropy.statsr   Z"astropy.utils.compat.optional_depsr   r   Zastropy.utils.miscr   r*   r1   r4   r<   r@   rF   ÚmarkZskipifrc   rl   rq   rt   r�   rˆ   r‘   r–   r—   Úfilterwarningsr›   r    r§   r¨   r¬   r°   r±   r¶   Zparametrizer¼   rÃ   rÄ   rÅ   rÈ   rÉ   rÍ   rÏ   rÑ   rÒ   rà   rä   ræ   ré   rë   rð   rõ   rö   rù   r   r  r  r  ÚparamÚskipr  r   r   r   r   Ú<module>   sâ   1"

T

0

	 
ÿ	
	


 

2
>


 ÿ ÿ
 ÿ

ûþ
üþ	