Ë
    ÏÍ:jÒ"  ã                   ó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      úo/home/mcse/projects/srt_converter/srt-converter-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   r3   )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Úparametrizer4   r8   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„ 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d„ Zej                  j                  d„ «       Zy)ÚTestMGCStatz) Test validity of MGC test statistic
    c                 óL   — t         j                  j                  d«      | _        y )NiâúxK)r   ÚrandomÚdefault_rngÚrng)r   s    r   Úsetup_methodzTestMGCStat.setup_methodI   s   € Ü—9‘9×(Ñ(¨Ó4ˆ�r   Nc                 óê  — |xs | j                   }|dk(  r<|j                  dd|df¬«      }|d|j                  |j                  df¬«      z  z   }�n`|dk(  r²t	        j
                  | j                   j                  dd|df¬«      «      }|t	        j                  t        j                  |z  «      z  }|t	        j                  t        j                  |z  «      z  d	| j                   j                  |j                  df¬«      z  z   }n©|d
k(  r™| j                   j                  |df¬«      }| j                   j                  |df¬«      }	| j                   j                  dd|df¬«      }
| 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:| j                   j                  ||dz
  f¬«      }t	        j                  ||fd¬«      }||fS )NÚlinearr0   é   ©Úsizeg333333Ó?Ú	nonlinearr   r   gš™™™™™Ù?Úindependenceç      à?)ÚprP   r$   é   z3sim_type must be linear, nonlinear, or independence)Úaxis)rJ   ÚuniformrH   rP   r   ÚarrayÚcosÚpiÚsinÚstandard_normalÚbinomialr   Úconcatenate)r   ÚsampsÚdimsÚsim_typerJ   r   r   ÚunifÚuÚvÚu_2Úv_2Ú
dims_noises                r   Ú_simulationszTestMGCStat._simulationsL   sÞ  € ØŠo�T—X‘Xˆà�xÒØ—‘˜B ¨°¨
�Ó3ˆAØ�C˜#Ÿ*™*¨1¯6©6°1¨+˜*Ó6Ñ6Ñ6ŠAð ˜Ò$Ü—8‘8˜DŸH™H×,Ñ,¨Q°¸À¸
Ð,ÓCÓDˆDØ”r—v‘vœbŸe™e d™lÓ+Ñ+ˆAØœŸ™œrŸu™u t™|Ó,Ñ,Ø�T—X‘X—_‘_¨1¯6©6°1¨+�_Ó6Ñ6ñ7‰Að ˜Ò'Ø—‘×(Ñ(¨u°a¨jÐ(Ó9ˆAØ—‘×(Ñ(¨u°a¨jÐ(Ó9ˆAØ—(‘(×#Ñ# A¨°E¸1°:Ð#Ó>ˆCØ—(‘(×#Ñ# A¨°E¸1°:Ð#Ó>ˆCØ�!‘�a˜‘e‘˜a‘ˆAØ�!‘�a˜‘e‘˜a‘‰Aô ð ,ó -ð -ð �!Š8ØŸ™×1Ñ1¸¸tÀA¹v°Ð1ÓGˆJÜ—‘  :˜°QÔ7ˆAà�!ˆtˆr   zsim_type, obs_stat, obs_pvalue))rM   gÜ@%]ï?ç�Ü£'^P?)rQ   gä¤—.Ã?ri   )rR   goØz_ù=p¿g‚ÃnLìÝ?c                 óÚ   — t         j                  j                  d«      }| j                  dd||¬«      \  }}t	        j
                  |||¬«      \  }}}	t        ||«       t        ||«       y )Nì   	=gL r   rN   ©r_   r`   ra   rJ   ©Úrandom_state©r   rH   rI   rh   r	   r   r   ©
r   ra   Úobs_statÚ
obs_pvaluerJ   r   r   ÚstatÚpvalueÚ_s
             r   Ú	test_onedzTestMGCStat.test_onedo   se   € ô �i‰i×#Ñ# JÓ/ˆØ× Ñ  s°¸XÈ3Ð ÓO‰ˆˆ1ô  ×4Ñ4°Q¸ÈÔL‰ˆˆf�aÜ˜˜hÔ'Ü˜ 
Õ+r   )rM   g´íºxO¶È?ri   )rQ   g	“ÔW‘„?gÌ3m�¿Ë?c                 óÚ   — t         j                  j                  d«      }| j                  dd||¬«      \  }}t	        j
                  |||¬«      \  }}}	t        ||«       t        ||«       y )Nrk   r   r   rl   rm   ro   rp   s
             r   Ú
