§
    µ³Ùg�Ë  ã                   óÀ  — d dl Zd dlmZmZmZmZmZ d dlZd dlm	Z
 d dl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( d dl)m*Z* d dl+m,Z, d dl-m.Z. d dl/m0Z0m1Z1 d d	l2m3Z3 d
dl4m5Z5 	 d dl6Z6 e6j7        d¦  «         d dl8m9Z: dZ;n# e<$ r dZ;Y nw xY we.ej=         >                    d¦  «        gZ?ej=        j@        Z@ G d„ d¦  «        ZA e@d¬¦  «         G d„ d¦  «        ¦   «         ZB e@d¬¦  «         G d„ d¦  «        ¦   «         ZC e@d¬¦  «         G d„ d¦  «        ¦   «         ZD G d„ d¦  «        ZE e@d¬¦  «         G d„ d¦  «        ¦   «         ZF e@d¬¦  «         G d„ d¦  «        ¦   «         ZG e@dd¬ ¦  «         G d!„ d"¦  «        ¦   «         ZH e@d¬¦  «         G d#„ d$¦  «        ¦   «         ZI e@d¬¦  «         G d%„ d&¦  «        ¦   «         ZJ G d'„ d(¦  «        ZK e@d¬¦  «         G d)„ d*¦  «        ¦   «         ZL e@d¬¦  «         G d+„ d,¦  «        ¦   «         ZM e@d¬¦  «         G d-„ d.¦  «        ¦   «         ZN e@d¬¦  «         G d/„ d0¦  «        ¦   «         ZO G d1„ d2¦  «        ZP G d3„ d4¦  «        ZQ e@d¬¦  «         G d5„ d6¦  «        ¦   «         ZRd7„ ZSd8efd9„ZTej=        jU         e@d¬¦  «        d:„ ¦   «         ¦   «         ZVd;„ ZW e@d¬¦  «        d<„ ¦   «         ZX e@d¬¦  «        d=„ ¦   «         ZY e@dd>¬ ¦  «        d?„ ¦   «         ZZ e@d¬¦  «        d@„ ¦   «         Z[ e@ddA¬ ¦  «        dB„ ¦   «         Z\ e@d¬¦  «        dC„ ¦   «         Z]dS )Dé    N)Úassert_allcloseÚassert_equalÚassert_array_equalÚassert_Úassert_warns)Úraises)ÚClusterWarningÚlinkageÚfrom_mlab_linkageÚto_mlab_linkageÚnum_obs_linkageÚinconsistentÚcophenetÚfclusterdataÚfclusterÚis_isomorphicÚsingleÚ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Ú_LINKAGE_METHODS)Úpdist)ÚHeap)Úarray_api_compatible)Úxp_assert_closeÚxp_assert_equal©ÚLocké   )Úhierarchy_test_dataÚAggTFÚskip_xp_backendsc                   ó  — e Zd Z ed¬¦  «        d„ ¦   «         Z ed¬¦  «        d„ ¦   «         Z ed¬¦  «        d„ ¦   «         Zd„ Z ed¬¦  «        d„ ¦   «         Zd„ Z	 ed¬¦  «        d	„ ¦   «         Z
 ed¬¦  «        d
„ ¦   «         ZdS )ÚTestLinkageT©Úcpu_onlyc                 ó€   — |                      |j        gdgdz  z   ¦  «        }t          t          t          |¦  «         d S )Nç        é   )ÚasarrayÚnanÚassert_raisesÚ
ValueErrorr
   ©ÚselfÚxpÚys      úX/granary/edev/quantum/lib/python3.11/site-packages/scipy/cluster/tests/test_hierarchy.pyÚ3test_linkage_non_finite_elements_in_distance_matrixz?TestLinkage.test_linkage_non_finite_elements_in_distance_matrixN   s<   € ð �JŠJ˜œ�x 3 %¨¡'Ñ)Ñ*Ô*ˆÝ•j¥'¨1Ñ-Ô-Ð-Ð-Ð-ó    c                 óf   — |                      d¦  «        }t          t          t          |¦  «         d S )N©r   )Úzerosr9   r:   r
   r;   s      r?   Ú"test_linkage_empty_distance_matrixz.TestLinkage.test_linkage_empty_distance_matrixU   s+   € ð �HŠH�T‰NŒNˆÝ•j¥'¨1Ñ-Ô-Ð-Ð-Ð-rA   c                 ó<   — dD ]}|                       ||¦  «         Œd S )N)r   ÚcompleteÚaverageÚweighted)Úcheck_linkage_tdist©r<   r=   Úmethods      r?   Útest_linkage_tdistzTestLinkage.test_linkage_tdist[   s4   € àCð 	1ð 	1ˆFØ×$Ò$ V¨RÑ0Ô0Ð0Ð0ð	1ð 	1rA   c                 óÚ   — t          |                     t          j        ¦  «        |¦  «        }t	          t          d|z   ¦  «        }t          ||                     |¦  «        d¬¦  «         d S )NÚlinkage_ytdist_ç»½×Ùß|Û=©Úatol©r
   r7   r-   ÚytdistÚgetattrr(   )r<   rL   r=   ÚZÚ	expectedZs        r?   rJ   zTestLinkage.check_linkage_tdist`   s^   € å�B—J’JÕ2Ô9Ñ:Ô:¸FÑCÔCˆÝÕ/Ð1BÀVÑ1KÑLÔLˆ	Ý˜˜2Ÿ:š: iÑ0Ô0°uÐ=Ñ=Ô=Ð=Ð=Ð=rA   c                 ó<   — dD ]}|                       ||¦  «         Œd S )N)ÚcentroidÚmedianÚward)Úcheck_linkage_qrK   s      r?   Útest_linkage_XzTestLinkage.test_linkage_Xf   s4   € à4ð 	-ð 	-ˆFØ× Ò  ¨Ñ,Ô,Ð,Ð,ð	-ð 	-rA   c                 óÊ  — t          |                     t          j        ¦  «        |¦  «        }t	          t          d|z   ¦  «        }t          ||                     |¦  «        d¬¦  «         t          j        j         	                    t          j        d¬¦  «        }t          |                     |¦  «        |¦  «        }t          ||                     |¦  «        d¬¦  «         d S )NÚ
linkage_X_ç�íµ ÷Æ°>rQ   Ú	euclidean)Úmetric)
r
   r7   r-   ÚXrU   r(   ÚscipyÚspatialÚdistancer%   )r<   rL   r=   rV   rW   r>   s         r?   r\   zTestLinkage.check_linkage_qk   s¿   € å�B—J’JÕ2Ô4Ñ5Ô5°vÑ>Ô>ˆÝÕ/°ÀÑ1FÑGÔGˆ	Ý˜˜2Ÿ:š: iÑ0Ô0°uÐ=Ñ=Ô=Ð=åŒMÔ"×(Ò(Õ)<Ô)>Ø0;ð )ñ =ô =ˆå�B—J’J˜q‘M”M 6Ñ*Ô*ˆÝ˜˜2Ÿ:š: iÑ0Ô0°uÐ=Ñ=Ô=Ð=Ð=Ð=rA   c                 ó‚  — t           j                             d¦  «        }d}|                     |d¦  «        }t	          |¦  «        }t          j        ¦   «         D ]d\  }}t          j        |||¦  «        }t          | 	                    |¦  «        |¦  «        }	t          |	| 	                    |¦  «        dd¬¦  «         Œed S )Nr   é   é   g›+¡†›„=çVçž¯Ò<)ÚrtolrR   )ÚnpÚrandomÚRandomStateÚrandr%   r$   Úitemsr#   r
   r7   r(   )
r<   r=   ÚrngÚnrc   ÚdrL   ÚcodeÚ	Z_trivialrV   s
             r?   Útest_compare_with_trivialz%TestLinkage.test_compare_with_trivialv   sµ   € åŒi×#Ò# AÑ&Ô&ˆØˆØ�HŠH�Q˜‰NŒNˆÝ�!‰HŒHˆå,Ô2Ñ4Ô4ð 	Nð 	N‰LˆF�DÝ"Ô*¨1¨a°Ñ6Ô6ˆIÝ˜Ÿ
š
 1™œ vÑ.Ô.ˆAÝ˜A˜rŸzšz¨)Ñ4Ô4¸5ÀuÐMÑMÔMÐMÐMð	Nð 	NrA   c                 óÖ   — t          |                     t          j        ¦  «        d¬¦  «        }t	          t          d¦  «        }t          ||                     |¦  «        d¬¦  «         d S )NT)Úoptimal_orderingÚlinkage_ytdist_single_olorP   rQ   rS   )r<   r=   rV   rW   s       r?   Útest_optimal_leaf_orderingz&TestLinkage.test_optimal_leaf_ordering‚   s\   € å�B—J’JÕ2Ô9Ñ:Ô:ÈTÐRÑRÔRˆÝÕ/Ð1LÑMÔMˆ	Ý˜˜2Ÿ:š: iÑ0Ô0°uÐ=Ñ=Ô=Ð=Ð=Ð=rA   N)Ú__name__Ú
__module__Ú__qualname__r/   r@   rE   rM   rJ   r]   r\   rv   rz   © rA   r?   r1   r1   L   s/  € € € € € àÐ˜tÐ$Ñ$Ô$ð.ð .ñ %Ô$ð.ð Ð˜tÐ$Ñ$Ô$ð.ð .ñ %Ô$ð.ð
 Ð˜tÐ$Ñ$Ô$ð1ð 1ñ %Ô$ð1ð>ð >ð >ð Ð˜tÐ$Ñ$Ô$ð-ð -ñ %Ô$ð-ð	>ð 	>ð 	>ð Ð˜tÐ$Ñ$Ô$ð	Nð 	Nñ %Ô$ð	Nð Ð˜tÐ$Ñ$Ô$ð>ð >ñ %Ô$ð>ð >ð >rA   r1   r2   c                   óF  — e Zd Z ej        g d¢g d¢g¦  «         ej        g d¢g d¢g¦  «         ej        g d¢g d¢g¦  «         ej        g d¢g d¢g¦  «         ej        g d¢g d¢g¦  «         ej        g d¢g d¢g¦  «         ej        g d¢g d¢g¦  «        dœZd„ Zd„ Zd	S )
ÚTestLinkageTies)r   r,   çß'Üež ö?ri   )ri   é   r�   r‚   )ri   r‚   gß'Üež @r‚   )ri   r‚   gçeÌvø @r‚   )ri   r‚   g€©Ž˜@r‚   ©r   rG   rH   rI   rY   rZ   r[   c                 ó<   — dD ]}|                       ||¦  «         Œd S ©Nrƒ   )Úcheck_linkage_tiesrK   s      r?   Útest_linkage_tiesz!TestLinkageTies.test_linkage_ties�   s6   € ð5ð 	0ð 	0ˆFà×#Ò# F¨BÑ/Ô/Ð/Ð/ð	0ð 	0rA   c                 óÈ   — |                      ddgddgddgg¦  «        }t          ||¬¦  «        }| j        |         }t          ||                      |¦  «        d¬¦  «         d S )Néÿÿÿÿr   r,   ©rL   r`   rQ   )r7   r
   Ú_expectationsr(   )r<   rL   r=   rc   rV   rW   s         r?   r†   z"TestLinkageTies.check_linkage_ties¢   sl   € Ø�JŠJ˜˜R˜ 1 a &¨1¨a¨&Ð1Ñ2Ô2ˆÝ�A˜fÐ%Ñ%Ô%ˆØÔ& vÔ.ˆ	Ý˜˜2Ÿ:š: iÑ0Ô0°uÐ=Ñ=Ô=Ð=Ð=Ð=rA   N)r{   r|   r}   rl   Úarrayr‹   r‡   r†   r~   rA   r?   r€   r€   ‰   sX  € € € € € ð �"”(Ð1Ð1Ð1Ø1Ð1Ð1ð3ñ 4ô 4à�B”HÐ3Ð3Ð3Ø3Ð3Ð3ð5ñ 6ô 6à�2”8Ð2Ð2Ð2Ø2Ð2Ð2ð4ñ 5ô 5à�B”HÐ3Ð3Ð3Ø3Ð3Ð3ð5ñ 6ô 6à�B”HÐ3Ð3Ð3Ø3Ð3Ð3ð5ñ 6ô 6à�"”(Ð1Ð1Ð1Ø1Ð1Ð1ð3ñ 4ô 4à�”Ð/Ð/Ð/Ø/Ð/Ð/ð1ñ 2ô 2ðð €Mð"0ð 0ð 0ð
>ð >ð >ð >ð >rA   r€   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚTestInconsistentc                 óP   — t           j        D ]}|                      ||¦  «         Œd S ©N)r-   Úinconsistent_ytdistÚcheck_inconsistent_tdist)r<   r=   Údepths      r?   Útest_inconsistent_tdistz(TestInconsistent.test_inconsistent_tdist¬   s7   € Ý(Ô<ð 	5ð 	5ˆEØ×)Ò)¨%°Ñ4Ô4Ð4Ð4ð	5ð 	5rA   c                 óÆ   — |                      t          j        ¦  «        }t          t	          ||¦  «        |                      t          j        |         ¦  «        ¦  «         d S r�   )r7   r-   Úlinkage_ytdist_singler(   r   r‘   )r<   r“   r=   rV   s       r?   r’   z)TestInconsistent.check_inconsistent_tdist°   s\   € Ø�JŠJÕ*Ô@ÑAÔAˆÝ� Q¨Ñ.Ô.ØŸ
š
Õ#6Ô#JÈ5Ô#QÑRÔRñ	Tô 	Tð 	Tð 	Tð 	TrA   N)r{   r|   r}   r”   r’   r~   rA   r?   rŽ   rŽ   ©   s7   € € € € € ð5ð 5ð 5ðTð Tð Tð Tð TrA   rŽ   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚTestCopheneticDistancec                 óè   — |                      g d¢¦  «        }|                      t          j        ¦  «        }t          |¦  «        }t	          ||                      ||j        ¬¦  «        d¬¦  «         d S )N©é  é'  éÿ   r�   rœ   rœ   r›   r›   rœ   rœ   rœ   éŠ   éÛ   rœ   rœ   ©ÚdtyperP   rQ   )r7   r-   r–   r   r(   Úfloat64)r<   r=   Ú	expectedMrV   ÚMs        r?   Útest_linkage_cophenet_tdist_Zz4TestCopheneticDistance.test_linkage_cophenet_tdist_Z¹   sq   € à—J’Jð  9ð  9ð  9ñ :ô :ˆ	à�JŠJÕ*Ô@ÑAÔAˆÝ�Q‰KŒKˆÝ˜˜2Ÿ:š: i°r´z˜:ÑBÔBÈÐOÑOÔOÐOÐOÐOrA   c                 ól  — |                      t          j        ¦  «        }t          ||                      t          j        ¦  «        ¦  «        \  }}|                      g d¢|j        ¬¦  «        }|                      d|j        ¬¦  «        d         }t          ||d¬¦  «         t          ||d¬¦  «         d S )Nrš   r    g*É»2Qzä?r~   rP   rQ   )r7   r-   r–   r   rT   r¢   r(   )r<   r=   rV   Úcr¤   r£   Ú	expectedcs          r?   Útest_linkage_cophenet_tdist_Z_Yz6TestCopheneticDistance.test_linkage_cophenet_tdist_Z_YÁ   s¶   € à�JŠJÕ*Ô@ÑAÔAˆÝ˜!˜RŸZšZÕ(;Ô(BÑCÔCÑDÔD‰ˆˆAØ—J’Jð  9ð  9ð  9Ø@BÄ
ð ñ Lô Lˆ	à—J’JÐ?ÀrÄz�JÑRÔRÐSUÔVˆ	Ý˜˜9¨5Ð1Ñ1Ô1Ð1Ý˜˜9¨5Ð1Ñ1Ô1Ð1Ð1Ð1rA   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          |                     |¦  «        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N)r5   ç      ð?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)Úpytestr   r:   r   r7   )r<   r=   Úarrs      r?   Útest_gh_22183z$TestCopheneticDistance.test_gh_22183Ë   s  € ð
 "Ð!Ð!Ø"Ð"Ð"Ø!Ð!Ð!Ø"Ð"Ð"Ø!Ð!Ð!Ø"Ð"Ð"Ø"Ð"Ð"Ø#Ð#Ð#Ø#Ð#Ð#Ø$Ð$Ð$Ø$Ð$Ð$ð
