U
    Hvf1                     @   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rt|
||d	 }n.|tjkrt|
||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rt|j
r t|	d |
|||j
}t||dd n6|j	d	kr t|	d d
 |
|||j	}t||dd d S )N.-i  gMb@?g{Gz?g?g?Zrtolr   r   )r   r   gvIh%<=	two-sidedr   gdy=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%   E/tmp/pip-unpacked-wheel-96ln3f52/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?;?gI@g?g'*?gUN{Ji@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   conditionalgh㈵>)Zatolr   gMb`?)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@   Z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   