Ë
    âQ(h  ã                   óx   — 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y)
é    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                  j                  ddd	g«      d
„ «       Zd„ Zd„ Zy)ÚTestMGCErrorWarningsz1 Tests errors and warnings derived from MGC.
    c                 óº   — t        j                  d«      }dgdz  }t        t        t        j
                  ||«       t        t        t        j
                  ||«       y )Né   é   ©ÚnpÚarangeÚassert_raisesÚ
ValueErrorr	   Úmultiscale_graphcorr©ÚselfÚxÚys      úX/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/stats/tests/test_mgc.pyÚtest_error_notndarrayz*TestMGCErrorWarnings.test_error_notndarray   sB   € ä�I‰I�b‹MˆØˆC�"‰HˆÜ”j¤%×"<Ñ"<¸aÀÔCÜ”j¤%×"<Ñ"<¸aÀÕCó    c                 ó²   — t        j                  d«      j                  dd«      }|j                  dd«      }t        t        t
        j                  ||«       y )Néd   é   é   é
   )r   r   Úreshaper   r   r	   r   r   s      r   Útest_error_shapez%TestMGCErrorWarnings.test_error_shape   s@   € ä�I‰I�c‹N×"Ñ" 2 qÓ)ˆØ�I‰I�b˜"ÓˆÜ”j¤%×"<Ñ"<¸aÀÕCr   c                 ó˜   — t        j                  d«      }t        j                  d«      }t        t        t        j
                  ||«       y )Né   r   r   s      r   Útest_error_lowsamplesz*TestMGCErrorWarnings.test_error_lowsamples   s0   € ä�I‰I�a‹LˆÜ�I‰I�a‹LˆÜ”j¤%×"<Ñ"<¸aÀÕCr   c                 ó
  — t        j                  dt        ¬«      }t         j                  |d<   t	        t
        t        j                  ||«       t        j                  d«      }t	        t
        t        j                  ||«       y )Nr   )Údtyper   )r   r   ÚfloatÚnanr   r   r	   r   r   s      r   Útest_error_nansz$TestMGCErrorWarnings.test_error_nans    sT   € ä�I‰I�b¤Ô&ˆÜ�v‰vˆˆ!‰Ü”j¤%×"<Ñ"<¸aÀÔCä�I‰I�b‹MˆÜ”j¤%×"<Ñ"<¸aÀÕCr   c                 óv   — t        j                  d«      }d}t        t        t        j
                  |||¬«       y )Nr   r   )Úcompute_distancer   )r   r   r,   s      r   Útest_error_wrongdisttypez-TestMGCErrorWarnings.test_error_wrongdisttype)   s.   € ä�I‰I�b‹MˆØÐÜ”j¤%×"<Ñ"<¸aÀØ'7ö	9r   ÚrepséÿÿÿÿÚ1c                 ór   — t        j                  d«      }t        t        t        j
                  |||¬«       y )Nr   ©r.   r   )r   r.   r   s      r   Útest_error_repsz$TestMGCErrorWarnings.test_error_reps0   s'   € ô �I‰I�b‹MˆÜ”j¤%×"<Ñ"<¸aÀÈÖNr   c                 óv   — t        j                  d«      }d}t        t        t        j
                  |||¬«       y )Nr   r   r2   )r   r   Úassert_warnsÚRuntimeWarningr	   r   )r   r   r.   s      r   Útest_warns_repsz$TestMGCErrorWarnings.test_warns_reps9   s*   € ä�I‰I�b‹MˆØˆÜ”^¤U×%?Ñ%?ÀÀAÈDÖQr   c                 óº   — t        j                  d«      }t        j                  d«      t         j                  z  }t	        t
        t        j                  ||«       y )Nr   )r   r   ÚonesÚinfr   r   r	   r   r   s      r   Útest_error_inftyz%TestMGCErrorWarnings.test_error_infty?   s9   € ä�I‰I�b‹MˆÜ�G‰G�B‹Kœ"Ÿ&™&Ñ ˆÜ”j¤%×"<Ñ"<¸aÀÕCr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r"   r%   r*   r-   ÚpytestÚmarkÚparametrizer3   r7   r;   © r   r   r   r   
   sb   „ ñòDòDòDòDò9ð ‡[�[×Ñ˜VØ
Øð&ó ñOó	ðOò
RóDr   r   c                   ó˜  — e Zd ZdZdd„Zej                  j                  ej                  j                  dg d¢«      d„ «       «       Z	ej                  j                  ej                  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                  j                  d«      ej                  j                   d„ «       «       Zej                  j                  d„ «       Zy)ÚTestMGCStatz) Test validity of MGC test statistic
    c                 óF  — |dk(  rXt         j                  j                  dd|df¬«      }|dt         j                  j                  |j                  df¬«      z  z   }�n||dk(  rºt        j
                  t         j                  j                  dd|df¬«      «      }|t        j                  t         j                  |z  «      z  }|t        j                  t         j                  |z  «      z  d	t         j                  j                  |j                  df¬«      z  z   }n½|d
