
    e!hR                        d dl mZ d dl mZ d dlZd dlZd dlmZ ddl	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZ d dlmZ g dg d	fZe ej<                  e
      dggz  ZddhZddiZ d Z!ejD                  jG                  d e!             d        Z$ejD                  jG                  de      d        Z%ejD                  jG                  de      d        Z&ejD                  jG                  de      d        Z'ejD                  jG                  de      d        Z(d Z)d Z*d Z+d Z,d Z-d  Z.ejD                  jG                  d!g d"      ejD                  jG                  d#e      d$               Z/ejD                  jG                  d#e      d%        Z0d& Z1ejD                  jG                  d' e1             d(        Z2d) Z3ejD                  jG                  d*e      d+        Z4ejD                  jk                  d,      d-        Z6d. Z7y)/    N)assert_allclose)stats   )check_normalizationcheck_momentcheck_mean_expectcheck_var_expectcheck_skew_expectcheck_kurt_expectcheck_entropycheck_private_entropycheck_edge_supportcheck_named_argscheck_random_state_propertycheck_picklingcheck_rvs_broadcastcheck_freezing)distdiscreteinvdistdiscrete)rv_discrete_frozen)r            )皙?皙?g333333?g?values zipfian
nhypergeomnbinom   c               #      K   t               } t        D ][  \  }}|t        v r4t        j                  |||t        j
                  j                         n	|||| vf | j                  |       ] y w)N)marks)setr   distslowpytestparammarkslowadd)seendistnameargs      m/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/scipy/stats/tests/test_discrete_basic.pycases_test_discrete_basicr0      se     5D% #x,,xhfkk>N>NOOC!555s   A0A2zdistname,arg,first_casec                    	 t        t        |       }t        j                  j                  d        |j                  |ddi}t        j                  |      } |j                  | \  }}t        |||| dz          t        |||        t        |||| dz          t        ||       d}t        ||||| dz          |rd	}	|j                  |j                  |j                  |j                   |j"                  g}
d
dddd}|j%                  | d      }t'        ||||	|
       | dk7  rt)        |       t+        ||       | dvrt-        ||       t/        ||       t1        |||        |j2                  j4                  t        j6                  j4                  k7  rt9        ||t        j6                         y y y # t        $ r | }d} Y w xY w)Nsample distributioniP sizei  z cdf_ppfz oth{Gz?z
 chisquare)r      r   r      )randint	hypergeom	bernoullinchypergeom_walleniusr   >   poisson_binom)getattrr   	TypeErrornprandomseedrvsuniquecheck_cdf_ppfcheck_pmf_cdf	check_othr   check_discrete_chisquarepmflogpmfcdflogcdflogsfgetr   check_scale_docstringr   r   r   r   	__class___entropyrv_discreter   )r-   r.   
first_casedistfnrA   suppmvalphalocscale_defaultsmethsspec_kks                r/   test_discrete_basicr[   &   s   )) IINN7
&**
%$
%C99S>D6<<DAq&#tX
%:;&#x(fc4F!23vs#EVS#u%46  V]]FJJ  aa+,.JJx#C):EB,,!&)#FC0,,63'vs# 	fc8,$$(9(9(B(BB!&#u/@/@A C' #  )()s   F2 2GGzdistname,argc           	         	 t        t        |       } |j                  |ddi\  }}}}t        |||        t	        |||||        t        ||||        t        |||||        t        ||||||        t        j                  j                         5 }| dv r|j                  t               t        ||||||        d d d        t        |||d       t        |||||z  z   d       y # t        $ r | }d} Y w xY w# 1 sw Y   ?xY w)Nr2   momentsmvsk)zipf
betanbinomr   r   )r<   r   r=   r   r   r   r	   r
   r>   testingsuppress_warningsfilterRuntimeWarningr   check_moment_frozen)r-   r.   rR   rT   rU   srZ   sups           r/   test_momentsrh   R   s   )) s3F3JAq!QX. aH-fc1h/VS!Q1fc1aH5		%	%	' :3--JJ~&&#q!Q9: Q*QqsUA.%  )(): :s   C% *C8%C54C58Dzdist,shape_argsc           
         | dv }	 t        t        |       }t        j                  d      }|j                  }g }g }| dk(  rEt        j                  dd      }||f}d	}t        || |||t        j                  t              g       y t        |      D ]P  }	|	d