&ˆõ Œ]�:Ð-EÐFÑFÔFð 	&ð 	&Ý�R—Z’Z ‘_”_Ñ%Ô%Ð%ð	&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&ð 	&ð 	&s   ¿#A/Á/A3Á6A3N)r{   r|   r}   r¥   r©   r»   r~   rA   r?   r˜   r˜   ¶   sD   € € € € € ðPð Pð Pð2ð 2ð 2ð&ð &ð &ð &ð &rA   r˜   c                   óh   — e Zd Zd„ Z ed¬¦  «        d„ ¦   «         Z ed¬¦  «        d„ ¦   «         ZdS )ÚTestMLabLinkageConversionc                 ó²   — |                      g |j        ¬¦  «        }t          t          |¦  «        |¦  «         t          t	          |¦  «        |¦  «         d S )Nr    )r7   r¢   r)   r   r   )r<   r=   rc   s      r?   Ú"test_mlab_linkage_conversion_emptyz<TestMLabLinkageConversion.test_mlab_linkage_conversion_emptyá   sP   € à�JŠJ�r ¤ˆJÑ,Ô,ˆÝÕ)¨!Ñ,Ô,¨aÑ0Ô0Ð0Ý�¨Ñ*Ô*¨AÑ.Ô.Ð.Ð.Ð.rA   Tr2   c                 óJ  — |                      g d¢g¦  «        }|                      g d¢g¦  «        }t          t          |¦  «        |                      ||j        ¬¦  «        d¬¦  «         t          t	          |¦  «        |                      ||j        ¬¦  «        d¬¦  «         d S )N)r5   r«   r®   r¬   ©r,   ri   r‚   r    rj   ©rk   )r7   r(   r   r¢   r   )r<   r=   rV   ÚZms       r?   Ú'test_mlab_linkage_conversion_single_rowzATestMLabLinkageConversion.test_mlab_linkage_conversion_single_rowç   s±   € ð �JŠJÐ(Ð(Ð(Ð)Ñ*Ô*ˆØ�ZŠZ˜˜˜˜Ñ$Ô$ˆÝÕ)¨"Ñ-Ô-¨r¯zªz¸!À2Ä:¨zÑ/NÔ/NØ"ð	$ñ 	$ô 	$ð 	$å�¨Ñ*Ô*¨B¯JªJ°rÀÄ¨JÑ,LÔ,LØ"ð	$ñ 	$ô 	$ð 	$ð 	$ð 	$rA   c                 óT  — |                      g d¢g d¢g d¢g d¢g d¢g¦  «        }|                      g d¢g d¢g d¢g d	¢g d
¢g|j        ¬¦  «        }t          t          |¦  «        |d¬¦  «         t          t	          |¦  «        |                      ||j        ¬¦  «        d¬¦  «         d S )N)r‚   é   rž   )é   r6   rŸ   )r,   é   r�   )ri   é	   r›   )é   é
   rœ   )r¬   r°   ç     @a@r¬   )r®   r¯   ç     `k@r¬   )r5   r²   ç     ào@r®   )r«   r³   ç     Àp@r¯   )r±   r´   ç     pr@r±   r    rj   rÂ   )r7   r¢   r(   r   r   )r<   r=   rÃ   rV   s       r?   Ú*test_mlab_linkage_conversion_multiple_rowszDTestMLabLinkageConversion.test_mlab_linkage_conversion_multiple_rowsñ   sñ   € ð �ZŠZ˜˜˜ k k kØ$˜˜ k k k°<°<°<ðAñ Bô Bˆà�JŠJÐ*Ð*Ð*Ø*Ð*Ð*Ø*Ð*Ð*Ø*Ð*Ð*Ø*Ð*Ð*ð	,ð
  œZð ñ )ô )ˆõ 	Õ)¨"Ñ-Ô-¨q°uÐ=Ñ=Ô=Ð=Ý�¨Ñ*Ô*¨B¯JªJ°rÀÄ¨JÑ,LÔ,LØ"ð	$ñ 	$ô 	$ð 	$ð 	$ð 	$rA   N)r{   r|   r}   r¿   r/   rÄ   rÑ   r~   rA   r?   r½   r½   ß   sw   € € € € € ð/ð /ð /ð Ð˜tÐ$Ñ$Ô$ð$ð $ñ %Ô$ð$ð Ð˜tÐ$Ñ$Ô$ð$ð $ñ %Ô$ð$ð $ð $rA   r½   c                   ó>   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
ÚTestFclusterc                 óê   — t           j        D ]}|                      |d|¦  «         Œt           j        D ]}|                      |d|¦  «         Œt           j        D ]}|                      |d|¦  «         Œd S ©Nr   rf   Úmaxclust)r-   Úfcluster_inconsistentÚcheck_fclusterdataÚfcluster_distanceÚfcluster_maxclust©r<   r=   Úts      r?   Útest_fclusterdatazTestFcluster.test_fclusterdata  s“   € Ý$Ô:ð 	;ð 	;ˆAØ×#Ò# A ~°rÑ:Ô:Ð:Ð:Ý$Ô6ð 	7ð 	7ˆAØ×#Ò# A z°2Ñ6Ô6Ð6Ð6Ý$Ô6ð 	7ð 	7ˆAØ×#Ò# A z°2Ñ6Ô6Ð6Ð6ð	7ð 	7rA   c                 ó  — |                      t          t          d|z   ¦  «        |         ¦  «        }|                      t          j        ¦  «        }t	          |||¬¦  «        }t          t          ||¦  «        ¦  «         d S ©NÚ	fcluster_©Ú	criterionrÜ   )r7   rU   r-   ÚQ_Xr   r   r   )r<   rÜ   râ   r=   Ú	expectedTrc   ÚTs          r?   rØ   zTestFcluster.check_fclusterdata  sp   € à—J’J�wÕ':¸KÈ)Ñ<SÑTÔTÐUVÔWÑXÔXˆ	Ø�JŠJÕ*Ô.Ñ/Ô/ˆÝ˜ i°1Ð5Ñ5Ô5ˆÝ•˜a Ñ+Ô+Ñ,Ô,Ð,Ð,Ð,rA   c                 óê   — t           j        D ]}|                      |d|¦  «         Œt           j        D ]}|                      |d|¦  «         Œt           j        D ]}|                      |d|¦  «         Œd S rÕ   )r-   r×   Úcheck_fclusterrÙ   rÚ   rÛ   s      r?   Útest_fclusterzTestFcluster.test_fcluster  s“   € Ý$Ô:ð 	7ð 	7ˆAØ×Ò  >°2Ñ6Ô6Ð6Ð6Ý$Ô6ð 	3ð 	3ˆAØ×Ò  :¨rÑ2Ô2Ð2Ð2Ý$Ô6ð 	3ð 	3ˆAØ×Ò  :¨rÑ2Ô2Ð2Ð2ð	3ð 	3rA   c                 ó  — |                      t          t          d|z   ¦  «        |         ¦  «        }t          |                      t          j        ¦  «        ¦  «        }t          |||¬¦  «        }t          t          ||¦  «        ¦  «         d S rß   )r7   rU   r-   r   rã   r   r   r   )r<   rÜ   râ   r=   rä   rV   rå   s          r?   rç   zTestFcluster.check_fcluster  sx   € à—J’J�wÕ':¸KÈ)Ñ<SÑTÔTÐUVÔWÑXÔXˆ	Ý�2—:’:Õ1Ô5Ñ6Ô6Ñ7Ô7ˆÝ�Q )¨qÐ1Ñ1Ô1ˆÝ•˜a Ñ+Ô+Ñ,Ô,Ð,Ð,Ð,rA   c                 óš   — t           j        D ]}|                      ||¦  «         Œt           j        D ]}|                      ||¦  «         Œd S r�   )r-   rÙ   Úcheck_fcluster_monocritrÚ   Ú check_fcluster_maxclust_monocritrÛ   s      r?   Útest_fcluster_monocritz#TestFcluster.test_fcluster_monocrit"  sb   € Ý$Ô6ð 	0ð 	0ˆAØ×(Ò(¨¨BÑ/Ô/Ð/Ð/Ý$Ô6ð 	9ð 	9ˆAØ×1Ò1°!°RÑ8Ô8Ð8Ð8ð	9ð 	9rA   c                 ó"  — |                      t          j        |         ¦  «        }t          |                      t          j        ¦  «        ¦  «        }t          ||dt          |¦  «        ¬¦  «        }t          t          ||¦  «        ¦  «         d S )NÚmonocrit©râ   rï   )	r7   r-   rÙ   r   rã   r   r   r   r   ©r<   rÜ   r=   rä   rV   rå   s         r?   rë   z$TestFcluster.check_fcluster_monocrit(  ss   € Ø—J’JÕ2ÔDÀQÔGÑHÔHˆ	Ý�2—:’:Õ1Ô5Ñ6Ô6Ñ7Ô7ˆÝ�Q˜ Z½(À1¹+¼+ÐFÑFÔFˆÝ•˜a Ñ+Ô+Ñ,Ô,Ð,Ð,Ð,rA   c                 ó"  — |                      t          j        |         ¦  «        }t          |                      t          j        ¦  «        ¦  «        }t          ||dt          |¦  «        ¬¦  «        }t          t          ||¦  «        ¦  «         d S )NÚmaxclust_monocritrð   )	r7   r-   rÚ   r   rã   r   r   r   r   rñ   s         r?   rì   z-TestFcluster.check_fcluster_maxclust_monocrit.  st   € Ø—J’JÕ2ÔDÀQÔGÑHÔHˆ	Ý�2—:’:Õ1Ô5Ñ6Ô6Ñ7Ô7ˆÝ�Q˜Ð%8Å8ÈAÁ;Ä;ÐOÑOÔOˆÝ•˜a Ñ+Ô+Ñ,Ô,Ð,Ð,Ð,rA   c                 ó  — |                      dgdgdgg¦  «        }t          |¦  «        }t          t          |dd¬¦  «        |                      g d¢¦  «        ¦  «         t          t          |dd¬¦  «        |                      g d¢¦  «        ¦  «         t          t          |d	d¬¦  «        |                      g d
¢¦  «        ¦  «         t          t          |dd¬¦  «        |                      g d
¢¦  «        ¦  «         d S )Nr,   rÇ   r6   rÖ   )rÜ   râ   ©r,   r,   r,   ri   )ri   r,   r,   r‚   rÁ   )r7   r   r   r   ©r<   r=   r>   rV   s       r?   Útest_fcluster_maxclust_gh_12651z,TestFcluster.test_fcluster_maxclust_gh_126514  s  € Ø�JŠJ˜˜˜a˜S 1 #�Ñ'Ô'ˆÝ�1‰IŒIˆÝ�8 A¨°jÐAÑAÔAØŸ:š: i i iÑ0Ô0ñ	2ô 	2ð 	2å�8 A¨°jÐAÑAÔAØŸ:š: i i iÑ0Ô0ñ	2ô 	2ð 	2å�8 A¨°jÐAÑAÔAØŸ:š: i i iÑ0Ô0ñ	2ô 	2ð 	2å�8 A¨°jÐAÑAÔAØŸ:š: i i iÑ0Ô0ñ	2ô 	2ð 	2ð 	2ð 	2rA   N)r{   r|   r}   rÝ   rØ   rè   rç   rí   rë   rì   r÷   r~   rA   r?   rÓ   rÓ     sŒ   € € € € € ð7ð 7ð 7ð-ð -ð -ð3ð 3ð 3ð-ð -ð -ð9ð 9ð 9ð-ð -ð -ð-ð -ð -ð
2ð 
2ð 
2ð 
2ð 
2rA   rÓ   c                   ó   — e Zd Zd„ ZdS )ÚTestLeadersc                 óÈ  — t           j        }t          |¦  «        }|                     |¦  «        }t	          |¦  «        }t          |dd¬¦  «        }|                     g d¢¦  «        |                     g d¢¦  «        f}|                     ||j        ¬¦  «        }t          ||¦  «        }t          t          j
        |¦  «        t          j
        |¦  «        d¬¦  «         d S )	NrÖ   r‚   rá   )é5   é7   é8   )ri   r‚   r,   r    rj   rÂ   )r-   rã   r%   r7   r
   r   Úint32r   r   rl   Úconcatenate)r<   r=   rc   ÚYrV   rå   ÚLrightÚLs           r?   Útest_leaders_singlezTestLeaders.test_leaders_singleD  sÀ   € åÔ#ˆÝ�!‰HŒHˆØ�JŠJ�q‰MŒMˆÝ�A‰JŒJˆÝ�Q *°Ð2Ñ2Ô2ˆØ—*’*˜\˜\˜\Ñ*Ô*¨B¯JªJ°y°y°yÑ,AÔ,AÐBˆØ�JŠJ�q ¤ˆJÑ)Ô)ˆÝ�A�q‰MŒMˆÝ�œ qÑ)Ô)­2¬>¸&Ñ+AÔ+AÈÐNÑNÔNÐNÐNÐNrA   N)r{   r|   r}   r  r~   rA   r?   rù   rù   A  s(   € € € € € ð
Oð 
Oð 
Oð 
Oð 
OrA   rù   z+`is_isomorphic` only supports NumPy backend©Únp_onlyÚreasonc                   óx   — e Zd Z edd¬¦  «        d„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd	„ Z	d
„ Z
d„ Zd„ Zd„ Zdd„ZdS )ÚTestIsIsomorphicTz,array-likes only supported for NumPy backendr  c                 óV   — t          g d¢g d¢¦  «        sJ ‚t          g g ¦  «        sJ ‚d S ©Nrõ   )ri   ri   ri   )r   )r<   r=   s     r?   Útest_array_likez TestIsIsomorphic.test_array_likeU  s>   € õ ˜Y˜Y˜Y¨	¨	¨	Ñ2Ô2Ð2Ð2Ð2Ý˜R Ñ$Ô$Ð$Ð$Ð$Ð$Ð$rA   c                 óª   — |                      g d¢¦  «        }|                      g d¢¦  «        }t          ||¦  «        sJ ‚t          ||¦  «        sJ ‚d S r
  ©r7   r   ©r<   r=   ÚaÚbs       r?   Útest_is_isomorphic_1z%TestIsIsomorphic.test_is_isomorphic_1[  ó^   € à�JŠJ�y�y�yÑ!Ô!ˆØ�JŠJ�y�y�yÑ!Ô!ˆÝ˜Q Ñ"Ô"Ð"Ð"Ð"Ý˜Q Ñ"Ô"Ð"Ð"Ð"Ð"Ð"rA   c                 óª   — |                      g d¢¦  «        }|                      g d¢¦  «        }t          ||¦  «        sJ ‚t          ||¦  «        sJ ‚d S )N)r,   rÊ   r,   )ri   r‚   ri   r  r  s       r?   Útest_is_isomorphic_2z%TestIsIsomorphic.test_is_isomorphic_2b  r  rA   c                 ó~   — |                      g ¦  «        }|                      g ¦  «        }t          ||¦  «        sJ ‚d S r�   r  r  s       r?   Útest_is_isomorphic_3z%TestIsIsomorphic.test_is_isomorphic_3i  s<   € à�JŠJ�r‰NŒNˆØ�JŠJ�r‰NŒNˆÝ˜Q Ñ"Ô"Ð"Ð"Ð"Ð"Ð"rA   c                 óª   — |                      g d¢¦  «        }|                      g d¢¦  «        }t          ||¦  «        sJ ‚t          ||¦  «        sJ ‚d S )NrÁ   )r,   r‚   ri   r  r  s       r?   Útest_is_isomorphic_4Az&TestIsIsomorphic.test_is_isomorphic_4Ao  ó`   € ð �JŠJ�y�y�yÑ!Ô!ˆØ�JŠJ�y�y�yÑ!Ô!ˆÝ˜Q Ñ"Ô"Ð"Ð"Ð"Ý˜Q Ñ"Ô"Ð"Ð"Ð"Ð"Ð"rA   c                 ó²   — |                      g d¢¦  «        }|                      g d¢¦  «        }t          ||¦  «        du sJ ‚t          ||¦  «        du sJ ‚d S )N)r,   ri   r‚   r‚   )r,   r‚   ri   r‚   Fr  r  s       r?   Útest_is_isomorphic_4Bz&TestIsIsomorphic.test_is_isomorphic_4Bw  sj   € ð �JŠJ�|�|�|Ñ$Ô$ˆØ�JŠJ�|�|�|Ñ$Ô$ˆÝ˜Q Ñ"Ô" eÐ+Ð+Ð+Ð+Ý˜Q Ñ"Ô" eÐ+Ð+Ð+Ð+Ð+Ð+rA   c                 óª   — |                      g d¢¦  «        }|                      g d¢¦  «        }t          ||¦  «        sJ ‚t          ||¦  «        sJ ‚d S )N)rÊ   ri   r‚   )rÆ   r‚   ri   r  r  s       r?   Útest_is_isomorphic_4Cz&TestIsIsomorphic.test_is_isomorphic_4C  r  rA   c                 ó@   — dD ]}|                       d||¬¦  «         Œd S )N©ri   r‚   r6   éè  ©r=   ©Úhelp_is_isomorphic_randperm©r<   r=   Úncs      r?   Útest_is_isomorphic_5z%TestIsIsomorphic.test_is_isomorphic_5‡  s;   € ð ð 	>ð 	>ˆBØ×,Ò,¨T°2¸"Ð,Ñ=Ô=Ð=Ð=ð	>ð 	>rA   c                 óD   — dD ]}|                       d|dd|¬¦  «         Œd S )Nr  r   Tr6   r!  r"  r$  s      r?   Útest_is_isomorphic_6z%TestIsIsomorphic.test_is_isomorphic_6�  sC   € ð ð 	Gð 	GˆBØ×,Ò,¨T°2°t¸QÀ2Ð,ÑFÔFÐFÐFð	Gð 	GrA   c                 ó†   — |                      g d¢¦  «        }|                      g d¢¦  «        }t          ||¦  «        rJ ‚d S )NrÁ   rõ   r  r  s       r?   Útest_is_isomorphic_7z%TestIsIsomorphic.test_is_isomorphic_7”  sH   € à�JŠJ�y�y�yÑ!Ô!ˆØ�JŠJ�y�y�yÑ!Ô!ˆÝ   AÑ&Ô&Ð&Ð&Ð&Ð&Ð&rA   Fr   c                óÐ  — t          d¦  «        D �]T}t          j                             |¦  «        |z                       t
          ¦  «        }t          j        |j        t
          ¬¦  «        }t          j                             |¦  «        }	t          d|j	        d         ¦  «        D ]}
