§
    µ³Ùg  ã                   ó†   — d dl Z d dl mZmZ d dlZd dlmZm	Z	m
Z
 d dlmZ d dlmZ  G d„ d¦  «        Z G d„ d	¦  «        ZdS )
é    N)ÚraisesÚwarns)Úassert_approx_equalÚassert_allcloseÚassert_equal)Úcdist)Ústatsc                   óˆ   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Ze	j
                             ddd	g¦  «        d
„ ¦   «         Zd„ Zd„ ZdS )ÚTestMGCErrorWarningsz1 Tests errors and warnings derived from MGC.
    c                 ó¾   — t          j        d¦  «        }dgdz  }t          t          t          j        ||¦  «         t          t          t          j        ||¦  «         d S )Né   é   ©ÚnpÚarangeÚassert_raisesÚ
ValueErrorr	   Úmultiscale_graphcorr©ÚselfÚxÚys      úP/granary/edev/quantum/lib/python3.11/site-packages/scipy/stats/tests/test_mgc.pyÚtest_error_notndarrayz*TestMGCErrorWarnings.test_error_notndarray   sN   € åŒI�b‰MŒMˆØˆC�"‰HˆÝ•j¥%Ô"<¸aÀÑCÔCÐCÝ•j¥%Ô"<¸aÀÑCÔCÐCÐCÐCó    c                 óÄ   — t          j        d¦  «                             dd¦  «        }|                     dd¦  «        }t          t          t
          j        ||¦  «         d S )Néd   é   é   é
   )r   r   Úreshaper   r   r	   r   r   s      r   Útest_error_shapez%TestMGCErrorWarnings.test_error_shape   sO   € åŒI�c‰NŒN×"Ò" 2 qÑ)Ô)ˆØ�IŠI�b˜"ÑÔˆÝ•j¥%Ô"<¸aÀÑCÔCÐCÐCÐCr   c                 ó˜   — t          j        d¦  «        }t          j        d¦  «        }t          t          t          j        ||¦  «         d S )Né   r   r   s      r   Útest_error_lowsamplesz*TestMGCErrorWarnings.test_error_lowsamples   s9   € åŒI�a‰LŒLˆÝŒI�a‰LŒLˆÝ•j¥%Ô"<¸aÀÑCÔCÐCÐCÐCr   c                 ó  — t          j        dt          ¬¦  «        }t           j        |d<   t	          t
          t          j        ||¦  «         t          j        d¦  «        }t	          t
          t          j        ||¦  «         d S )Nr   )Údtyper   )r   r   ÚfloatÚnanr   r   r	   r   r   s      r   Útest_error_nansz$TestMGCErrorWarnings.test_error_nans    sb   € åŒI�b¥Ð&Ñ&Ô&ˆÝŒvˆˆ!‰Ý•j¥%Ô"<¸aÀÑCÔCÐCåŒI�b‰MŒMˆÝ•j¥%Ô"<¸aÀÑCÔCÐCÐCÐCr   c                 óx   — t          j        d¦  «        }d}t          t          t          j        |||¬¦  «         d S )Nr   r   )Úcompute_distancer   )r   r   r,   s      r   Útest_error_wrongdisttypez-TestMGCErrorWarnings.test_error_wrongdisttype)   sD   € åŒI�b‰MŒMˆØÐÝ•j¥%Ô"<¸aÀØ'7ð	9ñ 	9ô 	9ð 	9ð 	9ð 	9r   ÚrepséÿÿÿÿÚ1c                 ót   — t          j        d¦  «        }t          t          t          j        |||¬¦  «         d S )Nr   ©r.   r   )r   r.   r   s      r   Útest_error_repsz$TestMGCErrorWarnings.test_error_reps0   s3   € õ ŒI�b‰MŒMˆÝ•j¥%Ô"<¸aÀÈÐNÑNÔNÐNÐNÐNr   c                 óx   — t          j        d¦  «        }d}t          t          t          j        |||¬¦  «         d S )Nr   r   r2   )r   r   Úassert_warnsÚRuntimeWarningr	   r   )r   r   r.   s      r   Útest_warns_repsz$TestMGCErrorWarnings.test_warns_reps9   s6   € åŒI�b‰MŒMˆØˆÝ•^¥UÔ%?ÀÀAÈDÐQÑQÔQÐQÐQÐQr   c                 ó²   — t          j        d¦  «        }t          j        d¦  «        t           j        z  }t	          t
          t          j        ||¦  «         d S )Nr   )r   r   ÚonesÚinfr   r   r	   r   r   s      r   Útest_error_inftyz%TestMGCErrorWarnings.test_error_infty?   s@   € åŒI�b‰MŒMˆÝŒG�B‰KŒK�"œ&Ñ ˆÝ•j¥%Ô"<¸aÀÑCÔCÐCÐCÐCr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r"   r%   r*   r-   ÚpytestÚmarkÚparametrizer3   r7   r;   © r   r   r   r   
   sÛ   € € € € € ðð ðDð Dð DðDð Dð DðDð Dð DðDð Dð Dð9ð 9ð 9ð „[×Ò˜VØ
Øð&ñ ô ðOð Oñ	ô ðOð
Rð Rð RðDð Dð Dð Dð Dr   r   c                   ó6  — e Zd ZdZdd„Zej        j        ej                             dg d¢¦  «        d„ ¦   «         ¦   «         Z	ej        j        ej                             dd	d
g¦  «        d„ ¦   «         ¦   «         Z
ej        j        d„ ¦   «         Zej        j        d„ ¦   «         Zej        j        d„ ¦   «         Zej        j        d„ ¦   «         Zej                             d¦  «        ej        j        d„ ¦   «         ¦   «         Zej        j        d„ ¦   «         ZdS )ÚTestMGCStatz) Test validity of MGC test statistic
    r   é   Ú c                 ó*  — |dk    rSt           j                             dd|df¬¦  «        }|dt           j                             |j        df¬¦  «        z  z   }�nr|dk    rªt          j        t           j                             dd|df¬¦  «        ¦  «        }|t          j        t           j        |z  ¦  «        z  }|t          j        t           j        |z  ¦  «        z  d	t           j                             |j        df¬¦  «        z  z   }nÂ|d