z   fd|	dz   z  z   }
||	   }|j                  t        j                  |
|             |j                  d|
d          R |j                  |       |j                  |j                         t        || |||t        j                  t              g       y # t        $ r# | }d| j                  d| j                  d} Y Mw xY w)N)	betabinomr`   skellam	yulesimondlaplacenchypergeom_fisherr:   r;   zrv_discrete(values=(z, z))r   r;   )r   r   
         ?)r   r   r   )r   r   r   )r<   r   r=   xkpkr>   zerosnumargsfullr   dtypeintrangeappendinsertr3   )dist
shape_args
shape_onlydistfunclocnargsallargsbshapeprZ   shp	param_vals               r/   test_rvs_broadcastr   k   sf     D DJA5$' ((1+CEGFGGJ$c(HdG"J#	A 5\ !1uhq1u%qM	rwwsI./aQ 	!
 NN3
MM#(( $bhhsm_7  A%dgg[477+R@As   D8 8(E$#E$z	dist,argsc           
         	 t        t        |       }t        j                  j                  d       t        j                  j                  dd      dt        j                  j                  dd      g} |j                  | \  }}|D ]M  }t        j                  |dz
  |z   ||z   g |j                  dg|d|i |j                  d	g|d|ig       O y # t        $ r | }Y w xY w)
NM r   r   ro           r         ?)r<   r   r=   r>   r?   r@   r7   supportnptassert_array_equalppf)r{   argsrR   re_locs_a_br   s          r/   test_ppf_with_locr      s    % IINN7yy  b)1bii.?.?2.FGGV^^T"FB T#Xr#vVZZ,d,,jfjj.Mt.M.MN	  s   C C%$C%z
dist, argsc                 Z   	 t        t        |       }t        j                  j                  d       t        j                  j                  dd      dt        j                  j                  dd      g} |j                  | \  }}|D ]Q  }||z   |dz
  |z   f} |j                  dg|d|i |j                  d	g|d|if}t        j                  ||       S t        j                  j                  ddd
      t        j                  d
      t        j                  j                  ddd
      g} |j                  | \  }}|D ]Q  }||z   |dz
  |z   f} |j                  dg|d|i |j                  d	g|d|if}t        j                  ||       S y # t        $ r | }Y w xY w)Nr   r   r   r   r   ro   r   r   r   )   r   r3   )r<   r   r=   r>   r?   r@   r7   r   isfr   r   rs   )	r{   r   rR   r   r   r   r   expectedress	            r/   test_isf_with_locr      s   % IINN7yy  b)1bii.?.?2.FGGV^^T"FB .8R!Vc\)fjj,d,,jfjj.Ld.L.LLx-.
 yy  bv 6xxyy  BV 46G V^^T"FB .8R!Vc\)fjj,d,,jfjj.Ld.L.LLx-.  s   F F*)F*c                 Z    | j                   |g| }t        j                  | j                  d      }||t	        j
                  |      z  z
  }t        j                   | j                  |g| ||dz          t        j                   | j                   | j                   |g| dz
  g| ||dz          t        | d      sg | j                  | \  }}|||k     }	t        j                   | j                   | j                   |	g| dz   g| |	| j                  z   |dz          y y )N   z
-roundtrip:0yE>rq   z ppf-cdf-next)rI   roundtrip_cdf_ppf_exceptionsrL   namer>   spacingr   r   r   hasattrr   inc)
rR   r.   rS   msgcdf_suppn_ulps	cdf_supp0r   r   supp1s
             r/   rC   rC      s/    vzz$%%H *--fkk2>F6"**X"666I:6::i6#6|!35 :6::jfjj&<&<t&CJcJ|!35 64 %BTBYzvzz*&**U*AS*AD*HO3O$vzz133H	J !    c           	      ,   t        | d      r| j                  }n7t         | j                  dg| dz
        }t	        t        ||dz               } | j                  |g| } | j                  |g| j                         }d\  }}|dk(  rd\  }}t        j                  ||d   z
  ||d   z
  ||	       t        j                  |      }	|	d d
 t        j                  |	      dz  z   }