|	||
                  ||
<   Œ|rOt          j                             |¦  «        }||d|…         xx         dz  cc<   ||d|…         xx         |z  cc<   | 
                    |¦  «        }| 
                    |¦  «        }t          ||¦  «        | k    sJ ‚t          ||¦  «        | k    sJ ‚�ŒVd S )Nr‚   r    r   r,   )Úrangerl   rm   ro   ÚastypeÚintrD   ÚsizeÚpermutationÚshaper7   r   )r<   ÚnobsÚ	nclustersÚnonisoÚnerrorsr=   Úkr  r  ÚPÚiÚQs               r?   r#  z,TestIsIsomorphic.help_is_isomorphic_randpermš  sX  € å�q‘”ð 	7ñ 	7ˆAÝ”—’ Ñ%Ô%¨	Ñ1×9Ò9½#Ñ>Ô>ˆAÝ”˜œ¥sÐ+Ñ+Ô+ˆAÝ”	×%Ò% iÑ0Ô0ˆAÝ˜1˜aœg aœjÑ)Ô)ð ð �Ø˜˜1œ”w��!‘�Øð -Ý”I×)Ò)¨$Ñ/Ô/�Ø�!�A�g�I”,��” 1Ñ$��‘Ø�!�A�g�I”,��” 9Ñ,��‘Ø—
’
˜1‘”ˆAØ—
’
˜1‘”ˆAÝ   AÑ&Ô&¨v¨:Ò6Ð6Ð6Ð6Ý   AÑ&Ô&¨v¨:Ò6Ð6Ð6Ð6Ñ6ð	7ð 	7rA   N)Fr   )r{   r|   r}   r/   r  r  r  r  r  r  r  r&  r(  r*  r#  r~   rA   r?   r  r  Q  sì   € € € € € ð Ð˜dØKðMñ Mô Mð%ð %ñMô Mð%ð#ð #ð #ð#ð #ð #ð#ð #ð #ð#ð #ð #ð,ð ,ð ,ð#ð #ð #ð>ð >ð >ðGð Gð Gð'ð 'ð 'ð7ð 7ð 7ð 7ð 7ð 7rA   r  c                   óÜ   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Z edd¬¦  «        d	„ ¦   «         Z	 edd¬¦  «        d
„ ¦   «         Z
 edd¬¦  «        d„ ¦   «         Z edd¬¦  «        d„ ¦   «         ZdS )ÚTestIsValidLinkagec                 óH   — dD ]\  }}}|                       ||||¦  «         Œd S ©N))ri   r6   F)ri   r‚   F)r,   rÇ   T)ri   rÇ   T)Ú#check_is_valid_linkage_various_size©r<   r=   ÚnrowÚncolÚvalids        r?   Ú"test_is_valid_linkage_various_sizez5TestIsValidLinkage.test_is_valid_linkage_various_size¯  sE   € ð">ð 	Lð 	LÑˆD�$˜à×4Ò4°T¸4ÀÈÑKÔKÐKÐKð	Lð 	LrA   c                 óè   — |                      g d¢g d¢g|j        ¬¦  «        }|d |…d |…f         }t          t          |¦  «        |k    ¦  «         |st	          t
          t          |d¬¦  «         d S d S ©N)r   r,   r®   ri   r6   )r‚   ri   r¯   r‚   r‚   r    T©Úthrow)r7   r¢   r   r   r9   r:   )r<   r@  rA  rB  r=   rV   s         r?   r>  z6TestIsValidLinkage.check_is_valid_linkage_various_size´  sš   € à�JŠJÐ)Ð)Ð)Ø)Ð)Ð)ð+Ø24´*ð ñ >ô >ˆàˆeˆtˆe�U�d�UˆlŒOˆÝÕ  Ñ#Ô# uÒ,Ñ-Ô-Ð-Øð 	GÝ�*Õ&6¸ÀÐFÑFÔFÐFÐFÐFð	Gð 	GrA   c                 óÀ   — |                      g d¢g d¢g|j        ¬¦  «        }t          t          |¦  «        du ¦  «         t	          t
          t          |d¬¦  «         d S ©N©r   r,   r®   ri   ©r‚   ri   r¯   r‚   r    FTrF  )r7   Úint64r   r   r9   Ú	TypeError©r<   r=   rV   s      r?   Útest_is_valid_linkage_int_typez1TestIsValidLinkage.test_is_valid_linkage_int_type½  sk   € à�JŠJ˜˜˜Ø&˜˜ð(Ø/1¬xð ñ 9ô 9ˆåÕ  Ñ#Ô# uÐ,Ñ-Ô-Ð-Ý•iÕ!1°1¸DÐAÑAÔAÐAÐAÐArA   c                 ó´   — |                      d|j        ¬¦  «        }t          t          |¦  «        du ¦  «         t	          t
          t          |d¬¦  «         d S ©N©r   rÇ   r    FTrF  )rD   r¢   r   r   r9   r:   rN  s      r?   Útest_is_valid_linkage_emptyz.TestIsValidLinkage.test_is_valid_linkage_emptyÄ  sS   € à�HŠH�V 2¤:ˆHÑ.Ô.ˆÝÕ  Ñ#Ô# uÐ,Ñ-Ô-Ð-Ý•jÕ"2°A¸TÐBÑBÔBÐBÐBÐBrA   c                 ó  — t          ddd¦  «        D ]l}t          j                             ||dz
  z  dz  ¦  «        }|                     |¦  «        }t          |¦  «        }t          t          |¦  «        du ¦  «         Œmd S ©NrÇ   é   r‚   r,   ri   T)r,  rl   rm   ro   r7   r
   r   r   ©r<   r=   r8  r>   rV   s        r?   Útest_is_valid_linkage_4_and_upz1TestIsValidLinkage.test_is_valid_linkage_4_and_upÊ  s   € õ �q˜"˜a‘”ð 	1ð 	1ˆAÝ”	—’˜q ! A¡#™w¨™zÑ*Ô*ˆAØ—
’
˜1‘”ˆAÝ˜‘
”
ˆAÝÕ$ QÑ'Ô'¨4Ð/Ñ0Ô0Ð0Ð0ð		1ð 	1rA   ú	jax.numpyú)jax arrays do not support item assignment©r  c                 óP  — t          ddd¦  «        D ]“}t          j                             ||dz
  z  dz  ¦  «        }|                     |¦  «        }t          |¦  «        }d||dz  df<   t          t          |¦  «        du ¦  «         t          t          t          |d	¬
¦  «         Œ”d S )NrÇ   rV  r‚   r,   ri   éþÿÿÿr   FTrF  ©
r,  rl   rm   ro   r7   r
   r   r   r9   r:   rW  s        r?   Ú-test_is_valid_linkage_4_and_up_neg_index_leftz@TestIsValidLinkage.test_is_valid_linkage_4_and_up_neg_index_leftÓ  ó¬   € õ
 �q˜"˜a‘”ð 	Gð 	GˆAÝ”	—’˜q ! A¡#™w¨™zÑ*Ô*ˆAØ—
’
˜1‘”ˆAÝ˜‘
”
ˆAØˆAˆa�‰d�1ˆf‰IÝÕ$ QÑ'Ô'¨5Ð0Ñ1Ô1Ð1Ý�*Õ&6¸ÀÐFÑFÔFÐFÐFð	Gð 	GrA   c                 óP  — t          ddd¦  «        D ]“}t          j                             ||dz
  z  dz  ¦  «        }|                     |¦  «        }t          |¦  «        }d||dz  df<   t          t          |¦  «        du ¦  «         t          t          t          |d¬	¦  «         Œ”d S ©
