+
    /i1                        ^ RI t^ RIHtHtHtHt ^ RIt^ RIHt	 ^ RI
HtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtH t H!t!H"t"H#t#H$t$H%t%H&t&H't'H(t( ^ RI)H*t* ^ RI+H,t, ^ RI-H.t.H/t/H0t0H1t1 ^ RI2H3u H4t5 ^ RI6H7t7 ^R	I8H9t9  ! R
 R4      t: ^ RI;t;];Px                  ! R4       ^ RI=H>t? Rt@]P                  P                  tC]/! ]4       ! R R4      4       tD]/! ]4       ! R R4      4       tE]/! ]4       ! R R4      4       tF]/! ]]4       ! R R4      4       tG]/! ]4       ! R R4      4       tH]/! ]4       ! R R4      4       tI]/! ]4       ! R R4      4       tJ]/! ]4       ! R R4      4       tK]/! ]4       ! R R 4      4       tL]/! ]4       ! R! R"4      4       tM ! R# R$4      tN]/! ] ]4       ! R% R&4      4       tO]/! ]4       ! R' R(4      4       tP]/! ]4       ! R) R*4      4       tQ]/! ]4       ! R+ R,4      4       tR]/! ]4       ! R- R.4      4       tS]/! ]4       ! R/ R04      4       tT]/! ]!4       ! R1 R24      4       tUR3 tV^]3R4 ltW]/! ]4      R5 4       tX]/! ]#4      R6 4       tY]/! ]$4      R7 4       tZ]C! RR8R97      R: 4       t[R#   ]A d    Rt@ ELi ; i);    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                       ] tR t^9t]t]tRtR# )eager N)__name__
__module____qualname____firstlineno__r   r   __static_attributes__r1       `/var/www/html/photoedit/myenv/lib/python3.14/site-packages/scipy/cluster/tests/test_hierarchy.pyr0   r0   9   s     K'r7   r0   AggTFc                     a  ] tR t^Ot o ]! RRR7      R 4       tR tR tR tR t	R	 t
R
 tR t]P                  P                  RR. RO. RO.3R. RO. RO.3R. RO. RO.3R. RO. RO.3R. RO. RO.3R. RO. RO.3R. RO. R O.3.4      R 4       tR t]P                  P                  R]4      R 4       tR t]! RRR7      R 4       tRtV tR# )!TestLinkage	jax.numpy$Can't raise inside jax.pure_callbackreasonc                    VP                  VP                  .R .^,          ,           4      p\        \        \        V4       R# )        N)asarraynanassert_raises
ValueErrorr	   selfxpys   && r8   3test_linkage_non_finite_elements_in_distance_matrix?TestLinkage.test_linkage_non_finite_elements_in_distance_matrixR   s/     JJx3%')*j'1-r7   c                R    VP                  R4      p\        \        \        V4       R# )r   Nr   )zerosrD   rE   r	   rF   s   && r8   "test_linkage_empty_distance_matrix.TestLinkage.test_linkage_empty_distance_matrixY   s    HHTNj'1-r7   c                :    R F  pV P                  W!4       K  	  R# )r   N)r   completeaverageweighted)check_linkage_tdistrG   rH   methods   && r8   test_linkage_tdistTestLinkage.test_linkage_tdist^   s    CF$$V0 Dr7   c                    \        VP                  \        P                  4      V4      p\	        \        R V,           4      p\        W2P                  V4      RR7       R# )linkage_ytdist_绽|=atolNr	   rB   r.   ytdistgetattrr*   )rG   rW   rH   Z	expectedZs   &&&  r8   rU   TestLinkage.check_linkage_tdistb   sD    BJJ299:FC/1BV1KL	::i0u=r7   c                :    R F  pV P                  W!4       K  	  R# )centroidN)rf   medianr   )check_linkage_qrV   s   && r8   test_linkage_XTestLinkage.test_linkage_Xh   s    4F  , 5r7   c                d   \        VP                  \        P                  4      V4      p\	        \        R V,           4      p\        W2P                  V4      RR7       VP                  \        P                  4      p\        VRR7      p\        Wa4      p\        W2P                  V4      RR7       R# )
linkage_X_ư>r]   	euclidean)metricN)r	   rB   r.   Xra   r*   r'   )rG   rW   rH   rb   rc   rp   rI   s   &&&    r8   rh   TestLinkage.check_linkage_ql   s    BJJ2445v>/1FG	::i0u=JJ*,,-!K(A::i0u=r7   c                \   \         P                  P                  ^ 4      p^pVP                  V^4      p\	        V4      p\
        P                  ! 4        FT  w  rg\        P                  ! WSV4      p\        VP                  V4      V4      p	\        WP                  V4      RRR7       KV  	  R# )r   g+=V瞯<)rtolr^   N)nprandomRandomStaterandr'   r%   itemsr#   r	   rB   r*   )
rG   rH   rngnrp   drW   code	Z_trivialrb   s
   &&        r8   test_compare_with_trivial%TestLinkage.test_compare_with_trivialw   s    ii##A&HHQN!H,224LF"**16I

1v.AAzz)45uM 5r7   c                    \        VP                  \        P                  4      R R7      p\	        \        R4      p\        W!P                  V4      RR7       R# )T)optimal_orderinglinkage_ytdist_single_olor\   r]   Nr_   )rG   rH   rb   rc   s   &&  r8   test_optimal_leaf_ordering&TestLinkage.test_optimal_leaf_ordering   s?    BJJ299:TR/1LM	::i0u=r7   zmethod,expectr   rR   rS   rT   rf   rg   r   c                    VP                  RR.^ ^ .^^..4      p\        WAR7      pVP                  W#P                  R7      p\        WRRR7       R# )   rW   dtyperm   r]   N)rB   r	   float64r*   )rG   rW   expectrH   rp   rb   s   &&&&  r8   test_linkage_tiesTestLinkage.test_linkage_ties   sM    " JJR1a&1a&12A%F**5.r7   c                    VP                  ^ ^.^^ ..4      p\        \        VR7      ;_uu_ 4        \        V4       RRR4       R#   + '       g   i     R# ; i)r   rH   N)rB   r(   r   r	   rG   rH   rp   s   && r8   <test_unsupported_uncondensed_distance_matrix_linkage_warningHTestLinkage.test_unsupported_uncondensed_distance_matrix_linkage_warning   s@    JJAA'(B//AJ 0///s   AA	rW   c                    VP                  ^^.^^..4      p\        P                  ! \        4      ;_uu_ 4        \	        W1RR7       RRR4       R#   + '       g   i     R# ; i)r   	cityblockrW   ro   NrB   pytestr   rE   r	   )rG   rW   rH   rp   s   &&& r8   "test_euclidean_linkage_value_error.TestLinkage.test_euclidean_linkage_value_error   sE    JJAA'(]]:&&A[9 '&&&s   AA#	c                    \        VP                  ^.4      RRR7      p\        VP                  ^ ^.^ ^ ..4      RRR7      p\        W#RR7       R# )r   r   rn   r   rs   rt   N)r	   rB   r*   )rG   rH   Z1Z2s   &&  r8   test_2x2_linkageTestLinkage.test_2x2_linkage   sH    RZZ_XkJRZZ!Q!Q 01(;WU+r7   c                    VP                  . RO4      p\        P                  ! \        4      ;_uu_ 4        \	        VRR7       RRR4       R#   + '       g   i     R# ; i)r   rf   r   N)r   r   r   r   )rG   rH   valuess   && r8   test_centroid_neg_distance&TestLinkage.test_centroid_neg_distance   s:     J']]:&&F:. '&&&s   AA	r1   N)r   r   'e?   )r      r   r   )r   r   g'e@r   )r   r   gev @r   )r   r   g@r   )r2   r3   r4   r5   skip_xp_backendsrJ   rO   rX   rU   ri   rh   r   r   r   markparametrizer   r   r$   r   r   r   r6   __classdictcell____classdict__s   @r8   r;   r;   O   sB     k*PQ. R..
1>-	>	N>
 [[_	++- 	.	++- 	.	++- 	.	++- 	.	++- 	.	++- 	.	++- 	./  /! /
 [[X'9:: ;:
,
 k*PQ/ R/r7   r;   c                   ,   a  ] tR t^t o R tR tRtV tR# )TestInconsistentc                V    \         P                   F  pV P                  W!4       K  	  R # N)r.   inconsistent_ytdistcheck_inconsistent_tdist)rG   rH   depths   && r8   test_inconsistent_tdist(TestInconsistent.test_inconsistent_tdist   s     (<<E))%4 =r7   c                    VP                  \        P                  4      p\        \	        W14      VP                  \        P
                  V,          4      4       R # r   )rB   r.   linkage_ytdist_singler*   r   r   )rG   r   rH   rb   s   &&& r8   r   )TestInconsistent.check_inconsistent_tdist   s?    JJ*@@AQ.

#6#J#J5#QR	Tr7   r1   N)r2   r3   r4   r5   r   r   r6   r   r   s   @r8   r   r      s     5T Tr7   r   c                   L   a  ] tR t^t o R tR t]! RRR7      R 4       tRtV t	R# )	TestCopheneticDistancec                    VP                  . RO4      pVP                  \        P                  4      p\        V4      p\	        WAP                  W!P
                  R7      RR7       R# )  r   r\   r]   Nr   '     r   r   r   r   r   r   r   r         r   r   )rB   r.   r   r   r*   r   )rG   rH   	expectedMrb   Ms   &&   r8   test_linkage_cophenet_tdist_Z4TestCopheneticDistance.test_linkage_cophenet_tdist_Z   sL    JJ  9 :	JJ*@@AQK::izz:BOr7   c                R   VP                  \        P                  4      p\        W!P                  \        P                  4      4      w  r4VP                  . ROVP
                  R7      pVP                  RVP
                  R7      R,          p\        W6RR7       \        WERR7       R# )r   r   g*ɻ2Qz?r\   r]   Nr   r1   )rB   r.   r   r   r`   r   r*   )rG   rH   rb   cr   r   	expectedcs   &&     r8   test_linkage_cophenet_tdist_Z_Y6TestCopheneticDistance.test_linkage_cophenet_tdist_Z_Y   s    JJ*@@A!ZZ(;(B(BCDJJ  9@B

  L	JJ?rzzJRSUV	5151r7   r<   r=   r>   c                   . RO. RO. RO. RO. RO. R	O. R
O. RO. RO. RO. RO.p\         P                  ! \        RR7      ;_uu_ 4        \        VP	                  V4      4       RRR4       R#   + '       g   i     R# ; i)rA   zexcessive observationsmatchN)rA         ?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   )r   r   rE   r   rB   )rG   rH   arrs   && r8   test_gh_22183$TestCopheneticDistance.test_gh_22183   s`     ""!"!""##$$
& ]]:-EFFRZZ_% GFFFs   A--A>	r1   N)
r2   r3   r4   r5   r   r   r   r   r6   r   r   s   @r8   r   r      s-     P2 k*PQ& R&r7   r   c                   2   a  ] tR t^t o R tR tR tRtV tR# )TestMLabLinkageConversionc                    VP                  . VP                  R 7      p\        \        V4      V4       \        \	        V4      V4       R# )r   N)rB   r   r+   r
   r   r   s   && r8   "test_mlab_linkage_conversion_empty<TestMLabLinkageConversion.test_mlab_linkage_conversion_empty   s7    JJrJ,)!,a0*A.r7   c                   VP                  . RO.4      pVP                  . RO.4      p\        \        V4      VP                  W!P                  R7      RR7       \        \	        V4      VP                  W1P                  R7      RR7       R# )rA   r   rs   r   N)rA   r   r   r   r   r   r   )rB   r*   r
   r   r   )rG   rH   rb   Zms   &&  r8   'test_mlab_linkage_conversion_single_rowATestMLabLinkageConversion.test_mlab_linkage_conversion_single_row   sk    JJ()*ZZ$)"-rzz!::z/N"	$*BJJrJ,L"	$r7   c                .   VP                  . RO. RO. RO. RO. R	O.4      pVP                  . R
