Ë
    qwj1Ä  ã                   ó  — d dl Zd dlmZmZmZmZ d dlZd dlmZ	 d dl
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d dl)m*Z* d dl+m,Z, d dl-m.Z.m/Z/m0Z0m1Z1 d dl2m3c m4Z5 d dl6m7Z7 d	d
l8m9Z9  G d„ d«      Z:	 d dl;Z; e;jx                  d«       d dl=m>Z? dZ@ej„                  j†                  ZC e/e«       G d„ d«      «       ZD e/e«       G d„ d«      «       ZE e/e«       G d„ d«      «       ZF e/ee«       G d„ d«      «       ZG e/e«       G d„ d«      «       ZH e/e«       G d„ d«      «       ZI e/e«       G d„ d«      «       ZJ e/e«       G d„ d«      «       ZK e/e«       G d „ d!«      «       ZL e/e«       G d"„ d#«      «       ZM G d$„ d%«      ZN e/e e«       G d&„ d'«      «       ZO e/e«       G d(„ d)«      «       ZP e/e«       G d*„ d+«      «       ZQ e/e«       G d,„ d-«      «       ZR e/e«       G d.„ d/«      «       ZS e/e«       G d0„ d1«      «       ZT e/e!«       G d2„ d3«      «       ZUd4„ ZVd5efd6„ZW e/e«      d7„ «       ZX e/e#«      d8„ «       ZY e/e$«      d9„ «       ZZ eCdd:¬;«      d<„ «       Z[y# eA$ r dZ@Y �ŒÕw xY w)=é    N)Úassert_allcloseÚassert_equalÚassert_array_equalÚassert_)Úraises)ÚClusterWarningÚlinkageÚfrom_mlab_linkageÚto_mlab_linkageÚnum_obs_linkageÚinconsistentÚcophenetÚfclusterdataÚfclusterÚis_isomorphicÚsingleÚwardÚleadersÚ
correspondÚis_monotonicÚmaxdistsÚmaxinconstsÚmaxRstatÚis_valid_linkageÚis_valid_imÚto_treeÚleaves_listÚ
dendrogramÚset_link_color_paletteÚcut_treeÚoptimal_leaf_orderingÚ_order_cluster_treeÚ
_hierarchyÚ_EUCLIDEAN_METHODSÚ_LINKAGE_METHODS)ÚHeap)Úpdist)Úeager_warnsÚmake_xp_test_caseÚxp_assert_closeÚxp_assert_equal©ÚLocké   )Úhierarchy_test_datac                   ó   — e Zd ZeZeZy)ÚeagerN)Ú__name__Ú
__module__Ú__qualname__r   r   © ó    úg/var/www/html/newmanjeet/manjet/venv/lib/python3.12/site-packages/scipy/cluster/tests/test_hierarchy.pyr1   r1   9   s   „ ð €KØ'Ñr6   r1   ÚAggTFc                   óˆ  — e Zd Z edd¬«      d„ «       Zd„ Zd„ Zd„ Zd„ Zd	„ Z	d
„ Z
d„ Zej                  j                  ddg d¢g d¢gfdg d¢g d¢gfdg d¢g d¢gfdg d¢g d¢gfdg d¢g d¢gfdg d¢g d¢gfdg d¢g d¢gfg«      d„ «       Zd„ Zej                  j                  de«      d„ «       Zd„ Z edd¬«      d„ «       Zy) ÚTestLinkageú	jax.numpyú$Can't raise inside jax.pure_callback©Úreasonc                 ót   — |j                  |j                  gdgdz  z   «      }t        t        t        |«       y )Nç        é   )ÚasarrayÚnanÚassert_raisesÚ
ValueErrorr	   ©ÚselfÚxpÚys      r7   Ú3test_linkage_non_finite_elements_in_distance_matrixz?TestLinkage.test_linkage_non_finite_elements_in_distance_matrixR   s/   € ð �J‰J˜Ÿ™�x 3 %¨¡'Ñ)Ó*ˆÜ”j¤'¨1Õ-r6   c                 óP   — |j                  d«      }t        t        t        |«       y )N©r   )ÚzerosrD   rE   r	   rF   s      r7   Ú"test_linkage_empty_distance_matrixz.TestLinkage.test_linkage_empty_distance_matrixY   s   € à�H‰H�T‹NˆÜ”j¤'¨1Õ-r6   c                 ó6   — dD ]  }| j                  ||«       Œ y )N)r   ÚcompleteÚaverageÚweighted)Úcheck_linkage_tdist©rG   rH   Úmethods      r7   Útest_linkage_tdistzTestLinkage.test_linkage_tdist^   s   € ÛCˆFØ×$Ñ$ V¨RÕ0ñ Dr6   c                 ó¶   — t        |j                  t        j                  «      |«      }t	        t        d|z   «      }t        ||j                  |«      d¬«       y )NÚlinkage_ytdist_ç»½×Ùß|Û=©Úatol©r	   rB   r/   ÚytdistÚgetattrr*   )rG   rU   rH   ÚZÚ	expectedZs        r7   rS   zTestLinkage.check_linkage_tdistb   sF   € ä�B—J‘JÔ2×9Ñ9Ó:¸FÓCˆÜÔ/Ð1BÀVÑ1KÓLˆ	Ü˜˜2Ÿ:™: iÓ0°uÖ=r6   c                 ó6   — dD ]  }| j                  ||«       Œ y )N)ÚcentroidÚmedianr   )Úcheck_linkage_qrT   s      r7   Útest_linkage_XzTestLinkage.test_linkage_Xh   s   € Û4ˆFØ× Ñ  ¨Õ,ñ 5r6   c                 ó`  — t        |j                  t        j                  «      |«      }t	        t        d|z   «      }t        ||j                  |«      d¬«       |j                  t        j                  «      }t        |d¬«      }t        ||«      }t        ||j                  |«      d¬«       y )NÚ
linkage_X_ç�íµ ÷Æ°>rZ   Ú	euclidean)Úmetric)r	   rB   r/   ÚXr^   r*   r'   )rG   rU   rH   r_   r`   rk   rI   s          r7   rd   zTestLinkage.check_linkage_ql   s‡   € ä�B—J‘JÔ2×4Ñ4Ó5°vÓ>ˆÜÔ/°ÀÑ1FÓGˆ	Ü˜˜2Ÿ:™: iÓ0°uÕ=à�J‰JÔ*×,Ñ,Ó-ˆÜ�!˜KÔ(ˆÜ�A�vÓˆÜ˜˜2Ÿ:™: iÓ0°uÖ=r6   c                 óX  — t         j                  j                  d«      }d}|j                  |d«      }t	        |«      }t        j                  «       D ]U  \  }}t        j                  |||«      }t        |j                  |«      |«      }	t        |	|j                  |«      dd¬«       ŒW y )Nr   é   é   g›+¡†›„=çVçž¯Ò<)Úrtolr[   )ÚnpÚrandomÚRandomStateÚrandr'   r%   Úitemsr#   r	   rB   r*   )
rG   rH   ÚrngÚnrk   ÚdrU   ÚcodeÚ	Z_trivialr_   s
             r7   Útest_compare_with_trivialz%TestLinkage.test_compare_with_trivialw   s‰   € Ü�i‰i×#Ñ# AÓ&ˆØˆØ�H‰H�Q˜‹NˆÜ�!‹Hˆä,×2Ñ2Ö4‰LˆF�DÜ"×*Ñ*¨1¨a°Ó6ˆIÜ˜Ÿ
