o
    Ge@                     @   s>  d dl Zd dlZd dlmZ d dlmZmZ d dlm	Z	 ddl
mZ d dlmZ dd	 Zejd
g dejdg ddd Zejd
g ddd Zejd
g dejdg dejdddgdd Zejd
g ddd ZddddZejde dd Zdd d dZejde d!d" Zd#d$d%Zejde d&d' Zejd
d(d)gejdd d*gd+d, Zejd-ejd
g dejdd d*gd.d/ Zd0d1 Zejd2d3d4gd5d6 Z ejd7g d8ejdg dd9d: Z!d;d< Z"ejdg dd=d> Z#dS )?    N)	bootstrap)assert_allcloseassert_equal)stats   )
_bootstrap)rng_integersc                  C   s  d} t jt| d tdtj W d    n1 sw   Y  d} t jt| d tt tj W d    n1 s:w   Y  d} t jt| d tg ddgftj W d    n1 s^w   Y  d} t jt| d tg dg dftjd	d
 W d    n1 sw   Y  d} t jt| d tdtjdd W d    n1 sw   Y  d} t jt| d tg dftjdd W d    n1 sw   Y  d} t jt| d tg dftjdd W d    n1 sw   Y  d} t jt| d tg dftjdd W d    n	1 sw   Y  d} t jt| d tg dftjdd W d    n	1 s8w   Y  d} t jt| d tg dftjdd W d    n	1 s]w   Y  d} t jt| d tg dftjdd W d    n	1 sw   Y  d} t jt| d tg dftjdd W d    n	1 sw   Y  d} dd }t jt| d tg dg df|d d W d    n	1 sw   Y  d!} t jt| d tg dftjd"d# W d    d S 1 sw   Y  d S )$Nz%`data` must be a sequence of samples.)match   z(`data` must contain at least one sample.z>each sample in `data` must contain two or more observations...)r
   r      z=When `paired is True`, all samples must have the same length )r
   r   r      T)pairedz'`vectorized` must be `True` or `False`.ekki)