O. RO. RO. RO. RO.VP                  R7      p\        \        V4      VRR7       \        \	        V4      VP                  W!P                  R7      RR7       R# )r   r   rs   r   N)r      r   )      r   )r      r   )r   	   r   )   
   r   )r   r        @a@r   )r   r        `k@r   )rA   r        o@r   )r   r        p@r   )r   r        pr@r   )rB   r   r*   r
   r   )rG   rH   r   rb   s   &&  r8   *test_mlab_linkage_conversion_multiple_rowsDTestMLabLinkageConversion.test_mlab_linkage_conversion_multiple_rows   s    ZZk$k<A BJJ*****	,
  ZZ  ) 	)"-qu=*BJJrJ,L"	$r7   r1   N)	r2   r3   r4   r5   r   r   r   r6   r   r   s   @r8   r   r      s     /$$ $r7   r   c            
       \  a ] tR tRt o]! ]4      ]P                  P                  R]	P                   U u. uF  p RV 3NK	  	  up ]	P                   U u. uF  p RV 3NK	  	  up ,           ]	P                   U u. uF  p RV 3NK	  	  up ,           4      R 4       4       tRtVtR# u up i u up i u up i )	TestFclusterDatai  criterion,tr   distancemaxclustc                    VP                  \        \        R V,           4      V,          4      pVP                  \        P                  4      p\	        WRVR7      p\        Wd4      '       g   Q hR# 	fcluster_	criteriontN)rB   ra   r.   Q_Xr   r   )rG   r  r  rH   	expectedTrp   Ts   &&&&   r8   test_fclusterdata"TestFclusterData.test_fclusterdata  sW     JJw':K)<STUVWX	JJ*../15Q****r7   r1   N)r2   r3   r4   r5   r)   r   r   r   r   r.   fcluster_inconsistentfcluster_distancefcluster_maxclustr  r6   r   r  r   s   0@r8   r   r     s      }%[[]&9&O&OP&O.!	&OP$7$I$I
J$IqJ?$I
J	K$7$I$I
J$IqJ?$I
J	K
+ &+	 	Q
J
Js   BB$5B)r   c            
       ^  a ] tR tRt o]! ]]4      ]P                  P                  R]
P                   U u. uF  p RV 3NK	  	  up ]
P                   U u. uF  p RV 3NK	  	  up ,           ]
P                   U u. uF  p RV 3NK	  	  up ,           4      R 4       4       t]! ]]]4      ]P                  P                  R]
P                  4      R 4       4       t]! ]]]4      ]P                  P                  R]
P                  4      R	 4       4       t]! ]4      R
 4       tRtVtR# u up i u up i u up i )TestFclusteri  r   r   r   r   c                    VP                  \        \        R V,           4      V,          4      p\        VP                  \        P                  4      4      p\        WRVR7      p\        \        Wd4      4       R# r   )rB   ra   r.   r   r  r   r   r   )rG   r  r  rH   r  rb   r  s   &&&&   r8   test_fclusterTestFcluster.test_fcluster"  sX     JJw':K)<STUVWX	2::15567Qq1a+,r7   r  c                    VP                  \        P                  V,          4      p\        VP                  \        P                  4      4      p\        WAR \        V4      R7      p\        \        WS4      4       R# )monocritr  r  N)	rB   r.   r	  r   r  r   r   r   r   rG   r  rH   r  rb   r  s   &&&   r8   test_fcluster_monocrit#TestFcluster.test_fcluster_monocrit/  sW     JJ2DDQGH	2::15567QZ(1+Fa+,r7   c                    VP                  \        P                  V,          4      p\        VP                  \        P                  4      4      p\        WAR \        V4      R7      p\        \        WS4      4       R# )maxclust_monocritr  N)	rB   r.   r
  r   r  r   r   r   r   r  s   &&&   r8   test_fcluster_maxclust_monocrit,TestFcluster.test_fcluster_maxclust_monocrit7  sX     JJ2DDQGH	2::15567Q%88A;Oa+,r7   c                   VP                  ^.^.^..4      p\        V4      p\        \        V^RR7      VP                  . RO4      4       \        \        V^RR7      VP                  . RO4      4       \        \        V^RR7      VP                  . RO4      4       \        \        V^RR7      VP                  . RO4      4       R# )r   r   )r  r  Nr   r   r   )r   r   r   r   )rB   r   r   r   rG   rH   rI   rb   s   &&  r8   test_fcluster_maxclust_gh_12651,TestFcluster.test_fcluster_maxclust_gh_12651?  s    JJaS1#'1I8AjA::i0	28AjA::i0	28AjA::i0	28AjA::i0	2r7   r1   N)r2   r3   r4   r5   r)   r   r   r   r   r   r.   r  r	  r
  r  r   r  r  r  r6   r   r  s   0@r8   r  r    sA     v}-[[]&9&O&OP&O.!	&OP$7$I$I
J$IqJ?$I
J	K$7$I$I
J$IqJ?$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 
29 	Q
J
Js   D D%6D*r  c                   &   a  ] tR tRt o R tRtV tR# )TestLeadersiM  c                V   \         P                  p\        V4      p\        V4      p\	        VR ^R7      pVP                  V4      pVP                  WQP                  R7      p\        WE4      pVP                  . ROVP                  R7      p\        VP                  V4      VRR7       R# )r   r   r   rs   r   N)5   7   8   r   r   r   )
r.   r  r'   r	   r   rB   int32r   r*   concat)rG   rH   rp   Yrb   r  Lr   s   &&      r8   test_leaders_singleTestLeaders.test_leaders_singleP  s    ##!HAJQ*2JJqMJJqJ)AM1B		!f59r7   r1   N)r2   r3   r4   r5   r*  r6   r   r   s   @r8   r!  r!  M  s     
: 
:r7   r!  c                      a  ] tR tRt o R tR tR tR tR tR t	R t
]P                  P                  R	. RO4      R
 4       t]P                  P                  R	. RO4      R 4       tR tRR ltRtV tR# )TestIsIsomorphici]  c                ^    \        . RO. RO4      '       g   Q h\        . . 4      '       g   Q hR# r   Nr  )r   r   r   )r   rG   s   &r8   test_array_like TestIsIsomorphic.test_array_like`  s(    Y	2222R$$$$r7   c                    VP                  . RO4      pVP                  . RO4      p\        W#4      '       g   Q h\        W24      '       g   Q hR# r/  rB   r   rG   rH   abs   &&  r8   test_is_isomorphic_1%TestIsIsomorphic.test_is_isomorphic_1d  @    JJy!JJy!Q""""Q""""r7   c                    VP                  . RO4      pVP                  . RO4      p\        W#4      '       g   Q h\        W24      '       g   Q hR# )r   N)r   r   r   )r   r   r   r4  r5  s   &&  r8   test_is_isomorphic_2%TestIsIsomorphic.test_is_isomorphic_2k  r:  r7   c                p    VP                  . 4      pVP                  . 4      p\        W#4      '       g   Q hR # r   r4  r5  s   &&  r8   test_is_isomorphic_3%TestIsIsomorphic.test_is_isomorphic_3r  s-    JJrNJJrNQ""""r7   c                    VP                  . RO4      pVP                  . RO4      p\        W#4      '       g   Q h\        W24      '       g   Q hR# )r   Nr   )r   r   r   r4  r5  s   &&  r8   test_is_isomorphic_4A&TestIsIsomorphic.test_is_isomorphic_4Ax  B     JJy!JJy!Q""""Q""""r7   c                    VP                  . RO4      pVP                  . RO4      p\        W#4      '       d   Q h\        W24      '       d   Q hR# )r   N)r   r   r   r   )r   r   r   r   r4  r5  s   &&  r8   test_is_isomorphic_4B&TestIsIsomorphic.test_is_isomorphic_4B  sE     JJ|$JJ|$ &&&& &&&&&r7   c                    VP                  . RO4      pVP                  . RO4      p\        W#4      '       g   Q h\        W24      '       g   Q hR# )r   N)r   r   r   )r   r   r   r4  r5  s   &&  r8   test_is_isomorphic_4C&TestIsIsomorphic.test_is_isomorphic_4C  rD  r7   	nclustersc                ,    V P                  R WR7       R# )  r   Nis_isomorphic_randpermrG   rK  rH   s   &&&r8   test_is_isomorphic_5%TestIsIsomorphic.test_is_isomorphic_5  s     	##D)#;r7   c                2    V P                  R VR^VR7       R# )rM  Tr   NrN  rP  s   &&&r8   test_is_isomorphic_6%TestIsIsomorphic.test_is_isomorphic_6  s    
 	##D)T1#Dr7   c                x    VP                  . RO4      pVP                  . RO4      p\        W#4      '       d   Q hR# )r   Nr   r  r4  r5  s   &&  r8   test_is_isomorphic_7%TestIsIsomorphic.test_is_isomorphic_7  s2    JJy!JJy! &&&&&r7   c               8   \         P                  P                  4       p\        ^4       F  pVP	                  ^ W!R7      pVP                  V4      p	V	P                  VP                  \         P                  4      4      p
V'       d@   VP                  V4      pW^ V ;;,          ^,          uu&   W^ V ;;,          V,          uu&   VP                  V4      pVP                  V
4      p
\        W4      V'       * 8X  g   Q h\        W4      V'       * 8X  d   K  Q h	  R# )r   )sizeN)ru   rv   default_rngrangeintegerspermutationtakeastypeintprB   r   )rG   nobsrK  nonisonerrorsrH   rz   _r6  pr7  qs   &&&&&$      r8   rO  'TestIsIsomorphic.is_isomorphic_randperm  s    ii##%qAQ	5A	*Aqxx()AOOD)Ag,1$Ag,9,

1A

1A &v:666 &v:666 r7   r1   N)r   r   r   )Fr   )r2   r3   r4   r5   r1  r8  r<  r?  rB  rF  rI  r   r   r   rQ  rT  rW  rO  r6   r   r   s   @r8   r-  r-  ]  s     %####'# [[[)4< 5<
 [[[)4E 5E'7 7r7   r-  c                      a  ] tR tRt o ]P
                  P                  R. RO4      R 4       tR tR t	R t
R tR tR	 tR
 tRtV tR# )TestIsValidLinkagei  nrow, ncol, validc                    VP                  . RO. RO.VP                  R7      pVRV1RV13,          p\        \        V4      VRR7       V'       g   \	        \
        \        VRR7       R# R# 	r   r   NFcheck_namespaceTthrow)r   r   r   r   r   )r   r   r   r   r   )rB   r   r+   r   rD   rE   )rG   nrowncolvalidrH   rb   s   &&&&& r8   "test_is_valid_linkage_various_size5TestIsValidLinkage.test_is_valid_linkage_various_size  sg     JJ))+24**  >eteUdUlO(+UEJ*&6F r7   c                    VP                  . RO. RO.VP                  R7      p\        \        V4      RRR7       \	        \
        \        VRR7       R# 	r   r   Frn  Trp  Nr   r   r   r   r   r   r   r   )rB   int64r+   r   rD   	TypeErrorrG   rH   rb   s   && r8   test_is_valid_linkage_int_type1TestIsValidLinkage.test_is_valid_linkage_int_type  sG    JJ&(/1xx  9(+UEJi!11DAr7   c                    VP                  RVP                  R7      p\        \        V4      RRR7       \	        \
        \        VRR7       R# r   r   Frn  Trp  Nr   r   )rN   r   r+   r   rD   rE   r}  s   && r8   test_is_valid_linkage_empty.TestIsValidLinkage.test_is_valid_linkage_empty  s9    HHV2::H.(+UEJj"2ATBr7   c                   \        ^^^4       Fx  p\        P                  P                  W"^,
          ,          ^,          4      pVP	                  \        V4      4      pVP	                  V4      p\        \        V4      RRR7       Kz  	  R# r   TFrn  N)r\  ru   rv   rx   rB   r	   r+   r   rG   rH   irI   rb   s   &&   r8   test_is_valid_linkage_4_and_up1TestIsValidLinkage.test_is_valid_linkage_4_and_up  sc     q"aA		qA#wz*A

71:&A

1A,Q/uM	 !r7   c                0   \        ^^^4       F  p\        P                  P                  W"^,
          ,          ^,          4      pVP	                  \        V4      4      pVP	                  V4      p\        P                  ! V4      V^,          ^ 3,          P                  R4      p\        \        V4      RRR7       \        P                  ! \        4      ;_uu_ 4        \        P                  VRR7       RRR4       K  	  R#   + '       g   i     EK  ; ir   Frn  Trp  Nr\  ru   rv   rx   rB   r	   xpxatsetr+   r   r   r   rE   r0   r  s   &&   r8   -test_is_valid_linkage_4_and_up_neg_index_left@TestIsValidLinkage.test_is_valid_linkage_4_and_up_neg_index_left       q"aA		qA#wz*A

71:&A

1Aq	!Q$'"&&r*A,Q/Nz**&&q&5 +* ! +**   DDc                0   \        ^^^4       F  p\        P                  P                  W"^,
          ,          ^,          4      pVP	                  \        V4      4      pVP	                  V4      p\        P                  ! V4      V^,          ^3,          P                  R4      p\        \        V4      RRR7       \        P                  ! \        4      ;_uu_ 4        \        P                  VRR7       RRR4       K  	  R#   + '       g   i     EK  ; ir  r  r  s   &&   r8   .test_is_valid_linkage_4_and_up_neg_index_rightATestIsValidLinkage.test_is_valid_linkage_4_and_up_neg_index_right  r  r  c                0   \        ^^^4       F  p\        P                  P                  W"^,
          ,          ^,          4      pVP	                  \        V4      4      pVP	                  V4      p\        P                  ! V4      V^,          ^3,          P                  R4      p\        \        V4      RRR7       \        P                  ! \        4      ;_uu_ 4        \        P                  VRR7       RRR4       K  	  R#   + '       g   i     EK  ; ir   Frn  Trp  Ng      r  r  s   &&   r8   'test_is_valid_linkage_4_and_up_neg_dist:TestIsValidLinkage.test_is_valid_linkage_4_and_up_neg_dist  s     q"aA		qA#wz*A

71:&A

1Aq	!Q$'"&&t,A,Q/Nz**&&q&5 +* ! +**r  c                0   \        ^^^4       F  p\        P                  P                  W"^,
          ,          ^,          4      pVP	                  \        V4      4      pVP	                  V4      p\        P                  ! V4      V^,          ^3,          P                  R4      p\        \        V4      RRR7       \        P                  ! \        4      ;_uu_ 4        \        P                  VRR7       RRR4       K  	  R#   + '       g   i     EK  ; ir  r  r  s   &&   r8   )test_is_valid_linkage_4_and_up_neg_counts<TestIsValidLinkage.test_is_valid_linkage_4_and_up_neg_counts  r  r  r1   N)r   r   F)r   r   F)r   r   T)r   r   T)r2   r3   r4   r5   r   r   r   ru  r~  r  r  r  r  r  r  r6   r   r   s   @r8   rj  rj    s`      [[0 3N OGOGBCN
6
6
6
6 
6r7   rj  c                      a  ] tR tRt o R t]P                  P                  R. RO4      R 4       tR t	R t
R tR tR	 tR
tV tR# )TestIsValidInconsistenti  c                    VP                  . RO. RO.VP                  R7      p\        \        V4      RRR7       \	        \
        \        VRR7       R# rx  )rB   r{  r+   r   rD   r|  rG   rH   Rs   && r8   test_is_valid_im_int_type1TestIsValidInconsistent.test_is_valid_im_int_type  sD    JJ&(/1xx  9AuEiat<r7   rk  c                    VP                  . RO. RO.VP                  R7      pVRV1RV13,          p\        \        V4      VRR7       V'       g   \	        \
        \        VRR7       R# R# rm  )rB   r   r+   r   rD   rE   )rG   rr  rs  rt  rH   r  s   &&&&& r8   test_is_valid_im_various_size5TestIsValidInconsistent.test_is_valid_im_various_size  sd     JJ))+24**  >eteUdUlOAuE*k1DA r7   c                    VP                  RVP                  R7      p\        \        V4      RRR7       \	        \
        \        VRR7       R# r  )rN   r   r+   r   rD   rE   r  s   && r8   test_is_valid_im_empty.TestIsValidInconsistent.test_is_valid_im_empty  s6    HHV2::H.AuEj+q=r7   c                   \        ^^^4       Ft  p\        P                  P                  W"^,
          ,          ^,          4      p\	        V4      p\        V4      pVP                  V4      p\        \        V4      RRR7       Kv  	  R# r  )	r\  ru   rv   rx   r	   r   rB   r+   r   rG   rH   r  rI   rb   r  s   &&    r8   test_is_valid_im_4_and_up1TestIsValidInconsistent.test_is_valid_im_4_and_up#  sa     q"aA		qA#wz*A