™
 1› vÓ.ˆAÜ˜A˜rŸz™z¨)Ó4¸5ÀuÖMñ 5r6   c                 ó²   — t        |j                  t        j                  «      d¬«      }t	        t        d«      }t        ||j                  |«      d¬«       y )NT)Úoptimal_orderingÚlinkage_ytdist_single_olorY   rZ   r\   )rG   rH   r_   r`   s       r7   Útest_optimal_leaf_orderingz&TestLinkage.test_optimal_leaf_ordering‚   sA   € Ü�B—J‘JÔ2×9Ñ9Ó:ÈTÔRˆÜÔ/Ð1LÓMˆ	Ü˜˜2Ÿ:™: iÓ0°uÖ=r6   zmethod,expectr   )r   r.   çß'Üež ö?rn   )rn   é   r€   r�   rP   )rn   r�   gß'Üež @r�   rQ   )rn   r�   gçeÌvø @r�   rR   rb   rc   r   )rn   r�   g€©Ž˜@r�   c                 ó¨   — |j                  ddgddgddgg«      }t        ||¬«      }|j                  ||j                  ¬«      }t        ||d¬«       y )Néÿÿÿÿr   r.   ©rU   ©Údtyperh   rZ   )rB   r	   Úfloat64r*   )rG   rU   ÚexpectrH   rk   r_   s         r7   Útest_linkage_tieszTestLinkage.test_linkage_ties‡   sS   € ð" �J‰J˜˜R˜ 1 a &¨1¨a¨&Ð1Ó2ˆÜ�A˜fÔ%ˆØ—‘˜F¨"¯*©*�Ó5ˆÜ˜˜6¨Ö.r6   c                 ó”   — |j                  ddgddgg«      }t        t        |¬«      5  t        |«       d d d «       y # 1 sw Y   y xY w)Nr   r.   ©rH   )rB   r(   r   r	   ©rG   rH   rk   s      r7   Ú<test_unsupported_uncondensed_distance_matrix_linkage_warningzHTestLinkage.test_unsupported_uncondensed_distance_matrix_linkage_warning�   s:   € Ø�J‰J˜˜A˜  A Ð'Ó(ˆÜœ¨BÖ/Ü�AŒJ÷ 0×/Ñ/ús	   ©>¾ArU   c                 óª   — |j                  ddgddgg«      }t        j                  t        «      5  t	        ||d¬«       d d d «       y # 1 sw Y   y xY w)Nr.   Ú	cityblock©rU   rj   ©rB   Úpytestr   rE   r	   )rG   rU   rH   rk   s       r7   Ú"test_euclidean_linkage_value_errorz.TestLinkage.test_euclidean_linkage_value_error¢   sA   € à�J‰J˜˜A˜  A Ð'Ó(ˆÜ�]‰]œ:Õ&Ü�A˜f¨[Õ9÷ '×&Ñ&ús   ±A	Á	Ac                 ó¢   — t        |j                  dg«      dd¬«      }t        |j                  ddgddgg«      dd¬«      }t        ||d¬«       y )Nr.   r   ri   r�   r   ro   ©rp   )r	   rB   r*   )rG   rH   ÚZ1ÚZ2s       r7   Útest_2x2_linkagezTestLinkage.test_2x2_linkage¨   sJ   € Ü�R—Z‘Z  “_¨X¸kÔJˆÜ�R—Z‘Z ! Q ¨!¨Q¨Ð 0Ó1¸(È;ÔWˆÜ˜˜B UÖ+r6   c                 ó    — |j                  g d¢«      }t        j                  t        «      5  t	        |d¬«       d d d «       y # 1 sw Y   y xY w)N)r   r   rƒ   rb   r„   r‘   )rG   rH   Úvaluess      r7   Útest_centroid_neg_distancez&TestLinkage.test_centroid_neg_distance­   s4   € ð —‘šJÓ'ˆÜ�]‰]œ:Õ&ä�F :Õ.÷ '×&Ñ&ús   ­AÁAN)r2   r3   r4   Úskip_xp_backendsrJ   rN   rV   rS   re   rd   r{   r   r’   ÚmarkÚparametrizer‰   r�   r$   r“   r˜   r›   r5   r6   r7   r:   r:   O   s?  „ ñ �kÐ*PÔQñ.ó Rð.ò.ò
1ò>ò-ò	>ò	Nò>ð
 ‡[�[×Ñ˜_Ø	Ò+Ú+ð-ð 	.à	Ò+Ú+ð-ð 	.à	Ò+Ú+ð-ð 	.à	Ò+Ú+ð-ð 	.à	Ò+Ú+ð-ð 	.à	Ò+Ú+ð-ð 	.à	Ò+Ú+ð-ð 	.ð/ó ñ /ó!ð /òð
 ‡[�[×Ñ˜XÐ'9Ó:ñ:ó ;ð:ò
,ñ
 �kÐ*PÔQñ/ó Rñ/r6   r:   c                   ó   — e Zd Zd„ Zd„ Zy)ÚTestInconsistentc                 óR   — t         j                  D ]  }| j                  ||«       Œ y ©N)r/   Úinconsistent_ytdistÚcheck_inconsistent_tdist)rG   rH   Údepths      r7   Útest_inconsistent_tdistz(TestInconsistent.test_inconsistent_tdist¹   s"   € Ü(×<Ô<ˆEØ×)Ñ)¨%°Õ4ñ =r6   c                 ó®   — |j                  t        j                  «      }t        t	        ||«      |j                  t        j
                  |   «      «       y r¢   )rB   r/   Úlinkage_ytdist_singler*   r   r£   )rG   r¥   rH   r_   s       r7   r¤   z)TestInconsistent.check_inconsistent_tdist½   sA   € Ø�J‰JÔ*×@Ñ@ÓAˆÜœ Q¨Ó.ØŸ
™
Ô#6×#JÑ#JÈ5Ñ#QÓRõ	Tr6   N)r2   r3   r4   r¦   r¤   r5   r6   r7   r    r    ¶   s   „ ò5óTr6   r    c                   ó8   — e Zd Zd„ Zd„ Z edd¬«      d„ «       Zy)ÚTestCopheneticDistancec                 óÐ   — |j                  g d¢«      }|j                  t        j                  «      }t        |«      }t	        ||j                  ||j
                  ¬«      d¬«       y )N©é  é'  éÿ   r¯   r®   r®   r­   r­   r®   r®   r®   éŠ   éÛ   r®   r®   r…   rY   rZ   )rB   r/   r¨   r   r*   r‡   )rG   rH   Ú	expectedMr_   ÚMs        r7   Útest_linkage_cophenet_tdist_Zz4TestCopheneticDistance.test_linkage_cophenet_tdist_ZÆ   sP   € à—J‘Jò  9ó :ˆ	à�J‰JÔ*×@Ñ@ÓAˆÜ�Q‹KˆÜ˜˜2Ÿ:™: i°r·z±z˜:ÓBÈÖOr6   c                 óP  — |j                  t        j                  «      }t        ||j                  t        j                  «      «      \  }}|j                  g d¢|j
                  ¬«      }|j                  d|j
                  ¬«      d   }t        ||d¬«       t        ||d¬«       y )Nr¬   r…   g*É»2Qzä?r5   rY   rZ   )rB   r/   r¨   r   r]   r‡   r*   )rG   rH   r_   Úcr³   r²   Ú	expectedcs          r7   Útest_linkage_cophenet_tdist_Z_Yz6TestCopheneticDistance.test_linkage_cophenet_tdist_Z_YÎ   sŒ   € à�J‰JÔ*×@Ñ@ÓAˆÜ˜!˜RŸZ™ZÔ(;×(BÑ(BÓCÓD‰ˆˆAØ—J‘Jò  9Ø@BÇ
Á
ð ó Lˆ	à—J‘JÐ?ÀrÇzÁz�JÓRÐSUÑVˆ	Ü˜˜9¨5Õ1Ü˜˜9¨5Ö1r6   r;   r<   r=   c                 óÞ   — g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d	¢g d
¢g d¢g}t        j                  t        d¬«      5  t        |j	                  |«      «       d d d «       y # 1 sw Y   y xY w)N)r@   ç      ð?rº   ç       @)r»   ç      (@rº   ç      @)r½   ç      @rº   r»   )ç      @g      ,@rº   r½   )ç      @ç      @rº   r»   )ç       @g      0@rº   r½   )ç      "@ç      $@rº   r»   )g      &@g      2@rº   r½   )g      *@ç      .@r»   rÀ   )g      1@g      4@r»   g      @@)g      3@g      5@r»   r¼   zexcessive observations©Úmatch)r’   r   rE   r   rB   )rG   rH   Úarrs      r7   Útest_gh_22183z$TestCopheneticDistance.test_gh_22183Ø   sZ   € ò "Ú"Ú!Ú"Ú!Ú"Ú"Ú#Ú#Ú$Ú$ð
&ˆô �]‰]œ:Ð-EÖFÜ�R—Z‘Z “_Ô%÷ G×FÑFús   ¿A#Á#A,N)r2   r3   r4   r´   r¸   rœ   rÉ   r5   r6   r7   rª   rª   Ã   s*   „ òPò2ñ �kÐ*PÔQñ&ó Rñ&r6   rª   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTestMLabLinkageConversionc                 ó’   — |j                  g |j                  ¬«      }t        t        |«      |«       t        t	        |«      |«       y )Nr…   )rB   r‡   r+   r
   r   rŒ   s      r7   Ú"test_mlab_linkage_conversion_emptyz<TestMLabLinkageConversion.test_mlab_linkage_conversion_emptyð   s7   € à�J‰J�r §¡ˆJÓ,ˆÜÔ)¨!Ó,¨aÔ0Üœ¨Ó*¨AÕ.r6   c                 ó  — |j                  g d¢g«      }|j                  g d¢g«      }t        t        |«      |j                  ||j                  ¬«      d¬«       t        t	        |«      |j                  ||j                  ¬«      d¬«       y )N)r@   rº   r½   r»   ©r.   rn   r�   r…   ro   r•   )rB   r*   r
   r‡   r   )rG   rH   r_   ÚZms       r7   Ú'test_mlab_linkage_conversion_single_rowzATestMLabLinkageConversion.test_mlab_linkage_conversion_single_rowö   so   € à�J‰JÒ(Ð)Ó*ˆØ�Z‰Zš˜Ó$ˆÜÔ)¨"Ó-¨r¯z©z¸!À2Ç:Á:¨zÓ/NØ"õ	$äœ¨Ó*¨B¯J©J°rÀÇÁ¨JÓ,LØ"ö	$r6   c                 ó.  — |j                  g d¢g d¢g d¢g d¢g d¢g«      }|j                  g d¢g d¢g d¢g d	¢g d
¢g|j                  ¬«      }t        t        |«      |d¬«       t        t	        |«      |j                  ||j                  ¬«      d¬«       y )N)r�   é   r°   )é   rA   r±   )r.   é   r¯   )rn   é	   r­   )é   é
   r®   )r»   r¿   ç     @a@r»   )r½   r¾   ç     `k@r»   )r@   rÁ   ç     ào@r½   )rº   rÂ   ç     Àp@r¾   )rÀ   rÃ   ç     pr@rÀ   r…   ro   r•   )rB   r‡   r*   r
   r   )rG   rH   rÐ   r_   s       r7   Ú*test_mlab_linkage_conversion_multiple_rowszDTestMLabLinkageConversion.test_mlab_linkage_conversion_multiple_rowsÿ   s‹   € à�Z‰Zš¢kÚ$¢k²<ðAó Bˆà�J‰JÒ*Ú*Ú*Ú*Ú*ð	,ð
  ŸZ™Zð ó )ˆô 	Ô)¨"Ó-¨q°uÕ=Üœ¨Ó*¨B¯J©J°rÀÇÁ¨JÓ,LØ"ö	$r6   N)r2   r3   r4   rÍ   rÑ   rÞ   r5   r6   r7   rË   rË   í   s   „ ò/ò$ó$r6   rË   c                   ó>  — e Zd Z ee«      ej                  j                  dej                  D � �cg c]  }d|f‘Œ c}} ej                  D � �cg c]  }d|f‘Œ c}} z   ej                  D � �cg c]  }d|f‘Œ c}} z   «      d„ «       «       Zyc c}} w c c}} w c c}} w )ÚTestFclusterDataúcriterion,tr   ÚdistanceÚmaxclustc                 óÄ   — |j                  t        t        d|z   «      |   «      }|j                  t        j                  «      }t	        |||¬«      }t        ||«      sJ ‚y ©NÚ	fcluster_©Ú	criterionÚt)rB   r^   r/   ÚQ_Xr   r   )rG   ré   rè   rH   Ú	expectedTrk   ÚTs          r7   Útest_fclusterdataz"TestFclusterData.test_fclusterdata  sX   € ð —J‘JœwÔ':¸KÈ)Ñ<SÓTÐUVÑWÓXˆ	Ø�J‰JÔ*×.Ñ.Ó/ˆÜ˜ i°1Ô5ˆÜ˜Q 	Ô*Ð*Ñ*r6   N)r2   r3   r4   r)   r   r’   r�   rž   r/   Úfcluster_inconsistentÚfcluster_distanceÚfcluster_maxclustrí   ©Ú.0ré   s   00r7   rà   rà     s§   „ ñ �}Ó%Ø‡[�[×Ñ˜]Ø&9×&OÒ&OÔPÑ&O ˆ.˜!Ò	Ð&OÒPØ$7×$IÒ$IÔ
