a
    Qe1                     @   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
g dg dgdd Z	ejdg ddd Z
ejdddgejdddg d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d)S )*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   meansfisfinitecdf)self
parametersZrresultr   resultZor_rtolZci_rtolciZcorr   totalZngoodZnsampleZ	nchg_meanalphar   r    r&   U/var/www/sunrise/env/lib/python3.9/site-packages/scipy/stats/tests/test_odds_ratio.pytest_results_from_r   sd    

	









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case)gffffff?r   g?;?gI@)g?r   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greaterr   c                 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$  r1   r2   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_cir3   r1   r5   	bad_table{   Zfoo)r*         c                 C   s>   t jtdd t||d W d    n1 s00    Y  d S )NzInvalid shapematchr2   pytestraises
ValueErrorr   )r    r3   r:   r&   r&   r'   test_invalid_table_shapex   s    z&TestOddsRatio.test_invalid_table_shapec                 C   sF   t jtdd$ tddgddgg W d    n1 s80    Y  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   sF   t jtdd$ tddgddgg W d    n1 s80    Y  d S )Nzmust be nonnegativer>   r   r      r@   rE   r&   r&   r'   test_negative_table_values   s    z(TestOddsRatio.test_negative_table_valuesc                 C   sJ   t jtdd( tddgddggdd W d    n1 s<0    Y  d S )	Nz`kind` must ber>   r*   r.         Zmagnetoreluctancer2   r@   rE   r&   r&   r'   test_invalid_kind   s    zTestOddsRatio.test_invalid_kindc                 C   sR   t ddgddgg}tjtdd |jdd W d    n1 sD0    Y  d S )	Nr)   r*   r       z`alternative` must ber>   Zdeplenerationr6   r   rA   rB   rC   r   )r    r"   r&   r&   r'   test_invalid_alternative   s    z&TestOddsRatio.test_invalid_alternativelevelg      g      ?c                 C   sR   t ddgddgg}tjtdd |j|d W d    n1 sD0    Y  d S )Nr)   r*   r   rM   zmust be between 0 and 1r>   )r   rN   )r    rP   r"   r&   r&   r'   test_invalid_confidence_level   s    z+TestOddsRatio.test_invalid_confidence_levelN)__name__
__module____qualname__rA   markZparametrizer	   r(   r,   r4   r9   rD   rF   rI   rL   rO   rQ   r&   r&   r&   r'   r
   	   s4   
>


r
   )rA   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   