AQA

1AKND%H !r7   c                (   \        ^^^4       F  p\        P                  P                  W"^,
          ,          ^,          4      p\	        V4      p\        V4      p\        P                  ! V4      V^,          ^ 3,          P                  R4      pVP                  V4      p\        \        V4      RRR7       \        P                  ! \        4      ;_uu_ 4        \        P                  VRR7       RRR4       K  	  R#   + '       g   i     EK  ; ir   Frn  Trp  Ng       r\  ru   rv   rx   r	   r   r  r  r  rB   r+   r   r   r   rE   r0   r  s   &&    r8   (test_is_valid_im_4_and_up_neg_index_left@TestIsValidInconsistent.test_is_valid_im_4_and_up_neg_index_left-       q"aA		qA#wz*A
AQAq	!Q$(#''-A

1AKNE5Iz**!!!4!0 +* ! +**   C??Dc                (   \        ^^^4       F  p\        P                  P                  W"^,
          ,          ^,          4      p\	        V4      p\        V4      p\        P                  ! V4      V^,          ^3,          P                  R4      pVP                  V4      p\        \        V4      RRR7       \        P                  ! \        4      ;_uu_ 4        \        P                  VRR7       RRR4       K  	  R#   + '       g   i     EK  ; ir  r  r  s   &&    r8   )test_is_valid_im_4_and_up_neg_index_rightATestIsValidInconsistent.test_is_valid_im_4_and_up_neg_index_right:  r  r  c                (   \        ^^^4       F  p\        P                  P                  W"^,
          ,          ^,          4      p\	        V4      p\        V4      p\        P                  ! V4      V^,          ^3,          P                  R4      pVP                  V4      p\        \        V4      RRR7       \        P                  ! \        4      ;_uu_ 4        \        P                  VRR7       RRR4       K  	  R#   + '       g   i     EK  ; ir  r  r  s   &&    r8   "test_is_valid_im_4_and_up_neg_dist:TestIsValidInconsistent.test_is_valid_im_4_and_up_neg_distG  s     q"aA		qA#wz*A
AQAq	!Q$'"&&t,A

1AKNE5Iz**!!!4!0 +* ! +**r  r1   Nr  )r2   r3   r4   r5   r  r   r   r   r  r  r  r  r  r  r6   r   r   s   @r8   r  r    sY     = [[0 3N OBOB>I111 1r7   r  c                   >   a  ] tR tRt o R tR tR tR tR tRt	V t
R# )	TestNumObsLinkageiU  c                j    VP                  RVP                  R7      p\        \        \        V4       R# r   r   Nr  )rN   r   rD   rE   r   r}  s   && r8   test_num_obs_linkage_empty,TestNumObsLinkage.test_num_obs_linkage_emptyW  s$    HHV2::H.j/15r7   c                j    VP                  . RO.VP                  R7      p\        V4      ^8X  g   Q hR# )r   r   Nry  rB   r   r   r}  s   && r8   test_num_obs_linkage_1x4*TestNumObsLinkage.test_num_obs_linkage_1x4\  s.    JJ'rzzJ:q!Q&&&r7   c                p    VP                  . RO. RO.VP                  R7      p\        V4      ^8X  g   Q hR# )r   r   Nry  rz  r  r}  s   && r8   test_num_obs_linkage_2x4*TestNumObsLinkage.test_num_obs_linkage_2x4a  s9    JJ&(/1zz  ;q!Q&&&r7   c                    \        ^^^4       Fb  p\        P                  P                  W"^,
          ,          ^,          4      pVP	                  \        V4      4      p\        V4      V8X  d   Kb  Q h	  R# )r   N)r\  ru   rv   rx   rB   r	   r   r  s   &&   r8   test_num_obs_linkage_4_and_up/TestNumObsLinkage.test_num_obs_linkage_4_and_upg  sW     q"aA		qA#wz*A

71:&A"1%*** !r7   c                    \        ^^
4       FZ  p\        P                  P                  V^4      p\	        V4      pVP                  \        V4      4      p\        V4      V8X  d   KZ  Q h	  R# r   N)r\  ru   rv   rx   r'   rB   r	   r   )rG   rH   r{   rp   r(  rb   s   &&    r8   !test_num_obs_linkage_multi_matrix3TestNumObsLinkage.test_num_obs_linkage_multi_matrixo  sT    q"A		q!$AaA

71:&A"1%***	 r7   r1   N)r2   r3   r4   r5   r  r  r  r  r  r6   r   r   s   @r8   r  r  U  s#     6
'
'++ +r7   r  c                   z   a  ] tR tRt o R tR t]P                  P                  R. R	O4      R 4       t	R t
RtV tR# )
TestLeavesListix  c                    VP                  . RO.VP                  R7      p\        V4       \        \	        V4      ^ ^.RR7       R# )r   r   rs   r   Nry  rB   r   r   r   r   r}  s   && r8   test_leaves_list_1x4#TestLeavesList.test_leaves_list_1x4{  s6    JJ'rzzJ:
AAU;r7   c                    VP                  . RO. RO.VP                  R7      p\        V4       \        \	        V4      . RORR7       R# )r   r   rs   r   Nry  rz  )r   r   r   r  r}  s   && r8   test_leaves_list_2x4#TestLeavesList.test_leaves_list_2x4  s=    JJ&(/1zz  ;
A	>r7   rW   c                    \         P                  pVP                  \        W14      4      p\	        V4      p\        VP                  4       \        V4      R R7       R# )rs   r   N)r.   r  rB   r	   r   r   	pre_orderr   )rG   rW   rH   rp   rb   nodes   &&&   r8   test_leaves_list_Q!TestLeavesList.test_leaves_list_Q  sB      ##JJwq)*qz(+a.uEr7   c                (   \         P                  pVP                  \        VR 4      4      p\	        V4      p\        VP                  4       VP                  4       P                  4       VP                  4       P                  4       ,           RR7       R# )r   rs   r   N)	r.   r  rB   r	   r   r   r  get_left	get_right)rG   rH   rp   rb   r  s   &&   r8   test_Q_subtree_pre_order'TestLeavesList.test_Q_subtree_pre_order  sf    ##JJwq(+,qz(224t~~7G7Q7Q7SS"	$r7   r1   N)r   rR   rS   rT   rf   rg   r   )r2   r3   r4   r5   r  r  r   r   r   r  r  r6   r   r   s   @r8   r  r  x  sE     <? [[XSUFUF$ $r7   r  c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )TestCorrespondi  c                    VP                  RVP                  R7      pVP                  RVP                  R7      p\        \        \        W24       R# )r   r   NrM   r  )rN   r   rD   rE   r   r  s   &&  r8   test_correspond_empty$TestCorrespond.test_correspond_empty  s:    HHTH,HHU"**H-j*a3r7   c                   \        ^^4       Fu  p\        P                  P                  W"^,
          ,          ^,          4      pVP	                  \        V4      4      pVP	                  V4      p\        \        WC4      4       Kw  	  \        ^^^4       Fu  p\        P                  P                  W"^,
          ,          ^,          4      pVP	                  \        V4      4      pVP	                  V4      p\        \        WC4      4       Kw  	  R# r  )r\  ru   rv   rx   rB   r	   r   r   r  s   &&   r8   test_correspond_2_and_up'TestCorrespond.test_correspond_2_and_up  s     q!A		qA#wz*A

71:&A

1AJq$%	 
 q"aA		qA#wz*A

71:&A

1AJq$%	 !r7   c                   \        \        \        \        ^^4      4      \        \        ^^4      4      4      4      \        \        \        \        ^^4      4      \        \        ^^4      4      4      4      ,            F  w  r#\        P                  P                  W"^,
          ,          ^,          4      p\        P                  P                  W3^,
          ,          ^,          4      pVP                  \        V4      4      pVP                  \        V4      4      pVP                  V4      pVP                  V4      p\        We4      '       d   Q h\        Wt4      '       g   K  Q h	  R# r  	listzipr\  ru   rv   rx   rB   r	   r   rG   rH   r  jrI   y2rb   r   s   &&      r8   test_correspond_4_and_up'TestCorrespond.test_correspond_4_and_up  s     CU1a[ 14a3DEFCU1a[ 14a3DEFG GFQ		qA#wz*AQ3
+B

71:&AGBK(B

1ABB!!((((!"((((Gr7   c                   \        \        \        \        ^^4      4      \        \        ^^4      4      4      4      \        \        \        \        ^^4      4      \        \        ^^4      4      4      4      ,            F  w  r#\        P                  P                  W"^,
          ,          ^,          4      p\        P                  P                  W3^,
          ,          ^,          4      pVP                  \        V4      4      pVP                  \        V4      4      pVP                  V4      pVP                  V4      p\        We4      '       d   Q h\        Wt4      '       g   K  Q h	  R# r  r  r  s   &&      r8   test_correspond_4_and_up_2)TestCorrespond.test_correspond_4_and_up_2  s     CU1a[ 14b"3FGHCU1a[ 14b"3FGHI IFQ		qA#wz*AQ3
+B

71:&AGBK(B

1ABB!!((((!"((((Ir7   r1   N)
r2   r3   r4   r5   r  r  r  r  r6   r   r   s   @r8   r  r    s     4&)) )r7   r  c                   b   a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tR tR tRtV tR# )TestIsMonotonici  c                j    VP                  RVP                  R7      p\        \        \        V4       R# r  )rN   r   rD   rE   r   r}  s   && r8   test_is_monotonic_empty'TestIsMonotonic.test_is_monotonic_empty  s$    HHV2::H.j,2r7   c                l    VP                  . RO.VP                  R7      p\        V4      '       g   Q hR# )r   r   Nr   r   333333?r   rB   r   r   r}  s   && r8   test_is_monotonic_1x4%TestIsMonotonic.test_is_monotonic_1x4  s)    JJ'rzzJ:Ar7   c                r    VP                  . RO. RO.VP                  R7      p\        V4      '       g   Q hR# )r   r   Nr   )r   r   皙?r   r  r}  s   && r8   test_is_monotonic_2x4_T'TestIsMonotonic.test_is_monotonic_2x4_T  s4    JJ&(/1zz  ;Ar7   c                r    VP                  . RO. RO.VP                  R7      p\        V4      '       d   Q hR# )r   r   N)r   r   r  r   )r   r   r  r   r  r}  s   && r8   test_is_monotonic_2x4_F'TestIsMonotonic.test_is_monotonic_2x4_F  s7    JJ&(/1zz  ;??""?r7   c                x    VP                  . RO. RO. RO.VP                  R7      p\        V4      '       g   Q hR# )r   r   Nr   r   r   r  r   r   r   g333333?r   r  r}  s   && r8   test_is_monotonic_3x4_T'TestIsMonotonic.test_is_monotonic_3x4_T  s9    JJ&&(/1zz  ; Ar7   c                x    VP                  . RO. RO. RO.VP                  R7      p\        V4      '       d   Q hR# )r   r   Nr   )r   r   皙?r   r  r  r}  s   && r8   test_is_monotonic_3x4_F1(TestIsMonotonic.test_is_monotonic_3x4_F1  <    JJ&&(/1zz  ;  ??""?r7   c                x    VP                  . RO. RO. RO.VP                  R7      p\        V4      '       d   Q hR# )r   r   N)r   r   g?r   r  r  r  r}  s   && r8   test_is_monotonic_3x4_F2(TestIsMonotonic.test_is_monotonic_3x4_F2  r  r7   c                x    VP                  . RO. RO. RO.VP                  R7      p\        V4      '       d   Q hR# )r   r   Nr   r  )r   r   r  r   r  r}  s   && r8   test_is_monotonic_3x4_F3(TestIsMonotonic.test_is_monotonic_3x4_F3  r  r7   c                ~    VP                  \        \        P                  R 4      4      p\	        V4      '       g   Q hR# r   N)rB   r	   r.   r`   r   r}  s   && r8    test_is_monotonic_tdist_linkage10TestIsMonotonic.test_is_monotonic_tdist_linkage1  s.     JJw2998DEAr7   c                    VP                  \        \        P                  R 4      4      p\        P
                  ! V4      R,          P                  R4      p\        V4      '       d   Q hR# )r   rA   N)r   r   )rB   r	   r.   r`   r  r  r  r   r}  s   && r8    test_is_monotonic_tdist_linkage20TestIsMonotonic.test_is_monotonic_tdist_linkage2
  sM     JJw2998DEFF1IdO$??""?r7   c                    \         P                  pVP                  \        VR 4      4      p\	        V4      '       g   Q hR# r  )r.   r  rB   r	   r   )rG   rH   rp   rb   s   &&  r8   test_is_monotonic_Q_linkage+TestIsMonotonic.test_is_monotonic_Q_linkage  s2      ##JJwq(+,Ar7   r1   N)r2   r3   r4   r5   r  r  r  r
  r  r  r  r  r  r!  r$  r6   r   r   s   @r8   r  r    sA     3

##### r7   r  c                   t   a  ] tR tRt o R tR t]P                  P                  R. RO4      R 4       t	Rt
V tR# )	TestMaxDistsi  c                j    VP                  RVP                  R7      p\        \        \        V4       R# r  )rN   r   rD   rE   r   r}  s   && r8   test_maxdists_empty_linkage(TestMaxDists.test_maxdists_empty_linkage  s$    HHV2::H.j(A.r7   c                    VP                  . RO.VP                  R7      p\        V4      p\        W!4      p\	        W4RR7       R# )r   r   rs   r]   Nr   r   r  r   )rB   r   r   calculate_maximum_distancesr*   )rG   rH   rb   MD
expectedMDs   &&   r8   !test_maxdists_one_cluster_linkage.TestMaxDists.test_maxdists_one_cluster_linkage!  s8    JJ'rzzJ:a[07
U3r7   rW   c                    \         P                  pVP                  \        W14      4      p\	        V4      p\        WB4      p\        WVR R7       R# )rs   r]   N)r.   r  rB   r	   r   r-  r*   )rG   rW   rH   rp   rb   r.  r/  s   &&&    r8   test_maxdists_Q_linkage$TestMaxDists.test_maxdists_Q_linkage(  s?      ##JJwq)*a[07
U3r7   r1   Nr   rR   r   rf   rg   )r2   r3   r4   r5   r)  r0  r   r   r   r3  r6   r   r   s   @r8   r'  r'    s:     /
4 [[FH4H4r7   r'  c                   z   a  ] tR tRt o R tR tR t]P                  P                  R. R	O4      R 4       t
RtV tR# )
TestMaxInconstsi3  c                    VP                  RVP                  R7      pVP                  RVP                  R7      p\        \        \        W#4       R# r  )rN   r   rD   rE   r   rG   rH   rb   r  s   &&  r8   test_maxinconsts_empty_linkage.TestMaxInconsts.test_maxinconsts_empty_linkage6  s:    HHV2::H.HHV2::H.j+q4r7   c                    VP                  . RO.VP                  R7      p\        P                  P	                  ^^4      pVP                  V4      p\        \        \        W#4       R# r   r   Nr,  )rB   r   ru   rv   rx   rD   rE   r   r9  s   &&  r8   test_maxinconsts_difrow_linkage/TestMaxInconsts.test_maxinconsts_difrow_linkage<  sJ     JJ'rzzJ:IINN1a JJqMj+q4r7   c                    VP                  . RO.VP                  R7      pVP                  . RO.VP                  R7      p\        W#4      p\        W#VR7      p\	        WERR7       R# )r   r   r   rs   r]   Nr,  r   r   r   r  )rB   r   r   !calculate_maximum_inconsistenciesr*   rG   rH   rb   r  r.  r/  s   &&    r8   $test_maxinconsts_one_cluster_linkage4TestMaxInconsts.test_maxinconsts_one_cluster_linkageD  sT    JJ'rzzJ:JJ'rzzJ:6qC
U3r7   rW   c                    \         P                  p\        W14      pVP                  \	        V4      4      pVP                  V4      p\        WE4      p\        WEVR 7      p\        WgRR7       R# )r   rs   r]   N)r.   r  r	   rB   r   r   rB  r*   rG   rW   rH   rp   rb   r  r.  r/  s   &&&     r8   test_maxinconsts_Q_linkage*TestMaxInconsts.test_maxinconsts_Q_linkageL  sX      ##AJJ|A'JJqM6qC
U3r7   r1   Nr5  )r2   r3   r4   r5   r:  r>  rD  r   r   r   rH  r6   r   r   s   @r8   r7  r7  3  s?     554 [[FH4H4r7   r7  c                     a  ] tR tRt o R t]P                  P                  R]! ^4      4      R 4       t	]P                  P                  R]! ^4      4      R 4       t
R t]P                  P                  R. RO4      R 4       tR	tV tR
# )TestMaxRStatiY  c                D   VP                  . RO.VP                  R7      pVP                  . RO.VP                  R7      p\        P                  ! \        4      ;_uu_ 4        \        W#R4       RRR4       \        P                  ! \        4      ;_uu_ 4        \        W#R4       RRR4       \        P                  ! \        4      ;_uu_ 4        \        W#^4       RRR4       R#   + '       g   i     L; i  + '       g   i     L\; i  + '       g   i     R# ; i)r   r   gffffff
@Nr,  rA  r   )rB   r   r   r   r|  r   rE   r9  s   &&  r8   test_maxRstat_invalid_index(TestMaxRStat.test_maxRstat_invalid_index\  s    JJ'rzzJ:JJ'rzzJ:]]9%%Q3 &]]:&&Q2 ']]:&&Q1 '&	 &%&&&&&s$   #C(C;D(C8	;D	D	r  c                    VP                  RVP                  R7      pVP                  RVP                  R7      p\        \        \        W4V4       R# r  )rN   r   rD   rE   r   rG   r  rH   rb   r  s   &&&  r8   test_maxRstat_empty_linkage(TestMaxRStat.test_maxRstat_empty_linkageg  s>     HHV2::H.HHV2::H.j(A!4r7   c                    VP                  . RO.VP                  R7      p\        P                  P	                  ^^4      pVP                  V4      p\        \        \        W4V4       R# r=  )rB   r   ru   rv   rx   rD   rE   r   rP  s   &&&  r8   test_maxRstat_difrow_linkage)TestMaxRStat.test_maxRstat_difrow_linkagen  sL     JJ'rzzJ:IINN1a JJqMj(A!4r7   c                    VP                  . RO.VP                  R7      pVP                  . RO.VP                  R7      p\        W#^4      p\        W#^V4      p\	        WERR7       R# )r   r   rs   r]   Nr,  rA  )rB   r   r   rB  r*   rC  s   &&    r8   !test_maxRstat_one_cluster_linkage.TestMaxRStat.test_maxRstat_one_cluster_linkagew  sX    JJ'rzzJ:JJ'rzzJ:aA6qQC
U3r7   rW   c                    \         P                  p\        W14      pVP                  \	        V4      4      pVP                  V4      p\        WE^4      p\        WE^V4      p\        WgRR7       R# )r   rs   r]   N)r.   r  r	   rB   r   r   rB  r*   rG  s   &&&     r8   test_maxRstat_Q_linkage$TestMaxRStat.test_maxRstat_Q_linkage  s\      ##AJJ|A'JJqMaA6qQC
U3r7   r1   Nr5  )r2   r3   r4   r5   rM  r   r   r   r\  rQ  rT  rW  rZ  r6   r   r   s   @r8   rK  rK  Y  s     	 [[S%(+5 ,5 [[S%(+5 ,54 [[FH4H4r7   rK  c                     a  ] tR tRt o R tR tR t]P                  P                  ]
'       * RR7      R 4       t]! RR	R7      ]! R
RR7      ]P                  P                  ]
'       * RR7      ]P                  P                  R. RO4      R 4       4       4       4       t]! RR	R7      ]! R
RR7      ]P                  P                  ]
'       * RR7      R 4       4       4       t]P                   R 4       tR tR tR tRtV tR# )TestDendrogrami  c                    VP                  \        \        P                  R 4      4      p\	        VRR7      pVR,          p\        V. RO4       R# )r   Tno_plotleavesNr   r   r   r   r   r   )rB   r	   r.   r`   r   r   )rG   rH   rb   r  ra  s   &&   r8   $test_dendrogram_single_linkage_tdist3TestDendrogram.test_dendrogram_single_linkage_tdist  s>    JJw2998DEq$'8V/0r7   c                    VP                  \        \        P                  R 4      4      p\	        \
        \        VRR7       R# )r   fooorientationN)rB   r	   r.   r`   rD   rE   r   r}  s   && r8   test_valid_orientation%TestDendrogram.test_valid_orientation  s,    JJw2998DEj*aUCr7   c                    VP                  \        \        P                  R 4      4      p. ROp\	        W!P                  V4      RR7      p\	        W#RR7      pWE8X  g   Q hR# )r   T)labelsr`  N)r   r   r   r   r   r   )rB   r	   r.   r`   r   )rG   rH   rb   rl  result1result2s   &&    r8   test_labels_as_array_or_list+TestDendrogram.test_labels_as_array_or_list  sP    JJw2998DE#Qzz&'94HQt<!!!r7   zno matplotlibr>   c           
        VP                  . RO. RO. RO.4      p\        P                  ! 4        \        P                  ! \
        4      ;_uu_ 4       p\        V\        \        ^d4      4      R7       RRR4       R\        XP                  4      9   g   Q h\        P                  ! \
        RR7      ;_uu_ 4        \        V. R7       RRR4       \        P                  ! 4        R#   + '       g   i     L}; i  + '       g   i     L:; i)r   )rl  Nz.Dimensions of Z and labels must be consistent.r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )rB   pltfigurer   r   rE   r   r  r\  strvalueclose)rG   rH   linkexc_infos   &&  r8   test_valid_label_size$TestDendrogram.test_valid_label_size  s    zz
 
 	

]]:&&(tDs$45 '?hnn%& 	& & ]]FH H tB'H
 			 '&
H Hs    C':C:'C7	:D
	torchzFMPL 3.9.2 & torch DeprecationWarning from __array_wrap__ and NumPy 2.0z
dask.arrayz.dask.array has bad interaction with matplotlibrh  c                   VP                  \        \        P                  R 4      4      pR. ROR. RO. RO. RO. RO. RO.R. RO. RO. RO. RO. RO.R. ROR. ROR. RO/p\        P
                  ! 4       pVP                  ^4      p\        W6VR7      p\        P                   ! VR,          4      VR&   \        Wt4       \        W6V^^ZR7       VR9   d   VP                  4       ^ ,          MVP                  4       ^ ,          p\        VP                  4       ^Z4       \        VP                  4       ^4       \        W6V^ZR	7       VR9   d   VP                  4       ^ ,          MVP                  4       ^ ,          p\        VP                  4       ^Z4       \        W6V^R
7       VR9   d   VP                  4       ^ ,          MVP                  4       ^ ,          p\        VP                  4       ^4       \        P                  ! 4        \        W1R7      p	\        P                  ! 4        \        P                   ! V	R,          4      V	R&   \        W4       R# )r   
color_listdcoordicoordivlra  leaves_color_list)axrh  )r  rh  leaf_font_sizeleaf_rotation)r  rh  r  )r  rh  r  rg  N)C1C0r  r  r  rA   r   r   rA   )rA   r   r   rA   )rA   r   r   r   rA   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        @@r  )251034rb  )r  r  r  r  r  r  )topbottom)rB   r	   r.   r`   rr  rs  add_subplotr   ru   r   get_xticklabelsget_yticklabelsget_rotationget_sizerv  )
rG   rh  rH   rb   expectedfigr  R1	testlabelR2s
   &&&       r8   test_dendrogram_plot#TestDendrogram.test_dendrogram_plot  s    JJw2998DE "@7799;	=
 57779	;
 90')M  jjl__S! k:zz"X,/8R" 	1"$B	8 //  ###%a( 	
 	Y++-r2Y'')2.1!#	% //  ###%a( 	
 	Y++-r21"$	& //  ###%a( 	
 	Y'')2.		 3		zz"X,/8R"r7   c                "   VP                  \        \        P                  R 4      4      p\	        V^RRR7      p\
        P                  ! 4        \        P                   ! VR,          4      VR&   \        VRR.R. RO.R. RO.RR	R
.R^^	.RRR./4       \	        V^RRR7      p\
        P                  ! 4        \        P                   ! VR,          4      VR&   \        VR. ROR. RO. RO. RO. RO.R. RO. RO. RO. RO.R. ROR. ROR. RO/4       R# )r   lastpT)show_contractedr~  r}  r  r  r  (2)z(4)ra  r  mticaN)rA   r   r   rA   r  )r  r  r  r  r  )rA   r   r   rA   r  r  )r  r  r  r  )r  r        D@r  )r   r        @@@r  )r  r  r  r  r  )r   r   r   r   r   )r  r  r  r  r  )	rB   r	   r.   r`   r   rr  rv  ru   r   r9  s   &&  r8   test_dendrogram_truncate_mode,TestDendrogram.test_dendrogram_truncate_mode  s    JJw2998DEq!Wd;		jj8-(Qv!$<#=!$:#;!Aq6,tTl 	 q!Wd;		jj8-(Q'?!$<$<$>$@$B "$:$<$<$<$>  ;!?,.L 	r7   c                    \        4       # r   r,   r0  s   &r8   dendrogram_lockTestDendrogram.dendrogram_lock$  s	    vr7   c           	     <   VP                  \        \        P                  R 4      4      pV;_uu_ 4        \	        . RO4       \        VRR^R7      p\	        . RO4       VR,          p\        V. RO4       \	        R4       RRR4       R#   + '       g   i     R# ; i)	r   Tg)r`  above_threshold_colorcolor_thresholdr}  N)r   mrI   k)r  rr   r  rI   r  )r   r  r  r  r  )rB   r	   r.   r`   r   r   r   )rG   rH   r  rb   r  r}  s   &&&   r8   test_dendrogram_colors%TestDendrogram.test_dendrogram_colors(  ss    JJw2998DE_"#781d14cKA"#AB<J%>? #4( ___s   AB

B	c           	         \         P                  ! . RO. RO. RO. RO. R	O. R	O.4      pVP                  \        VR4      4      p\        VRR7      p. R
OpVR,          p\	        We4       R# )r   r   Tr_  r  Nr   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  C2r  ru   rB   r	   r   r   rG   rH   rp   rb   r|   
exp_colorscolorss   &&     r8   %test_dendrogram_leaf_colors_zero_dist4TestDendrogram.test_dendrogram_leaf_colors_zero_dist9  sc     JJ	!!!!!# $ JJwq(+,q$'9
&'V(r7   c           	         \         P                  ! . RO. RO. RO. R	O. R
O. R
O.4      pVP                  \        VR4      4      p\        VRR7      p. ROpVR,          p\	        We4       R# )r   r   Tr_  r  Nr  )r   r   g?r  r  r  r  r  r  s   &&     r8   test_dendrogram_leaf_colors*TestDendrogram.test_dendrogram_leaf_colorsH  sc     JJ	#!!!!# $ JJwq(+,q$'9
&'V(r7   r1   N)r  r  leftright)r2   r3   r4   r5   rc  ri  ro  r   r   skipifhave_matplotlibry  r   r   r  r  fixturer  r  r  r  r6   r   r   s   @r8   r]  r]    s5    1D" [[O+OD E& g! l@ [[O+OD[[],NO<# P E	<#| g" l@ [[O+OD E	> ^^ )")) )r7   r]  c                    V P                   ^ ,          ^,           pVP                  V^,
          3V P                  R7      p\        ^ V^,
          4       EF5  pVP                  R4      pW^ 3,          pW^3,          pWb8  dP   W1P	                  WaP
                  R7      V,
          ,          p\        P                  ! V^ 4      P                  V4      pWr8  dP   W1P	                  WqP
                  R7      V,
          ,          p	\        P                  ! V^4      P                  V	4      p\        P                  ! V^4      P                  W^3,          4      p\        P                  ! W44      P                  VP                  V4      4      pEK8  	  V# r   r   )r   )
shaperN   r   r\  rB   r{  r  r  r  max)
rb   rH   r{   Br  rg  r  r  b_leftb_rights
   &&        r8   r-  r-  X  s#   	
QA
!A#qww'A1a!e_HHTNAwQ$9zz$hhz7!;<Fq!  (A:

5
9A=>Gq!  )AFF1aLQ!tW%FF1LRVVAY'  Hr7   c                 ,   V P                   ^ ,          ^,           pVP                  W4      pVP                  V^,
          3VR7      p\        ^ V^,
          4       EF5  pVP                  R4      pW^ 3,          p	W^3,          p
W8  dP   WcP	                  WP
                  R7      V,
          ,          p\        P                  ! V^ 4      P                  V4      pW8  dP   WcP	                  WP
                  R7      V,
          ,          p\        P                  ! V^4      P                  V4      p\        P                  ! V^4      P                  WV3,          4      p\        P                  ! Wg4      P                  VP                  V4      4      pEK8  	  V# r  )
r  result_typerN   r\  rB   r{  r  r  r  r  )rb   r  r  rH   r{   r   r  r  rg  r  r  r  r  s   &&&&         r8   rB  rB  k  s-   	
QANN1 E
!A#u%A1a!e_HHTNAwQ$9zz$hhz7!;<Fq!  (A:

5
9A=>Gq!  )AFF1aLQ!tW%FF1LRVVAY'  Hr7   c                    \         P                  P                  ^4       ^2p\         P                  P                  V^4      pV P	                  \        V4      4      p\        V4      p\        WDP                  4       8  4       \        VP                  4       VP                  4       8  4       \        VP                  4       VP                  4       8H  4       \        VP                  4       VP                  4       8g  4       R# )   N)
ru   rv   seedrandnrB   r   r   r   r  r  )rH   rb  rp   rb   trees   &    r8   test_node_comparer    s    IINN2D
		a A