NrÇ   rV  r‚   r,   ri   r]  FTrF  r^  rW  s        r?   Ú.test_is_valid_linkage_4_and_up_neg_index_rightzATestIsValidLinkage.test_is_valid_linkage_4_and_up_neg_index_rightà  r`  rA   c                 óP  — t          ddd¦  «        D ]“}t          j                             ||dz
  z  dz  ¦  «        }|                     |¦  «        }t          |¦  «        }d||dz  df<   t          t          |¦  «        du ¦  «         t          t          t          |d¬	¦  «         Œ”d S ©
NrÇ   rV  r‚   r,   ri   g      à¿FTrF  r^  rW  s        r?   Ú'test_is_valid_linkage_4_and_up_neg_distz:TestIsValidLinkage.test_is_valid_linkage_4_and_up_neg_distí  s¬   € õ
 �q˜"˜a‘”ð 	Gð 	GˆAÝ”	—’˜q ! A¡#™w¨™zÑ*Ô*ˆAØ—
’
˜1‘”ˆAÝ˜‘
”
ˆAØˆAˆa�‰d�1ˆf‰IÝÕ$ QÑ'Ô'¨5Ð0Ñ1Ô1Ð1Ý�*Õ&6¸ÀÐFÑFÔFÐFÐFð	Gð 	GrA   c                 óP  — t          ddd¦  «        D ]“}t          j                             ||dz
  z  dz  ¦  «        }|                     |¦  «        }t          |¦  «        }d||dz  df<   t          t          |¦  «        du ¦  «         t          t          t          |d¬	¦  «         Œ”d S rb  r^  rW  s        r?   Ú)test_is_valid_linkage_4_and_up_neg_countsz<TestIsValidLinkage.test_is_valid_linkage_4_and_up_neg_countsú  r`  rA   N)r{   r|   r}   rC  r>  rO  rS  rX  r/   r_  rc  rf  rh  r~   rA   r?   r;  r;  ¬  sa  € € € € € ðLð Lð Lð
Gð Gð GðBð Bð BðCð Cð Cð1ð 1ð 1ð Ð�kØHðJñ Jô Jð	Gð 	GñJô Jð	Gð Ð�kØHðJñ Jô Jð	Gð 	GñJô Jð	Gð Ð�kØHðJñ Jô Jð	Gð 	GñJô Jð	Gð Ð�kØHðJñ Jô Jð	Gð 	GñJô Jð	Gð 	Gð 	GrA   r;  c                   ó°   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Z edd¬¦  «        d	„ ¦   «         Z	 edd¬¦  «        d
„ ¦   «         Z
 edd¬¦  «        d„ ¦   «         ZdS )ÚTestIsValidInconsistentc                 óÀ   — |                      g d¢g d¢g|j        ¬¦  «        }t          t          |¦  «        du ¦  «         t	          t
          t          |d¬¦  «         d S rI  )r7   rL  r   r   r9   rM  ©r<   r=   ÚRs      r?   Útest_is_valid_im_int_typez1TestIsValidInconsistent.test_is_valid_im_int_type  sg   € à�JŠJ˜˜˜Ø&˜˜ð(Ø/1¬xð ñ 9ô 9ˆå•˜A‘” %Ð'Ñ(Ô(Ð(Ý•i¥¨a°tÐ<Ñ<Ô<Ð<Ð<Ð<rA   c                 óH   — dD ]\  }}}|                       ||||¦  «         Œd S r=  )Úcheck_is_valid_im_various_sizer?  s        r?   Útest_is_valid_im_various_sizez5TestIsValidInconsistent.test_is_valid_im_various_size  sE   € ð">ð 	Gð 	GÑˆD�$˜à×/Ò/°°d¸EÀ2ÑFÔFÐFÐFð	Gð 	GrA   c                 óè   — |                      g d¢g d¢g|j        ¬¦  «        }|d |…d |…f         }t          t          |¦  «        |k    ¦  «         |st	          t
          t          |d¬¦  «         d S d S rE  )r7   r¢   r   r   r9   r:   )r<   r@  rA  rB  r=   rm  s         r?   rp  z6TestIsValidInconsistent.check_is_valid_im_various_size  s–   € à�JŠJÐ)Ð)Ð)Ø)Ð)Ð)ð+Ø24´*ð ñ >ô >ˆàˆeˆtˆe�U�d�UˆlŒOˆÝ•˜A‘” %Ò'Ñ(Ô(Ð(Øð 	BÝ�*¥k°1¸DÐAÑAÔAÐAÐAÐAð	Bð 	BrA   c                 ó´   — |                      d|j        ¬¦  «        }t          t          |¦  «        du ¦  «         t	          t
          t          |d¬¦  «         d S rQ  )rD   r¢   r   r   r9   r:   rl  s      r?   Útest_is_valid_im_emptyz.TestIsValidInconsistent.test_is_valid_im_empty   sO   € à�HŠH�V 2¤:ˆHÑ.Ô.ˆÝ•˜A‘” %Ð'Ñ(Ô(Ð(Ý•j¥+¨q¸Ð=Ñ=Ô=Ð=Ð=Ð=rA   c                 ó   — t          ddd¦  «        D ]{}t          j                             ||dz
  z  dz  ¦  «        }|                     |¦  «        }t          |¦  «        }t          |¦  «        }t          t          |¦  «        du ¦  «         Œ|d S rU  )	r,  rl   rm   ro   r7   r
   r   r   r   ©r<   r=   r8  r>   rV   rm  s         r?   Útest_is_valid_im_4_and_upz1TestIsValidInconsistent.test_is_valid_im_4_and_up&  s‡   € õ �q˜"˜a‘”ð 	,ð 	,ˆAÝ”	—’˜q ! A¡#™w¨™zÑ*Ô*ˆAØ—
’
˜1‘”ˆAÝ˜‘
”
ˆAÝ˜Q‘”ˆAÝ•K ‘N”N dÐ*Ñ+Ô+Ð+Ð+ð	,ð 	,rA   rY  rZ  r[  c                 ón  — t          ddd¦  «        D ]¢}t          j                             ||dz
  z  dz  ¦  «        }|                     |¦  «        }t          |¦  «        }t          |¦  «        }d||dz  df<   t          t          |¦  «        du ¦  «         t          t          t          |d	¬
¦  «         Œ£d S )NrÇ   rV  r‚   r,   ri   ç       Àr   FTrF  ©r,  rl   rm   ro   r7   r
   r   r   r   r9   r:   rv  s         r?   Ú(test_is_valid_im_4_and_up_neg_index_leftz@TestIsValidInconsistent.test_is_valid_im_4_and_up_neg_index_left0  ó³   € õ �q˜"˜a‘”ð 	Bð 	BˆAÝ”	—’˜q ! A¡#™w¨™zÑ*Ô*ˆAØ—
’
˜1‘”ˆAÝ˜‘
”
ˆAÝ˜Q‘”ˆAØˆAˆa�‰d�1ˆf‰IÝ•K ‘N”N eÐ+Ñ,Ô,Ð,Ý�*¥k°1¸DÐAÑAÔAÐAÐAð	Bð 	BrA   c                 ón  — t          ddd¦  «        D ]¢}t          j                             ||dz
  z  dz  ¦  «        }|                     |¦  «        }t          |¦  «        }t          |¦  «        }d||dz  df<   t          t          |¦  «        du ¦  «         t          t          t          |d¬	¦  «         Œ£d S )
NrÇ   rV  r‚   r,   ri   ry  FTrF  rz  rv  s         r?   Ú)test_is_valid_im_4_and_up_neg_index_rightzATestIsValidInconsistent.test_is_valid_im_4_and_up_neg_index_right=  r|  rA   c                 ón  — t          ddd¦  «        D ]¢}t          j                             ||dz
  z  dz  ¦  «        }|                     |¦  «        }t          |¦  «        }t          |¦  «        }d||dz  df<   t          t          |¦  «        du ¦  «         t          t          t          |d¬	¦  «         Œ£d S re  rz  rv  s         r?   Ú"test_is_valid_im_4_and_up_neg_distz:TestIsValidInconsistent.test_is_valid_im_4_and_up_neg_distJ  r|  rA   N)r{   r|   r}   rn  rq  rp  rt  rw  r/   r{  r~  r€  r~   rA   r?   rj  rj    sú   € € € € € ð=ð =ð =ðGð Gð Gð
Bð Bð Bð>ð >ð >ð,ð ,ð ,ð Ð�kÐ*UÐVÑVÔVð
Bð 
Bñ WÔVð
Bð Ð�kÐ*UÐVÑVÔVð
Bð 
Bñ WÔVð
Bð Ð�kÐ*UÐVÑVÔVð
Bð 
Bñ WÔVð
Bð 
Bð 
BrA   rj  c                   ón   — e Zd Z ed¬¦  «        d„ ¦   «         Zd„ Zd„ Z ed¬¦  «        d„ ¦   «         ZdS )ÚTestNumObsLinkageTr2   c                 ót   — |                      d|j        ¬¦  «        }t          t          t          |¦  «         d S ©NrR  r    )rD   r¢   r9   r:   r   rN  s      r?   Útest_num_obs_linkage_emptyz,TestNumObsLinkage.test_num_obs_linkage_emptyZ  s3   € ð �HŠH�V 2¤:ˆHÑ.Ô.ˆÝ•j¥/°1Ñ5Ô5Ð5Ð5Ð5rA   c                 ó~   — |                      g d¢g|j        ¬¦  «        }t          t          |¦  «        d¦  «         d S )NrJ  r    ri   ©r7   r¢   r   r   rN  s      r?   Útest_num_obs_linkage_1x4z*TestNumObsLinkage.test_num_obs_linkage_1x4`  s>   € à�JŠJ˜˜˜Ð'¨r¬zˆJÑ:Ô:ˆÝ•_ QÑ'Ô'¨Ñ+Ô+Ð+Ð+Ð+rA   c                 ó„   — |                      g d¢g d¢g|j        ¬¦  «        }t          t          |¦  «        d¦  «         d S )NrJ  rK  r    r‚   r‡  rN  s      r?   Útest_num_obs_linkage_2x4z*TestNumObsLinkage.test_num_obs_linkage_2x4e  sO   € à�JŠJ˜˜˜Ø&˜˜ð(Ø/1¬zð ñ ;ô ;ˆå•_ QÑ'Ô'¨Ñ+Ô+Ð+Ð+Ð+rA   c                 ó   — t          ddd¦  «        D ]k}t          j                             ||dz
  z  dz  ¦  «        }|                     |¦  «        }t          |¦  «        }t          t          |¦  «        |¦  «         Œld S )NrÇ   rV  r‚   r,   ri   )r,  rl   rm   ro   r7   r
   r   r   rW  s        r?   Útest_num_obs_linkage_4_and_upz/TestNumObsLinkage.test_num_obs_linkage_4_and_upk  s{   € õ �q˜"˜a‘”ð 	0ð 	0ˆAÝ”	—’˜q ! A¡#™w¨™zÑ*Ô*ˆAØ—
’
˜1‘”ˆAÝ˜‘
”
ˆAÝ�¨Ñ+Ô+¨QÑ/Ô/Ð/Ð/ð		0ð 	0rA   N)r{   r|   r}   r/   r…  rˆ  rŠ  rŒ  r~   rA   r?   r‚  r‚  X  s„   € € € € € àÐ˜tÐ$Ñ$Ô$ð6ð 6ñ %Ô$ð6ð
,ð ,ð ,ð
,ð ,ð ,ð Ð˜tÐ$Ñ$Ô$ð0ð 0ñ %Ô$ð0ð 0ð 0rA   r‚  c                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestLeavesListc                 ó¤   — |                      g d¢g|j        ¬¦  «        }t          |¦  «         t          t	          |¦  «        ddgd¬¦  «         d S )NrJ  r    r   r,   rj   rÂ   ©r7   r¢   r   r   r   rN  s      r?   Útest_leaves_list_1x4z#TestLeavesList.test_leaves_list_1x4y  sP   € à�JŠJ˜˜˜Ð'¨r¬zˆJÑ:Ô:ˆÝ�‰
Œ
ˆ
Ý� A™œ¨¨A¨°UÐ;Ñ;Ô;Ð;Ð;Ð;rA   c                 óª   — |                      g d¢g d¢g|j        ¬¦  «        }t          |¦  «         t          t	          |¦  «        g d¢d¬¦  «         d S )NrJ  rK  r    )r   r,   ri   rj   rÂ   r�  rN  s      r?   Útest_leaves_list_2x4z#TestLeavesList.test_leaves_list_2x4  sa   € à�JŠJ˜˜˜Ø&˜˜ð(Ø/1¬zð ñ ;ô ;ˆå�‰
Œ
ˆ
Ý� A™œ¨	¨	¨	¸Ð>Ñ>Ô>Ð>Ð>Ð>rA   c                 ó<   — dD ]}|                       ||¦  «         Œd S r…   )Úcheck_leaves_list_QrK   s      r?   Útest_leaves_list_Qz!TestLeavesList.test_leaves_list_Q†  s6   € ð)ð 	1ð 	1ˆFà×$Ò$ V¨RÑ0Ô0Ð0Ð0ð	1ð 	1rA   c                 óä   — |                      t          j        ¦  «        }t          ||¦  «        }t	          |¦  «        }t          |                     ¦   «         t          |¦  «        d¬¦  «         d S )Nrj   rÂ   )r7   r-   rã   r
   r   r   Ú	pre_orderr   )r<   rL   r=   rc   rV   Únodes         r?   r•  z"TestLeavesList.check_leaves_list_Q‹  s\   € à�JŠJÕ*Ô.Ñ/Ô/ˆÝ�A�vÑÔˆÝ�q‰zŒzˆÝ˜ŸšÑ(Ô(­+°a©.¬.¸uÐEÑEÔEÐEÐEÐErA   c                 ó`  — |                      t          j        ¦  «        }t          |d¦  «        }t	          |¦  «        }t          |                     ¦   «         |                     ¦   «                              ¦   «         |                     ¦   «                              ¦   «         z   d¬¦  «         d S )Nr   rj   rÂ   )	r7   r-   rã   r
   r   r   r˜  Úget_leftÚ	get_right)r<   r=   rc   rV   r™  s        r?   Útest_Q_subtree_pre_orderz'TestLeavesList.test_Q_subtree_pre_order’  s–   € à�JŠJÕ*Ô.Ñ/Ô/ˆÝ�A�xÑ Ô ˆÝ�q‰zŒzˆÝ˜ŸšÑ(Ô(¨4¯=ª=©?¬?×+DÒ+DÑ+FÔ+FØ-1¯^ª^Ñ-=Ô-=×-GÒ-GÑ-IÔ-Iñ,Jà"ð	$ñ 	$ô 	$ð 	$ð 	$ð 	$rA   N)r{   r|   r}   r‘  r“  r–  r•  r�  r~   rA   r?   rŽ  rŽ  v  sb   € € € € € ð<ð <ð <ð?ð ?ð ?ð1ð 1ð 1ð