JÑ$I˜qˆJ˜Š?Ð$IÒ
Jñ	Kà$7×$IÒ$IÔ
JÑ$I˜qˆJ˜Š?Ð$IÒ
Jñ	Kóñ
+óó &ñ+ùó	 	QùÛ
JùÛ
Js   ±BÁBÁ-Brà   c                   ó@  — e Zd Z eee«      ej                  j                  de	j                  D � �cg c]  }d|f‘Œ c}} e	j                  D � �cg c]  }d|f‘Œ c}} z   e	j                  D � �cg c]  }d|f‘Œ c}} z   «      d„ «       «       Z eeee«      ej                  j                  de	j                  «      d„ «       «       Z eeee«      ej                  j                  de	j                  «      d„ «       «       Z ee«      d	„ «       Zy
c c}} w c c}} w c c}} w )ÚTestFclusterrá   r   râ   rã   c                 óä   — |j                  t        t        d|z   «      |   «      }t        |j                  t        j                  «      «      }t        |||¬«      }t        t        ||«      «       y rå   )rB   r^   r/   r   rê   r   r   r   )rG   ré   rè   rH   rë   r_   rì   s          r7   Útest_fclusterzTestFcluster.test_fcluster"  s\   € ð —J‘JœwÔ':¸KÈ)Ñ<SÓTÐUVÑWÓXˆ	Ü�2—:‘:Ô1×5Ñ5Ó6Ó7ˆÜ�Q )¨qÔ1ˆÜ”˜a Ó+Õ,r6   ré   c                 óò   — |j                  t        j                  |   «      }t        |j                  t        j                  «      «      }t        ||dt        |«      ¬«      }t        t        ||«      «       y )NÚmonocrit©rè   rø   )	rB   r/   rï   r   rê   r   r   r   r   ©rG   ré   rH   rë   r_   rì   s         r7   Útest_fcluster_monocritz#TestFcluster.test_fcluster_monocrit/  s[   € ð —J‘JÔ2×DÑDÀQÑGÓHˆ	Ü�2—:‘:Ô1×5Ñ5Ó6Ó7ˆÜ�Q˜ Z¼(À1»+ÔFˆÜ”˜a Ó+Õ,r6   c                 óò   — |j                  t        j                  |   «      }t        |j                  t        j                  «      «      }t        ||dt        |«      ¬«      }t        t        ||«      «       y )NÚmaxclust_monocritrù   )	rB   r/   rð   r   rê   r   r   r   r   rú   s         r7   Útest_fcluster_maxclust_monocritz,TestFcluster.test_fcluster_maxclust_monocrit7  s\   € ð —J‘JÔ2×DÑDÀQÑGÓHˆ	Ü�2—:‘:Ô1×5Ñ5Ó6Ó7ˆÜ�Q˜Ð%8Ä8ÈAÃ;ÔOˆÜ”˜a Ó+Õ,r6   c                 ó�  — |j                  dgdgdgg«      }t        |«      }t        t        |dd¬«      |j                  g d¢«      «       t        t        |dd¬«      |j                  g d¢«      «       t        t        |d	d¬«      |j                  g d
¢«      «       t        t        |dd¬«      |j                  g d
¢«      «       y )Nr.   rÔ   rA   rã   )ré   rè   ©r.   r.   r.   rn   )rn   r.   r.   r�   rÏ   )rB   r   r   r   ©rG   rH   rI   r_   s       r7   Útest_fcluster_maxclust_gh_12651z,TestFcluster.test_fcluster_maxclust_gh_12651?  s¡   € à�J‰J˜˜˜a˜S 1 #�Ó'ˆÜ�1‹IˆÜœ8 A¨°jÔAØŸ:™:¢iÓ0ô	2äœ8 A¨°jÔAØŸ:™:¢iÓ0ô	2äœ8 A¨°jÔAØŸ:™:¢iÓ0ô	2äœ8 A¨°jÔAØŸ:™:¢iÓ0õ	2r6   N)r2   r3   r4   r)   r   r   r’   r�   rž   r/   rî   rï   rð   rö   r   rû   rþ   r  rñ   s   00r7   rô   rô     s>  „ ñ �v˜}Ó-Ø‡[�[×Ñ˜]Ø&9×&OÒ&OÔPÑ&O ˆ.˜!Ò	Ð&OÒPØ$7×$IÒ$IÔ
JÑ$I˜qˆJ˜Š?Ð$IÒ
Jñ	Kà$7×$IÒ$IÔ
JÑ$I˜qˆJ˜Š?Ð$IÒ
Jñ	Kóñ
-óó .ð-ñ �v˜}¨hÓ7Ø‡[�[×Ñ˜SÐ"5×"GÑ"GÓHñ-ó Ió 8ð-ñ �v˜}¨hÓ7Ø‡[�[×Ñ˜SÐ"5×"GÑ"GÓHñ-ó Ió 8ð-ñ �vÓñ
2ó ñ
2ùó9 	QùÛ
JùÛ
Js   ²DÁDÁ.Drô   c                   ó   — e Zd Zd„ Zy)ÚTestLeadersc                 óX  — t         j                  }t        |«      }t        |«      }t	        |dd¬«      }|j                  |«      }|j                  ||j                  ¬«      }t        ||«      }|j                  g d¢|j                  ¬«      }t        |j                  |«      |d¬«       y )Nrã   r�   rç   r…   )é5   é7   é8   rn   r�   r.   ro   r•   )
r/   rê   r'   r	   r   rB   Úint32r   r*   Úconcat)rG   rH   rk   ÚYr_   rì   ÚLrˆ   s           r7   Útest_leaders_singlezTestLeaders.test_leaders_singleP  s†   € ä×#Ñ#ˆÜ�!‹HˆÜ�A‹JˆÜ�Q *°Ô2ˆØ�J‰J�q‹MˆØ�J‰J�q §¡ˆJÓ)ˆÜ�A�q‹MˆØ—‘Ò1¸¿¹�ÓBˆÜ˜Ÿ	™	 !› f°5Ö9r6   N)r2   r3   r4   r  r5   r6   r7   r  r  M  s   „ ó
:r6   r  c                   óÔ   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	e
j                  j                  dg d	¢«      d
„ «       Ze
j                  j                  dg d	¢«      d„ «       Zd„ Zdd„Zy)ÚTestIsIsomorphicc                 óD   — t        g d¢g d¢«      sJ ‚t        g g «      sJ ‚y ©Nr   )rn   rn   rn   )r   ©rG   s    r7   Útest_array_likez TestIsIsomorphic.test_array_like`  s"   € ÜšYª	Ô2Ð2Ð2Ü˜R Ô$Ð$Ñ$r6   c                 óˆ   — |j                  g d¢«      }|j                  g d¢«      }t        ||«      sJ ‚t        ||«      sJ ‚y r  ©rB   r   ©rG   rH   ÚaÚbs       r7   Útest_is_isomorphic_1z%TestIsIsomorphic.test_is_isomorphic_1d  ó>   € à�J‰J’yÓ!ˆØ�J‰J’yÓ!ˆÜ˜Q Ô"Ð"Ð"Ü˜Q Ô"Ð"Ñ"r6   c                 óˆ   — |j                  g d¢«      }|j                  g d¢«      }t        ||«      sJ ‚t        ||«      sJ ‚y )N)r.   r×   r.   )rn   r�   rn   r  r  s       r7   Útest_is_isomorphic_2z%TestIsIsomorphic.test_is_isomorphic_2k  r  r6   c                 ód   — |j                  g «      }|j                  g «      }t        ||«      sJ ‚y r¢   r  r  s       r7   Útest_is_isomorphic_3z%TestIsIsomorphic.test_is_isomorphic_3r  s,   € à�J‰J�r‹NˆØ�J‰J�r‹NˆÜ˜Q Ô"Ð"Ñ"r6   c                 óˆ   — |j                  g d¢«      }|j                  g d¢«      }t        ||«      sJ ‚t        ||«      sJ ‚y )NrÏ   )r.   r�   rn   r  r  s       r7   Útest_is_isomorphic_4Az&TestIsIsomorphic.test_is_isomorphic_4Ax  ó@   € ð �J‰J’yÓ!ˆØ�J‰J’yÓ!ˆÜ˜Q Ô"Ð"Ð"Ü˜Q Ô"Ð"Ñ"r6   c                 óˆ   — |j                  g d¢«      }|j                  g d¢«      }t        ||«      rJ ‚t        ||«      rJ ‚y )N)r.   rn   r�   r�   )r.   r�   rn   r�   r  r  s       r7   Útest_is_isomorphic_4Bz&TestIsIsomorphic.test_is_isomorphic_4B€  sC   € ð �J‰J’|Ó$ˆØ�J‰J’|Ó$ˆÜ   AÔ&Ð&Ð&Ü   AÔ&Ð&Ð&Ð&r6   c                 óˆ   — |j                  g d¢«      }|j                  g d¢«      }t        ||«      sJ ‚t        ||«      sJ ‚y )N)r×   rn   r�   )rÓ   r�   rn   r  r  s       r7   Útest_is_isomorphic_4Cz&TestIsIsomorphic.test_is_isomorphic_4Cˆ  r!  r6   Ú	nclusters)rn   r�   rA   c                 ó,   — | j                  d||¬«       y )Néè  r‹   ©Úis_isomorphic_randperm©rG   r&  rH   s      r7   Útest_is_isomorphic_5z%TestIsIsomorphic.test_is_isomorphic_5�  s   € ð 	×#Ñ# D¨)¸Ð#Õ;r6   c                 ó0   — | j                  d|dd|¬«       y )Nr(  TrA   r‹   r)  r+  s      r7   Útest_is_isomorphic_6z%TestIsIsomorphic.test_is_isomorphic_6–  s   € ð
 	×#Ñ# D¨)°T¸1ÀÐ#ÕDr6   c                 ól   — |j                  g d¢«      }|j                  g d¢«      }t        ||«      rJ ‚y )NrÏ   r   r  r  s       r7   Útest_is_isomorphic_7z%TestIsIsomorphic.test_is_isomorphic_7�  s1   € à�J‰J’yÓ!ˆØ�J‰J’yÓ!ˆÜ   AÔ&Ð&Ð&Ð&r6   c                óø  — t         j                  j                  «       }t        d«      D ]Î  }|j	                  d||¬«      }|j                  |«      }	|	j                  |j                  t         j                  «      «      }
|r1|j                  |«      }|
|d| xx   dz  cc<   |
|d| xx   |z  cc<   |j                  |«      }|j                  |
«      }
t        ||
«      | k(  sJ ‚t        |
|«      | k(  rŒÎJ ‚ y )Nr�   r   )Úsizer.   )rq   rr   Údefault_rngÚrangeÚintegersÚpermutationÚtakeÚastypeÚintprB   r   )rG   Únobsr&  ÚnonisoÚnerrorsrH   rv   Ú_r  Úpr  Úqs               r7   r*  z'TestIsIsomorphic.is_isomorphic_randperm£  sà   € Ü�i‰i×#Ñ#Ó%ˆÜ�q–ˆAØ—‘˜Q 	°�Ó5ˆAØ—‘ 	Ó*ˆAØ—‘�q—x‘x¤§¡Ó(Ó)ˆAÙØ—O‘O DÓ)�Ø�!�A�g�,“ 1Ñ$“Ø�!�A�g�,“ 9Ñ,“Ø—
‘
˜1“ˆAØ—
‘
˜1“ˆAÜ   AÓ&¨v¨:Ò6Ð6Ð6Ü   AÓ&¨v¨:Ó6Ð6Ð6ñ r6   N)Fr   )r2   r3   r4   r  r  r  r  r   r#  r%  r’   r�   rž   r,  r.  r0  r*  r5   r6   r7   r  r  ]  s{   „ ò%ò#ò#ò#ò#ò'ò#ð ‡[�[×Ñ˜[ª)Ó4ñ<ó 5ð<ð
 ‡[�[×Ñ˜[ª)Ó4ñEó 5ðEò'ô7r6   r  c                   ó~   — e Zd Zej                  j                  dg d¢«      d„ «       Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zy)ÚTestIsValidLinkageúnrow, ncol, valid©)rn   rA   F)rn   r�   F)r.   rÔ   T)rn   rÔ   Tc                 óÂ   — |j                  g d¢g d¢g|j                  ¬«      }|d |…d |…f   }t        t        |«      |d¬«       |st	        t
        t        |d¬«       y y ©N)r   r.   r½   rn   rA   )r�   rn   r¾   r�   r�   r…   F©Úcheck_namespaceT©Úthrow)rB   r‡   r+   r   rD   rE   )rG   ÚnrowÚncolÚvalidrH   r_   s         r7   Ú"test_is_valid_linkage_various_sizez5TestIsValidLinkage.test_is_valid_linkage_various_size¶  sg   € ð �J‰JÒ)Ú)ð+Ø24·*±*ð ó >ˆàˆeˆtˆe�U�d�Uˆl‰OˆÜÔ(¨Ó+¨UÀEÕJÙÜœ*Ô&6¸ÀÖFð r6   c                 ó¦   — |j                  g d¢g d¢g|j                  ¬«      }t        t        |«      dd¬«       t	        t
        t        |d¬«       y ©N©r   r.   r½   rn   ©r�   rn   r¾   r�   r…   FrF  TrH  )rB   Úint64r+   r   rD   Ú	TypeError©rG   rH   r_   s      r7   Útest_is_valid_linkage_int_typez1TestIsValidLinkage.test_is_valid_linkage_int_typeÁ  sG   € à�J‰JšÚ&ð(Ø/1¯x©xð ó 9ˆäÔ(¨Ó+¨UÀEÕJÜ”iÔ!1°1¸DÖAr6   c                 óš   — |j                  d|j                  ¬«      }t        t        |«      dd¬«       t	        t
        t        |d¬«       y ©N©r   rÔ   r…   FrF  TrH  )rM   r‡   r+   r   rD   rE   rT  s      r7   Útest_is_valid_linkage_emptyz.TestIsValidLinkage.test_is_valid_linkage_emptyÈ  s9   € à�H‰H�V 2§:¡:ˆHÓ.ˆÜÔ(¨Ó+¨UÀEÕJÜ”jÔ"2°A¸TÖBr6   c                 óü   — t        ddd«      D ]l  }t        j                  j                  ||dz
  z  dz  «      }|j	                  t        |«      «      }|j	                  |«      }t        t        |«      dd¬«       Œn y ©	NrÔ   é   r�   r.   rn   TFrF  )r4  rq   rr   rt   rB   r	   r+   r   ©rG   rH   ÚirI   r_   s        r7   Útest_is_valid_linkage_4_and_upz1TestIsValidLinkage.test_is_valid_linkage_4_and_upÎ  se   € ô �q˜"˜a–ˆAÜ—	‘	—‘˜q ! A¡#™w¨™zÓ*ˆAØ—
‘
œ7 1›:Ó&ˆAØ—
‘
˜1“ˆAÜÔ,¨QÓ/°ÀuÖMñ	 !r6   c                 óÞ  — t        ddd«      D ]Ñ  }t        j                  j                  ||dz
  z  dz  «      }|j	                  t        |«      «      }|j	                  |«      }t        j                  |«      |dz  df   j                  d«      }t        t        |«      dd¬	«       t        j                  t        «      5  t        j                  |d
¬«       d d d «       ŒÓ y # 1 sw Y   ŒÞxY w)NrÔ   r\  r�   r.   rn   r   éþÿÿÿFrF  TrH  ©r4  rq   rr   rt   rB   r	   ÚxpxÚatÚsetr+   r   r’   r   rE   r1   r]  s        r7   Ú-test_is_valid_linkage_4_and_up_neg_index_leftz@TestIsValidLinkage.test_is_valid_linkage_4_and_up_neg_index_left×  óº   € ô �q˜"˜a–ˆAÜ—	‘	—‘˜q ! A¡#™w¨™zÓ*ˆAØ—
‘
œ7 1›:Ó&ˆAØ—
‘
˜1“ˆAÜ—‘�q“	˜!˜Q™$ ˜'Ñ"×&Ñ& rÓ*ˆAÜÔ,¨QÓ/°ÈÕNÜ—‘œzÕ*Ü×&Ñ& q°Ð&Ô5÷ +Ð*ñ !÷ +Ð*úó   Ã C#Ã#C,	c                 óÞ  — t        ddd«      D ]Ñ  }t        j                  j                  ||dz
  z  dz  «      }|j	                  t        |«      «      }|j	                  |«      }t        j                  |«      |dz  df   j                  d«      }t        t        |«      dd¬«       t        j                  t        «      5  t        j                  |d	¬
«       d d d «       ŒÓ y # 1 sw Y   ŒÞxY w©NrÔ   r\  r�   r.   rn   ra  FrF  TrH  rb  r]  s        r7   Ú.test_is_valid_linkage_4_and_up_neg_index_rightzATestIsValidLinkage.test_is_valid_linkage_4_and_up_neg_index_rightã  rg  rh  c                 óÞ  — t        ddd«      D ]Ñ  }t        j                  j                  ||dz
  z  dz  «      }|j	                  t        |«      «      }|j	                  |«      }t        j                  |«      |dz  df   j                  d«      }t        t        |«      dd¬«       t        j                  t        «      5  t        j                  |d	¬
«       d d d «       ŒÓ y # 1 sw Y   ŒÞxY w©NrÔ   r\  r�   r.   rn   g      à¿FrF  TrH  rb  r]  s        r7   Ú'test_is_valid_linkage_4_and_up_neg_distz:TestIsValidLinkage.test_is_valid_linkage_4_and_up_neg_distï  sº   € ô �q˜"˜a–ˆAÜ—	‘	—‘˜q ! A¡#™w¨™zÓ*ˆAØ—
‘
œ7 1›:Ó&ˆAØ—
‘
˜1“ˆAÜ—‘�q“	˜!˜Q™$ ˜'Ñ"×&Ñ& tÓ,ˆAÜÔ,¨QÓ/°ÈÕNÜ—‘œzÕ*Ü×&Ñ& q°Ð&Ô5÷ +Ð*ñ !÷ +Ð*úrh  c                 óÞ  — t        ddd«      D ]Ñ  }t        j                  j                  ||dz
  z  dz  «      }|j	                  t        |«      «      }|j	                  |«      }t        j                  |«      |dz  df   j                  d«      }t        t        |«      dd¬«       t        j                  t        «      5  t        j                  |d	¬
«       d d d «       ŒÓ y # 1 sw Y   ŒÞxY wrj  rb  r]  s        r7   Ú)test_is_valid_linkage_4_and_up_neg_countsz<TestIsValidLinkage.test_is_valid_linkage_4_and_up_neg_countsû  rg  rh  N)r2   r3   r4   r’   r�   rž   rM  rU  rY  r_  rf  rk  rn  rp  r5   r6   r7   rA  rA  ³  sX   „ ð ‡[�[×ÑÐ0ò 3Nó OñGóOðGòBòCòNò
6ò
6ò
6ó
6r6   rA  c                   óx   — e Zd Zd„ Zej
                  j                  dg d¢«      d„ «       Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zy
)ÚTestIsValidInconsistentc                 ó¦   — |j                  g d¢g d¢g|j                  ¬«      }t        t        |«      dd¬«       t	        t
        t        |d¬«       y rO  )rB   rR  r+   r   rD   rS  ©rG   rH   ÚRs      r7   Útest_is_valid_im_int_typez1TestIsValidInconsistent.test_is_valid_im_int_type  sD   € à�J‰JšÚ&ð(Ø/1¯x©xð ó 9ˆäœ A›¨¸uÕEÜ”i¤¨a°tÖ<r6   rB  rC  c                 óÂ   — |j                  g d¢g d¢g|j                  ¬«      }|d |…d |…f   }t        t        |«      |d¬«       |st	        t
        t        |d¬«       y y rE  )rB   r‡   r+   r   rD   rE   )rG   rJ  rK  rL  rH   ru  s         r7   Útest_is_valid_im_various_sizez5TestIsValidInconsistent.test_is_valid_im_various_size  sd   € ð �J‰JÒ)Ú)ð+Ø24·*±*ð ó >ˆàˆeˆtˆe�U�d�Uˆl‰OˆÜœ A›¨¸uÕEÙÜœ*¤k°1¸DÖAð r6   c                 óš   — |j                  d|j                  ¬«      }t        t        |«      dd¬«       t	        t
        t        |d¬«       y rW  )rM   r‡   r+   r   rD   rE   rt  s      r7   Útest_is_valid_im_emptyz.TestIsValidInconsistent.test_is_valid_im_empty  s6   € à�H‰H�V 2§:¡:ˆHÓ.ˆÜœ A›¨¸uÕEÜ”j¤+¨q¸Ö=r6   c                 óô   — t        ddd«      D ]h  }t        j                  j                  ||dz
  z  dz  «      }t	        |«      }t        |«      }|j                  |«      }t        t        |«      dd¬«       Œj y r[  )	r4  rq   rr   rt   r	   r   rB   r+   r   ©rG   rH   r^  rI   r_   ru  s         r7   Útest_is_valid_im_4_and_upz1TestIsValidInconsistent.test_is_valid_im_4_and_up#  sc   € ô �q˜"˜a–ˆAÜ—	‘	—‘˜q ! A¡#™w¨™zÓ*ˆAÜ˜“
ˆAÜ˜Q“ˆAØ—
‘
˜1“ˆAÜœK¨›N¨DÀ%ÖHñ !r6   c                 óÖ  — t        ddd«      D ]Í  }t        j                  j                  ||dz
  z  dz  «      }t	        |«      }t        |«      }t        j                  |«      |dz  df   j                  d«      }|j                  |«      }t        t        |«      dd¬	«       t        j                  t        «      5  t        j                  |d
¬«       d d d «       ŒÏ y # 1 sw Y   ŒÚxY w)NrÔ   r\  r�   r.   rn   r   ç       ÀFrF  TrH  ©r4  rq   rr   rt   r	   r   rc  rd  re  rB   r+   r   r’   r   rE   r1   r|  s         r7   Ú(test_is_valid_im_4_and_up_neg_index_leftz@TestIsValidInconsistent.test_is_valid_im_4_and_up_neg_index_left-  ó¸   € ô �q˜"˜a–ˆAÜ—	‘	—‘˜q ! A¡#™w¨™zÓ*ˆAÜ˜“
ˆAÜ˜Q“ˆAÜ—‘�q“	˜!˜Q™$ ˜(Ñ#×'Ñ'¨Ó-ˆAØ—
‘
˜1“ˆAÜœK¨›N¨EÀ5ÕIÜ—‘œzÕ*Ü×!Ñ! !¨4Ð!Ô0÷ +Ð*ñ !÷ +Ð*úó   Â<CÃC(	c                 óÖ  — t        ddd«      D ]Í  }t        j                  j                  ||dz
  z  dz  «      }t	        |«      }t        |«      }t        j                  |«      |dz  df   j                  d«      }|j                  |«      }t        t        |«      dd¬«       t        j                  t        «      5  t        j                  |d	¬
«       d d d «       ŒÏ y # 1 sw Y   ŒÚxY w)NrÔ   r\  r�   r.   rn   r  FrF  TrH  r€  r|  s         r7   Ú)test_is_valid_im_4_and_up_neg_index_rightzATestIsValidInconsistent.test_is_valid_im_4_and_up_neg_index_right:  r‚  rƒ  c                 óÖ  — t        ddd«      D ]Í  }t        j                  j                  ||dz
  z  dz  «      }t	        |«      }t        |«      }t        j                  |«      |dz  df   j                  d«      }|j                  |«      }t        t        |«      dd¬«       t        j                  t        «      5  t        j                  |d	¬
«       d d d «       ŒÏ y # 1 sw Y   ŒÚxY wrm  r€  r|  s         r7   Ú"test_is_valid_im_4_and_up_neg_distz:TestIsValidInconsistent.test_is_valid_im_4_and_up_neg_distG  s¸   € ô �q˜"˜a–ˆAÜ—	‘	—‘˜q ! A¡#™w¨™zÓ*ˆAÜ˜“
ˆAÜ˜Q“ˆAÜ—‘�q“	˜!˜Q™$ ˜'Ñ"×&Ñ& tÓ,ˆAØ—
‘
˜1“ˆAÜœK¨›N¨EÀ5ÕIÜ—‘œzÕ*Ü×!Ñ! !¨4Ð!Ô0÷ +Ð*ñ !÷ +Ð*úrƒ  N)r2   r3   r4   rv  r’   r�   rž   rx  rz  r}  r�  r…  r‡  r5   r6   r7   rr  rr    sQ   „ ò=ð ‡[�[×ÑÐ0ò 3Nó OñBóOðBò>òIò1ò1ó1r6   rr  c                   ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestNumObsLinkagec                 óh   — |j                  d|j                  ¬«      }t        t        t        |«       y ©NrX  r…   )rM   r‡   rD   rE   r   rT  s      r7   Útest_num_obs_linkage_emptyz,TestNumObsLinkage.test_num_obs_linkage_emptyW  s$   € à�H‰H�V 2§:¡:ˆHÓ.ˆÜ”j¤/°1Õ5r6   c                 ód   — |j                  g d¢g|j                  ¬«      }t        |«      dk(  sJ ‚y )NrP  r…   rn   ©rB   r‡   r   rT  s      r7   Útest_num_obs_linkage_1x4z*TestNumObsLinkage.test_num_obs_linkage_1x4\  s.   € à�J‰JšÐ'¨r¯z©zˆJÓ:ˆÜ˜qÓ! QÒ&Ð&Ñ&r6   c                 ój   — |j                  g d¢g d¢g|j                  ¬«      }t        |«      dk(  sJ ‚y )NrP  rQ  r…   r�   rŽ  rT  s      r7   Útest_num_obs_linkage_2x4z*TestNumObsLinkage.test_num_obs_linkage_2x4a  s9   € à�J‰JšÚ&ð(Ø/1¯z©zð ó ;ˆä˜qÓ! QÒ&Ð&Ñ&r6   c                 óÌ   — t        ddd«      D ]T  }t        j                  j                  ||dz
  z  dz  «      }|j	                  t        |«      «      }t        |«      |k(  rŒTJ ‚ y )NrÔ   r\  r�   r.   rn   )r4  rq   rr   rt   rB   r	   r   r]  s        r7   Útest_num_obs_linkage_4_and_upz/TestNumObsLinkage.test_num_obs_linkage_4_and_upg  sY   € ô �q˜"˜a–ˆAÜ—	‘	—‘˜q ! A¡#™w¨™zÓ*ˆAØ—
‘
œ7 1›:Ó&ˆAÜ" 1Ó%¨Ó*Ð*Ð*ñ !r6   c                 óÐ   — t        dd«      D ]W  }t        j                  j                  |d«      }t	        |«      }|j                  t        |«      «      }t        |«      |k(  rŒWJ ‚ y )Nrn   rØ   rÔ   )r4  rq   rr   rt   r'   rB   r	   r   )rG   rH   rw   rk   r  r_   s         r7   Ú!test_num_obs_linkage_multi_matrixz3TestNumObsLinkage.test_num_obs_linkage_multi_matrixo  sT   € ä�q˜"–ˆAÜ—	‘	—‘˜q !Ó$ˆAÜ�a“ˆAØ—
‘
œ7 1›:Ó&ˆAÜ" 1Ó%¨Ó*Ð*Ð*ñ	 r6   N)r2   r3   r4   rŒ  r�  r‘  r“  r•  r5   r6   r7   r‰  r‰  U  s   „ ò6ò
'ò
'ò+ó+r6   r‰  c                   óf   — e Zd Zd„ Zd„ Zej                  j                  dg d¢«      d„ «       Zd„ Z	y)ÚTestLeavesListc                 óŒ   — |j                  g d¢g|j                  ¬«      }t        |«       t        t	        |«      ddgd¬«       y )NrP  r…   r   r.   ro   r•   ©rB   r‡   r   r   r   rT  s      r7   Útest_leaves_list_1x4z#TestLeavesList.test_leaves_list_1x4{  s6   € à�J‰JšÐ'¨r¯z©zˆJÓ:ˆÜ�Œ
Üœ A›¨¨A¨°UÖ;r6   c                 ó’   — |j                  g d¢g d¢g|j                  ¬«      }t        |«       t        t	        |«      g d¢d¬«       y )NrP  rQ  r…   )r   r.   rn   ro   r•   r™  rT  s      r7   Útest_leaves_list_2x4z#TestLeavesList.test_leaves_list_2x4�  s=   € à�J‰JšÚ&ð(Ø/1¯z©zð ó ;ˆä�Œ
Üœ A›ª	¸Ö>r6   rU   )r   rP   rQ   rR   rb   rc   r   c                 óº   — t         j                  }|j                  t        ||«      «      }t	        |«      }t        |j                  «       t        |«      d¬«       y )Nro   r•   )r/   rê   rB   r	   r   r   Ú	pre_orderr   )rG   rU   rH   rk   r_   Únodes         r7   Útest_leaves_list_Qz!TestLeavesList.test_leaves_list_Qˆ  sD   € ô  ×#Ñ#ˆØ�J‰J”w˜q &Ó)Ó*ˆÜ�q‹zˆÜ˜Ÿ™Ó(¬+°a«.¸uÖEr6   c                 ó  — t         j                  }|j                  t        |d«      «      }t	        |«      }t        |j                  «       |j                  «       j                  «       |j                  «       j                  «       z   d¬«       y )Nr   ro   r•   )	r/   rê   rB   r	   r   r   rž  Úget_leftÚ	get_right)rG   rH   rk   r_   rŸ  s        r7   Útest_Q_subtree_pre_orderz'TestLeavesList.test_Q_subtree_pre_order‘  sf   € ä×#Ñ#ˆØ�J‰J”w˜q (Ó+Ó,ˆÜ�q‹zˆÜ˜Ÿ™Ó(ØŸ™›×2Ñ2Ó4°t·~±~Ó7G×7QÑ7QÓ7SÑSØ"ö	$r6   N)
r2   r3   r4   rš  rœ  r’   r�   rž   r   r¤  r5   r6   r7   r—  r—  x  s=   „ ò<ò?ð ‡[�[×Ñ˜XÚSóUñFóUðFó$r6   r—  c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚTestCorrespondc                 ó¤   — |j                  d|j                  ¬«      }|j                  d|j                  ¬«      }t        t        t        ||«       y )NrL   r…   rX  )rM   r‡   rD   rE   r   r  s       r7   Útest_correspond_emptyz$TestCorrespond.test_correspond_emptyž  s<   € à�H‰H�T §¡ˆHÓ,ˆØ�H‰H�U "§*¡*ˆHÓ-ˆÜ”j¤*¨a°Õ3r6   c                 óê  — t        dd«      D ]j  }t        j                  j                  ||dz
  z  dz  «      }|j	                  t        |«      «      }|j	                  |«      }t        t        ||«      «       Œl t        ddd«      D ]j  }t        j                  j                  ||dz
  z  dz  «      }|j	                  t        |«      «      }|j	                  |«      }t        t        ||«      «       Œl y )Nrn   rÔ   r.   r\  r�   )r4  rq   rr   rt   rB   r	   r   r   r]  s        r7   Útest_correspond_2_and_upz'TestCorrespond.test_correspond_2_and_up¤  sÀ   € ô �q˜!–ˆAÜ—	‘	—‘˜q ! A¡#™w¨™zÓ*ˆAØ—
‘
œ7 1›:Ó&ˆAØ—
‘
˜1“ˆAÜ”J˜q !Ó$Õ%ð	 ô
 �q˜"˜a–ˆAÜ—	‘	—‘˜q ! A¡#™w¨™zÓ*ˆAØ—
‘
œ7 1›:Ó&ˆAØ—
‘
˜1“ˆAÜ”J˜q !Ó$Õ%ñ	 !r6   c                 ó†  — t        t        t        t        dd«      «      t        t        dd«      «      «      «      t        t        t        t        dd«      «      t        t        dd«      «      «      «      z   D ]Ç  \  }}t        j                  j                  ||dz
  z  dz  «      }t        j                  j                  ||dz
  z  dz  «      }|j                  t        |«      «      }|j                  t        |«      «      }|j                  |«      }|j                  |«      }t        ||«      rJ ‚t        ||«      sŒÇJ ‚ y )Nrn   rÔ   r�   rA   r.   ©	ÚlistÚzipr4  rq   rr   rt   rB   r	   r   ©rG   rH   r^  ÚjrI   Úy2r_   r—   s           r7   Útest_correspond_4_and_upz'TestCorrespond.test_correspond_4_and_up²  sú   € ô œC¤¤U¨1¨a£[Ó 1´4¼¸aÀ»Ó3DÓEÓFÜœC¤¤U¨1¨a£[Ó 1´4¼¸aÀ»Ó3DÓEÓFôG‰FˆQ�ä—	‘	—‘˜q ! A¡#™w¨™zÓ*ˆAÜ—‘—‘  1 Q¡3¡¨¡
Ó+ˆBØ—
‘
œ7 1›:Ó&ˆAØ—‘œG B›KÓ(ˆBØ—
‘
˜1“ˆAØ—‘˜B“ˆBÜ! ! RÔ(Ð(Ð(Ü! " aÕ(Ð(Ð(ñGr6   c                 ó†  — t        t        t        t        dd«      «      t        t        dd«      «      «      «      t        t        t        t        dd«      «      t        t        dd«      «      «      «      z   D ]Ç  \  }}t        j                  j                  ||dz
  z  dz  «      }t        j                  j                  ||dz
  z  dz  «      }|j                  t        |«      «      }|j                  t        |«      «      }|j                  |«      }|j                  |«      }t        ||«      rJ ‚t        ||«      sŒÇJ ‚ y )Nrn   r×   é   é   r.   r¬  r¯  s           r7   Útest_correspond_4_and_up_2z)TestCorrespond.test_correspond_4_and_up_2À  sú   € ô œC¤¤U¨1¨a£[Ó 1´4¼¸bÀ"»Ó3FÓGÓHÜœC¤¤U¨1¨a£[Ó 1´4¼¸bÀ"»Ó3FÓGÓHôI‰FˆQ�ä—	‘	—‘˜q ! A¡#™w¨™zÓ*ˆAÜ—‘—‘  1 Q¡3¡¨¡
Ó+ˆBØ—
‘
œ7 1›:Ó&ˆAØ—‘œG B›KÓ(ˆBØ—
‘
˜1“ˆAØ—‘˜B“ˆBÜ! ! RÔ(Ð(Ð(Ü! " aÕ(Ð(Ð(ñIr6   N)r2   r3   r4   r¨  rª  r²  r¶  r5   r6   r7   r¦  r¦  ›  s   „ ò4ò&ò)ó)r6   r¦  c                   óN   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zy)ÚTestIsMonotonicc                 óh   — |j                  d|j                  ¬«      }t        t        t        |«       y r‹  )rM   r‡   rD   rE   r   rT  s      r7   Útest_is_monotonic_emptyz'TestIsMonotonic.test_is_monotonic_emptyÒ  s$   € à�H‰H�V 2§:¡:ˆHÓ.ˆÜ”j¤,°Õ2r6   c                 ó^   — |j                  g d¢g|j                  ¬«      }t        |«      sJ ‚y )N©r   r.   ç333333Ó?rn   r…   ©rB   r‡   r   rT  s      r7   Útest_is_monotonic_1x4z%TestIsMonotonic.test_is_monotonic_1x4×  s'   € à�J‰JšÐ'¨r¯z©zˆJÓ:ˆÜ˜AŒÐ‰r6   c                 ód   — |j                  g d¢g d¢g|j                  ¬«      }t        |«      sJ ‚y )Nr¼  )rn   r�   çš™™™™™Ù?r�   r…   r¾  rT  s      r7   Útest_is_monotonic_2x4_Tz'TestIsMonotonic.test_is_monotonic_2x4_TÜ  s2   € à�J‰JšÚ&ð(Ø/1¯z©zð ó ;ˆä˜AŒÐ‰r6   c                 ód   — |j                  g d¢g d¢g|j                  ¬«      }t        |«      rJ ‚y )N)r   r.   rÁ  rn   )rn   r�   r½  r�   r…   r¾  rT  s      r7   Útest_is_monotonic_2x4_Fz'TestIsMonotonic.test_is_monotonic_2x4_Fâ  s5   € à�J‰JšÚ&ð(Ø/1¯z©zð ó ;ˆä ”?Ð"Ð"�?r6   c                 ój   — |j                  g d¢g d¢g d¢g|j                  ¬«      }t        |«      sJ ‚y )Nr¼  ©rn   r�   rÁ  rn   ©rÔ   rA   g333333ã?rÔ   r…   r¾  rT  s      r7   Útest_is_monotonic_3x4_Tz'TestIsMonotonic.test_is_monotonic_3x4_Tè  s7   € à�J‰JšÚ&Ú&ð(à/1¯z©zð ó ;ˆô ˜AŒÐ‰r6   c                 ój   — |j                  g d¢g d¢g d¢g|j                  ¬«      }t        |«      rJ ‚y )Nr¼  )rn   r�   çš™™™™™É?rn   rÇ  r…   r¾  rT  s      r7   Útest_is_monotonic_3x4_F1z(TestIsMonotonic.test_is_monotonic_3x4_F1ï  ó:   € à�J‰JšÚ&Ú&ð(à/1¯z©zð ó ;ˆô   ”?Ð"Ð"�?r6   c                 ój   — |j                  g d¢g d¢g d¢g|j                  ¬«      }t        |«      rJ ‚y )N)r   r.   gš™™™™™é?rn   rÆ  rÇ  r…   r¾  rT  s      r7   Útest_is_monotonic_3x4_F2z(TestIsMonotonic.test_is_monotonic_3x4_F2ö  rÌ  r6   c                 ój   — |j                  g d¢g d¢g d¢g|j                  ¬«      }t        |«      rJ ‚y )Nr¼  rÆ  )rÔ   rA   rÊ  rÔ   r…   r¾  rT  s      r7   Útest_is_monotonic_3x4_F3z(TestIsMonotonic.test_is_monotonic_3x4_F3ý  rÌ  r6   c                 óp   — |j                  t        t        j                  d«      «      }t	        |«      sJ ‚y ©Nr   )rB   r	   r/   r]   r   rT  s      r7   Ú test_is_monotonic_tdist_linkage1z0TestIsMonotonic.test_is_monotonic_tdist_linkage1  s,   € ð �J‰J”wÔ2×9Ñ9¸8ÓDÓEˆÜ˜AŒÐ‰r6   c                 ó¾   — |j                  t        t        j                  d«      «      }t	        j
                  |«      d   j                  d«      }t        |«      rJ ‚y )Nr   )rn   rn   r@   )rB   r	   r/   r]   rc  rd  re  r   rT  s      r7   Ú test_is_monotonic_tdist_linkage2z0TestIsMonotonic.test_is_monotonic_tdist_linkage2
  sK   € ð �J‰J”wÔ2×9Ñ9¸8ÓDÓEˆÜ�F‰F�1‹I�d‰O×Ñ Ó$ˆÜ ”?Ð"Ð"�?r6   c                 ót   — t         j                  }|j                  t        |d«      «      }t	        |«      sJ ‚y rÒ  )r/   rê   rB   r	   r   )rG   rH   rk   r_   s       r7   Útest_is_monotonic_Q_linkagez+TestIsMonotonic.test_is_monotonic_Q_linkage  s0   € ô  ×#Ñ#ˆØ�J‰J”w˜q (Ó+Ó,ˆÜ˜AŒÐ‰r6   N)r2   r3   r4   rº  r¿  rÂ  rÄ  rÈ  rË  rÎ  rÐ  rÓ  rÕ  r×  r5   r6   r7   r¸  r¸  Ï  s9   „ ò3ò
ò
ò#òò#ò#ò#òò#ór6   r¸  c                   ó`   — e Zd Zd„ Zd„ Zej                  j                  dg d¢«      d„ «       Zy)ÚTestMaxDistsc                 óh   — |j                  d|j                  ¬«      }t        t        t        |«       y r‹  )rM   r‡   rD   rE   r   rT  s      r7   Útest_maxdists_empty_linkagez(TestMaxDists.test_maxdists_empty_linkage  s$   € à�H‰H�V 2§:¡:ˆHÓ.ˆÜ”j¤(¨AÕ.r6   c                 óŽ   — |j                  g d¢g|j                  ¬«      }t        |«      }t        ||«      }t	        ||d¬«       y )N©r   r.   r½  rÔ   r…   ro   rZ   )rB   r‡   r   Úcalculate_maximum_distancesr*   )rG   rH   r_   ÚMDÚ
expectedMDs        r7   Ú!test_maxdists_one_cluster_linkagez.TestMaxDists.test_maxdists_one_cluster_linkage!  s<   € à�J‰JšÐ'¨r¯z©zˆJÓ:ˆÜ�a‹[ˆÜ0°°BÓ7ˆ
Ü˜˜J¨UÖ3r6   rU   ©r   rP   r   rb   rc   c                 ó¤   — t         j                  }|j                  t        ||«      «      }t	        |«      }t        ||«      }t        ||d¬«       y )Nro   rZ   )r/   rê   rB   r	   r   rÞ  r*   )rG   rU   rH   rk   r_   rß  rà  s          r7   Útest_maxdists_Q_linkagez$TestMaxDists.test_maxdists_Q_linkage(  sE   € ô  ×#Ñ#ˆØ�J‰J”w˜q &Ó)Ó*ˆÜ�a‹[ˆÜ0°°BÓ7ˆ
Ü˜˜J¨UÖ3r6   N)	r2   r3   r4   rÛ  rá  r’   r�   rž   rä  r5   r6   r7   rÙ  rÙ    s7   „ ò/ò
4ð ‡[�[×ÑØÒFóHñ4óHñ4r6   rÙ  c                   óf   — e Zd Zd„ Zd„ Zd„ Zej                  j                  dg d¢«      d„ «       Z	y)ÚTestMaxInconstsc                 ó¤   — |j                  d|j                  ¬«      }|j                  d|j                  ¬«      }t        t        t        ||«       y r‹  )rM   r‡   rD   rE   r   ©rG   rH   r_   ru  s       r7   Útest_maxinconsts_empty_linkagez.TestMaxInconsts.test_maxinconsts_empty_linkage6  s<   € à�H‰H�V 2§:¡:ˆHÓ.ˆØ�H‰H�V 2§:¡:ˆHÓ.ˆÜ”j¤+¨q°!Õ4r6   c                 óÒ   — |j                  g d¢g|j                  ¬«      }t        j                  j	                  dd«      }|j                  |«      }t        t        t        ||«       y ©NrÝ  r…   rn   rÔ   )rB   r‡   rq   rr   rt   rD   rE   r   rè  s       r7   Útest_maxinconsts_difrow_linkagez/TestMaxInconsts.test_maxinconsts_difrow_linkage<  sL   € ð �J‰JšÐ'¨r¯z©zˆJÓ:ˆÜ�I‰I�N‰N˜1˜aÓ ˆØ�J‰J�q‹MˆÜ”j¤+¨q°!Õ4r6   c                 óÔ   — |j                  g d¢g|j                  ¬«      }|j                  g d¢g|j                  ¬«      }t        ||«      }t        |||¬«      }t	        ||d¬«       y )NrÝ  r…   ©r   r   r   r½  r‹   ro   rZ   )rB   r‡   r   Ú!calculate_maximum_inconsistenciesr*   ©rG   rH   r_   ru  rß  rà  s         r7   Ú$test_maxinconsts_one_cluster_linkagez4TestMaxInconsts.test_maxinconsts_one_cluster_linkageD  sZ   € à�J‰JšÐ'¨r¯z©zˆJÓ:ˆØ�J‰JšÐ'¨r¯z©zˆJÓ:ˆÜ˜˜AÓˆÜ6°q¸!ÀÔCˆ
Ü˜˜J¨UÖ3r6   rU   râ  c                 óâ   — t         j                  }t        ||«      }|j                  t	        |«      «      }|j                  |«      }t        ||«      }t        |||¬«      }t        ||d¬«       y )Nr‹   ro   rZ   )r/   rê   r	   rB   r   r   rï  r*   ©rG   rU   rH   rk   r_   ru  rß  rà  s           r7   Útest_maxinconsts_Q_linkagez*TestMaxInconsts.test_maxinconsts_Q_linkageL  s`   € ô  ×#Ñ#ˆÜ�A�vÓˆØ�J‰J”| A“Ó'ˆØ�J‰J�q‹MˆÜ˜˜AÓˆÜ6°q¸!ÀÔCˆ
Ü˜˜J¨UÖ3r6   N)
r2   r3   r4   ré  rì  rñ  r’   r�   rž   rô  r5   r6   r7   ræ  ræ  3  s<   „ ò5ò5ò4ð ‡[�[×ÑØÒFóHñ4óHñ4r6   ræ  c                   ó   — e Zd Zd„ Zej
                  j                  d ed«      «      d„ «       Zej
                  j                  d ed«      «      d„ «       Z	d„ Z
ej
                  j                  dg d¢«      d	„ «       Zy
)ÚTestMaxRStatc                 óæ  — |j                  g d¢g|j                  ¬«      }|j                  g d¢g|j                  ¬«      }t        j                  t        «      5  t        ||d«       d d d «       t        j                  t        «      5  t        ||d«       d d d «       t        j                  t        «      5  t        ||d«       d d d «       y # 1 sw Y   ŒhxY w# 1 sw Y   ŒExY w# 1 sw Y   y xY w)NrÝ  r…   rî  gffffff
@rƒ   rÔ   )rB   r‡   r’   r   rS  r   rE   rè  s       r7   Útest_maxRstat_invalid_indexz(TestMaxRStat.test_maxRstat_invalid_index\  s¥   € à�J‰JšÐ'¨r¯z©zˆJÓ:ˆØ�J‰JšÐ'¨r¯z©zˆJÓ:ˆÜ�]‰]œ9Õ%Ü�Q˜˜3Ô÷ &ä�]‰]œ:Õ&Ü�Q˜˜2Ô÷ 'ä�]‰]œ:Õ&Ü�Q˜˜1Ô÷ 'Ð&÷	 &Ð%úç&Ð&úç&Ð&ús$   ÁCÂ	CÂ8C'ÃCÃC$Ã'C0r^  rÔ   c                 ó¦   — |j                  d|j                  ¬«      }|j                  d|j                  ¬«      }t        t        t        |||«       y r‹  )rM   r‡   rD   rE   r   ©rG   r^  rH   r_   ru  s        r7   Útest_maxRstat_empty_linkagez(TestMaxRStat.test_maxRstat_empty_linkageg  s@   € ð �H‰H�V 2§:¡:ˆHÓ.ˆØ�H‰H�V 2§:¡:ˆHÓ.ˆÜ”j¤(¨A¨q°!Õ4r6   c                 óÔ   — |j                  g d¢g|j                  ¬«      }t        j                  j	                  dd«      }|j                  |«      }t        t        t        |||«       y rë  )rB   r‡   rq   rr   rt   rD   rE   r   rú  s        r7   Útest_maxRstat_difrow_linkagez)TestMaxRStat.test_maxRstat_difrow_linkagen  sN   € ð �J‰JšÐ'¨r¯z©zˆJÓ:ˆÜ�I‰I�N‰N˜1˜aÓ ˆØ�J‰J�q‹MˆÜ”j¤(¨A¨q°!Õ4r6   c                 óÖ   — |j                  g d¢g|j                  ¬«      }|j                  g d¢g|j                  ¬«      }t        ||d«      }t        ||d|«      }t	        ||d¬«       y )NrÝ  r…   rî  r.   ro   rZ   )rB   r‡   r   rï  r*   rð  s         r7   Ú!test_maxRstat_one_cluster_linkagez.TestMaxRStat.test_maxRstat_one_cluster_linkagew  s^   € à�J‰JšÐ'¨r¯z©zˆJÓ:ˆØ�J‰JšÐ'¨r¯z©zˆJÓ:ˆÜ�a˜˜AÓˆÜ6°q¸!¸QÀÓCˆ
Ü˜˜J¨UÖ3r6   rU   râ  c                 óä   — t         j                  }t        ||«      }|j                  t	        |«      «      }|j                  |«      }t        ||d«      }t        ||d|«      }t        ||d¬«       y )Nr.   ro   rZ   )r/   rê   r	   rB   r   r   rï  r*   ró  s           r7   Útest_maxRstat_Q_linkagez$TestMaxRStat.test_maxRstat_Q_linkage  sd   € ô  ×#Ñ#ˆÜ�A�vÓˆØ�J‰J”| A“Ó'ˆØ�J‰J�q‹MˆÜ�a˜˜AÓˆÜ6°q¸!¸QÀÓCˆ
Ü˜˜J¨UÖ3r6   N)r2   r3   r4   rø  r’   r�   rž   r4  rû  rý  rÿ  r  r5   r6   r7   rö  rö  Y  s‰   „ ò	ð ‡[�[×Ñ˜S¡%¨£(Ó+ñ5ó ,ð5ð ‡[�[×Ñ˜S¡%¨£(Ó+ñ5ó ,ð5ò4ð ‡[�[×ÑØÒFóHñ4óHñ4r6   rö  c                   óÖ  — e Zd Zd„ Zd„ Zd„ Zej                  j                  e	 d¬«      d„ «       Z
 edd¬«       ed	d
¬«      ej                  j                  e	 d¬«      ej                  j                  dg d¢«      d„ «       «       «       «       Z edd¬«       ed	d
¬«      ej                  j                  e	 d¬«      d„ «       «       «       Zej                  d„ «       Zd„ Zd„ Zd„ Zy)ÚTestDendrogramc                 ó–   — |j                  t        t        j                  d«      «      }t	        |d¬«      }|d   }t        |g d¢«       y )Nr   T©Úno_plotÚleaves©rn   rA   r.   r   r�   rÔ   )rB   r	   r/   r]   r   r   )rG   rH   r_   ru  r  s        r7   Ú$test_dendrogram_single_linkage_tdistz3TestDendrogram.test_dendrogram_single_linkage_tdist�  s>   € à�J‰J”wÔ2×9Ñ9¸8ÓDÓEˆÜ�q $Ô'ˆØ�8‘ˆÜ�VÒ/Õ0r6   c                 ó„   — |j                  t        t        j                  d«      «      }t	        t
        t        |d¬«       y )Nr   Úfoo©Úorientation)rB   r	   r/   r]   rD   rE   r   rT  s      r7   Útest_valid_orientationz%TestDendrogram.test_valid_orientation–  s,   € Ø�J‰J”wÔ2×9Ñ9¸8ÓDÓEˆÜ”j¤*¨a¸UÖCr6   c                 óÂ   — |j                  t        t        j                  d«      «      }g d¢}t	        ||j                  |«      d¬«      }t	        ||d¬«      }||k(  sJ ‚y )Nr   )r.   r�   rn   rÓ   rÔ   rA   T)Úlabelsr  )rB   r	   r/   r]   r   )rG   rH   r_   r  Úresult1Úresult2s         r7   Útest_labels_as_array_or_listz+TestDendrogram.test_labels_as_array_or_listš  sV   € à�J‰J”wÔ2×9Ñ9¸8ÓDÓEˆÚ#ˆÜ˜Q r§z¡z°&Ó'9À4ÔHˆÜ˜Q v°tÔ<ˆØ˜'Ò!Ð!Ñ!r6   zno matplotlibr=   c           	      óÎ  — |j                  g d¢g d¢g d¢g«      }t        j                  «        t        j                  t
        «      5 }t        |t        t        d«      «      ¬«       d d d «       dt        j                  «      v sJ ‚t        j                  t
        d¬«      5  t        |g ¬«       d d d «       t        j                  «        y # 1 sw Y   ŒhxY w# 1 sw Y   Œ*xY w)N)r   r.   rº   rÔ   )rn   r�   rº   rA   )rÔ   rA   r»   rÓ   éd   )r  z.Dimensions of Z and labels must be consistent.rÆ   )rB   ÚpltÚfigurer’   r   rE   r   r­  r4  ÚstrÚvalueÚclose)rG   rH   ÚlinkÚexc_infos       r7   Útest_valid_label_sizez$TestDendrogram.test_valid_label_size¢  sµ   € à�z‰zÚÚÚð
ó ˆô
 	�
‰
ŒÜ�]‰]œ:Ô&¨(Ü�t¤D¬¨s«Ó$4Õ5÷ 'à?Ü�h—n‘nÓ%ñ&ð 	&ð &ô �]‰]ÜØFöHô �t BÕ'÷Hô
 	�	‰	�÷ 'Ð&ú÷
Hð Hús   Á CÂ$CÃCÃC$ÚtorchzFMPL 3.9.2 & torch DeprecationWarning from __array_wrap__ and NumPy 2.0z
dask.arrayz.dask.array has bad interaction with matplotlibr  )ÚtopÚbottomÚleftÚrightc                 óH  — |j                  t        t        j                  d«      «      }g d¢g d¢g d¢g d¢g d¢g d¢gg d¢g d	¢g d
¢g d¢g d¢gg d¢g d¢g d¢dœ}t	        j
                  «       }|j                  d«      }t        |||¬«      }t        j                   |d   «      |d<   t        ||«       t        |||dd¬«       |dv r|j                  «       d   n|j                  «       d   }t        |j                  «       d«       t        |j                  «       d«       t        |||d¬«       |dv r|j                  «       d   n|j                  «       d   }t        |j                  «       d«       t        |||d¬«       |dv r|j                  «       d   n|j                  «       d   }t        |j                  «       d«       t	        j                  «        t        ||¬«      }	t	        j                  «        t        j                   |	d   «      |	d<   t        |	|«       y )Nr   )ÚC1ÚC0r%  r%  r%  ©r@   rÙ   rÙ   r@   )r@   rÚ   rÚ   r@   )r@   rÛ   rÛ   rÚ   ©r@   rÜ   rÜ   rÛ   ©rÙ   rÝ   rÝ   rÜ   ©r¿   r¿   rÅ   rÅ   )ç     €F@r*  ç     €K@r+  )ç     €A@r,  ç      I@r-  )ç      9@r.  ç     @E@r/  )rÄ   rÄ   ç     à@@r0  )Ú2Ú5Ú1Ú0Ú3Ú4r  )r$  r$  r%  r%  r%  r%  ©Ú
color_listÚdcoordÚicoordÚivlr  Úleaves_color_listéÝ   )Úaxr  r9  rm   éZ   )r>  r  Úleaf_font_sizeÚleaf_rotation)r  r   r   )r>  r  rA  )r>  r  r@  r  )rB   r	   r/   r]   r  r  Úadd_subplotr   rq   r   Úget_xticklabelsÚget_yticklabelsÚget_rotationÚget_sizer  )
rG   r  rH   r_   ÚexpectedÚfigr>  ÚR1Ú	testlabelÚR2s
             r7   Útest_dendrogram_plotz#TestDendrogram.test_dendrogram_plot¶  s  € ð �J‰J”wÔ2×9Ñ9¸8ÓDÓEˆÚ"@Ú7Ú7Ú9Ú9Ú;ð	=ò
  6Ú7Ú7Ú7Ú9ð	;ò
 :Ú0Ú)Mñˆô  �j‰j‹lˆØ�_‰_˜SÓ!ˆô ˜˜b¨kÔ:ˆÜ—z‘z " X¡,Ó/ˆˆ8‰Ü�R˜Ô"ô 	�1˜¨Ø"$°Bõ	8ð Ð/Ñ/ð ×ÑÓ  Ò#à×#Ñ#Ó% aÑ(ð 	ô
 	�Y×+Ñ+Ó-¨rÔ2Ü�Y×'Ñ'Ó)¨2Ô.Ü�1˜¨Ø!#õ	%ð Ð/Ñ/ð ×ÑÓ  Ò#à×#Ñ#Ó% aÑ(ð 	ô
 	�Y×+Ñ+Ó-¨rÔ2Ü�1˜¨Ø"$õ	&ð Ð/Ñ/ð ×ÑÓ  Ò#à×#Ñ#Ó% aÑ(ð 	ô
 	�Y×'Ñ'Ó)¨2Ô.Ü�	‰	Œô ˜ {Ô3ˆÜ�	‰	ŒÜ—z‘z " X¡,Ó/ˆˆ8‰Ü�R˜Õ"r6   c           
      óô  — |j                  t        t        j                  d«      «      }t	        |ddd¬«      }t        j                  «        t        j                   |d   «      |d<   t        |dgg d¢gg d	¢gd
dgddgddgdœ«       t	        |ddd¬«      }t        j                  «        t        j                   |d   «      |d<   t        |g d¢g d¢g d¢g d¢g d¢gg d	¢g d¢g d¢g d¢gg d¢g d¢g d¢dœ«       y )Nr   rn   ÚlastpT)Úshow_contractedr9  r%  )r@   rÝ   rÝ   r@   r)  ú(2)z(4)rÓ   rÖ   r7  Úmtica)r$  r%  r%  r%  r&  )r@   rÛ   rÛ   r@   r'  r(  )r,  r,  r*  r*  )r.  r.  ç      D@rR  )rÄ   rÄ   ç     @@@rS  )r1  r2  r3  r4  rP  )rn   rA   r.   r   r×   )r$  r$  r%  r%  r%  )	rB   r	   r/   r]   r   r  r  rq   r   rè  s       r7   Útest_dendrogram_truncate_modez,TestDendrogram.test_dendrogram_truncate_modeý  sö   € ð �J‰J”wÔ2×9Ñ9¸8ÓDÓEˆä�q˜!˜W°dÔ;ˆÜ�	‰	ŒÜ—j‘j  8¡Ó-ˆˆ(‰Ü�Q¨ vÚ$<Ð#=Ú$:Ð#;Ø!&¨ Ø$% q 6Ø/3°T¨lñô 	ô �q˜!˜W°dÔ;ˆÜ�	‰	ŒÜ—j‘j  8¡Ó-ˆˆ(‰Ü�QÒ'?Ú$<Ú$<Ú$>Ú$@ð$Bò %;Ú$<Ú$<Ú$<ð$>ò !<Ú#2Ú.Lñõ 	r6   c                 ó   — t        «       S r¢   r,   r  s    r7   Údendrogram_lockzTestDendrogram.dendrogram_lock$  s	   € ä‹vˆr6   c                 ó  — |j                  t        t        j                  d«      «      }|5  t	        g d¢«       t        |ddd¬«      }t	        g d¢«       |d   }t        |g d	¢«       t	        d «       d d d «       y # 1 sw Y   y xY w)
Nr   )r¶   ÚmrI   ÚkTÚgéú   )r  Úabove_threshold_colorÚcolor_threshold)rZ  Úrr¶   rX  rI   rY  r8  )r¶   rX  rZ  rZ  rZ  )rB   r	   r/   r]   r   r   r   )rG   rH   rV  r_   ru  r8  s         r7   Útest_dendrogram_colorsz%TestDendrogram.test_dendrogram_colors(  so   € à�J‰J”wÔ2×9Ñ9¸8ÓDÓEˆâä"Ò#7Ô8Ü˜1 dØ14ÀcôKˆAä"Ò#AÔBà˜<™ˆJÜ˜Ò%>Ô?ô # 4Ô(÷ �_‰_ús   ¬AA=Á=Bc           	      óÌ   — t        j                  g d¢g d¢g d¢g d¢g d¢g d¢g«      }|j                  t        |d«      «      }t        |d¬«      }g d¢}|d	   }t	        ||«       y )
N©r.   r   r   ©r   r   r.   ©r   rn   r   ©r   r.   r   r   Tr  ©r%  r$  r$  r%  ÚC2rf  r<  ©rq   rB   r	   r   r   ©rG   rH   rk   r_   rx   Ú
exp_colorsÚcolorss          r7   Ú%test_dendrogram_leaf_colors_zero_distz4TestDendrogram.test_dendrogram_leaf_colors_zero_dist9  se   € ô �J‰Jš	Ú!Ú!Ú!Ú!Ú!ð#ó $ˆð �J‰J”w˜q (Ó+Ó,ˆÜ�q $Ô'ˆÚ9ˆ
ØÐ&Ñ'ˆÜ�V˜ZÕ(r6   c           	      óÌ   — t        j                  g d¢g d¢g d¢g d¢g d¢g d¢g«      }|j                  t        |d«      «      }t        |d¬«      }g d	¢}|d
   }t	        ||«       y )Nra  )r   r   gš™™™™™ñ?rc  rb  rd  r   Tr  re  r<  rg  rh  s          r7   Útest_dendrogram_leaf_colorsz*TestDendrogram.test_dendrogram_leaf_colorsH  se   € ô �J‰Jš	Ú#Ú!Ú!Ú!Ú!ð#ó $ˆð �J‰J”w˜q (Ó+Ó,ˆÜ�q $Ô'ˆÚ9ˆ
ØÐ&Ñ'ˆÜ�V˜ZÕ(r6   N)r2   r3   r4   r	  r  r  r’   r�   ÚskipifÚhave_matplotlibr  rœ   rž   rL  rT  ÚfixturerV  r_  rk  rm  r5   r6   r7   r  r  Œ  s-  „ ò1òDò"ð ‡[�[×Ñ˜OÐ+°OÐÓDñó Eðñ& �gð!ôñ �lØ@ôð ‡[�[×Ñ˜OÐ+°OÐÓDØ‡[�[×Ñ˜]Ò,NÓOñ<#ó Pó Eóó	ð<#ñ| �gð"ôñ �lØ@ôð ‡[�[×Ñ˜OÐ+°OÐÓDñó Eóó	ðð> ‡^�^ñó ðò)ò")ó)r6   r  c                 óÆ  — | j                   d   dz   }|j                  |dz
  f| j                  ¬«      }t        d|dz
  «      D �]  }|j                  d«      }| |df   }| |df   }||k\  rH||j	                  ||j
                  ¬«      |z
     }t        j                  |d«      j                  |«      }||k\  rH||j	                  ||j
                  ¬«      |z
     }	t        j                  |d«      j                  |	«      }t        j                  |d«      j                  | |df   «      }t        j                  ||«      j                  |j                  |«      «      }�Œ |S ©Nr   r.   r…   )r�   rn   )
ÚshaperM   r†   r4  rB   rR  rc  rd  re  Úmax)
r_   rH   rw   ÚBr^  r?  r!  r"  Úb_leftÚb_rights
             r7   rÞ  rÞ  X  s7  € à	�‰�‰
�Q‰€AØ
�‰�!�A‘#�˜qŸw™wˆÓ'€AÜ�1�a˜!‘e�_ˆØ�H‰H�T‹NˆØ��A�‰wˆØ�!�Q�$‘ˆØ�1Š9Ø�r—z‘z $¨b¯h©h�zÓ7¸!Ñ;Ñ<ˆFÜ—‘�q˜!“× Ñ  Ó(ˆAØ�AŠ:Ø˜Ÿ
™
 5°·±˜
Ó9¸AÑ=Ñ>ˆGÜ—‘�q˜!“× Ñ  Ó)ˆAÜ�F‰F�1�a‹L×Ñ˜Q˜q !˜t™WÓ%ˆÜ�F‰F�1�a‹L×Ñ˜RŸV™V A›YÓ'Šð ð €Hr6   r�   c                 óÖ  — | j                   d   dz   }|j                  | |«      }|j                  |dz
  f|¬«      }t        d|dz
  «      D �]  }|j                  d«      }| |df   }	| |df   }
|	|k\  rH||j	                  |	|j
                  ¬«      |z
     }t        j                  |d«      j                  |«      }|
|k\  rH||j	                  |
|j
                  ¬«      |z
     }t        j                  |d«      j                  |«      }t        j                  |d«      j                  |||f   «      }t        j                  ||«      j                  |j                  |«      «      }�Œ |S rr  )
rs  Úresult_typerM   r4  rB   rR  rc  rd  re  rt  )r_   ru  rY  rH   rw   r†   ru  r^  r?  r!  r"  rv  rw  s                r7   rï  rï  k  sC  € à	�‰�‰
�Q‰€AØ�N‰N˜1˜aÓ €EØ
�‰�!�A‘#�˜uˆÓ%€AÜ�1�a˜!‘e�_ˆØ�H‰H�T‹NˆØ��A�‰wˆØ�!�Q�$‘ˆØ�1Š9Ø�r—z‘z $¨b¯h©h�zÓ7¸!Ñ;Ñ<ˆFÜ—‘�q˜!“× Ñ  Ó(ˆAØ�AŠ:Ø˜Ÿ
™
 5°·±˜
Ó9¸AÑ=Ñ>ˆGÜ—‘�q˜!“× Ñ  Ó)ˆAÜ�F‰F�1�a‹L×Ñ˜Q˜q !˜t™WÓ%ˆÜ�F‰F�1�a‹L×Ñ˜RŸV™V A›YÓ'Šð ð €Hr6   c                 ó  — t         j                  j                  d«       d}t         j                  j                  |d«      }| j	                  t        |«      «      }t        |«      }t        ||j                  «       kD  «       t        |j                  «       |j                  «       kD  «       t        |j                  «       |j                  «       k(  «       t        |j                  «       |j                  «       k7  «       y )Né   é2   rÔ   )
rq   rr   ÚseedÚrandnrB   r   r   r   r¢  r£  )rH   r:  rk   r_   Útrees        r7   Útest_node_comparer€    s¨   € ä‡I�I‡N�N�2ÔØ€DÜ
�	‰	�‰˜˜aÓ €AØ
�
‰
”4˜“7Ó€AÜ�1‹:€DÜˆD�4—=‘=“?Ñ"Ô#ÜˆD�N‰NÓ˜tŸ}™}›Ñ.Ô/ÜˆD�N‰NÓ §¡Ó 0Ñ0Ô1ÜˆD�N‰NÓ §¡£Ñ/Õ0r6   c           	      ó~  — t         j                  j                  d«       d}t         j                  j                  |d«      }| j	                  t        |«      «      }t        |«      }t        |d d …df   | j                  |«      dd¬«       t        |d d …df   | j                  |«      dd¬«       t        t        j                  |«      j                  d«      t        j                  |d	z
  dd«      «       t        |d d …d
gf   t        |d¬«      d¬«       t        |d d …d
dgf   t        |ddg¬«      d¬«       t        |d d …dd
gf   t        |ddg¬«      d¬«       t        |«      }| j	                  |D �cg c]  }|j                  ‘Œ c}«      }t        |d d …t        j                  |dg«      f   t        |d¬«      d¬«       t        |d d …t        j                  |ddg«      f   t        |ddg¬«      d¬«       t        |d d …t        j                  |ddg«      f   t        |ddg¬«      d¬«       y c c}w )Nr{  r|  rÔ   r   ro   F)rp   Úcheck_dtyperƒ   r.   éûÿÿÿrA   )Ú
n_clustersr•   iöÿÿÿrØ   )Úheight)rq   rr   r}  r~  rB   r   r    r*   ÚarangerM   r   rt  r"   ÚdistÚsearchsorted)rH   r:  rk   r_   ÚcutreeÚnodesrŸ  Úheightss           r7   Útest_cut_treerŒ  Œ  sÝ  € ä‡I�I‡N�N�2ÔØ€DÜ
�	‰	�‰˜˜aÓ €AØ
�
‰
”4˜“7Ó€AÜ�a‹[€Fô �Fš1˜a˜4‘L "§)¡)¨D£/¸È5ÕQÜ�Fš1˜b˜5‘M 2§8¡8¨D£>¸È5ÕQÜ”—‘˜FÓ#×'Ñ'¨Ó*¬B¯I©I°d¸Q±hÀÀBÓ,GÔHä�Fš1˜r˜d˜7‘O¤X¨a¸AÔ%>ÀUÕKÜ�Fš1˜r 3˜i˜<Ñ(¬(°1À!ÀRÀÔ*IÐPUÕVÜ�Fš1˜s B˜i˜<Ñ(¬(°1À"ÀaÀÔ*IÐPUÕVä Ó"€EØ�j‰j±Ó6±¨˜$Ÿ)›)°Ñ6Ó7€Gä�Fš1œbŸo™o¨g¸°sÓ;Ð;Ñ<Ü˜Q qÔ)°õ7ä�Fš1œbŸo™o¨g¸¸2°wÓ?Ð?Ñ@Ü˜Q¨¨2 wÔ/°eõ=ä�Fš1œbŸo™o¨g¸¸A°wÓ?Ð?Ñ@Ü˜Q¨¨A wÔ/°eö=ùò 7s   Å:H:c                 óö  — t        | j                  t        t        j                  «      «      | j                  t        j                  «      «      }t        j
                  }t        || j                  |«      d¬«       t        | j                  t        t        j                  d«      «      | j                  t        j                  «      «      }t        j                  }t        || j                  |«      d¬«       y )NrY   rZ   r   rh   )	r!   rB   r	   r/   r]   r~   r*   rk   Úlinkage_X_ward_olo)rH   r_   r`   s      r7   r   r   ¨  s²   € ô 	˜bŸj™j¬Ô1D×1KÑ1KÓ)LÓMØ Ÿj™jÔ)<×)CÑ)CÓDó	F€Aä#×=Ñ=€IÜ�A�r—z‘z )Ó,°5Õ9ô 	˜bŸj™j¬Ô1D×1FÑ1FÈÓ)OÓPØ Ÿj™jÔ)<×)>Ñ)>Ó?ó	A€Aä#×6Ñ6€IÜ�A�r—z‘z )Ó,°5Ö9r6   z"`Heap` only supports NumPy backend)Únp_onlyr>   c                 óÔ  — | j                  g d¢«      }t        |«      }|j                  «       }t        |d   d«       t        |d   d«       |j	                  «        |j                  «       }t        |d   d«       t        |d   d«       |j                  dd«       |j                  «       }t        |d   d	«       t        |d   d