k(  r­t         j                  j                  dd|df¬«      }t         j                  j                  dd|df¬«      }t         j                  j                  dd|df¬«      }	t         j                  j                  dd|df¬«      }
|dz  d|	z  z   dz
  }|dz  d|
z  z   dz
  }nt        d«      ‚|dkD  r@t         j                  j                  dd||dz
  f¬«      }t        j                  ||fd¬«      }||fS )NÚlinearr/   é   ©Úsizeg333333Ó?Ú	nonlinearr   r   gš™™™™™Ù?Úindependenceç      à?)ÚprJ   r$   é   z3sim_type must be linear, nonlinear, or independence)Úaxis)r   ÚrandomÚuniformÚrandom_samplerJ   Ú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ˆAØ�Cœ"Ÿ)™)×1Ñ1¸¿¹À°{Ð1ÓCÑCÑCŠAð ˜Ò$Ü—8‘8œBŸI™I×-Ñ-¨a°¸%À¸Ð-ÓDÓEˆDØ”r—v‘vœbŸe™e d™lÓ+Ñ+ˆAØœŸ™œrŸu™u t™|Ó,Ñ,Ø”R—Y‘Y×,Ñ,°1·6±6¸1°+Ð,Ó>Ñ>ñ?‰Að ˜Ò'Ü—	‘	× Ñ   A¨U°A¨JÐ Ó7ˆAÜ—	‘	× Ñ   A¨U°A¨JÐ Ó7ˆAÜ—)‘)×$Ñ$ Q¨#°U¸A°JÐ$Ó?ˆCÜ—)‘)×$Ñ$ Q¨#°U¸A°JÐ$Ó?ˆCØ�!‘�a˜‘e‘˜a‘ˆAØ�!‘�a˜‘e‘˜a‘‰Aô ð ,ó -ð -ð �!Š8ÜŸ™×)Ñ)¨!¨Q°e¸TÀ!¹V°_Ð)ÓEˆJÜ—‘  :˜°QÔ7ˆAà�!ˆtˆr   zsim_type, obs_stat, obs_pvalue))rG   ç
×£p=
ï?çü©ñÒMbP?)rK   çw¾Ÿ/ÝÄ?rf   )rL   gUÁ¨¤N@ƒ¿gö(\�Âõè?c                 óÜ   — t         j                  j                  d«       | j                  dd|¬«      \  }}t	        j
                  ||«      \  }}}t        ||d¬«       t        ||d¬«       y )NéNa¼ r   rH   ©r[   r\   r]   ©Úsignificant©r   rQ   Úseedrd   r	   r   r   ©	r   r]   Úobs_statÚ
obs_pvaluer   r   ÚstatÚpvalueÚ_s	            r   Ú	test_onedzTestMGCStat.test_onedk   sc   € ô 	�	‰	�‰�xÔ ð × Ñ  s°¸XÐ ÓF‰ˆˆ1ô  ×4Ñ4°Q¸Ó:‰ˆˆf�aÜ˜D (¸Õ:Ü˜F J¸AÖ>r   )rG   gZd;ßO�Ç?rf   )rK   gÛù~j¼t“?gÁÊ¡E¶ó½?c                 óÜ   — t         j                  j                  d«       | j                  dd|¬«      \  }}t	        j
                  ||«      \  }}}t        ||d¬«       t        ||d¬«       y )Nri   r   r   rj   rH   rk   rm   ro   s	            r   Ú
