U
    »mœd1  ã                   @   sZ   d dl Z d dlZd dlmZmZ ddlmZmZ d dl	m
Z
 ddlmZ G dd	„ d	ƒZdS )
é    N)Úassert_equalÚassert_allcloseé   )Únchypergeom_fisherÚ	hypergeom)Ú
odds_ratioé   )Údatac                	   @   s$  e Zd Zej de¡dd„ ƒZej dddgddggddgddggddgddggddgddggg¡dd	„ ƒZej d
ddddgddddgg¡dd„ ƒZ	ej ddddg¡dd„ ƒZ
ej dddg¡ej dddddd gg¡d!d"„ ƒƒZd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zej d+d,d-g¡d.d/„ ƒZd0S )1ÚTestOddsRatiozparameters, rresultc                 C   s  |j  dd¡}t|jƒ}|jdk r,d}d}nd}d}t|j|j|d� | |j|¡}t|j	|j
f|j|d� |j}t |j¡}	|	 ¡ }
|	d	  ¡ }|	d d …d	f  ¡ }|d	krÂt |
||¡d	 }n.|tjkràt |
||¡d
 }nt |
|||¡}t||	d dd� d
|j }|dk�rŠ|j	d	k�rPt |	d d
 |
|||j	¡}t||d dd� t |j
¡�r t |	d |
|||j
¡}t||d dd� nv|dk�rÊt |j
¡�r t |	d |
|||j
¡}t||dd� n6|j	d	k�r t |	d d
 |
|||j	¡}t||dd� d S )NÚ.ú-i�  gü©ñÒMb@?g{®Gáz”?gš™™™™™©?gš™™™™™¹?©Zrtolr   r   )r   r   g‚vIhÂ%<=ú	two-sidedr   g•dyáý¥=Úless)ÚalternativeÚreplacer   ÚtableÚ	statisticr   Zconditional_odds_ratioÚconfidence_intervalÚconfidence_levelÚlowÚhighZconditional_odds_ratio_ciÚnpÚarrayÚsumr   ZsupportÚinfr   ZmeanÚsfÚisfiniteÚcdf)ÚselfÚ
parametersZrresultr   ÚresultZor_rtolZci_rtolÚciZcorr   ÚtotalZngoodZnsampleZ	nchg_meanÚalphar   r   © r%   úZ/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/stats/tests/test_odds_ratio.pyÚtest_results_from_r   s~    

 ÿÿÿ	


   ÿ
   ÿ

   ÿ   ÿz!TestOddsRatio.test_results_from_rr   r   é   é
   c                 C   s:   t |ƒ}t|jtjƒ | ¡ }t|j|jfdtjfƒ d S )Nr   )	r   r   r   r   Únanr   r   r   r   )r   r   r!   r"   r%   r%   r&   Útest_row_or_col_zeroJ   s    z"TestOddsRatio.test_row_or_col_zeroÚcasegffffffî?r   g°áŽÜ?;ß?g±¨ˆÓI@gÍÌÌÌÌÌì?g'*Àâá?gUN{JÎi@c           	      C   sb   |\}}}}ddgddgg}t |dd�}t|jddd	� | ||¡}t|j|jg||gdd	� d S )
Nr)   é   é)   é]   Úsample©Úkindg;:®Fv%ò?g�íµ ÷Æ°>r   )r   r   r   r   r   r   )	r   r,   r   r   Zref_lowZref_highr   r!   r"   r%   r%   r&   Útest_sample_odds_ratio_ciV   s    z'TestOddsRatio.test_sample_odds_ratio_cir   r   Zgreaterc                 C   s\   ddgddgg}t |dd�}t |dd�}t|j|jdd	� t|j|d
�|j|d
�dd	� d S )Niè  iÐ  i  iT$  r0   r1   Úconditionalgñhãˆµøä>)Zatol©r   gü©ñÒMb`?)r   r   r   r   )r   r   r   ÚresÚrefr%   r%   r&   Ú#test_sample_odds_ratio_one_sided_cil   s    
þz1TestOddsRatio.test_sample_odds_ratio_one_sided_cir2   r0   r4   Ú	bad_tableé{   Zfooé   é   c              	   C   s*   t jtdd�� t||d� W 5 Q R X d S )NzInvalid shape©Úmatchr1   ©ÚpytestÚraisesÚ
ValueErrorr   )r   r2   r9   r%   r%   r&   Útest_invalid_table_shapex   s    z&TestOddsRatio.test_invalid_table_shapec              	   C   s2   t jtdd�� tddgddggƒ W 5 Q R X d S )Nzmust be an array of integersr=   g      ð?g333333@g      @gÍÌÌÌÌÌ#@r?   ©r   r%   r%   r&   Útest_invalid_table_type~   s    z%TestOddsRatio.test_invalid_table_typec              	   C   s2   t jtdd�� tddgddggƒ W 5 Q R X d S )Nzmust be nonnegativer=   r   r   é   éüÿÿÿr?   rD   r%   r%   r&   Útest_negative_table_values‚   s    z(TestOddsRatio.test_negative_table_valuesc              	   C   s6   t jtdd�� tddgddggdd� W 5 Q R X d S )	Nz`kind` must ber=   r)   r-   é   é   Zmagnetoreluctancer1   r?   rD   r%   r%   r&   Útest_invalid_kind†   s    zTestOddsRatio.test_invalid_kindc              	   C   s>   t ddgddggƒ}tjtdd�� |jdd� W 5 Q R X d S )	Nr(   r)   r   é    z`alternative` must ber=   Zdeplenerationr5   ©r   r@   rA   rB   r   )r   r!   r%   r%   r&   Útest_invalid_alternativeŠ   s    z&TestOddsRatio.test_invalid_alternativeÚlevelg      à¿g      ø?c              	   C   s>   t ddgddggƒ}tjtdd�� |j|d� W 5 Q R X d S )Nr(   r)   r   rL   zmust be between 0 and 1r=   )r   rM   )r   rO   r!   r%   r%   r&   Útest_invalid_confidence_level�   s    z+TestOddsRatio.test_invalid_confidence_levelN)Ú__name__Ú
__module__Ú__qualname__r@   ÚmarkZparametrizer	   r'   r+   r3   r8   rC   rE   rH   rK   rN   rP   r%   r%   r%   r&   r
   	   s4   
>ü


ÿÿ

r
   )r@   Únumpyr   Znumpy.testingr   r   Z_discrete_distnsr   r   Zscipy.stats._odds_ratior   Z data.fisher_exact_results_from_rr	   r
   r%   r%   r%   r&   Ú<module>   s   