Fð Fð Fð$ð $ð $ð $ð $rA   rŽ  c                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestCorrespondc                 ó®   — |                      d|j        ¬¦  «        }|                      d|j        ¬¦  «        }t          t          t          ||¦  «         d S )NrC   r    rR  )rD   r¢   r9   r:   r   rö   s       r?   Útest_correspond_emptyz$TestCorrespond.test_correspond_emptyŸ  sJ   € à�HŠH�T ¤ˆHÑ,Ô,ˆØ�HŠH�U "¤*ˆHÑ-Ô-ˆÝ•j¥*¨a°Ñ3Ô3Ð3Ð3Ð3rA   c                 óø  — t          dd¦  «        D ]k}t          j                             ||dz
  z  dz  ¦  «        }|                     |¦  «        }t          |¦  «        }t          t          ||¦  «        ¦  «         Œlt          ddd¦  «        D ]k}t          j                             ||dz
  z  dz  ¦  «        }|                     |¦  «        }t          |¦  «        }t          t          ||¦  «        ¦  «         Œld S )Nri   rÇ   r,   rV  r‚   )r,  rl   rm   ro   r7   r
   r   r   rW  s        r?   Útest_correspond_2_and_upz'TestCorrespond.test_correspond_2_and_up¥  sæ   € õ �q˜!‘”ð 	&ð 	&ˆAÝ”	—’˜q ! A¡#™w¨™zÑ*Ô*ˆAØ—
’
˜1‘”ˆAÝ˜‘
”
ˆAÝ•J˜q !Ñ$Ô$Ñ%Ô%Ð%Ð%Ý�q˜"˜a‘”ð 	&ð 	&ˆAÝ”	—’˜q ! A¡#™w¨™zÑ*Ô*ˆAØ—
’
˜1‘”ˆAÝ˜‘
”
ˆAÝ•J˜q !Ñ$Ô$Ñ%Ô%Ð%Ð%ð		&ð 	&rA   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                             ||dz
  z  dz  ¦  «        }t          j                             ||dz
  z  dz  ¦  «        }|                     |¦  «        }|                     |¦  «        }t          |¦  «        }t          |¦  «        }t          ||¦  «        rJ ‚t          ||¦  «        rJ ‚ŒÂd S )Nri   rÇ   r‚   r6   r,   ©	ÚlistÚzipr,  rl   rm   ro   r7   r
   r   ©r<   r=   r8  Újr>   Úy2rV   ÚZ2s           r?   Útest_correspond_4_and_upz'TestCorrespond.test_correspond_4_and_up³  s/  € õ �C¥¥U¨1¨a¡[¤[Ñ 1Ô 1µ4½¸aÀ¹¼Ñ3DÔ3DÑEÔEÑFÔFÝ�C¥¥U¨1¨a¡[¤[Ñ 1Ô 1µ4½¸aÀ¹¼Ñ3DÔ3DÑEÔEÑFÔFñGð 		)ð 		)‰FˆQ�å”	—’˜q ! A¡#™w¨™zÑ*Ô*ˆAÝ”—’  1 Q¡3¡¨¡
Ñ+Ô+ˆBØ—
’
˜1‘”ˆAØ—’˜B‘”ˆBÝ˜‘
”
ˆAÝ˜‘”ˆBÝ! ! RÑ(Ô(Ð(Ð(Ð(Ý! " aÑ(Ô(Ð(Ð(Ð(Ð(ð		)ð 		)rA   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                             ||dz
  z  dz  ¦  «        }t          j                             ||dz
  z  dz  ¦  «        }|                     |¦  «        }|                     |¦  «        }t          |¦  «        }t          |¦  «        }t          ||¦  «        rJ ‚t          ||¦  «        rJ ‚ŒÂd S )Nri   rÊ   é   é   r,   r¥  r¨  s           r?   Útest_correspond_4_and_up_2z)TestCorrespond.test_correspond_4_and_up_2Á  s/  € õ �C¥¥U¨1¨a¡[¤[Ñ 1Ô 1µ4½¸bÀ"¹¼Ñ3FÔ3FÑGÔGÑHÔHÝ�C¥¥U¨1¨a¡[¤[Ñ 1Ô 1µ4½¸bÀ"¹¼Ñ3FÔ3FÑGÔGÑHÔHñIð 		)ð 		)‰FˆQ�å”	—’˜q ! A¡#™w¨™zÑ*Ô*ˆAÝ”—’  1 Q¡3¡¨¡
Ñ+Ô+ˆBØ—
’
˜1‘”ˆAØ—’˜B‘”ˆBÝ˜‘
”
ˆAÝ˜‘”ˆBÝ! ! RÑ(Ô(Ð(Ð(Ð(Ý! " aÑ(Ô(Ð(Ð(Ð(Ð(ð		)ð 		)rA   c                 ó  — t          dd¦  «        D ]r}t          j                             |d¦  «        }t	          |¦  «        }|                     |¦  «        }t          |¦  «        }t          t          |¦  «        |¦  «         Œsd S )Nri   rË   rÇ   )	r,  rl   rm   ro   r%   r7   r
   r   r   )r<   r=   rr   rc   r   rV   s         r?   Ú!test_num_obs_linkage_multi_matrixz0TestCorrespond.test_num_obs_linkage_multi_matrixÏ  sx   € å�q˜"‘”ð 	0ð 	0ˆAÝ”	—’˜q !Ñ$Ô$ˆAÝ�a‘”ˆAØ—
’
˜1‘”ˆAÝ˜‘
”
ˆAÝ�¨Ñ+Ô+¨QÑ/Ô/Ð/Ð/ð	0ð 	0rA   N)r{   r|   r}   r¡  r£  r¬  r°  r²  r~   rA   r?   rŸ  rŸ  œ  s_   € € € € € ð4ð 4ð 4ð&ð &ð &ð)ð )ð )ð)ð )ð )ð0ð 0ð 0ð 0ð 0rA   rŸ  c                   óv   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Z ed
d¬¦  «        d„ ¦   «         Zd„ ZdS )ÚTestIsMonotonicc                 ót   — |                      d|j        ¬¦  «        }t          t          t          |¦  «         d S r„  )rD   r¢   r9   r:   r   rN  s      r?   Útest_is_monotonic_emptyz'TestIsMonotonic.test_is_monotonic_emptyÜ  s1   € à�HŠH�V 2¤:ˆHÑ.Ô.ˆÝ•j¥,°Ñ2Ô2Ð2Ð2Ð2rA   c                 óf   — |                      g d¢g|j        ¬¦  «        }t          |¦  «        sJ ‚d S )N©r   r,   ç333333Ó?ri   r    ©r7   r¢   r   rN  s      r?   Útest_is_monotonic_1x4z%TestIsMonotonic.test_is_monotonic_1x4á  s8   € à�JŠJ˜˜˜Ð'¨r¬zˆJÑ:Ô:ˆÝ˜A‰ŒÐÐÐÐÐrA   c                 ól   — |                      g d¢g d¢g|j        ¬¦  «        }t          |¦  «        sJ ‚d S )Nr¸  )ri   r‚   çš™™™™™Ù?r‚   r    rº  rN  s      r?   Útest_is_monotonic_2x4_Tz'TestIsMonotonic.test_is_monotonic_2x4_Tæ  sI   € à�JŠJ˜˜˜Ø&˜˜ð(Ø/1¬zð ñ ;ô ;ˆå˜A‰ŒÐÐÐÐÐrA   c                 ól   — |                      g d¢g d¢g|j        ¬¦  «        }t          |¦  «        rJ ‚d S )N)r   r,   r½  ri   )ri   r‚   r¹  r‚   r    rº  rN  s      r?   Útest_is_monotonic_2x4_Fz'TestIsMonotonic.test_is_monotonic_2x4_Fì  sI   € à�JŠJ˜˜˜Ø&˜˜ð(Ø/1¬zð ñ ;ô ;ˆå ‘?”?Ð"Ð"Ð"Ð"Ð"rA   c                 ór   — |                      g d¢g d¢g d¢g|j        ¬¦  «        }t          |¦  «        sJ ‚d S )Nr¸  ©ri   r‚   r½  ri   ©rÇ   r6   g333333ã?rÇ   r    rº  rN  s      r?   Útest_is_monotonic_3x4_Tz'TestIsMonotonic.test_is_monotonic_3x4_Tò  sR   € à�JŠJ˜˜˜Ø&˜˜Ø&˜˜ð(à/1¬zð ñ ;ô ;ˆõ ˜A‰ŒÐÐÐÐÐrA   c                 ór   — |                      g d¢g d¢g d¢g|j        ¬¦  «        }t          |¦  «        rJ ‚d S )Nr¸  )ri   r‚   çš™™™™™É?ri   rÃ  r    rº  rN  s      r?   Útest_is_monotonic_3x4_F1z(TestIsMonotonic.test_is_monotonic_3x4_F1ù  óR   € à�JŠJ˜˜˜Ø&˜˜Ø&˜˜ð(à/1¬zð ñ ;ô ;ˆõ   ‘?”?Ð"Ð"Ð"Ð"Ð"rA   c                 ór   — |                      g d¢g d¢g d¢g|j        ¬¦  «        }t          |¦  «        rJ ‚d S )N)r   r,   gš™™™™™é?ri   rÂ  rÃ  r    rº  rN  s      r?   Útest_is_monotonic_3x4_F2z(TestIsMonotonic.test_is_monotonic_3x4_F2   rÈ  rA   c                 ór   — |                      g d¢g d¢g d¢g|j        ¬¦  «        }t          |¦  «        rJ ‚d S )Nr¸  rÂ  )rÇ   r6   rÆ  rÇ   r    rº  rN  s      r?   Útest_is_monotonic_3x4_F3z(TestIsMonotonic.test_is_monotonic_3x4_F3  rÈ  rA   c                 ó‚   — t          |                     t          j        ¦  «        d¦  «        }t	          |¦  «        sJ ‚d S ©Nr   ©r
   r7   r-   rT   r   rN  s      r?   Ú test_is_monotonic_tdist_linkage1z0TestIsMonotonic.test_is_monotonic_tdist_linkage1  s;   € õ �B—J’JÕ2Ô9Ñ:Ô:¸HÑEÔEˆÝ˜A‰ŒÐÐÐÐÐrA   rY  rZ  r[  c                 óŒ   — t          |                     t          j        ¦  «        d¦  «        }d|d<   t	          |¦  «        rJ ‚d S )Nr   r5   )ri   ri   rÏ  rN  s      r?   Ú test_is_monotonic_tdist_linkage2z0TestIsMonotonic.test_is_monotonic_tdist_linkage2  sD   € õ �B—J’JÕ2Ô9Ñ:Ô:¸HÑEÔEˆØˆˆ#‰Ý ‘?”?Ð"Ð"Ð"Ð"Ð"rA   c                 ó†   — |                      t          j        ¦  «        }t          |d¦  «        }t	          |¦  «        sJ ‚d S rÎ  )r7   r-   rã   r
   r   )r<   r=   rc   rV   s       r?   Útest_is_monotonic_Q_linkagez+TestIsMonotonic.test_is_monotonic_Q_linkage  s@   € ð �JŠJÕ*Ô.Ñ/Ô/ˆÝ�A�xÑ Ô ˆÝ˜A‰ŒÐÐÐÐÐrA   N)r{   r|   r}   r¶  r»  r¾  rÀ  rÄ  rÇ  rÊ  rÌ  rÐ  r/   rÒ  rÔ  r~   rA   r?   r´  r´  Ù  sØ   € € € € € ð3ð 3ð 3ð