t        j                   | j                  |
g| d       d} | |d|i}t        j                  |j                  |	dd  |z         t        j                  |j                  |	|z                      t        j                  |j                  |
|z         d       y )Nrq   r4   r   ro   )绽|=r   rk   )h㈵>r   r   atolrtolr   r   rp   r   )r   rq   rw   r   listrx   rI   rG   cumsumr   r   r>   asarraydiffassert_equal)rR   r.   r-   indexstartindcdfspmfs_cumr   r   rZ   	k_shiftedr   r{   s                r/   rD   rD      sv   vt		zvzz$--12U8X]346::e"c"Dvzz%&#&--/HJD$9
dtAw8A;(>!. 	

5A#2A%IZVZZ	0C0!4 CC c D12-rwwtxxC7H/IJTXXi#o.2r   c                 Z    t        j                   | | j                  |      |dd       y )Nr   r   )r   r   moment)rR   r.   rT   rZ   s       r/   re   re      s(    ++A."0r   c                     t        j                   | j                  |g| d | j                  |g| z
  dd       t	        j
                  ddd      }t        j                   | j                  |g|  | j                  d|z
  g| dd        | j                  dg| }t        j                   | j                  |dz
  g| dkD         t        j                   | j                  |dz   g| dkD         y )	Nr   r   r   r4   Gz?   rp   r   )	r   r   sfrI   r>   linspacer   r   assert_)rR   r.   rS   r   q	median_sfs         r/   rE   rE      s    			$--rJFJJt4Jc4J/J"0 	D$#A


1+s+ZVZZQ-E-E"0 

3%%IKK			)a-.#.45KK


9q=/3/#56r   c                 &   d} | j                   | \  }}t        t        |d            }t        t        |d            dz   }	t	        ||	      }
d}|g}g }|
D ]R  } | j
                  |g| }||z
  |dz
  k\  s"|j                  |       |j                  ||z
         |}|d|z
  kD  sR n |d   |k  r%|j                  |       |j                  d|z
         t        j                  |      }t        j                  |      }|dz   }||d<   t        j                  ||      \  }}t        j                  t        j                  |      t        |      |z        \  }}t        j                  ||kD  d	| d
t        |       dt        |              y)as  Perform chisquare test for random sample of a discrete distribution

    Parameters
    ----------
    distname : string
        name of distribution function
    arg : sequence
        parameters of distribution
    alpha : float
        significance level, threshold for p-value

    Returns
    -------
    result : bool
        0 if test passes, 1 if test fails

    g?ii  r   r   g+=r   r   zchisquare - test for z
 at arg = z with pval = N)r   rw   maxminrx   rI   ry   r>   array	histogramr   	chisquarelenr   r   str)rR   r.   rA   rV   r   wsuppr   r   lohighdistsupportlastdistsuppdistmassiicurrenthistsuppfreqhsuppchispvals                        r/   rF   rF     s   $ E V^^S!FB	SU^	Bs2t}!DD/KDtHH &**R&#&T>UU]*OOBOOGdN+D!e)$ |bD!xx!Hxx!H $HHQK ,,sH-KD%$S(1BCJD$KKu
uJs3xjc$i[Qr   c                 `    | j                   "t        j                  d| j                   v       y y )Nscale)__doc__r   r   )rR   s    r/   rM   rM   G  s&    ~~!G6>>12 "r   method)rG   rH   rI   rJ   r   rK   r   r   zdistname, argsc           	      <   	 t        t        |      }t        ||       }| dv rddg}nddg}|D cg c]  }|gdz  
 }}ddg} ||g|d|i}	t        j                  |	t        |g|| D 
cg c]  }
 ||
 	 c}
dd	       y # t        $ r Y y w xY wc c}w c c}
w )
N)r   r   r   r   r   r   r   r   V瞯<)r   r   )r<   r   r=   r   r   zip)r   r-   r   r{   dist_methodzr   p2r   resultrU   s              r/   test_methods_with_listsr   M  s    uh' $'K#JF	A1#a%	B	a&C)R)S)F25a2B"2Bc2BCQaC"0   
 Ds   B B.B
	BBc                     t        t        |       }t        j                  dd      } |j                  |g| }t        j
                  }t        j                  ||       y )Nr   )r<   r   r>   arangerI   nanr   r   )r-   r   r{   xvalsr   s         r/   test_cdf_gh13280_regressionr   d  sN     5(#D
		"bA488ADvvHT8$r   c               #     K   dhdhd} t               }t        D ]  \  }}||v r|j                  |       	 t        t        |      }|j                         }t        |      D ]I  \  }}|j                  | j                  |t                     v s|j                  s9||j                  |f K  y # t
        $ r Y w xY ww)Nn)r!   r`   )r%   r   r+   r<   r   r=   _shape_info	enumerater   rL   integrality)integrality_exceptionsr,   r-   shapesr{   
shape_infoishapes           r/   "cases_test_discrete_integer_shapesr   n  s      *-cUC5D( /&t	5(+D %%'
!*- 	/HAu

48835II))EJJ..	//  		s)   4C B1A*C 1	B=:C <B==C zdistname, shapename, shapesc                    t        t        |       }|j                         }|D cg c]  }|j                   }}|j	                  |      }t        |      }||   }	|	dz
  }