test_fivedzTestMGCStat.test_fived�   se   € ô �i‰i×#Ñ# JÓ/ˆØ× Ñ  s°¸XÈ3Ð ÓO‰ˆˆ1ô  ×4Ñ4°Q¸ÈÔL‰ˆˆf�aÜ˜˜hÔ'Ü˜ 
Õ+r   c                 óº  — | j                   j                  ddd¬«      }| j                   j                  d¬«      }t        j                  ||| j                   ¬«      \  }}}t        |dd¬	«       t        |d
d¬	«       | j                   j                  d¬«      }t        j                  ||d| j                   ¬«      \  }}}t        |dd¬	«       t        |d
d¬	«       y )Nr   rS   )r   r   rO   )éP   r   rm   ç      ð?rN   ©Úsignificantçü©ñÒMbP?T)Ú
is_twosamprn   )rJ   r]   r\   r	   r   r   ©r   r   r   rs   rt   ru   s         r   Útest_twosampzTestMGCStat.test_twosamp’   sÅ   € ð �H‰H×Ñ˜c 3¨XÐÓ6ˆØ�H‰H×$Ñ$¨'Ð$Ó2ˆô  ×4Ñ4°Q¸ÈÏÉÔQ‰ˆˆf�aÜ˜D #°1Õ5Ü˜F E°qÕ9ð �H‰H×$Ñ$¨(Ð$Ó3ˆô  ×4Ñ4°Q¸ÀdØBFÇ(Á(ôL‰ˆˆf�aä˜D #°1Õ5Ü˜F E°qÖ9r   c                 ó¸   — | j                  ddd¬«      \  }}t        j                  ||d| j                  ¬«      \  }}}t	        |dd¬«       t	        |d	d¬«       y )
Nr   rN   rM   ©r_   r`   ra   rU   )Úworkersrn   ç
×£p=
ï?r|   r~   )rh   r	   r   rJ   r   r€   s         r   Útest_workerszTestMGCStat.test_workers¦   s]   € ð × Ñ  s°¸XÐ ÓF‰ˆˆ1ô  ×4Ñ4°Q¸À1ØBFÇ(Á(ôL‰ˆˆ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   rN   rM   rƒ   rm   r…   r|   r~   )rh   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                 óÜ   — | j                  ddd¬«      \  }}t        ||d¬«      }t        ||d¬«      }t        j                  ||d d¬«      \  }}}t	        |dd¬	«       t	        |d
d¬	«       y )Nr   rN   rQ   rƒ   Ú	euclidean)Úmetric)r-   rn   gw¾Ÿ/ÝÄ?r|   r~   )rh   r   r	   r   r   )r   r   r   ÚdistxÚdistyÚ	stat_distÚpvalue_distru   s           r   Útest_dist_permzTestMGCStat.test_dist_perm»   sw   € ð × Ñ  s°¸[Ð ÓI‰ˆˆ1Ü�a˜ ;Ô/ˆÜ�a˜ ;Ô/ˆä$)×$>Ñ$>¸uÀeØPTØLMô%OÑ!ˆ	�; ô 	˜I u¸!Õ<Ü˜K¨¸AÖ>r   r   c                 ó‚   — | j                  ddd¬«      \  }}t        j                  ||d¬«      \  }}}t        |d«       y )Nr   rN   rM   rƒ   rm   gœî£'^P?)rh   r	   r   r   )r   r   r   ru   rt   s        r   Útest_pvalue_literaturez"TestMGCStat.test_pvalue_literatureÈ   sE   € ð × Ñ  s°¸XÐ ÓF‰ˆˆ1ô ×1Ñ1°!°QÀQÔG‰ˆˆ6�1Ü˜ Õ'r   c                 ó   — d}t        j                  |«      j                  dd«      }t        ||«      }t        j                  ||f«      }t        j                  ||d ¬«      }t        |j                  d«       t        |j                  d«       y )Né   r0   rN   r,   g        r{   )
r   r   r!   r   Úzerosr	   r   r   Ú	statisticrt   )r   Únr   rŒ   r�   Úress         r   Ú%test_zero_distance_matrix_index_errorz1TestMGCStat.test_zero_distance_matrix_index_errorÒ   sv   € ð ˆÜ�I‰I�a‹L× Ñ   QÓ'ˆô �a˜“ˆô —‘˜!˜Q˜Ó ˆô ×(Ñ(¨°ÈÔMˆÜ˜Ÿ™ sÔ+Ü˜Ÿ
™
 CÕ(r   c                 ó¢   — | j                  ddd¬«      \  }}t        j                  ||d¬«      }t        |j                  |j
                  «       y )Nr   rN   rM   rƒ   rm   )rh   r	   r   r   rs   r–   )r   r   r   r˜   s       r   Ú
test_aliaszTestMGCStat.test_aliasã   sE   € ð × Ñ  s°¸XÐ ÓF‰ˆˆ1ä×(Ñ(¨¨A¸AÔ>ˆÜ�S—X‘X˜sŸ}™}Õ-r   )r   rN   Ú N)r=   r>   r?   r@   rK   rh   rA   rB   ÚxslowrC   rv   rx   r�   r†   rˆ   r�   Ú	fail_slowÚslowr’   r™   r›   rD   r   r   rF   rF   F   sf  „ ñò5ó!ðF ‡[�[×ÑØ‡[�[×ÑÐ=ò @ó ñ,óó ð,ð ‡[�[×ÑØ‡[�[×ÑÐ=ð 	3Ø5ð	@ó ñ,óó ð,ð ‡[�[×Ññ:ó ð:ð& ‡[�[×Ññ:ó ð:ð ‡[�[×Ññ:ó ð:ð ‡[�[×Ññ
?ó ð
?ð ‡[�[×Ñ˜2ÓØ‡[�[×Ññ(ó ó ð(ò)ð" ‡[�[×Ññ.ó ñ.r   rF   )rA   r   r   r   r6   Únumpyr   Únumpy.testingr   r   r   Úscipy.spatial.distancer   Úscipyr	   r   rF   rD   r   r   ú<module>r¤      s3   ðÛ ß Aã ß LÑ Lå (Ý ÷9Dñ 9D÷xc.ò c.r   