ð ð ð
ð ð ð#ð #ð #ðð ð ð#ð #ð #ð#ð #ð #ð#ð #ð #ðð ð ð Ð�kÐ*UÐVÑVÔVð#ð #ñ WÔVð#ðð ð ð ð rA   r´  c                   ór   — e Zd Zd„ Z edd¬¦  «        d„ ¦   «         Z edd¬¦  «        d„ ¦   «         Zd„ ZdS )	ÚTestMaxDistsc                 ót   — |                      d|j        ¬¦  «        }t          t          t          |¦  «         d S r„  )rD   r¢   r9   r:   r   rN  s      r?   Útest_maxdists_empty_linkagez(TestMaxDists.test_maxdists_empty_linkage'  s1   € à�HŠH�V 2¤:ˆHÑ.Ô.ˆÝ•j¥(¨AÑ.Ô.Ð.Ð.Ð.rA   rY  rZ  r[  c                 ó¦   — |                      g d¢g|j        ¬¦  «        }t          |¦  «        }t          ||¦  «        }t	          ||d¬¦  «         d S )N©r   r,   r¹  rÇ   r    rj   rQ   )r7   r¢   r   Úcalculate_maximum_distancesr(   )r<   r=   rV   ÚMDÚ
expectedMDs        r?   Ú!test_maxdists_one_cluster_linkagez.TestMaxDists.test_maxdists_one_cluster_linkage,  sW   € ð �JŠJ˜˜˜Ð'¨r¬zˆJÑ:Ô:ˆÝ�a‰[Œ[ˆÝ0°°BÑ7Ô7ˆ
Ý˜˜J¨UÐ3Ñ3Ô3Ð3Ð3Ð3rA   c                 ó<   — dD ]}|                       ||¦  «         Œd S ©N©r   rG   r[   rY   rZ   )Úcheck_maxdists_Q_linkagerK   s      r?   Útest_maxdists_Q_linkagez$TestMaxDists.test_maxdists_Q_linkage4  s4   € àJð 	6ð 	6ˆFØ×)Ò)¨&°"Ñ5Ô5Ð5Ð5ð	6ð 	6rA   c                 óÆ   — |                      t          j        ¦  «        }t          ||¦  «        }t	          |¦  «        }t          ||¦  «        }t          ||d¬¦  «         d S )Nrj   rQ   )r7   r-   rã   r
   r   rÛ  r(   )r<   rL   r=   rc   rV   rÜ  rÝ  s          r?   râ  z%TestMaxDists.check_maxdists_Q_linkage9  s[   € à�JŠJÕ*Ô.Ñ/Ô/ˆÝ�A�vÑÔˆÝ�a‰[Œ[ˆÝ0°°BÑ7Ô7ˆ
Ý˜˜J¨UÐ3Ñ3Ô3Ð3Ð3Ð3rA   N)r{   r|   r}   rØ  r/   rÞ  rã  râ  r~   rA   r?   rÖ  rÖ  $  sŽ   € € € € € ð/ð /ð /ð
 Ð�kÐ*UÐVÑVÔVð4ð 4ñ WÔVð4ð Ð�kÐ*UÐVÑVÔVð6ð 6ñ WÔVð6ð4ð 4ð 4ð 4ð 4rA   rÖ  c                   ó    — e Zd Z ed¬¦  «        d„ ¦   «         Zd„ Z eddd¬¦  «        d„ ¦   «         Z eddd¬¦  «        d	„ ¦   «         Zd
„ ZdS )ÚTestMaxInconstsTr2   c                 ó®   — |                      d|j        ¬¦  «        }|                      d|j        ¬¦  «        }t          t          t          ||¦  «         d S r„  )rD   r¢   r9   r:   r   ©r<   r=   rV   rm  s       r?   Útest_maxinconsts_empty_linkagez.TestMaxInconsts.test_maxinconsts_empty_linkageD  sL   € ð �HŠH�V 2¤:ˆHÑ.Ô.ˆØ�HŠH�V 2¤:ˆHÑ.Ô.ˆÝ•j¥+¨q°!Ñ4Ô4Ð4Ð4Ð4rA   c                 óæ   — |                      g d¢g|j        ¬¦  «        }t          j                             dd¦  «        }|                      |¦  «        }t          t          t          ||¦  «         d S ©NrÚ  r    ri   rÇ   )r7   r¢   rl   rm   ro   r9   r:   r   rè  s       r?   Útest_maxinconsts_difrow_linkagez/TestMaxInconsts.test_maxinconsts_difrow_linkageK  s`   € ð �JŠJ˜˜˜Ð'¨r¬zˆJÑ:Ô:ˆÝŒI�NŠN˜1˜aÑ Ô ˆØ�JŠJ�q‰MŒMˆÝ•j¥+¨q°!Ñ4Ô4Ð4Ð4Ð4rA   rY  rZ  ©r  r3   c                 óê   — |                      g d¢g|j        ¬¦  «        }|                      g d¢g|j        ¬¦  «        }t          ||¦  «        }t          |||¬¦  «        }t	          ||d¬¦  «         d S )NrÚ  r    ©r   r   r   r¹  r!  rj   rQ   )r7   r¢   r   Ú!calculate_maximum_inconsistenciesr(   )r<   r=   rV   rm  rÜ  rÝ  s         r?   Ú$test_maxinconsts_one_cluster_linkagez4TestMaxInconsts.test_maxinconsts_one_cluster_linkageS  s~   € ð �JŠJ˜˜˜Ð'¨r¬zˆJÑ:Ô:ˆØ�JŠJ˜˜˜Ð'¨r¬zˆJÑ:Ô:ˆÝ˜˜AÑÔˆÝ6°q¸!ÀÐCÑCÔCˆ
Ý˜˜J¨UÐ3Ñ3Ô3Ð3Ð3Ð3rA   c                 ó<   — dD ]}|                       ||¦  «         Œd S rà  )Úcheck_maxinconsts_Q_linkagerK   s      r?   Útest_maxinconsts_Q_linkagez*TestMaxInconsts.test_maxinconsts_Q_linkage]  s7   € ð Kð 	9ð 	9ˆFØ×,Ò,¨V°RÑ8Ô8Ð8Ð8ð	9ð 	9rA   c                 óê   — |                      t          j        ¦  «        }t          ||¦  «        }t	          |¦  «        }t          ||¦  «        }t          |||¬¦  «        }t          ||d¬¦  «         d S )Nr!  rj   rQ   )r7   r-   rã   r
   r   r   rð  r(   )r<   rL   r=   rc   rV   rm  rÜ  rÝ  s           r?   ró  z+TestMaxInconsts.check_maxinconsts_Q_linkagec  so   € à�JŠJÕ*Ô.Ñ/Ô/ˆÝ�A�vÑÔˆÝ˜‰OŒOˆÝ˜˜AÑÔˆÝ6°q¸!ÀÐCÑCÔCˆ
Ý˜˜J¨UÐ3Ñ3Ô3Ð3Ð3Ð3rA   N)	r{   r|   r}   r/   ré  rì  rñ  rô  ró  r~   rA   r?   ræ  ræ  B  sÊ   € € € € € àÐ˜tÐ$Ñ$Ô$ð5ð 5ñ %Ô$ð5ð5ð 5ð 5ð Ð�kÐ*UØ#ð%ñ %ô %ð4ð 4ñ%ô %ð4ð Ð�kÐ*UØ#ð%ñ %ô %ð9ð 9ñ%ô %ð9ð4ð 4ð 4ð 4ð 4rA   ræ  c                   ó¾   — e Zd Zd„ Zd„ Z ed¬¦  «        d„ ¦   «         Zd„ Zd„ Zd„ Z	 ed	d
d¬¦  «        d„ ¦   «         Z
d„ Z ed	d
d¬¦  «        d„ ¦   «         Zd„ ZdS )ÚTestMaxRStatc                 ó<   — dD ]}|                       ||¦  «         Œd S )N)gffffff
@r‰   rÇ   )Úcheck_maxRstat_invalid_index©r<   r=   r8  s      r?   Útest_maxRstat_invalid_indexz(TestMaxRStat.test_maxRstat_invalid_indexo  s4   € Øð 	5ð 	5ˆAØ×-Ò-¨a°Ñ4Ô4Ð4Ð4ð	5ð 	5rA   c                 ó$  — |                      g d¢g|j        ¬¦  «        }|                      g d¢g|j        ¬¦  «        }t          |t          ¦  «        rt	          t
          t          |||¦  «         d S t	          t          t          |||¦  «         d S )NrÚ  r    rï  )r7   r¢   Ú
isinstancer.  r9   r:   r   rM  ©r<   r8  r=   rV   rm  s        r?   rù  z)TestMaxRStat.check_maxRstat_invalid_indexs  sˆ   € à�JŠJ˜˜˜Ð'¨r¬zˆJÑ:Ô:ˆØ�JŠJ˜˜˜Ð'¨r¬zˆJÑ:Ô:ˆÝ�a�ÑÔð 	8Ý�*¥h°°1°aÑ8Ô8Ð8Ð8Ð8å�)¥X¨q°!°QÑ7Ô7Ð7Ð7Ð7rA   Tr2   c                 óV   — t          d¦  «        D ]}|                      ||¦  «         Œd S ©NrÇ   )r,  Úcheck_maxRstat_empty_linkagerú  s      r?   Útest_maxRstat_empty_linkagez(TestMaxRStat.test_maxRstat_empty_linkage|  s:   € å�q‘”ð 	5ð 	5ˆAØ×-Ò-¨a°Ñ4Ô4Ð4Ð4ð	5ð 	5rA   c                 ó°   — |                      d|j        ¬¦  «        }|                      d|j        ¬¦  «        }t          t          t          |||¦  «         d S r„  )rD   r¢   r9   r:   r   rþ  s        r?   r  z)TestMaxRStat.check_maxRstat_empty_linkage�  sL   € à�HŠH�V 2¤:ˆHÑ.Ô.ˆØ�HŠH�V 2¤:ˆHÑ.Ô.ˆÝ•j¥(¨A¨q°!Ñ4Ô4Ð4Ð4Ð4rA   c                 óV   — t          d¦  «        D ]}|                      ||¦  «         Œd S r   )r,  Úcheck_maxRstat_difrow_linkagerú  s      r?   Útest_maxRstat_difrow_linkagez)TestMaxRStat.test_maxRstat_difrow_linkage‡  s:   € Ý�q‘”ð 	6ð 	6ˆAØ×.Ò.¨q°"Ñ5Ô5Ð5Ð5ð	6ð 	6rA   c                 óè   — |                      g d¢g|j        ¬¦  «        }t          j                             dd¦  «        }|                      |¦  «        }t          t          t          |||¦  «         d S rë  )r7   r¢   rl   rm   ro   r9   r:   r   rþ  s        r?   r  z*TestMaxRStat.check_maxRstat_difrow_linkage‹  sb   € ð �JŠJ˜˜˜Ð'¨r¬zˆJÑ:Ô:ˆÝŒI�NŠN˜1˜aÑ Ô ˆØ�JŠJ�q‰MŒMˆÝ•j¥(¨A¨q°!Ñ4Ô4Ð4Ð4Ð4rA   rY  rZ  rí  c                 óV   — t          d¦  «        D ]}|                      ||¦  «         Œd S r   )r,  Ú"check_maxRstat_one_cluster_linkagerú  s      r?   Ú!test_maxRstat_one_cluster_linkagez.TestMaxRStat.test_maxRstat_one_cluster_linkage“  s<   € õ �q‘”ð 	;ð 	;ˆAØ×3Ò3°A°rÑ:Ô:Ð:Ð:ð	;ð 	;rA   c                 óì   — |                      g d¢g|j        ¬¦  «        }|                      g d¢g|j        ¬¦  «        }t          ||d¦  «        }t          ||d|¦  «        }t	          ||d¬¦  «         d S )NrÚ  r    rï  r,   rj   rQ   )r7   r¢   r   rð  r(   )r<   r8  r=   rV   rm  rÜ  rÝ  s          r?   r	  z/TestMaxRStat.check_maxRstat_one_cluster_linkage™  s}   € à�JŠJ˜˜˜Ð'¨r¬zˆJÑ:Ô:ˆØ�JŠJ˜˜˜Ð'¨r¬zˆJÑ:Ô:ˆÝ�a˜˜AÑÔˆÝ6°q¸!¸QÀÑCÔCˆ
Ý˜˜J¨UÐ3Ñ3Ô3Ð3Ð3Ð3rA   c                 ób   — dD ]+}t          d¦  «        D ]}|                      |||¦  «         ŒŒ,d S )Nrá  rÇ   )r,  Úcheck_maxRstat_Q_linkage)r<   r=   rL   r8  s       r?   Útest_maxRstat_Q_linkagez$TestMaxRStat.test_maxRstat_Q_linkage¡  sS   € ð Kð 	=ð 	=ˆFÝ˜1‘X”Xð =ð =�Ø×-Ò-¨f°a¸Ñ<Ô<Ð<Ð<ð=ð	=ð 	=rA   c                 óì   — |                      t          j        ¦  «        }t          ||¦  «        }t	          |¦  «        }t          ||d¦  «        }t          ||d|¦  «        }t          ||d¬¦  «         d S )Nr,   rj   rQ   )r7   r-   rã   r
   r   r   rð  r(   )	r<   rL   r8  r=   rc   rV   rm  rÜ  rÝ  s	            r?   r  z%TestMaxRStat.check_maxRstat_Q_linkage¨  sp   € à�JŠJÕ*Ô.Ñ/Ô/ˆÝ�A�vÑÔˆÝ˜‰OŒOˆÝ�a˜˜AÑÔˆÝ6°q¸!¸QÀÑCÔCˆ
Ý˜˜J¨UÐ3Ñ3Ô3Ð3Ð3Ð3rA   N)r{   r|   r}   rû  rù  r/   r  r  r  r  r
  r	  r  r  r~   rA   r?   r÷  r÷  m  s  € € € € € ð5ð 5ð 5ð8ð 8ð 8ð Ð˜tÐ$Ñ$Ô$ð5ð 5ñ %Ô$ð5ð5ð 5ð 5ð6ð 6ð 6ð5ð 5ð 5ð Ð�kÐ*UØ#ð%ñ %ô %ð;ð ;ñ%ô %ð;ð4ð 4ð 4ð Ð�kÐ*UØ#ð%ñ %ô %ð=ð =ñ%ô %ð=ð
4ð 4ð 4ð 4ð 4rA   r÷  c                   óˆ  — e Zd Zd„ Zd„ Zd„ Zej                             e	 d¬¦  «        d„ ¦   «         Z
 edd¬¦  «        ej                             e	 d¬¦  «        d	„ ¦   «         ¦   «         Zd
„ Z edd¬¦  «        ej                             e	 d¬¦  «        d„ ¦   «         ¦   «         Zej        d„ ¦   «         Zd„ Zd„ Zd„ ZdS )ÚTestDendrogramc                 ó¶   — t          |                     t          j        ¦  «        d¦  «        }t	          |d¬¦  «        }|d         }t          |g d¢¦  «         d S )Nr   T©Úno_plotÚleaves©ri   r6   r,   r   r‚   rÇ   )r
   r7   r-   rT   r   r   )r<   r=   rV   rm  r  s        r?   Ú$test_dendrogram_single_linkage_tdistz3TestDendrogram.test_dendrogram_single_linkage_tdistµ  sY   € å�B—J’JÕ2Ô9Ñ:Ô:¸HÑEÔEˆÝ�q $Ð'Ñ'Ô'ˆØ�8”ˆÝ�VÐ/Ð/Ð/Ñ0Ô0Ð0Ð0Ð0rA   c                 óš   — t          |                     t          j        ¦  «        d¦  «        }t	          t
          t          |d¬¦  «         d S )Nr   Úfoo©Úorientation)r
   r7   r-   rT   r9   r:   r   rN  s      r?   Útest_valid_orientationz%TestDendrogram.test_valid_orientation¼  s>   € Ý�B—J’JÕ2Ô9Ñ:Ô:¸HÑEÔEˆÝ•j¥*¨a¸UÐCÑCÔCÐCÐCÐCrA   c                 óæ   — t          |                     t          j        ¦  «        d¦  «        }g d¢}t	          ||                     |¦  «        d¬¦  «        }t	          ||d¬¦  «        }||k    sJ ‚d S )Nr   )r,   r‚   ri   rÆ   rÇ   r6   T)Úlabelsr  )r
   r7   r-   rT   r   )r<   r=   rV   r  Úresult1Úresult2s         r?   Útest_labels_as_array_or_listz+TestDendrogram.test_labels_as_array_or_listÀ  sw   € å�B—J’JÕ2Ô9Ñ:Ô:¸HÑEÔEˆØ#Ð#Ð#ˆÝ˜Q r§z¢z°&Ñ'9Ô'9À4ÐHÑHÔHˆÝ˜Q v°tÐ<Ñ<Ô<ˆØ˜'Ò!Ð!Ð!Ð!Ð!Ð!rA   zno matplotlibr[  c           	      óþ  — |                      g d¢g d¢g d¢g¦  «        }t          j        ¦   «          t          j        t
          ¦  «        5 }t          |t          t          d¦  «        ¦  «        ¬¦  «         d d d ¦  «         n# 1 swxY w Y   dt          |j
        ¦  «        v sJ ‚t          j        t
          d¬¦  «        5  t          |g ¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        ¦   «          d S )N)r   r,   r«   rÇ   )ri   r‚   r«   r6   )rÇ   r6   r¬   rÆ   éd   )r  z.Dimensions of Z and labels must be consistent.r·   )r7   ÚpltÚfigurer¹   r   r:   r   r¦  r,  ÚstrÚvalueÚclose)r<   r=   ÚlinkÚexc_infos       r?   Útest_valid_label_sizez$TestDendrogram.test_valid_label_sizeÈ  s€  € à�zŠzØˆNˆNØˆNˆNØˆNˆNð
ñ ô ˆõ
 	Œ
‰ŒˆÝŒ]�:Ñ&Ô&ð 	6¨(Ý�t¥D­¨s©¬Ñ$4Ô$4Ð5Ñ5Ô5Ð5ð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6à?Ý�h”nÑ%Ô%ð&ð &ð &ð &õ Œ]ÝØFðHñ Hô Hð 	(ð 	(õ �t BÐ'Ñ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(õ
 	Œ	‰Œˆˆˆs$   Á,BÂBÂ
BÃCÃC#Ã&C#ÚtorchzFMPL 3.9.2 & torch DeprecationWarning from __array_wrap__ and NumPy 2.0c                 ó<   — dD ]}|                       ||¦  «         Œd S )N)ÚtopÚbottomÚleftÚright)Úcheck_dendrogram_plot)r<   r=   r  s      r?   Útest_dendrogram_plotz#TestDendrogram.test_dendrogram_plotÜ  s6   € ð >ð 	8ð 	8ˆKØ×&Ò& {°BÑ7Ô7Ð7Ð7ð	8ð 	8rA   c                 ó(  — 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        ¦   «         }|                     d¦  «        }t          |||¬¦  «        }t          j        |d         ¦  «        |d<   t          ||¦  «         t          |||dd¬¦  «         |dv r| 
                    ¦   «         d         n|                     ¦   «         d         }t          |                     ¦   «         d¦  «         t          |                     ¦   «         d¦  «         t          |||d¬¦  «         |dv r| 
                    ¦   «         d         n|                     ¦   «         d         }t          |                     ¦   «         d¦  «         t          |||d¬¦  «         |dv r| 
                    ¦   «         d         n|                     ¦   «         d         }t          |                     ¦   «         d¦  «         t	          j        ¦   «          t          ||¬¦  «        }	t	          j        ¦   «          t          j        |	d         ¦  «        |	d<   t          |	|¦  «         d S )Nr   )ÚC1ÚC0r6  r6  r6  ©r5   rÌ   rÌ   r5   )r5   rÍ   rÍ   r5   )r5   rÎ   rÎ   rÍ   ©r5   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µ   ç     à@@rA  )Ú2Ú5Ú1Ú0Ú3Ú4r  )r5  r5  r6  r6  r6  r6  ©Ú
color_listÚdcoordÚicoordÚivlr  Úleaves_color_listéÝ   )Úaxr  rJ  rh   éZ   )rO  r  Úleaf_font_sizeÚleaf_rotation)r.  r/  r   )rO  r  rR  )rO  r  rQ  r  )r
   r7   r-   rT   r$  r%  Úadd_subplotr   rl   r   Úget_xticklabelsÚget_yticklabelsÚget_rotationÚget_sizer(  )
r<   r  r=   rV   ÚexpectedÚfigrO  ÚR1Ú	testlabelÚR2s
             r?   r2  z$TestDendrogram.check_dendrogram_plotå  s  € å�B—J’JÕ2Ô9Ñ:Ô:¸HÑEÔEˆØ"@Ð"@Ð"@Ø7Ð7Ð7Ø7Ð7Ð7Ø9Ð9Ð9Ø9Ð9Ð9Ø;Ð;Ð;ð	=ð
  6Ð5Ð5Ø7Ð7Ð7Ø7Ð7Ð7Ø7Ð7Ð7Ø9Ð9Ð9ð	;ð
 :Ð9Ð9Ø0Ð0Ð0Ø)MÐ)MÐ)Mðð ˆõ  Œj‰lŒlˆØ�_Š_˜SÑ!Ô!ˆõ ˜˜b¨kÐ:Ñ:Ô:ˆÝ”z " X¤,Ñ/Ô/ˆˆ8‰Ý�R˜Ñ"Ô"Ð"õ 	�1˜¨Ø"$°Bð	8ñ 	8ô 	8ð 	8ð Ð/Ð/Ð/ð ×ÒÑ Ô  Ô#Ð#à×#Ò#Ñ%Ô% aÔ(ð 	õ
 	�Y×+Ò+Ñ-Ô-¨rÑ2Ô2Ð2Ý�Y×'Ò'Ñ)Ô)¨2Ñ.Ô.Ð.Ý�1˜¨Ø!#ð	%ñ 	%ô 	%ð 	%ð Ð/Ð/Ð/ð ×ÒÑ Ô  Ô#Ð#à×#Ò#Ñ%Ô% aÔ(ð 	õ
 	�Y×+Ò+Ñ-Ô-¨rÑ2Ô2Ð2Ý�1˜¨Ø"$ð	&ñ 	&ô 	&ð 	&ð Ð/Ð/Ð/ð ×ÒÑ Ô  Ô#Ð#à×#Ò#Ñ%Ô% aÔ(ð 	õ
 	�Y×'Ò'Ñ)Ô)¨2Ñ.Ô.Ð.ÝŒ	‰Œˆõ ˜ {Ð3Ñ3Ô3ˆÝŒ	‰ŒˆÝ”z " X¤,Ñ/Ô/ˆˆ8‰Ý�R˜Ñ"Ô"Ð"Ð"Ð"rA   c           
      ó"  — 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œ¦  «         d S )Nr   ri   ÚlastpT)Úshow_contractedrJ  r6  )r5   rÐ   rÐ   r5   r:  ú(2)z(4)rÆ   rÉ   rH  Úmtica)r5  r6  r6  r6  r7  )r5   rÎ   rÎ   r5   r8  r9  )r=  r=  r;  r;  )r?  r?  ç      D@rb  )rµ   rµ   ç     @@@rc  )rB  rC  rD  rE  r`  )ri   r6   r,   r   rÊ   )r5  r5  r6  r6  r6  )	r
   r7   r-   rT   r   r$  r(  rl   r   rè  s       r?   Útest_dendrogram_truncate_modez,TestDendrogram.test_dendrogram_truncate_mode#  s…  € õ �B—J’JÕ2Ô9Ñ:Ô:¸HÑEÔEˆå�q˜!˜W°dÐ;Ñ;Ô;ˆÝŒ	‰ŒˆÝ”j  8¤Ñ-Ô-ˆˆ(‰Ý�Q¨ vØ$<Ð$<Ð$<Ð#=Ø$:Ð$:Ð$:Ð#;Ø!&¨ Ø$% q 6Ø/3°T¨lðð ñ 	ô 	ð 	õ �q˜!˜W°dÐ;Ñ;Ô;ˆÝŒ	‰ŒˆÝ”j  8¤Ñ-Ô-ˆˆ(‰Ý�QÐ'?Ð'?Ð'?Ø$<Ð$<Ð$<Ø$<Ð$<Ð$<Ø$>Ð$>Ð$>Ø$@Ð$@Ð$@ð$Bð %;Ð$:Ð$:Ø$<Ð$<Ð$<Ø$<Ð$<Ð$<Ø$<Ð$<Ð$<ð$>ð !<Ð ;Ð ;Ø#2 ? ?Ø.LÐ.LÐ.Lðð ñ 	ô 	ð 	ð 	ð 	rA   c                 ó   — t          ¦   «         S r�   r*   )r<   s    r?   Údendrogram_lockzTestDendrogram.dendrogram_lockG  s   € å‰vŒvˆrA   c                 óR  — t          |                     t          j        ¦  «        d¦  «        }|5  t	          g d¢¦  «         t          |ddd¬¦  «        }t	          g d¢¦  «         |d         }t          |g d	¢¦  «         t	          d ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
Nr   )r§   Úmr>   r6  TÚgéú   )r  Úabove_threshold_colorÚcolor_threshold)ri  Úrr§   rh  r>   r6  rI  )r§   rh  ri  ri  ri  )r
   r7   r-   rT   r   r   r   )r<   r=   rf  rV   rm  rI  s         r?   Útest_dendrogram_colorsz%TestDendrogram.test_dendrogram_colorsK  s  € å�B—J’JÕ2Ô9Ñ:Ô:¸HÑEÔEˆàð 	)ð 	)å"Ð#7Ð#7Ð#7Ñ8Ô8Ð8Ý˜1 dØ.1À3ðHñ Hô HˆAå"Ð#AÐ#AÐ#AÑBÔBÐBà˜<œˆJÝ˜Ð%>Ð%>Ð%>Ñ?Ô?Ð?õ # 4Ñ(Ô(Ð(ð	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)ð 	)ð 	)s   °ABÂB Â#B c           	      óÎ   — |                      g d¢g d¢g d¢g d¢g d¢g d¢g¦  «        }t          |d¦  «        }t          |d¬¦  «        }g d¢}|d	         }t          ||¦  «         d S )