k    r­t           j         	                    dd|df¬¦  «        }t           j         	                    dd|df¬¦  «        }t           j         
                    dd|df¬¦  «        }	t           j         
                    dd|df¬¦  «        }
|dz  d|	z  z   dz
  }|dz  d|
z  z   dz
  }nt          d¦  «        ‚|dk    r?t           j         	                    dd||dz
  f¬¦  «        }t          j        ||fd¬¦  «        }||fS )NÚlinearr/   rF   ©Úsizeg333333Ó?Ú	nonlinearr   r   gš™™™™™Ù?Úindependenceç      à?)ÚprK   r$   é   z3sim_type must be linear, nonlinear, or independence)Úaxis)r   ÚrandomÚuniformÚrandom_samplerK   ÚarrayÚcosÚpiÚsinÚnormalÚbinomialr   Úconcatenate)r   ÚsampsÚdimsÚsim_typer   r   ÚunifÚuÚvÚu_2Úv_2Ú
dims_noises               r   Ú_simulationszTestMGCStat._simulationsI   s  € à�xÒÐÝ”	×!Ò! " a¨u°a¨jÐ!Ñ9Ô9ˆAØ�C�"œ)×1Ò1¸¼À°{Ð1ÑCÔCÑCÑCˆA‰Að ˜Ò$Ð$Ý”8�BœI×-Ò-¨a°¸%À¸Ð-ÑDÔDÑEÔEˆDØ•r”v�bœe d™lÑ+Ô+Ñ+ˆAØ�œ�rœu t™|Ñ,Ô,Ñ,Ø•R”Y×,Ò,°1´6¸1°+Ð,Ñ>Ô>Ñ>ñ?ˆAˆAð ˜Ò'Ð'Ý”	× Ò   A¨U°A¨JÐ Ñ7Ô7ˆAÝ”	× Ò   A¨U°A¨JÐ Ñ7Ô7ˆAÝ”)×$Ò$ Q¨#°U¸A°JÐ$Ñ?Ô?ˆCÝ”)×$Ò$ Q¨#°U¸A°JÐ$Ñ?Ô?ˆCØ�!‘�a˜‘e‘˜a‘ˆAØ�!‘�a˜‘e‘˜a‘ˆAˆAõ ð ,ñ -ô -ð -ð �!Š8ˆ8Ýœ×)Ò)¨!¨Q°e¸TÀ!¹V°_Ð)ÑEÔEˆJÝ”  :˜°QÐ7Ñ7Ô7ˆAà�!ˆtˆr   zsim_type, obs_stat, obs_pvalue))rI   ç
×£p=
ï?çü©ñÒMbP?)rL   çw¾Ÿ/ÝÄ?rg   )rM   gUÁ¨¤N@ƒ¿gö(\�Âõè?c                 óô   — t           j                             d¦  «         |                      dd|¬¦  «        \  }}t	          j        ||¦  «        \  }}}t          ||d¬¦  «         t          ||d¬¦  «         d S )NéNa¼ r   rF   ©r\   r]   r^   ©Úsignificant©r   rR   Úseedre   r	   r   r   ©	r   r^   Úobs_statÚ
obs_pvaluer   r   ÚstatÚpvalueÚ_s	            r   Ú	test_onedzTestMGCStat.test_onedk   s‚   € õ 	Œ	�Š�xÑ Ô Ð ð × Ò  s°¸XÐ ÑFÔF‰ˆˆ1õ  Ô4°Q¸Ñ:Ô:‰ˆˆf�aÝ˜D (¸Ð:Ñ:Ô:Ð:Ý˜F J¸AÐ>Ñ>Ô>Ð>Ð>Ð>r   )rI   gZd;ßO�Ç?rg   )rL   gÛù~j¼t“?gÁÊ¡E¶ó½?c                 óô   — t           j                             d¦  «         |                      dd|¬¦  «        \  }}t	          j        ||¦  «        \  }}}t          ||d¬¦  «         t          ||d¬¦  «         d S )Nrj   r   r   rk   rF   rl   rn   rp   s	            r   Ú
test_fivedzTestMGCStat.test_fived|   s‚   € õ 	Œ	�Š�xÑ Ô Ð ð × Ò  s°¸XÐ ÑFÔF‰ˆˆ1õ  Ô4°Q¸Ñ:Ô:‰ˆˆf�aÝ˜D (¸Ð:Ñ:Ô:Ð:Ý˜F J¸AÐ>Ñ>Ô>Ð>Ð>Ð>r   c                 ó  — t           j                             d¦  «         t           j                             ddd¬¦  «        }t           j                             ddd¬¦  «        }t          j        ||¦  «        \  }}}t          |d	d¬
¦  «         t          |dd¬
¦  «         t           j                             ddd¬¦  «        }t          j        ||d¬¦  «        \  }}}t          |d	d¬
¦  «         t          |dd¬
¦  «         d S )Nrj   r   rN   )r   r   rJ   r   rF   )éP   r   g      ð?rl   rg   T)Ú
is_twosamp)r   rR   ro   rZ   rY   r	   r   r   ©r   r   r   rs   rt   ru   s         r   Útest_twosampzTestMGCStat.test_twosampŒ   s  € å
Œ	�Š�xÑ Ô Ð õ ŒI×Ò˜s C¨hÐÑ7Ô7ˆÝŒI×Ò˜Q ¨ÐÑ0Ô0ˆõ  Ô4°Q¸Ñ:Ô:‰ˆˆf�aÝ˜D #°1Ð5Ñ5Ô5Ð5Ý˜F E°qÐ9Ñ9Ô9Ð9õ ŒI×Ò˜Q ¨ÐÑ1Ô1ˆõ  Ô4°Q¸ÀdÐKÑKÔK‰ˆˆf�aÝ˜D #°1Ð5Ñ5Ô5Ð5Ý˜F E°qÐ9Ñ9Ô9Ð9Ð9Ð9r   c                 óø   — t           j                             d¦  «         |                      ddd¬¦  «        \  }}t	          j        ||d¬¦  «        \  }}}t          |dd¬	¦  «         t          |d
d¬	¦  «         d S )Nrj   r   rF   rI   rk   rP   )Úworkersrf   rl   rg   rn   r|   s         r   Útest_workerszTestMGCStat.test_workers¡   s…   € å
Œ	�Š�xÑ Ô Ð ð × Ò  s°¸XÐ ÑFÔF‰ˆˆ1õ  Ô4°Q¸À1ÐEÑEÔE‰ˆˆf�aÝ˜D $°AÐ6Ñ6Ô6Ð6Ý˜F E°qÐ9Ñ9Ô9Ð9Ð9Ð9r   c                 óº   — |                       ddd¬¦  «        \  }}t          j        ||d¬¦  «        \  }}}t          |dd¬¦  «         t          |dd¬¦  «         d S )	Nr   rF   rI   rk   ©Úrandom_staterf   rl   rg   )re   r	   r   r   r|   s         r   Útest_random_statezTestMGCStat.test_random_state­   sq   € ð × Ò  s°¸XÐ ÑFÔF‰ˆˆ1õ  Ô4°Q¸ÈÐJÑJÔJ‰ˆˆf�aÝ˜D $°AÐ6Ñ6Ô6Ð6Ý˜F E°qÐ9Ñ9Ô9Ð9Ð9Ð9r   c                 óB  — t           j                             d¦  «         |                      ddd¬¦  «        \  }}t	          ||d¬¦  «        }t	          ||d¬¦  «        }t          j        ||d d¬¦  «        \  }}}t          |d	d¬
¦  «         t          |dd¬
¦  «         d S )Nrj   r   rF   rL   rk   Ú	euclidean)Úmetric)r,   rƒ   rh   rl   rg   )r   rR   ro   re   r   r	   r   r   )r   r   r   ÚdistxÚdistyÚ	stat_distÚpvalue_distru   s           r   Útest_dist_permzTestMGCStat.test_dist_perm·   s¹   € å
Œ	�Š�xÑ Ô Ð à× Ò  s°¸[Ð ÑIÔI‰ˆˆ1Ý�a˜ ;Ð/Ñ/Ô/ˆÝ�a˜ ;Ð/Ñ/Ô/ˆå$)Ô$>¸uÀeØPTØLMð%Oñ %Oô %OÑ!ˆ	�; õ 	˜I u¸!Ð<Ñ<Ô<Ð<Ý˜K¨¸AÐ>Ñ>Ô>Ð>Ð>Ð>r   r   c                 óÐ   — t           j                             d¦  «         |                      ddd¬¦  «        \  }}t	          j        ||d¬¦  «        \  }}}t          |d¦  «         d S )Nrj   r   rF   rI   rk   r‚   gœî£'^P?)r   rR   ro   re   r	   r   r   )r   r   r   ru   rt   s        r   Útest_pvalue_literaturez"TestMGCStat.test_pvalue_literatureÅ   sm   € õ 	Œ	�Š�xÑ Ô Ð ð × Ò  s°¸XÐ ÑFÔF‰ˆˆ1õ Ô1°!°QÀQÐGÑGÔG‰ˆˆ6�1Ý˜ Ñ'Ô'Ð'Ð'Ð'r   c                 óÜ   — t           j                             d¦  «         |                      ddd¬¦  «        \  }}t	          j        ||d¬¦  «        }t          |j        |j        ¦  «         d S )Nrj   r   rF   rI   rk   r‚   )	r   rR   ro   re   r	   r   r   rs   Ú	statistic)r   r   r   Úress       r   Ú
test_aliaszTestMGCStat.test_aliasÑ   sg   € å
Œ	�Š�xÑ Ô Ð ð × Ò  s°¸XÐ ÑFÔF‰ˆˆ1åÔ(¨¨A¸AÐ>Ñ>Ô>ˆÝ�S”X˜sœ}Ñ-Ô-Ð-Ð-Ð-r   N)r   rF   rG   )r<   r=   r>   r?   re   r@   rA   ÚxslowrB   rv   rx   r}   r€   r„   rŒ   Ú	fail_slowÚslowrŽ   r’   rC   r   r   rE   rE   F   s¸  € € € € € ðð ð ð  ð  ð  ðD „[ÔØ„[×ÒÐ=ð @ð @ð @ñ ô ð
	?ð 	?ñô ñ Ôð	?ð „[ÔØ„[×ÒÐ=Ø!Ø$ð@ñ ô ð	?ð 	?ñ	ô ñ Ôð
	?ð „[Ôð:ð :ñ Ôð:ð( „[Ôð	:ð 	:ñ Ôð	:ð „[Ôð:ð :ñ Ôð:ð „[Ôð?ð ?ñ Ôð?ð „[×Ò˜2ÑÔØ„[Ôð(ð (ñ Ôñ Ôð(ð „[Ôð.ð .ñ Ôð.ð .ð .r   rE   )r@   r   r   r   r5   Únumpyr   Únumpy.testingr   r   r   Úscipy.spatial.distancer   Úscipyr	   r   rE   rC   r   r   ú<module>rš      sá   ðØ €€€Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aà Ð Ð Ð Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ Là (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð ð9Dð 9Dð 9Dð 9Dð 9Dñ 9Dô 9Dð 9DðxS.ð S.ð S.ð S.ð S.ñ S.ô S.ð S.ð S.ð S.r   