|	dz
  }|	g|
g|gg||<    |j                  | \  }}t        j                  t        j                  ||d            } |j                  |g| }t        j                  t        j                  |dd d f               rJ t        j                  t        j                  |dd d f               sJ t        j                  t        j                  |dd d f               rJ y c c}w )Nrp   r   r   r   r   )r<   r   r   r   r   r   r   r>   roundr   rG   anyisnanall)r-   	shapenamer   r{   r   r   shape_namesr   shapes_copyvalid_shapeinvalid_shapenew_valid_shapeabr   rG   s                   r/   test_integer_shapesr    s6    5(#D!!#J+56%5::6K6)$Av,K)K#%M!AoO"mm_6GHKN4<< DAq
Q1%&A
$((1
#{
#Cvvbhhs1a4y)***66"((3q!t9%&&&vvbhhs1a4y)****! 7s   Ec                     d} t        j                  t        |       5  t        j                  dd      j
                   d d d        t        j                  t        |       5  t        j                  dd      j                   d d d        dt        j                  _        t        j                  dd      }t        |t              sJ t        t        j                  d       y # 1 sw Y   xY w# 1 sw Y   mxY w)Nz,'rv_discrete_frozen' object has no attribute)matchro   rp   herringpdf)
r'   raisesAttributeErrorr   binomr
  logpdf
isinstancer   delattr)messagefrozen_binoms     r/   test_frozen_attributesr    s     =G	~W	5 !B  !	~W	5 $B##$EKKO;;r3'Ll$6777EKK! !$ $s   !C#"!C/#C,/C8zdistname, shapesc                 ~   t        | t              rt        t        |       }n| } |j                  | \  }}t        j                   |j                  ddgg| |dz
  |f       t        j                   |j                  ddgg| |dz
  |f       t        j                   |j                  dg| |dz
  |f       y )Nr   r   )
r  r   r<   r   r   r   r   r   r   interval)r-   r   r{   r  r  s        r/   test_intervalr    s     (C uh'4<< DAqXTXXq!f.v.1a9XTXXq!f.v.1a9]T]]1.v.1a9r   zSensible to machine precisionc            	         t         j                  j                  d      } t        j                  | j                  d      dz        }| j                  d      }|t        j                  |      z  }t        j                  ||f      t        j                  dg|d d j                         z         |z   dz  }t        j                  |dd  j                         |d   dz   gz         |z   dz  }t        j                  |      }t        j                  dg|d d j                         z         |z   dz  }t        j                  |dd  j                         dgz         |z   dz  }j                         \  }}	t        ||d          t        |	|d          t        j                  |      |       t        j                  |      d       t        j                  |      d       t        j                  d	      5  t        j                  |      t        j                  |             t        j                  |      t         j                           t        j                  |      t         j                           d d d        t        j#                  |      |       t        j#                  |      |       t        j#                  |      dg|d d j                         z          t        j                  d	      5  t        j%                  |      t        j                  j#                  |            d
       t        j%                  |      t        j                  j#                  |            d
       t        j%                  |      t        j                  j#                  |            d
       d d d        t        j'                  |      dj#                  |      z
         t        j'                  |      dj#                  |      z
         t        j'                  |      dj#                  |      z
         t        j                  d	      5  t        j)                  |      t        j                  j'                  |            d
       t        j)                  |      t        j                  j'                  |            d
       t        j)                  |      t        j                  j'                  |            d
       d d d        t        j+                  |      |       t        j+                  |      |       t        j+                  |      d d |dd         t        j+                  d      |dz
         t        j+                  d      |	       j'                  |      }