N©r,   r   r   ©r   r   r,   ©r   ri   r   ©r   r,   r   r   Tr  ©r6  r5  r5  r6  ÚC2ru  rM  ©r7   r
   r   r   ©r<   r=   ÚxÚzrs   Ú
exp_colorsÚcolorss          r?   Ú%test_dendrogram_leaf_colors_zero_distz4TestDendrogram.test_dendrogram_leaf_colors_zero_dist\  s”   € ð �JŠJ˜	˜	˜	Ø!˜	˜	Ø!˜	˜	Ø!˜	˜	Ø!˜	˜	Ø!˜	˜	ð#ñ $ô $ˆõ �A�xÑ Ô ˆÝ�q $Ð'Ñ'Ô'ˆØ9Ð9Ð9ˆ
ØÐ&Ô'ˆÝ�V˜ZÑ(Ô(Ð(Ð(Ð(rA   c           	      óÎ   — |                      g d¢g d¢g d¢g d¢g d¢g d¢g¦  «        }t          |d¦  «        }t          |d¬¦  «        }g d	¢}|d
         }t          ||¦  «         d S )Nrp  )r   r   gš™™™™™ñ?rr  rq  rs  r   Tr  rt  rM  rv  rw  s          r?   Útest_dendrogram_leaf_colorsz*TestDendrogram.test_dendrogram_leaf_colorsk  s”   € ð �JŠJ˜	˜	˜	Ø#˜˜Ø!˜	˜	Ø!˜	˜	Ø!˜	˜	Ø!˜	˜	ð#ñ $ô $ˆõ �A�xÑ Ô ˆÝ�q $Ð'Ñ'Ô'ˆØ9Ð9Ð9ˆ
ØÐ&Ô'ˆÝ�V˜ZÑ(Ô(Ð(Ð(Ð(rA   N)r{   r|   r}   r  r  r!  r¹   ÚmarkÚskipifÚhave_matplotlibr+  r/   r3  r2  rd  Úfixturerf  rn  r|  r~  r~   rA   r?   r  r  ²  s�  € € € € € ð1ð 1ð 1ðDð Dð Dð"ð "ð "ð „[×Ò˜OÐ+°OÐÑDÔDðð ñ EÔDðð& Ð�gð!ðñ ô ð „[×Ò˜OÐ+°OÐÑDÔDð8ð 8ñ EÔDñ	ô ð
8ð<#ð <#ð <#ð| Ð�gð"ðñ ô ð „[×Ò˜OÐ+°OÐÑDÔDðð ñ EÔDñ	ô ð
ð> „^ðð ñ „^ðð)ð )ð )ð")ð )ð )ð)ð )ð )ð )ð )rA   r  c                 óô  — | j         d         dz   }|                     |dz
  f| j        ¬¦  «        }|                     d¦  «        }t          d|dz
  ¦  «        D ]ž}d|d d …<   | |df         }| |df         }||k    r(||                     ||j        ¬¦  «        |z
           |d<   ||k    r(||                     ||j        ¬¦  «        |z
           |d<   | |df         |d<   |                     |¦  «        ||<   ŒŸ|S ©Nr   r,   r    )r‚   r5   ri   )r1  rD   r¡   r,  r7   rL  Úmax)rV   r=   rr   ÚBÚqr8  r0  r1  s           r?   rÛ  rÛ  {  s  € à	Œ�Œ
�Q‰€AØ
�Š�!�A‘#�˜qœwˆÑ'Ô'€AØ
�Š�‰Œ€AÝ�1�a˜!‘e‰_Œ_ð 	ð 	ˆØˆˆ!ˆ!ˆ!‰Ø��A�ŒwˆØ�!�Q�$”ˆØ�1Š9ˆ9Ø�R—Z’Z ¨B¬H�ZÑ5Ô5¸Ñ9Ô:ˆAˆa‰DØ�AŠ:ˆ:Ø�R—Z’Z ¨R¬X�ZÑ6Ô6¸Ñ:Ô;ˆAˆa‰DØ��A�Œwˆˆ!‰Ø�vŠv�a‰yŒyˆˆ!‰ˆØ€HrA   r‚   c                 ó  — | j         d         dz   }|                     | |¦  «        }|                     |dz
  f|¬¦  «        }|                     d¦  «        }t          d|dz
  ¦  «        D ]ž}d|d d …<   | |df         }	| |df         }
|	|k    r(||                     |	|j        ¬¦  «        |z
           |d<   |
|k    r(||                     |
|j        ¬¦  «        |z
           |d<   |||f         |d<   |                     |¦  «        ||<   ŒŸ|S r„  )r1  Úresult_typerD   r,  r7   rL  r…  )rV   rm  r6  r=   rr   r¡   r†  r‡  r8  r0  r1  s              r?   rð  rð  �  s  € à	Œ�Œ
