o
    g1                     @   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rat|
||d	 }n|tjkrpt|
||d
 }nt|
|||}t||	d dd d
|j }|dkr|j	d	krt|	d d
 |
|||j	}t||d dd t|j
rt|	d |
|||j
}t||d dd d S d S |dkrt|j
rt|	d |
|||j
}t||dd d S d S |j	d	krt|	d d
 |
|||j	}t||dd d S d S )N.-i  gMb@?g{Gz?g?g?rtolr   r   )r   r   gvIh%<=	two-sidedr   gdy=less)alternativereplacer   table	statisticr   conditional_odds_ratioconfidence_intervalconfidence_levellowhighconditional_odds_ratio_cinparraysumr   supportinfr   meansfisfinitecdf)self
parametersrresultr   resultor_rtolci_rtolcicorr   totalngoodnsample	nchg_meanalphar!   r#    r1   _/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/scipy/stats/tests/test_odds_ratio.pytest_results_from_r   sj   

	








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*   r1   r1   r2   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 )
Nr5      )   ]   samplekindg;:Fv%?gư>r   )r   r   r   r   r   r   )	r$   r8   r   r   ref_lowref_highr   r'   r*   r1   r1   r2   test_sample_odds_ratio_ciV   s   z'TestOddsRatio.test_sample_odds_ratio_cir   )r   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$  r<   r=   conditionalgh㈵>)atolr   gMb`?)r   r   r   r   )r$   r   r   resrefr1   r1   r2   #test_sample_odds_ratio_one_sided_cil   s   

z1TestOddsRatio.test_sample_odds_ratio_one_sided_cir>   r<   rC   	bad_table{   foo)r5         c                 C   s@   t jtdd t||d W d    d S 1 sw   Y  d S )NzInvalid shapematchr=   pytestraises
ValueErrorr   )r$   r>   rI   r1   r1   r2   test_invalid_table_shapex   s   "z&TestOddsRatio.test_invalid_table_shapec                 C   H   t jtdd tddgddgg W d    d S 1 sw   Y  d S )Nzmust be an array of integersrN   g      ?g333333@g      @g#@rP   r$   r1   r1   r2   test_invalid_table_type~      "z%TestOddsRatio.test_invalid_table_typec                 C   rU   )Nzmust be nonnegativerN   r   r      rP   rV   r1   r1   r2   test_negative_table_values   rX   z(TestOddsRatio.test_negative_table_valuesc                 C   sL   t jtdd tddgddggdd W d    d S 1 sw   Y  d S )	Nz`kind` must berN   r5   r9         magnetoreluctancer=   rP   rV   r1   r1   r2   test_invalid_kind   s   "zTestOddsRatio.test_invalid_kindc                 C   sT   t ddgddgg}tjtdd |jdd W d    d S 1 s#w   Y  d S )	Nr4   r5   r       z`alternative` must berN   deplenerationrE   r   rQ   rR   rS   r   )r$   r'   r1   r1   r2   test_invalid_alternative   s   "z&TestOddsRatio.test_invalid_alternativelevelg      g      ?c                 C   sT   t ddgddgg}tjtdd |j|d W d    d S 1 s#w   Y  d S )Nr4   r5   r   r`   zmust be between 0 and 1rN   )r   rb   )r$   rd   r'   r1   r1   r2   test_invalid_confidence_level   s   "z+TestOddsRatio.test_invalid_confidence_levelN)__name__
__module____qualname__rQ   markparametrizer	   r3   r7   rA   rH   rT   rW   r[   r_   rc   re   r1   r1   r1   r2   r
   	   s6    
>


r
   )rQ   numpyr   numpy.testingr   r   _discrete_distnsr   r   scipy.stats._odds_ratior    data.fisher_exact_results_from_rr	   r
   r1   r1   r1   r2   <module>   s    