test_fivedzTestMGCStat.test_fived|   sc   € ô 	�	‰	�‰�xÔ ð × Ñ  s°¸XÐ ÓF‰ˆˆ1ô  ×4Ñ4°Q¸Ó:‰ˆˆf�aÜ˜D (¸Õ:Ü˜F J¸AÖ>r   c                 óê  — t         j                  j                  d«       t         j                  j                  ddd¬«      }t         j                  j	                  ddd¬«      }t        j                  ||«      \  }}}t        |d	d¬
«       t        |dd¬
«       t         j                  j	                  ddd¬«      }t        j                  ||d¬«      \  }}}t        |d	d¬
«       t        |dd¬
«       y )Nri   r   rM   )r   r   rI   r   rH   )éP   r   g      ð?rk   rf   T)Ú
is_twosamp)r   rQ   rn   rY   rX   r	   r   r   ©r   r   r   rr   rs   rt   s         r   Útest_twosampzTestMGCStat.test_twosampŒ   sÍ   € ä
�	‰	�‰�xÔ ô �I‰I×Ñ˜s C¨hÐÓ7ˆÜ�I‰I×Ñ˜Q ¨ÐÓ0ˆô  ×4Ñ4°Q¸Ó:‰ˆˆf�aÜ˜D #°1Õ5Ü˜F E°qÕ9ô �I‰I×Ñ˜Q ¨ÐÓ1ˆô  ×4Ñ4°Q¸ÀdÔK‰ˆˆf�aÜ˜D #°1Õ5Ü˜F E°qÖ9r   c                 óà   — t         j                  j                  d«       | j                  ddd¬«      \  }}t	        j
                  ||d¬«      \  }}}t        |dd¬	«       t        |d
d¬	«       y )Nri   r   rH   rG   rj   rO   )Úworkersre   rk   rf   rm   r{   s         r   Útest_workerszTestMGCStat.test_workers¡   sc   € ä
�	‰	�‰�xÔ ð × Ñ  s°¸XÐ ÓF‰ˆˆ1ô  ×4Ñ4°Q¸À1ÔE‰ˆˆf�aÜ˜D $°AÕ6Ü˜F E°qÖ9r   c                 ó¢   — | j                  ddd¬«      \  }}t        j                  ||d¬«      \  }}}t        |dd¬«       t        |dd¬«       y )	Nr   rH   rG   rj   ©Úrandom_statere   rk   rf   )rd   r	   r   r   r{   s         r   Útest_random_statezTestMGCStat.test_random_state­   sS   € ð × Ñ  s°¸XÐ ÓF‰ˆˆ1ô  ×4Ñ4°Q¸ÈÔJ‰ˆˆf�aÜ˜D $°AÕ6Ü˜F E°qÖ9r   c                 ó  — t         j                  j                  d«       | j                  ddd¬«      \  }}t	        ||d¬«      }t	        ||d¬«      }t        j                  ||d d¬«      \  }}}t        |d	d¬
«       t        |dd¬
«       y )Nri   r   rH   rK   rj   Ú	euclidean)Úmetric)r,   r‚   rg   rk   rf   )r   rQ   rn   rd   r   r	   r   r   )r   r   r   ÚdistxÚdistyÚ	stat_distÚpvalue_distrt   s           r   Útest_dist_permzTestMGCStat.test_dist_perm·   s…   € ä
�	‰	�‰�xÔ à× Ñ  s°¸[Ð ÓI‰ˆˆ1Ü�a˜ ;Ô/ˆÜ�a˜ ;Ô/ˆä$)×$>Ñ$>¸uÀeØPTØLMô%OÑ!ˆ	�; ô 	˜I u¸!Õ<Ü˜K¨¸AÖ>r   r   c                 óÀ   — t         j                  j                  d«       | j                  ddd¬«      \  }}t	        j
                  ||d¬«      \  }}}t        |d«       y )Nri   r   rH   rG   rj   r�   gœî£'^P?)r   rQ   rn   rd   r	   r   r   )r   r   r   rt   rs   s        r   Útest_pvalue_literaturez"TestMGCStat.test_pvalue_literatureÅ   sW   € ô 	�	‰	�‰�xÔ ð × Ñ  s°¸XÐ ÓF‰ˆˆ1ô ×1Ñ1°!°QÀQÔG‰ˆˆ6�1Ü˜ Õ'r   c                 óà   — t         j                  j                  d«       | j                  ddd¬«      \  }}t	        j
                  ||d¬«      }t        |j                  |j                  «       y )Nri   r   rH   rG   rj   r�   )	r   rQ   rn   rd   r	   r   r   rr   Ú	statistic)r   r   r   Úress       r   Ú
test_aliaszTestMGCStat.test_aliasÑ   sU   € ä
�	‰	�‰�xÔ ð × Ñ  s°¸XÐ ÓF‰ˆˆ1ä×(Ñ(¨¨A¸AÔ>ˆÜ�S—X‘X˜sŸ}™}Õ-r   N)r   rH   Ú )r<   r=   r>   r?   rd   r@   rA   ÚxslowrB   ru   rw   r|   r   rƒ   r‹   Ú	fail_slowÚslowr�   r‘   rC   r   r   rE   rE   F   sZ  „ ñó ð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š      s3   ðÛ ß Aã ß LÑ Lå (Ý ÷9Dñ 9D÷xS.ò S.r   