t        j-                  |
      |       t        j-                  d|z
        j+                  |             t        j-                  d|z
        j+                  |             t        j-                  d      |	       t        j-                  d      |dz
         t        j.                  ddd      }j+                  |dz        j-                  |dz        f}t        j1                  d|z
        |       t        j1                  d      j3                                t        j1                  d      |dz
  |	f       j+                  d      }t        j3                         |       t        j                  ||z        }t        j                  ||z
  dz  |z        }t        j                  ||z
  dz  |z        |dz  z  }t        j                  ||z
  dz  |z        |dz  z  dz
  }t        j5                         |       t        j7                         t        j8                  |             t        j;                         |       t        j                  d      ||||f       t        j                  |dz  |z        }t        j=                  d      |       t        j?                  d       d       t        j?                         |       t        j?                  d       |       t        j                  d	      5  t        j?                  fd       jA                                d d d        t         j                  j                  d      } jC                  d|       }t         j                  j                  d      } j+                  | j                  d            }t        ||       y # 1 sw Y   $xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nl   KU[ ro   r   r   r   r   r   ignore)divider   )r   r4   r   rp   r   g      ?r   r^   )r]   c                      y)Nr   r   r   s    r/   <lambda>z test_rv_sample.<locals>.<lambda>%  s    r   c                     | dz  S )Nr   r   r  s    r/   r  z test_rv_sample.<locals>.<lambda>'  s
    !Q$ r   c                 &    j                  |       S )N)rH   )r   r{   s    r/   r  z test_rv_sample.<locals>.<lambda>+  s    t{{1~ r   d   )r3   random_stater   )"r>   r?   default_rngsortsumr   rP   r   tolistr   r   r   rG   errstaterH   loginfrI   rJ   r   rK   r   r   r   r  medianmeanstdsqrtvarr   expectentropyrA   )rngrq   rr   xk_leftxk_rightcdf2	cdf2_left
cdf2_rightr  r  sf2psint2med2mean2var2skew2kurt2mom3rA   rvs0r{   s                        @r/   test_rv_sampler?    sc   
 ))


,C	B"$	%B	BB"&&*BRH-D xxb"gnn../"4a7GABBrF1H:56;Q>H 99R=D1#Sb	 0 0 223d:A=I((48??,s23d:A=J <<>DAqAr!uAr"v DHHRL"%DHHX&*DHHW%q) 
H	% 7B4H-w7G,rvvg67 DHHRL$'DHHX&-DHHW%s49+;+;+='=>	H	% $B)="	$H-rvvdhhx6H/I"	$G,bffTXXg5F.G"	$$ DGGBK488B<0DGGH%q();';<DGGG$a(9&9:	H	% $

2twwr{(;"	$

8,bffTWWX5F.G"	$

7+RVVDGGG4D-E"	$$ DHHTNB'DHHY',DHHZ("-r!"v6DHHQKQ'DHHQK# ''"+CDHHSM2&DHHQy[)488I+>?DHHQz\*DHHZ,@ADHHQK#DHHQKQ' 
T4	$B88BqD>488BqD>)DDMM!B$'.DMM!$dkkm4DMM!$qsAh/ 88C=DDKKM4( FF2b5ME662:/B&'DFFBJ?R'(4#;6EFFBJ?R'(472Q6EDIIK'DHHJ.DHHJ%DJJvJ.eU0KL 662q5B,DDKKND) DKK,a0DKKM5)DKK/6 
H	% P%=>>OP ))


,C
((#(
.C
))


,C88CJJCJ()DCk7 7$ $$ $lP Ps3   <Bf!B>f.&B>f;,.g!f+.f8;ggc                       G d dt         j                        }  | dt        d            }|j                  d      }t	        |d       y )	Nc                       e Zd Zd Zy)-test__pmf_float_input.<locals>.rv_exponentialc                     ddd|z
  z  z  S )NgUUUUUU?r   r   r   )selfr   s     r/   _pmfz2test__pmf_float_input.<locals>.rv_exponential._pmf9  s    QU##r   N)__name__
__module____qualname__rE  r   r   r/   rv_exponentialrB  8  s    	$r   rI  r   r'  )r  r  *   )r   r   )r   rP   floatrA   r   )rI  rvrA   s      r/   test__pmf_float_inputrM  4  s@    $** $ 
#u	.B
&&b&
!CCr   )8numpy.testingra   r   r   numpyr>   r'   scipyr   common_testsr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   scipy.stats._distr_paramsr   r   !scipy.stats._distn_infrastructurer   r   rP   r&   r   r0   r)   parametrizer[   rh   r   r   r   rC   rD   re   rE   rF   rM   r   r   r   r  r  r  xfail_on_32bitr?  rM  r   r   r/   <module>rV     sR    )   , , , , D @*+ #%##40"56 6 |$ !)"~  24M4OP(B Q(BV 6/ 7/0 *L9- :-` l3 4  |4. 5.0J4360
76r3  $A B)<80 9B0( )?;% <%/4 6;=?+?+,  +\:: ;: ;<s =sj
r   