«       |j	                  «        |j	                  «        |j                  dd«       |j                  «       }t        |d   d«       t        |d   d«       |j	                  «        |j                  «       }t        |d   d«       t        |d   d«       y )N)rn   rƒ   r   ç      ø¿r�   Úkeyr�   r  r‘  r.   rƒ   g      @rn   r   rØ   rÔ   )rB   r&   Úget_minr   Ú
remove_minÚchange_value)rH   rš   ÚheapÚpairs       r7   Ú	test_Heapr˜  ·  s%  € à�Z‰ZÒ+Ó,€FÜ�‹<€Dà�<‰<‹>€DÜ��e‘˜aÔ Ü��g‘ Ô%à‡O�OÔØ�<‰<‹>€DÜ��e‘˜aÔ Ü��g‘ Ô#à×Ñ�a˜ÔØ�<‰<‹>€DÜ��e‘˜aÔ Ü��g‘ Ô"à‡O�OÔØ‡O�OÔà×Ñ�a˜ÔØ�<‰<‹>€DÜ��e‘˜aÔ Ü��g‘ Ô"à‡O�OÔØ�<‰<‹>€DÜ��e‘˜aÔ Ü��g‘ Õ#r6   )\Únumpyrq   Únumpy.testingr   r   r   r   r’   r   rD   Úscipy.cluster.hierarchyr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   Úscipy.cluster._hierarchyr&   Úscipy.spatial.distancer'   Úscipy._lib._array_apir(   r)   r*   r+   Úscipy._lib.array_api_extraÚ_libÚarray_api_extrarc  Ú	threadingr-   Ú r/   r1   Ú
matplotlibÚuseÚmatplotlib.pyplotÚpyplotr  ro  Ú	Exceptionr�   rœ   r:   r    rª   rË   rà   rô   r  r  rA  rr  r‰  r—  r¦  r¸  rÙ  ræ  rö  r  rÞ  rï  r€  rŒ  r   r˜  r5   r6   r7   Ú<module>r©     sc  ðóD ß TÓ TÛ Ý *÷K÷ K÷ K÷ K÷ K÷ K÷ K÷ Kõ *Ý (÷Eó Eç (Ð (å å !÷(ñ (ðÛà€J‡N�N�5Ôå#Ø€Oð —;‘;×/Ñ/Ð ñ �7Ó÷c/ð c/ó ðc/ñL �<Ó ÷	Tð 	Tó !ð	Tñ �8Ó÷&&ð &&ó ð&&ñR Ð$ oÓ6÷$ð $ó 7ð$ñ@ �<Ó ÷+ð +ó !ð+ñ  �8Ó÷*2ð *2ó ð*2ñZ �7Ó÷:ð :ó ð:ñ �=Ó!÷R7ð R7ó "ðR7ñj Ð#Ó$÷Q6ð Q6ó %ðQ6ñh �;Ó÷I1ð I1ó  ðI1÷X +ñ  +ñF �; Ó(÷$ð $ó )ð$ñD �:Ó÷0)ð 0)ó ð0)ñf �<Ó ÷Fð Fó !ðFñR �8Ó÷4ð 4ó ð4ñ2 �;Ó÷"4ð "4ó  ð"4ñJ �8Ó÷/4ð /4ó ð/4ñd �:Ó÷H)ð H)ó ðH)òVð& /0°Bó ñ( �7Óñ	1ó ð	1ñ �8Óñ=ó ð=ñ6 Ð(Ó)ñ:ó *ð:ñ ˜$Ð'KÔLñ$ó Mñ$øð_# ò ØƒOðús   ÂI< É<JÊJ