vectorizedz`axis` must be an integer.g      ?axisz!could not convert string to floatni)confidence_levelz)`n_resamples` must be a positive integer.i)n_resamplesg     D@z+`batch` must be a positive integer or None.batchz`method` must be in)methodz;`method = 'BCa' is only available for one-sample statisticsc                 S   s    t | |}t ||}|| S Nnpmean)xyr   mean1mean2 r    j/var/www/html/SPIRAL.web.tool/spiral_venv/lib/python3.10/site-packages/scipy/stats/tests/test_bootstrap.py	statistic>   s   z$test_bootstrap_iv.<locals>.statistic)皙?g?g333333?BCaz"'herring' cannot be used to seed aherringrandom_state)pytestraises
ValueErrorr   r   r   tuple)messager"   r    r    r!   test_bootstrap_iv
   sr   $r-   r   )basic
percentiler$   r   )r   r
   r   c              	   C   s   t jd t jddd}t|ft jd | d|dd}t|ft jd| d|dd}t|jj|jj t|jj	|jj	 t|j
|j
 d S )Nr   
         d   )r   r   r'   r   r   )r   randomseedrandr   r   r   confidence_intervallowhighstandard_error)r   r   r   res1res2r    r    r!   test_bootstrap_batchK   s   r=   c                    s   t jd d}t j|t j|ddd d fdd	}t t}t|f|dd}tf d	dd
}t|j|j t|j	|j	 d S )Nr   r3   c                 S   s   | | d j |dS )Nr   r   r   )r   r   r   r    r    r!   my_statisticd   s   z+test_bootstrap_paired.<locals>.my_statisticc                    s   |  }|  } ||}|S r   r    )ir   abresr@   r   r   r    r!   my_paired_statisticg   s   
z2test_bootstrap_paired.<locals>.my_paired_statisticr&   T)r   r'   r>   )
r   r4   r5   r6   arangelenr   r   r7   r:   )r   nrF   rA   r;   r<   r    rE   r!   test_bootstrap_paired\   s   
rK   r   TFc              	   C   sR  |s| dkrt jdd tjd ddd}d}|| }tj|}tj|}tj|}t|||f||| ddd	d
}	g d}
||
|< t||
|}t||
|}t||
|}t|||f||| d|d	d
}t	|j
j|	j
j t	|j
j|	j
j t	|j|	j t|}|| t|j
jj| t|j
jj| t|jj| d S )Nr$   z*BCa currently for 1-sample statistics only)reasonr   r>   c                 S   s$   | j |d|j |d |j |d S Nr   r?   )r   r   zr   r    r    r!   r@      s   $z/test_bootstrap_vectorized.<locals>.my_statistic)r0   r1   r2   r3   )r   r   r'   r   r   )r
   r
   r
   rG   )r(   xfailr   r4   r5   r6   r   broadcast_toreshaper   r7   r8   r9   r:   listpopr   shape)r   r   r   r@   rT   	n_samplesr   r   rN   r;   rQ   r<   result_shaper    r    r!   test_bootstrap_vectorizedv   s@   

rW   c                 C   s   t jjddddd}d}t jt|d t|t |d}|j|d	}|	 }t
|ftjd|| dd
}t|j|dd t|j|dd d S )N   r   i  r   )locscalesizer'   gffffff?r
   )dfrY   rZ   )alpha)r   r   r   r'   gMb@?rtolga2U0*3?)atol)r   normrvstrI   r   r   semintervalstdr   r   r7   r:   )r   datar]   distexpected_intervalexpected_serD   r    r    r!   test_bootstrap_against_theory   s   $rk   )gQ7@gHzS@)g\(<@g=
ףpU@)gHz'@@gQV@zmethod, expectedc                 C   s8   t g d}t|ft jd| dd}t|j|dd d S )N)r0   r2         )@rl   g+@            "   2   Q   Y   y         i@B r   )r   r   r'   g{Gzt?r^   )r   arrayr   r   r   r7   )r   expectedr   rD   r    r    r!   test_bootstrap_against_R   s
   rz   i  i  c              	   C   s   t jd d}d}d}tjddd}| }d}|j||fd	}t|ft j||d
| dd}	|	j}
t 	|
d |k ||
d k @ }||ksFJ t
|||j}|dksTJ d S )Nr   r3     ?rX   r
   rY   rZ   i  r[   rr   r>   r"   r   r   r   r   r   r#   r   r4   r5   r   ra   r   rb   r   r7   sum	binomtestpvalue)r   ry   rJ   r   r   rh   	stat_truen_replicationsrg   rD   cici_contains_truer   r    r    r!   #test_bootstrap_against_itself_1samp   s2   r   i|  iz  )r.   r/   c              	   C   s   t jd d}d}d}d}ddd}tjdd	d
}tjdd	d
}| |  }	d}
|j|
|fd}|j|
|fd}t||f|||d| dd}|j}t 	|d |	k |	|d	 k @ }||ks`J t
||
|j}|dksnJ d S )Nr   r3   x   r{   r|   r>   c                 S   s$   t j| |d}t j||d}|| S rM   r   )data1data2r   r   r   r    r    r!   my_stat  s   z4test_bootstrap_against_itself_2samp.<locals>.my_statr
   r}   r#   i  r~   rr   r   rG   r   )r   ry   n1n2r   r   r   dist1dist2r   r   r   r   rD   r   r   r   r    r    r!   #test_bootstrap_against_itself_2samp  s:   
r   r.   r/   r
   c              	      s   dddd  fdd}t jd t jdd}t jdd}t jdd}t|||f d	|d