�Q‰€AØ�NŠN˜1˜aÑ Ô €EØ
�Š�!�A‘#�˜uˆÑ%Ô%€AØ
�Š�‰Œ€AÝ�1�a˜!‘e‰_Œ_ð 	ð 	ˆØˆˆ!ˆ!ˆ!‰Ø��A�ŒwˆØ�!�Q�$”ˆØ�1Š9ˆ9Ø�R—Z’Z ¨B¬H�ZÑ5Ô5¸Ñ9Ô:ˆAˆa‰DØ�AŠ:ˆ:Ø�R—Z’Z ¨R¬X�ZÑ6Ô6¸Ñ:Ô;ˆAˆa‰DØ��A�Œwˆˆ!‰Ø�vŠv�a‰yŒyˆˆ!‰ˆØ€HrA   c           	      ón   — t          t          t          |                      ddgddgg¦  «        ¦  «         d S )Nr   r,   )r   r	   r
   r7   r!  s    r?   Ú<test_unsupported_uncondensed_distance_matrix_linkage_warningr‹     s5   € õ •¥¨"¯*ª*°q¸!°f¸qÀ!¸fÐ5EÑ*FÔ*FÑGÔGÐGÐGÐGrA   c           
      ó¦   — t           j        j        j        D ]9}t	          t
          t          |                      ddgddgg¦  «        |d¬¦  «         Œ:d S )Nr,   Ú	cityblock©rL   rb   )rd   ÚclusterÚ	hierarchyÚ_EUCLIDEAN_METHODSr9   r:   r
   r7   )r=   rL   s     r?   Ú"test_euclidean_linkage_value_errorr’  ¦  sc   € Ý”-Ô)Ô<ð 9ð 9ˆÝ•j¥'¨2¯:ª:¸¸1°vÀÀ1¸vÐ6FÑ+GÔ+GØ#¨Kð	9ñ 	9ô 	9ð 	9ð 	9ð9ð 9rA   c                 óÌ   — t          |                      dg¦  «        dd¬¦  «        }t          |                      ddgddgg¦  «        dd¬¦  «        }t          ||d¬¦  «         d S )Nr,   r   ra   rŽ  r   rj   rÂ   )r
   r7   r(   )r=   ÚZ1r«  s      r?   Útest_2x2_linkager•  ¬  sj   € å	�—’˜Q˜C‘”¨¸+Ð	FÑ	FÔ	F€BÝ	�—’˜a ˜V a¨ VÐ,Ñ-Ô-°hÀ{Ð	SÑ	SÔ	S€BÝ�B˜ Ð'Ñ'Ô'Ð'Ð'Ð'rA   c                 ó¬  — t           j                             d¦  «         d}t           j                             |d¦  «        }|                      |¦  «        }t
          j        j                             |¦  «        }t          |¦  «        }t          ||                     ¦   «         k    ¦  «         t          |                     ¦   «         |                     ¦   «         k    ¦  «         t          |                     ¦   «         |                     ¦   «         k    ¦  «         t          |                     ¦   «         |                     ¦   «         k    ¦  «         d S )Né   é2   rÇ   )rl   rm   ÚseedÚrandnr7   rd   r�  r�  r[   r   r   r›  rœ  )r=   r2  rc   rV   Útrees        r?   Útest_node_comparerœ  ³  sô   € å„I‡N‚N�2ÑÔÐØ€DÝ
Œ	�Š˜˜aÑ Ô €AØ
�
Š
�1‰Œ€AÝŒÔ×$Ò$ QÑ'Ô'€AÝ�1‰:Œ:€DÝˆD�4—=’=‘?”?Ò"Ñ#Ô#Ð#ÝˆD�NŠNÑÔ˜tŸ}š}™œÒ.Ñ/Ô/Ð/ÝˆD�NŠNÑÔ §¢Ñ 0Ô 0Ò0Ñ1Ô1Ð1ÝˆD�NŠNÑÔ §¢¡¤Ò/Ñ0Ô0Ð0Ð0Ð0rA   z%`cut_tree` uses non-standard indexingc           	      óf  — t           j                             d¦  «         d}t           j                             |d¦  «        }|                      |¦  «        }t
          j        j                             |¦  «        }t          |¦  «        }t          |d d …df         |                      |¦  «        dd¬¦  «         t          |d d …df         |                      |¦  «        dd¬¦  «         t          t          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          |¦  «        }|                      d„ |D ¦   «         ¦  «        }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¬¦  «         d S )Nr—  r˜  rÇ   r   rj   F)rk   Úcheck_dtyper‰   r,   éûÿÿÿr6   )Ú
n_clustersrÂ   iöÿÿÿrË   c                 ó   — g | ]	}|j         ‘Œ
S r~   )Údist)Ú.0r™  s     r?   ú
<listcomp>z!test_cut_tree.<locals>.<listcomp>Ô  s   € Ð6Ð6Ð6¨˜$œ)Ð6Ð6Ð6rA   )Úheight)rl   rm   r™  rš  r7   rd   r�  r�  r[   r    r(   ÚarangerD   r   r…  r"   Úsearchsorted)r=   r2  rc   rV   ÚcutreeÚnodesÚheightss          r?   Útest_cut_treer«  Á  s°  € å„I‡N‚N�2ÑÔÐØ€DÝ
Œ	�Š˜˜aÑ Ô €AØ
�
Š
�1‰Œ€AÝŒÔ×$Ò$ QÑ'Ô'€AÝ�a‰[Œ[€Fõ �F˜1˜1˜1˜a˜4”L "§)¢)¨D¡/¤/¸È5ÐQÑQÔQÐQÝ�F˜1˜1˜1˜b˜5”M 2§8¢8¨D¡>¤>¸È5ÐQÑQÔQÐQÝ•”˜FÑ#Ô#×'Ò'¨Ñ*Ô*­B¬I°d¸Q±hÀÀBÑ,GÔ,GÑHÔHÐHå�F˜1˜1˜1˜r˜d˜7”O¥X¨a¸AÐ%>Ñ%>Ô%>ÀUÐKÑKÔKÐKÝ�F˜1˜1˜1˜r 3˜i˜<Ô(­(°1À!ÀRÀÐ*IÑ*IÔ*IÐPUÐVÑVÔVÐVÝ�F˜1˜1˜1˜s B˜i˜<Ô(­(°1À"ÀaÀÐ*IÑ*IÔ*IÐPUÐVÑVÔVÐVå Ñ"Ô"€EØ�jŠjÐ6Ð6°Ð6Ñ6Ô6Ñ7Ô7€Gå�F˜1˜1˜1�bœo¨g¸°sÑ;Ô;Ð;Ô<Ý˜Q qÐ)Ñ)Ô)°ð7ñ 7ô 7ð 7å�F˜1˜1˜1�bœo¨g¸¸2°wÑ?Ô?Ð?Ô@Ý˜Q¨¨2 wÐ/Ñ/Ô/°eð=ñ =ô =ð =å�F˜1˜1˜1�bœo¨g¸¸A°wÑ?Ô?Ð?Ô@Ý˜Q¨¨A wÐ/Ñ/Ô/°eð=ñ =ô =ð =ð =ð =rA   c                 ó(  — t          t          |                      t          j        ¦  «        ¦  «        |                      t          j        ¦  «        ¦  «        }t          j        }t          ||                      |¦  «        d¬¦  «         t          t          |                      t          j        ¦  «        d¦  «        |                      t          j        ¦  «        ¦  «        }t          j        }t          ||                      |¦  «        d¬¦  «         d S )NrP   rQ   r[   r`   )	r!   r
   r7   r-   rT   ry   r(   rc   Úlinkage_X_ward_olo)r=   rV   rW   s      r?   rz   rz   Þ  sÜ   € õ 	�g b§j¢jÕ1DÔ1KÑ&LÔ&LÑMÔMØ ŸjšjÕ)<Ô)CÑDÔDñ	Fô 	F€Aå#Ô=€IÝ�A�r—z’z )Ñ,Ô,°5Ð9Ñ9Ô9Ð9õ 	�g b§j¢jÕ1DÔ1FÑ&GÔ&GÈÑPÔPØ ŸjšjÕ)<Ô)>Ñ?Ô?ñ	Aô 	A€Aå#Ô6€IÝ�A�r—z’z )Ñ,Ô,°5Ð9Ñ9Ô9Ð9Ð9Ð9rA   z"`Heap` only supports NumPy backendc                 óÊ  — |                       g d¢¦  «        }t          |¦  «        }|                     ¦   «         }t          |d         d¦  «         t          |d         d¦  «         |                     ¦   «          |                     ¦   «         }t          |d         d¦  «         t          |d         d¦  «         |                     dd¦  «         |                     ¦   «         }t          |d         d	¦  «         t          |d         d
¦  «         |                     ¦   «          |                     ¦   «          |                     dd¦  «         |                     ¦   «         }t          |d         d¦  «         t          |d         d¦  «         |                     ¦   «          |                     ¦   «         }t          |d         d¦  «         t          |d         d¦  «         d S )N)ri   r‰   r   ç      ø¿r‚   Úkeyr‚   r'  r¯  r,   r‰   g      @ri   r   rË   rÇ   )r7   r&   Úget_minr   Ú
remove_minÚchange_value)r=   ÚvaluesÚheapÚpairs       r?   Ú	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” Ñ#Ô#Ð#Ð#Ð#rA   c                 óº   — |                       g d¢¦  «        }t          j        t          ¦  «        5  t	          |d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N)r   r   r‰   rY   rŠ   )r7   r¹   r   r:   r
   )r=   r´  s     r?   Útest_centroid_neg_distancer¹    s    € ð �ZŠZ˜
˜
˜
Ñ#Ô#€FÝ	Œ•zÑ	"Ô	"ð +ð +å�˜zÐ*Ñ*Ô*Ð*ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð +ð +s   ±AÁAÁA)^Únumpyrl   Únumpy.testingr   r   r   r   r   r¹   r   r9   Úscipy.cluster.hierarchyrd   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.spatial.distancer%   Úscipy.cluster._hierarchyr&   Úscipy.conftestr'   Úscipy._lib._array_apir(   r)   Ú	threadingr+   Ú r-   Ú
matplotlibÚuseÚmatplotlib.pyplotÚpyplotr$  r�  Ú	Exceptionr  ÚusefixturesÚ
pytestmarkr/   r1   r€   rŽ   r˜   r½   rÓ   rù   r  r;  rj  r‚  rŽ  rŸ  r´  rÖ  ræ  r÷  r  rÛ  rð  Úthread_unsafer‹  r’  r•  rœ  r«  rz   r·  r¹  r~   rA   r?   ú<module>rË     sÊ  ððD Ð Ð Ð ð)ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )à €€€Ø *Ð *Ð *Ð *Ð *Ð *à Ð Ð Ð ð7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð )Ð (Ð (Ð (Ð (Ð (Ø )Ð )Ð )Ð )Ð )Ð )Ø /Ð /Ð /Ð /Ð /Ð /Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bà Ð Ð Ð Ð Ð à !Ð !Ð !Ð !Ð !Ð !ð
ØÐÐÐà€J„N�5ÑÔÐà#Ð#Ð#Ð#Ð#Ð#Ø€O€OøØð ð ð Ø€O€O€Oðøøøð # F¤K×$;Ò$;Ð<NÑ$OÔ$OÐP€
Ø”;Ô/Ð ð:>ð :>ð :>ð :>ð :>ñ :>ô :>ð :>ðz Ð˜4Ð Ñ Ô ð>ð >ð >ð >ð >ñ >ô >ñ !Ô ð>ð> Ð˜4Ð Ñ Ô ð	Tð 	Tð 	Tð 	Tð 	Tñ 	Tô 	Tñ !Ô ð	Tð Ð˜4Ð Ñ Ô ð%&ð %&ð %&ð %&ð %&ñ %&ô %&ñ !Ô ð%&ðP$ð $ð $ð $ð $ñ $ô $ð $ðD Ð˜4Ð Ñ Ô ð<2ð <2ð <2ð <2ð <2ñ <2ô <2ñ !Ô ð<2ð~ Ð˜4Ð Ñ Ô ðOð Oð Oð Oð Oñ Oô Oñ !Ô ðOð Ð˜$ØFðHñ Hô HðV7ð V7ð V7ð V7ð V7ñ V7ô V7ñHô HðV7ðr Ð˜4Ð Ñ Ô ðXGð XGð XGð XGð XGñ XGô XGñ !Ô ðXGðv Ð˜4Ð Ñ Ô ðLBð LBð LBð LBð LBñ LBô LBñ !Ô ðLBð^0ð 0ð 0ð 0ð 0ñ 0ô 0ð 0ð< Ð˜4Ð Ñ Ô ð"$ð "$ð "$ð "$ð "$ñ "$ô "$ñ !Ô ð"$ðJ Ð˜4Ð Ñ Ô ð90ð 90ð 90ð 90ð 90ñ 90ô 90ñ !Ô ð90ðx Ð˜4Ð Ñ Ô ðGð Gð Gð Gð Gñ Gô Gñ !Ô ðGðT Ð˜4Ð Ñ Ô ð4ð 4ð 4ð 4ð 4ñ 4ô 4ñ !Ô ð4ð:(4ð (4ð (4ð (4ð (4ñ (4ô (4ð (4ðVB4ð B4ð B4ð B4ð B4ñ B4ô B4ð B4ðJ Ð˜4Ð Ñ Ô ðE)ð E)ð E)ð E)ð E)ñ E)ô E)ñ !Ô ðE)ðPð ð ð$ /0°Bð ð ð ð ð& „ÔØÐ˜4Ð Ñ Ô ðHð Hñ !Ô ñ ÔðHð9ð 9ð 9ð Ð˜4Ð Ñ Ô ð(ð (ñ !Ô ð(ð Ð˜4Ð Ñ Ô ð
1ð 
1ñ !Ô ð
1ð Ð˜$Ð'NÐOÑOÔOð=ð =ñ PÔOð=ð8 Ð˜4Ð Ñ Ô ð:ð :ñ !Ô ð:ð Ð˜$Ð'KÐLÑLÔLð$ð $ñ MÔLð$ð@ Ð˜4Ð Ñ Ô ð+ð +ñ !Ô ð+ð +ð +s   ÂB! Â!B+Â*B+