47A1:DD==?"#DNNt}}./DNN 001DNN/0r7   c           	         \         P                  P                  ^4       ^2p\         P                  P                  V^4      pV P	                  \        V4      4      p\        V4      p\        VR	,          V P                  V4      RRR7       \        VR,          V P                  V4      RRR7       \        \         P                  ! V4      P                  ^ 4      \         P                  ! V^,
          R
R
4      4       \        VRR.3,          \        V^R7      RR7       \        VRRR.3,          \        V^^
.R7      RR7       \        VRRR.3,          \        V^
^.R7      RR7       \        V4      pT P	                  V Uu. uF  qfP                  NK  	  up4      p\        VR\         P                  ! V^.4      3,          \        V^R7      RR7       \        VR\         P                  ! V^^
.4      3,          \        V^^
.R7      RR7       \        VR\         P                  ! V^
^.4      3,          \        V^
^.R7      RR7       R# u upi )r  NNNrs   F)rt   check_dtype)
n_clustersr   )heightN)r  r   r   )r  r   i)ru   rv   r  r  rB   r   r    r*   arangerN   r   r  r"   distsearchsorted)rH   rb  rp   rb   cutreenodesr  heightss   &       r8   test_cut_treer    s   IINN2D
		a A


47Aa[F F4L"))D/5QF5M288D>5QF#''*BIIdQhB,GHF1rd7OXaA%>UKF1r3i<((1!R*IPUVF1sBi<((1"a*IPUV"Ejj6))67GF1boogs;;<Qq)7F1boog2w??@Q2w/e=F1boogAw??@QAw/e= 7s   Ic                    \        V P                  \        \        P                  4      4      V P                  \        P                  4      4      p\        P
                  p\        WP                  V4      R R7       \        V P                  \        \        P                  R4      4      V P                  \        P                  4      4      p\        P                  p\        WP                  V4      RR7       R# )r\   r]   r   rm   N)	r!   rB   r	   r.   r`   r   r*   rp   linkage_X_ward_olo)rH   rb   rc   s   &  r8   r   r     s     	bjj1D1K1K)LM jj)<)C)CD	FA#==IAzz),59 	bjj1D1F1F)OP jj)<)>)>?	AA#66IAzz),59r7   z"`Heap` only supports NumPy backend)np_onlyr?   c                 &   V P                  . RO4      p\        V4      pVP                  4       p\        VR,          ^4       \        VR,          R4       VP	                  4        VP                  4       p\        VR,          ^4       \        VR,          R4       VP                  ^R4       VP                  4       p\        VR,          ^4       \        VR,          ^ 4       VP	                  4        VP	                  4        VP                  ^^
4       VP                  4       p\        VR,          ^4       \        VR,          ^4       VP	                  4        VP                  4       p\        VR,          ^4       \        VR,          ^
4       R# )r   keyru  g      @Nr         )r   r   r   r  r   )rB   r&   get_minr   
remove_minchange_value)rH   r   heappairs   &   r8   	test_Heapr    s%   ZZ+,F<D<<>Dea g%OO<<>Dea g#a<<>Dea g"OOOOa<<>Dea g"OO<<>Dea g#r7   )\numpyru   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_extrar  	threadingr-    r.   r0   
matplotlibusematplotlib.pyplotpyplotrr  r  	Exceptionr   r   r;   r   r   r   r   r  r!  r-  rj  r  r  r  r  r  r'  r7  rK  r]  r-  rB  r  r  r   r  r1   r7   r8   <module>r     sa  D  T T  *K K K K K K K K * (E E ( (  !( (NN5#O ;;//  7c/ c/ c/L < 	T 	T !	T 8&& && &&R $o6$ $ 7$@ < + + !+  8*2 *2 *2Z 7: : : =!R7 R7 "R7j #$Q6 Q6 %Q6h ;I1 I1  I1X +  +F ;($ $ )$D :0) 0) 0)f < F F !FR 84 4 42 ;"4 "4  "4J 8/4 /4 /4d :H) H) H)V& /0B ( 7	1 	1 8= =6 (): *: $'KL$ M$_#  Os   I> >	J
J