| dd}t|||f|d|d
| dd}t|j|j t|j|j d S )Nr   r   c                       t  fdd|D S )Nc                 3       | ]}|  V  qd S r   r?   .0sampler   r    r!   	<genexpr>7      zEtest_bootstrap_vectorized_3samp.<locals>.statistic.<locals>.<genexpr>r   r   rg   r    r   r!   r"   5     z2test_bootstrap_vectorized_3samp.<locals>.statisticc                     &   | D ]	}|j dksJ q | ddiS Nr
   r   r   ndimrg   r   r"   r    r!   statistic_1d9     z5test_bootstrap_vectorized_3samp.<locals>.statistic_1dr   rX   Tr3   )r   r   r   r   r'   Fr   r4   r5   r6   r   r   r7   r:   )r   r   r   r   r   rN   r;   r<   r    r   r!   test_bootstrap_vectorized_3samp2  s   r   z'Failure is not concerning; see gh-14107c              
      s   ddd  fdd}t jd t jdd}t|f d|d	d | dd
}t|f|d|d	d| dd
}t|j|j t|j|j d S )Nr   c                 S   s   | j |dS rM   r?   )r   r   r    r    r!   r"   O  s   z2test_bootstrap_vectorized_1samp.<locals>.statisticc                    s   | j dksJ  | ddS )Nr
   r   r   r   )r   r   r    r!   r   S  s   z5test_bootstrap_vectorized_1samp.<locals>.statistic_1dr   rX   Tr3   )r   r   r   r   r   r'   Fr0   )r   r   )r   r   r   r   r;   r<   r    r   r!   test_bootstrap_vectorized_1sampK  s   
r   c                  C   s   d} t jd t jj|  }tt|}t| d D ]}|d|d d f }t j||dd}t 	||s6J qt j
ttj|dddd}t 	||sMJ d S )	Nr   r   rX      r   r>   .r   r   r   )r   r4   r5   r6   nextr   _jackknife_resamplerangedeletearray_equalconcatenaterR   )rT   r   r   rA   slcry   y2r    r    r!   test_jackknife_resampled  s   r   rng_nameRandomStatedefault_rngc                 C   s   t tj| d }|d u rt|  d |d}|d}d}d}tjd tjj| }tj|||d}t	|D ]$}|d|d d f }	t
|d|d |d }
|d|
f }t|	|s[J q7d S )Nz not available.r   r0   r   r&   .r>   )getattrr   r4   r(   skipr5   r6   r   _bootstrap_resampler   r   r   )r   rngrng1rng2r   rT   r   r   rA   r   jsry   r    r    r!   test_bootstrap_resamplew  s    r   score)r   g      ?r
   c                 C   sV   d}t jd t jj| }tj|| dd}dd }||| ddd }t||d d S )	N)r0         r   r>   r   c                 S   s   t tj|| |S r   )r   apply_along_axisr   percentileofscore)rB   r   r   r    r    r!   vectorized_pos  s   z0test_percentile_of_score.<locals>.vectorized_posr3   V瞯<)r   r4   r5   r6   r   _percentile_of_scorer   )r   r   rT   r   pr   p2r    r    r!   test_percentile_of_score  s   r   c                  C   s   d} t jd t jj|  }t jj| d d  d }t||}t| d D ]}|| }t j|| || dd}t||d q&d S )N)r0   r   r   r>   r3   r   r   )	r   r4   r5   r6   r   _percentile_along_axisr   r/   r   )rT   r   qr   rA   rD   ry   r    r    r!   test_percentile_along_axis  s   r   c                    s   dd   fdd}t |}tjd tjddd}tjdd	d}tjd	dd} |||| d
}||||| d
}t|| d S )Nc                    r   )Nc                 3   r   r   r?   r   r   r    r!   r     r   z>test_vectorize_statistic.<locals>.statistic.<locals>.<genexpr>r   r   r    r   r!   r"     r   z+test_vectorize_statistic.<locals>.statisticc                     r   r   r   r   r   r    r!   r     r   z.test_vectorize_statistic.<locals>.statistic_1dr   r   rX   r   r
   r   )r   _vectorize_statisticr   r4   r5   r6   r   )r   r   
statistic2r   r   rN   r;   r<   r    r   r!   test_vectorize_statistic  s   
r   )$numpyr   r(   scipy.statsr   numpy.testingr   r   scipyr    r   scipy._lib._utilr   r-   markparametrizer=   rK   rW   rk   tests_Ritemsrz   tests_against_itself_1sampr   tests_against_itself_2sampr   r   xfail_on_32bitr   r   r   r   r   r   r    r    r    r!   <module>   sp    A
,


%
.

