Ë
    qw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      ú_/var/www/html/newmanjeet/manjet/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„ 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                 ó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Úlinearr/   é   ©Úsizeg333333Ó?Ú	nonlinearr   r   gš™™™™™Ù?Úindependenceç      à?)ÚprO   r$   é   z3sim_type must be linear, nonlinear, or independence)Úaxis)rI   ÚuniformrG   rO   r   ÚarrayÚcosÚpiÚsinÚstandard_normalÚbinomialr   Úconcatenate)r   ÚsampsÚdimsÚsim_typerI   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))rL   gÜ@%]ï?ç�Ü£'^P?)rP   gä¤—.Ã?rh   )rQ   goØz_ù=p¿g‚ÃnLìÝ?c                 óÚ   — t         j                  j                  d«      }| j                  dd||¬«      \  }}t	        j
                  |||¬«      \  }}}	t        ||«       t        ||«       y )Nì   	=gL r   rM   ©r^   r_   r`   rI   ©Úrandom_state©r   rG   rH   rg   r	   r   r   ©
r   r`   Úobs_statÚ
obs_pvaluerI   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   )rL   g´íºxO¶È?rh   )rP   g	“ÔW‘„?gÌ3m�¿Ë?c                 óÚ   — t         j                  j                  d«      }| j                  dd||¬«      \  }}t	        j
                  |||¬«      \  }}}	t        ||«       t        ||«       y )Nrj   r   r   rk   rl   rn   ro   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   rR   )r   r   rN   )éP   r   rl   g      ð?rM   ©Úsignificantçü©ñÒMbP?T)Ú
is_twosamprm   )rI   r\   r[   r	   r   r   ©r   r   r   rr   rs   rt   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   rM   rL   ©r^   r_   r`   rT   )Úworkersrm   ç
×£p=
ï?rz   r|   )rg   r	   r   rI   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   rM   rL   r�   rl   rƒ   rz   r|   )rg   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   rM   rP   r�   Ú	euclidean)Úmetric)r,   rm   gw¾Ÿ/ÝÄ?rz   r|   )rg   r   r	   r   r   )r   r   r   ÚdistxÚdistyÚ	stat_distÚpvalue_distrt   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   rM   rL   r�   rl   gœî£'^P?)rg   r	   r   r   )r   r   r   rt   rs   s        r   Útest_pvalue_literaturez"TestMGCStat.test_pvalue_literatureÈ   sE   € ð × Ñ  s°¸XÐ ÓF‰ˆˆ1ô ×1Ñ1°!°QÀQÔG‰ˆˆ6�1Ü˜ Õ'r   c                 ó¢   — | j                  ddd¬«      \  }}t        j                  ||d¬«      }t        |j                  |j
                  «       y )Nr   rM   rL   r�   rl   )rg   r	   r   r   rr   Ú	statistic)r   r   r   Úress       r   Ú
test_aliaszTestMGCStat.test_aliasÒ   sE   € ð × Ñ  s°¸XÐ ÓF‰ˆˆ1ä×(Ñ(¨¨A¸AÔ>ˆÜ�S—X‘X˜sŸ}™}Õ-r   )r   rM   Ú N)r<   r=   r>   r?   rJ   rg   r@   rA   ÚxslowrB   ru   rw   r   r„   r†   rŽ   Ú	fail_slowÚslowr�   r”   rC   r   r   rE   rE   F   sa  „ ñò5ó!ðF ‡[�[×ÑØ‡[�[×ÑÐ=ò @ó ñ,óó ð,ð ‡[�[×ÑØ‡[�[×ÑÐ=ð 	3Ø5ð	@ó ñ,óó ð,ð ‡[�[×Ññ:ó ð:ð& ‡[�[×Ññ:ó ð:ð ‡[�[×Ññ:ó ð:ð ‡[�[×Ññ
?ó ð
?ð ‡[�[×Ñ˜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R.ò R.r   