Ë
    âQ(hJ  ã                   óÊ  — d dl Z d dlZd dlmZ d dlmZ d dlZd dlm	Z	m
Z
mZmZ d dlZd dlmZ d dlmZmZmZmZmZmZmZ d dlmZ d dlmZ d d	lmZ d d
lmZ  d dl!m"Z"m#Z#m$Z$m%Z%m&Z& eejN                  jQ                  d«      gZ)ejN                  jT                  Z* ejV                  g d¢«      jY                  d«      Z- ejV                  ddgddgddgddgddgddgddgddgddgddgddgg«      Z. ejV                  ddgddgddgg«      Z/ ejV                  ddgddgd d!gg«      Z0 ejV                  g d"¢«      Z1 G d#„ d$«      Z2 G d%„ d&«      Z3 e*d'¬(«       G d)„ d*«      «       Z4y)+é    N)Údeepcopy©ÚLock)Úassert_array_equalÚassert_equalÚassert_Úsuppress_warnings)Úraises)ÚkmeansÚkmeans2Úpy_vqÚvqÚwhitenÚClusterErrorÚ
_krandinit)Ú_vq)Úarray_api_compatible)Úmatrix)Úarray_api_extra)ÚSCIPY_ARRAY_APIÚarray_namespaceÚxp_copyÚxp_assert_closeÚxp_assert_equalÚskip_xp_backends(�  gš™™™™™Àg¸…ëQ¸ò?ç®Gázú¿ç
×£p=
û?gR¸…ëQ Àg…ëQ¸…@g¸…ëQ¸Àgffffffî?ç333333û¿g)\�Âõ(@çáz®Gáú¿çÃõ(\�Âå?g®GázÀg¸…ëQ¸
@çR¸…ëQÀgffffff@g…ëQ¸…û¿g
×£p=
ç¿ç×£p=
×ÿ¿g¸…ëQ¸@g      Àçq=
×£p@çš™™™™™ÀgHáz®G@g
×£p=
Àg333333@g…ëQ¸ù¿gìQ¸…ëý?ç\�Âõ(\ÿ¿g…ëQ¸@g®GázÀçáz®Gá@g=
×£p=Àç{®Gázô?g      Àçš™™™™™@gìQ¸…ëù¿g      ô?ç\�Âõ(\Àg\�Âõ(\	@ç¸…ëQ¸ò¿g¸…ëQ¸¾?ç=
×£p=ÀgHáz®GÑ¿ç�Âõ(\� Àgš™™™™™á¿r*   gq=
×£põ?g�Âõ(\�Àg¤p=
×£@ç…ëQ¸…Àg¸…ëQ¸Î?g\�Âõ(\û¿ç×£p=
×@gìQ¸…ëÀg)\�Âõ(@g¤p=
×£ Àç…ëQ¸…@g=
×£p=þ¿gö(\�Âõ@g¸…ëQ¸ Àg¤p=
×£Ð?gq=
×£pí¿g…ëQ¸ñ?ç      Àç)\�Âõ(ì?r0   g)\�Âõ( @g=
×£p=Àr&   ç=
×£p= Àg\�Âõ(\@g®GázÀg333333Ó?ç×£p=
×Àg�Âõ(\�Ò¿r)   g®Gáz®	@gffffffÀg®Gáz®û?g¸…ëQ¸Àg®Gázæ?çö(\�Âõü¿r.   gö(\�ÂõÀg®Gáz@gffffffÀçö(\�Âõô?g¸…ëQ¸ú¿ç¸…ëQ¸Àgáz®Gáò¿ç\�Âõ(\@ç\�Âõ(\Àg�Âõ(\�@çš™™™™™ý¿g      @r$   çÃõ(\�Âý?g)\�Âõ(Àg…ëQ¸…@g¤p=
×£Àg=
×£p=þ?çÍÌÌÌÌÌø¿g¤p=
×£ @gÃõ(\�Âõ¿gÃõ(\�Âí?ç®GázÀgìQ¸…ë@g…ëQ¸Àg\�Âõ(\@g¤p=
×£
ÀçìQ¸…ë@ç{®Gáz ÀgÍÌÌÌÌÌì¿ç¤p=
×£ÀgÍÌÌÌÌÌ
@ç¸…ëQ¸Àgffffff@çáz®GáÀgš™™™™™ý?ç
×£p=
û¿çÍÌÌÌÌÌü?g=
×£p=ö¿ç…ëQ¸å?r>   gR¸…ëQØ?ç…ëQ¸…÷¿g)\�Âõ(Ü?g¸…ëQ¸Àg)\�Âõ(@gR¸…ëQÀg…ëQ¸…@r!   gìQ¸…ë@ç¤p=
×£ð¿gR¸…ëQØ¿r9   gìQ¸…ë@ç
×£p=
Àg\�Âõ(\ç?r@   g=
×£p=ö?çq=
×£põ¿ç      ü?ç333333ÿ¿çÍÌÌÌÌÌô?r$   ç¸…ëQ¸@r"   gHáz®G@g333333Àg×£p=
×@g®Gáz®û¿g)\�Âõ(@r8   g333333ë?r>   g\�Âõ(\ß?gR¸…ëQÀg�Âõ(\� @r2   rK   g×£p=
×	ÀrL   r;   g
×£p=
÷?gìQ¸…ëé¿gš™™™™™ñ?çìQ¸…ëÀg\�Âõ(\@çq=
×£pù¿gq=
×£p@r$   g\�Âõ(\ç¿gö(\�ÂõÀçÍÌÌÌÌÌô¿r?   gš™™™™™É?g)\�Âõ(ÀgìQ¸…ë	@g®Gáz®ÿ¿gš™™™™™ù?g\�Âõ(\Àg…ëQ¸@çffffffÀç      @r0   ç\�Âõ(\û?g=
×£p=
Àg
×£p=
@ç×£p=
×û¿r1   çHáz®GÀg¸…ëQ¸þ?çìQ¸…ëÀg
×£p=
ó?r3   gö(\�Âõð?r   g×£p=
×ã¿rO   çö(\�ÂõØ?g{®Gázü¿gÍÌÌÌÌÌ@gR¸…ëQÀg…ëQ¸…@g…ëQ¸õ¿rD   g
×£p=
Àç®Gáz@gÍÌÌÌÌÌÀr(   gÃõ(\�Âý¿gHáz®G@g®Gáz Àg®Gáz®ó¿ç¤p=
×£ü¿rW   g
×£p=
Àg¤p=
×£À¿g      Àg¸…ëQ¸@rU   gq=
×£pù?rP   g®Gáz®@rT   g{®Gáz„?g…ëQ¸…Û¿g¤p=
×£À?g\�Âõ(\ÀgHáz®G@g      ü¿gö(\�Âõà¿rB   r   gq=
×£pñ¿g333333Ã?gáz®Gá Àr7   ç{®Gázø¿ç…ëQ¸…ó?çÍÌÌÌÌÌ Àg…ëQ¸…ë¿ç{®GázÀç=
×£p=@g)\�Âõ(Àg¤p=
×£
@gìQ¸…ëñ¿r&   gq=
×£pÀg
×£p=
ó¿r+   gHáz®Gé?ç�Âõ(\�ê¿g
×£p=
ï?g…ëQ¸…	Àg333333÷?rH   r'   g)\�Âõ(Àgáz®Gá@g…ëQ¸ÀgÃõ(\�Â	@ç…ëQ¸…ÿ¿rI   rA   g…ëQ¸…	@r^   g{®Gázø?rN   r:   r8   gffffff@r   g®Gáz®@r2   rQ   g�Âõ(\�Àg333333ã¿rE   gHáz®Gõ?rJ   gffffffæ?gffffffú¿gR¸…ëQô?g¸…ëQ¸ö¿gq=
×£pñ?ç      Àgö(\�Âõ@r<   g{®Gáz@gÍÌÌÌÌÌÀg®Gáz®ç?gHáz®Gñ¿g¸…ëQ¸ž¿r-   r5   g333333Àr=   gq=
×£pý¿gffffffú?g
×£p=
ÀrQ   r,   g×£p=
×@g333333Àg\�Âõ(\@g®Gáz®Àg×£p=
×÷?g\�Âõ(\ó¿rZ   g)\�Âõ(Àg
×£p=
@gÍÌÌÌÌÌÀr]   gffffffÀç=
×£p=@gš™™™™™Àgš™™™™™é?r4   g      @g      Àg®Gáz®@ç¤p=
×£ô¿r=   g®Gáz®Àr#   gHáz®Gý¿g®Gáz®ó?g×£p=
×ó¿rF   r\   gö(\�Âõ@g®Gáz
ÀrV   g…ëQ¸…Àg®Gáz@g®GázÀgR¸…ëQ@r   g
×£p=
×?ç�Âõ(\�ö¿g{®Gáz¤?r[   ç      ð?çìQ¸…ëý¿ra   gHáz®GÀg¸…ëQ¸@rU   g®Gázö?r"   g)\�Âõ(Ì¿re   g333333ÿ?gáz®Gáê¿r7   g…ëQ¸…Àg{®Gáz@çR¸…ëQô¿g333333@rX   ç{®Gáz
@gáz®GáÀgÍÌÌÌÌÌ@g
×£p=
÷¿r/   g)\�Âõ( Àg®Gáz®×?rb   g…ëQ¸Õ?r6   g{®Gáz@rS   rf   r_   rZ   r<   g{®GázÄ¿g=
×£p=ú¿g¸…ëQ¸î¿rM   gffffffö?rY   rg   rU   gÍÌÌÌÌÌÜ?g®Gáz®ÀrR   rG   gö(\�Âõø?r   g\�Âõ(\÷?rc   r    r%   rW   gÃõ(\�Âù¿gáz®Gá @©éÈ   é   g      @é   é   rj   é	   é   é   é   é   gÍÌÌÌÌÌ@ç      @g333333@rC   gUUUUUU@gUUUUUU@g      @g      @g      @rI   )r   ro   rj   rj   rj   rj   ro   rj   ro   ro   ro   c                   ó¢   — e Zd Zd„ Zej
                  d„ «       Z edd¬«      d„ «       Zd„ Z	ej                  j                  ed¬«      d	„ «       Zy
)Ú
TestWhitenc                 ó²   — |j                  ddgddgddgddgd	d
gg«      }|j                  ddgddgddgddgddgg«      }t        t        |«      |d¬«       y )Ng&cJ^|Y@g´`¹qÄ@g™¹Õ½—	@g}†&?˜Jæ?gU…H~«
@g¨›?gæK=EíŠ@gÞÜF Mpî?g|ÉH“@gH¦à|ú?çìcw&™ï?gb†ÆA|ê?çúÙD=¯Þã?çýâk2×È?ç'µB¿ì?çÅ)Æ;¸"~?çß|¸d=ë?çºÉûz¶õÐ?ç|æºß×Ü?çRêyÔëÝ?çñhãˆµøä>©Úrtol)Úasarrayr   r   )ÚselfÚxpÚdesiredÚobss       úY/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/cluster/tests/test_vq.pyÚtest_whitenzTestWhiten.test_whitenU   sŠ   € Ø—*‘*˜z¨:Ð6Ø'¨Ð4Ø'¨Ð4Ø'¨Ð4Ø'¨Ð4ð	6ó 7ˆð �j‰j˜: zÐ2Ø% zÐ2Ø% zÐ2Ø% zÐ2Ø% zÐ2ð	4ó 5ˆô
 	œ˜s› W°4Ö8ó    c                 ó   — t        «       S ©Nr   ©rƒ   s    r‡   Úwhiten_lockzTestWhiten.whiten_lockc   ó	   € ä‹vˆr‰   ú	jax.numpyú)jax arrays do not support item assignment©Úreasonc                 ó¾  — |j                  g d¢g d¢g d¢g«      }|j                  g d¢g d¢g d¢g«      }|5  t        j                  d¬«      5 }t        j                  d	«       t	        t        |«      |d
¬«       t        t        |«      d«       t        t        |d   j                  t        «      «       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)N)ç        rd   gÓüJJîî@)r”   rd   g° I �1õ?)r”   rd   gÁ¢KÍXó@)r”   rd   g¾/²�·ç?)r”   rd   gˆ@ý€êÕ?)r”   rd   gÂÀµ´øî?T)ÚrecordÚalwaysr   r€   ro   éÿÿÿÿ)r‚   ÚwarningsÚcatch_warningsÚsimplefilterr   r   r   Úlenr   Ú
issubclassÚcategoryÚRuntimeWarning)rƒ   r„   r�   r…   r†   Úws         r‡   Útest_whiten_zero_stdzTestWhiten.test_whiten_zero_stdg   sÎ   € ð —*‘*Ò3Ú3Ú3ð5ó 6ˆð �j‰jÒ.Ú.Ú.ð0ó 1ˆð ñ 	DÜ×(Ñ(°Ô5ð D¸Ü×%Ñ% hÔ/ä¤ s£¨W¸4Õ@äœS ›V QÔ'Üœ
 1 R¡5§>¡>´>ÓBÔC÷D÷	Dð 	D÷Dð Dú÷	Dð 	Dús$   ·CÁA(CÂ6CÃC	ÃCÃCc           	      óÀ   — |j                   |j                  |j                   fD ]7  }|j                  d|gddgddgddgdd	gg«      }t        t        t
        |«       Œ9 y ©
Nrv   rw   rx   ry   rz   r{   r|   r}   r~   )ÚnanÚinfr‚   Úassert_raisesÚ
ValueErrorr   ©rƒ   r„   Ú	bad_valuer†   s       r‡   Útest_whiten_not_finitez!TestWhiten.test_whiten_not_finite{   sn   € ØŸ™ §¡¨"¯&©&¨Ð0ò 	3ˆIØ—*‘*˜z¨9Ð5Ø)¨:Ð6Ø)¨:Ð6Ø)¨:Ð6Ø)¨:Ð6ð	8ó 9ˆCô
 œ*¤f¨cÕ2ñ	3r‰   ú)`np.matrix` unsupported in array API modec           	      óÌ   — t         j                  t         j                  t         j                   fD ]1  }t        d|gddgddgddgdd	gg«      }t	        t
        t        |«       Œ3 y r¢   )Únpr£   r¤   r   r¥   r¦   r   r§   s       r‡   Útest_whiten_not_finite_matrixz(TestWhiten.test_whiten_not_finite_matrix„   sl   € ô Ÿ™¤§¡¬"¯&©&¨Ð0ò 	3ˆIÜ˜: yÐ1Ø% zÐ2Ø% zÐ2Ø% zÐ2Ø% zÐ2ð	4ó 5ˆCô
 œ*¤f¨cÕ2ñ	3r‰   N)Ú__name__Ú
__module__Ú__qualname__rˆ   ÚpytestÚfixturer�   r   r    r©   ÚmarkÚskipifr   r­   © r‰   r‡   rt   rt   S   su   „ ò9ð ‡^�^ñó ðñ �kØHôJñDóJðDò$3ð ‡[�[×Ñ˜ØJð ó Lñ3óLñ3r‰   rt   c                   óp  — e Zd Z ed¬«      d„ «       Zej                  j                  ed¬«      d„ «       Z	 edd¬«      d	„ «       Z
ej                  j                  ed¬«      d
„ «       Z ed¬«      d„ «       Z edd¬«      d„ «       Z edd¬«      d„ «       Z ed¬«      d„ «       Z ed¬«      d„ «       Zy)ÚTestVqT©Úcpu_onlyc                 ó   — t        j                  t        d   gt        d   gt        d   gg«      }t        |j	                  t        «      |j	                  |«      «      d   }t        ||j	                  t        |j                  ¬«      d¬«       y )Nr   ro   rj   ©ÚdtypeF©Úcheck_dtype)r¬   ÚconcatenateÚXr   r‚   r   ÚLABEL1Úint64©rƒ   r„   ÚinitcÚlabel1s       r‡   Ú
test_py_vqzTestVq.test_py_vq’   sk   € ä—‘¤ 1¡ ¬¨1©¨´°1±°Ð7Ó8ˆä�r—z‘z¤!“} b§j¡j°Ó&7Ó8¸Ñ;ˆÜ˜ §
¡
¬6¸¿¹ 
Ó BØ$)ö	+r‰   rª   r‘   c                 óÎ   — t        j                  t        d   gt        d   gt        d   gg«      }t        t	        t        «      t	        |«      «      d   }t        |t        «       y ©Nr   ro   rj   )r¬   r¿   rÀ   r   r   r   rÁ   rÃ   s       r‡   Útest_py_vq_matrixzTestVq.test_py_vq_matrixš   sN   € ô —‘¤ 1¡ ¬¨1©¨´°1±°Ð7Ó8ˆä”vœa“y¤&¨£-Ó0°Ñ3ˆÜ˜6¤6Õ*r‰   z!`_vq` only supports NumPy backend)Únp_onlyr’   c                 ó\  — t        j                  t        d   gt        d   gt        d   gg«      }t        j                  |j                  t        «      |j                  |«      «      \  }}t        |t        «       t	        |j                  t        «      |j                  |«      «      \  }}y rÈ   )r¬   r¿   rÀ   r   r   r‚   r   rÁ   ©rƒ   r„   rÄ   rÅ   Ú_s        r‡   Útest_vqzTestVq.test_vq¢   sy   € ä—‘¤ 1¡ ¬¨1©¨´°1±°Ð7Ó8ˆÜ—F‘F˜2Ÿ:™:¤a›=¨"¯*©*°UÓ*;Ó<‰	ˆ�Ü˜6¤6Ô*Ü�"—*‘*œQ“- §¡¨EÓ!2Ó3‰ˆ‰1r‰   c                 ó,  — t        j                  t        d   gt        d   gt        d   gg«      }t        j                  t        t        «      t        |«      «      \  }}t        |t        «       t	        t        t        «      t        |«      «      \  }}y rÈ   )r¬   r¿   rÀ   r   r   r   r   rÁ   rÌ   s        r‡   Útest_vq_matrixzTestVq.test_vq_matrix©   si   € ô —‘¤ 1¡ ¬¨1©¨´°1±°Ð7Ó8ˆÜ—F‘Fœ6¤!›9¤f¨U£mÓ4‰	ˆ�Ü˜6¤6Ô*Ü”&œ“)œV E›]Ó+‰ˆ‰1r‰   c                 ó˜  — t         d d …df   }|d d }t        j                  ||«      \  }}|j                  |«      }|j                  |«      }t	        |d d …t
        j                  f   |d d …t
        j                  f   «      \  }}t        ||j                  ||j                  ¬«      d¬«       t        ||j                  |«      «       y )Nr   rk   r»   Fr½   )	rÀ   r   r   r‚   r   r¬   Únewaxisr   rÂ   )rƒ   r„   ÚdatarÄ   ÚaÚbÚtaÚtbs           r‡   Ú
test_vq_1dzTestVq.test_vq_1d±   s¥   € ô ’�A�‰wˆØ�R�a�ˆÜ�v‰v�d˜EÓ"‰ˆˆ1Ø�z‰z˜$ÓˆØ—
‘
˜5Ó!ˆÜ�tšAœrŸz™z˜MÑ*¨E²!´R·Z±Z°-Ñ,@ÓA‰ˆˆBä˜˜BŸJ™J q°·±˜JÓ9ÀuÕMÜ˜˜BŸJ™J q›MÕ*r‰   c                 ó¸   — |j                  ddg|j                  ¬«      }|j                  |j                  «      }t	        t
        t        j                  ||«       y )Nrd   g       @r»   )r‚   Úfloat64ÚastypeÚfloat32r¥   Ú	TypeErrorr   r   )rƒ   r„   rÔ   rÕ   s       r‡   Útest__vq_sametypezTestVq.test__vq_sametype¾   s@   € à�J‰J˜˜S�z¨¯©ˆJÓ4ˆØ�H‰H�R—Z‘ZÓ ˆÜ”i¤§¡¨¨AÕ.r‰   c                 óv   — |j                  ddgt        ¬«      }t        t        t        j
                  ||«       y )Nro   rj   r»   )r‚   Úintr¥   rÝ   r   r   )rƒ   r„   rÔ   s      r‡   Útest__vq_invalid_typezTestVq.test__vq_invalid_typeÄ   s*   € à�J‰J˜˜1�v¤SˆJÓ)ˆÜ”i¤§¡¨¨AÕ.r‰   c                 óH  — t         j                  j                  dd«      }t         j                  j                  dd«      }t        j                  ||«      \  }}t        |j                  |«      |j                  |«      «      \  }}t        ||j                  |«      d¬«       t        ||j                  ||j                  ¬«      d¬«       |j                  t         j                  «      }|j                  t         j                  «      }t        j                  ||«      \  }}t        |j                  |«      |j                  |«      «      \  }}t        ||j                  ||j                  ¬«      d¬«       t        ||j                  ||j                  ¬«      d¬«       y )Né   rk   r   r€   r»   Fr½   )r¬   ÚrandomÚrandr   r   r   r‚   r   r   rÂ   rÛ   rÜ   rÚ   ©rƒ   r„   rÀ   Ú	code_bookÚcodes0Údis0Úcodes1Údis1s           r‡   Útest_vq_large_nfeatzTestVq.test_vq_large_nfeatÉ   s2  € ä�I‰I�N‰N˜2˜rÓ"ˆÜ—I‘I—N‘N 1 bÓ)ˆ	ä—v‘v˜a Ó+‰ˆ�ÜØ�J‰J�q‹M˜2Ÿ:™: iÓ0ó
‰ˆ�ô 	˜˜bŸj™j¨Ó.°TÕ:ä˜ §
¡
¨6¸¿¹ 
Ó BÐPUÕVà�H‰H”R—Z‘ZÓ ˆØ×$Ñ$¤R§Z¡ZÓ0ˆ	ä—v‘v˜a Ó+‰ˆ�ÜØ�J‰J�q‹M˜2Ÿ:™: iÓ0ó
‰ˆ�ô 	˜˜bŸj™j¨°R·Z±Z˜jÓ@ÀtÕLä˜ §
¡
¨6¸¿¹ 
Ó BÐPUÖVr‰   c                 ó¨  — t         j                  j                  dd«      dz  }t         j                  j                  dd«      dz  }t        j                  ||«      \  }}t        |j                  |«      |j                  |«      «      \  }}t        ||j                  |«      d¬«       t        ||j                  ||j                  ¬«      d¬	«       y )
Né
   rn   i@B rj   r   r€   r»   Fr½   )
r¬   rä   rå   r   r   r   r‚   r   r   rÂ   ræ   s           r‡   Útest_vq_large_featureszTestVq.test_vq_large_featuresá   s¡   € ä�I‰I�N‰N˜2˜qÓ! GÑ+ˆÜ—I‘I—N‘N 1 aÓ(¨7Ñ2ˆ	ä—v‘v˜a Ó+‰ˆ�ÜØ�J‰J�q‹M˜2Ÿ:™: iÓ0ó
‰ˆ�ô 	˜˜bŸj™j¨Ó.°TÕ:ä˜ §
¡
¨6¸¿¹ 
Ó BÐPUÖVr‰   N)r®   r¯   r°   r   rÆ   r±   r³   r´   r   rÉ   rÎ   rÐ   rØ   rÞ   rá   rì   rï   rµ   r‰   r‡   r·   r·   �   s  „ á˜tÔ$ñ+ó %ð+ð ‡[�[×Ñ˜ØJð ó Lñ+óLð+ñ ˜dÐ+NÔOñ4ó Pð4ð ‡[�[×Ñ˜ØJð ó Lñ,óLð,ñ ˜tÔ$ñ
+ó %ð
+ñ ˜dÐ+NÔOñ/ó Pð/ñ
 ˜dÐ+NÔOñ/ó Pð/ñ ˜tÔ$ñWó %ðWñ. ˜tÔ$ñ
Wó %ñ
Wr‰   r·   Tr¸   c                   ó  — e Zd Zd„ Zd„ Zej                  j                  ed¬«      d„ «       Z	d„ Z
d„ Zej                  j                  ed¬«      d„ «       Zd	„ Zd
„ Zd„ Z edd¬«      d„ «       Zej$                  d„ «       Zej                  j                  ej*                  dk(  d¬«      d„ «       Zd„ Zd„ Zd„ Z edd¬«      d„ «       Zej                  j6                   edd¬«      d„ «       «       Zd„ Z edd¬«      d„ «       Zy)Ú	TestKMeanc                 ó4  — d}d}t         j                  j                  |«      }t         j                  j                  |«      }dt         j                  j                  ||«      z  d|z  z
  }dt         j                  j                  ||«      z  d|z  z   }t        j                  |j                  d   |j                  d   z   |ft         j
                  «      }||d |j                  d    |||j                  d   d  t        |j                  |«      dd¬«       y )	Ni,  éd   i'  i N  r   rj   ro   ©Úseed)r¬   rä   ÚrandnÚemptyÚshaperÚ   r   r‚   )	rƒ   r„   ÚdÚnÚm1Úm2ÚxÚyrÓ   s	            r‡   Útest_large_featureszTestKMean.test_large_featuresô   sã   € ð ˆØˆä�Y‰Y�_‰_˜QÓˆÜ�Y‰Y�_‰_˜QÓˆØ”B—I‘I—O‘O A qÓ)Ñ)¨E°B©JÑ6ˆØ”B—I‘I—O‘O A qÓ)Ñ)¨E°B©JÑ6ˆä�x‰x˜Ÿ™ ™ a§g¡g¨a¡jÑ0°!Ð4´b·j±jÓAˆØˆˆ[ˆa�g‰g�a‰jÐØˆˆQ�W‰W�Q‰Zˆ[Ðô 	ˆr�z‰z˜$Ó ¨Ö+r‰   c                 óH  — t         j                  j                  d«      }t        j                  t        d   gt        d   gt        d   gg«      }t        |j                  t        «      |j                  |«      d|¬«      d   }t        ||j                  t        «      «       y ©Ni1Ô  r   ro   rj   ©ÚiterÚrng)	r¬   rä   Údefault_rngr¿   rÀ   r   r‚   r   ÚCODET2©rƒ   r„   r  rÄ   Úcode1s        r‡   Útest_kmeans_simplezTestKMean.test_kmeans_simple  sv   € Ü�i‰i×#Ñ# EÓ*ˆÜ—‘¤ 1¡ ¬¨1©¨´°1±°Ð7Ó8ˆÜ�r—z‘z¤!“} b§j¡j°Ó&7¸aÀSÔIÈ!ÑLˆÜ˜˜rŸz™z¬&Ó1Õ2r‰   rª   r‘   c                 ó  — t         j                  j                  d«      }t        j                  t        d   gt        d   gt        d   gg«      }t        t        t        «      t        |«      d|¬«      d   }t        |t        «       y r  )	r¬   rä   r  r¿   rÀ   r   r   r   r  r  s        r‡   Útest_kmeans_simple_matrixz#TestKMean.test_kmeans_simple_matrix  sf   € ô �i‰i×#Ñ# EÓ*ˆÜ—‘¤ 1¡ ¬¨1©¨´°1±°Ð7Ó8ˆÜ”vœa“y¤&¨£-°a¸SÔAÀ!ÑDˆÜ˜œvÕ&r‰   c                 ó0  — |j                  t        «      }|j                  ddgddgddgg«      }t        ||«       t        «       5 }|j	                  t
        d«       t        ||d¬	«       d d d «       t        t        t        ||d
¬	«       y # 1 sw Y   Œ"xY w)Ng5âü ý¿g´§ì!{å¿gLÜ¦^ @gÍ›ý`dò²?g€8Ýìî}Àg?�½îkª¿zKOne of the clusters is empty. Re-run kmeans with a different initializationÚwarn)ÚmissingÚraise)	r‚   ÚTESTDATA_2Dr   r	   ÚfilterÚUserWarningr   r¥   r   )rƒ   r„   rÓ   ÚinitkÚsups        r‡   Útest_kmeans_lost_clusterz"TestKMean.test_kmeans_lost_cluster  s–   € à�z‰zœ+Ó&ˆØ—
‘
˜Z¨Ð5Ø'¨Ð4Ø(¨+Ð6ð8ó 9ˆô 	ˆt�UÔÜÓ ð 	1 CØ�J‰J”{ð2ô3ô �D˜%¨Õ0÷		1ô 	”l¤G¨T°5À'ÖJ÷	1ð 	1ús   Á%BÂBc                 ó$  — t         j                  j                  d«      }|j                  t        j                  t
        d   gt
        d   gt
        d   gg«      «      }t        r|j                  gnt         j                  t        g}|D ]„  }t         |t
        «       ||«      d|¬«      d   }t         |t
        «       ||«      d|¬«      d   }t        ||j                  t        «      «       t        ||j                  t        «      «       Œ† y ©NéNa¼ r   ro   rj   r  )r¬   rä   r  r‚   r¿   rÀ   r   r   r   r   ÚCODET1r  )rƒ   r„   r  rÄ   ÚarraysÚtpr  Úcode2s           r‡   Útest_kmeans2_simplezTestKMean.test_kmeans2_simple$  sÍ   € Ü�i‰i×#Ñ# HÓ-ˆØ—
‘
œ2Ÿ>™>¬A¨a©D¨6´A°a±D°6¼A¸a¹D¸6Ð*BÓCÓDˆÝ!0�"—*‘*‘´r·z±zÄ6Ð6JˆØò 	7ˆBÜ™Bœq›E¡2 e£9°1¸#Ô>¸qÑAˆEÜ™Bœq›E¡2 e£9°1¸#Ô>¸qÑAˆEä˜E 2§:¡:¬fÓ#5Ô6Ü˜E 2§:¡:¬fÓ#5Õ6ñ	7r‰   c                 ó   — t         j                  j                  d«      }|j                  t        j                  t
        d   gt
        d   gt
        d   gg«      «      }t        t        t
        «      t        |«      d|¬«      d   }t        t        t
        «      t        |«      d|¬«      d   }t        |t        «       t        |t        «       y r  )r¬   rä   r  r‚   r¿   rÀ   r   r   r   r  r  )rƒ   r„   r  rÄ   r  r  s         r‡   Útest_kmeans2_simple_matrixz$TestKMean.test_kmeans2_simple_matrix/  s–   € ô �i‰i×#Ñ# HÓ-ˆØ—
‘
œ2Ÿ>™>¬A¨a©D¨6´A°a±D°6¼A¸a¹D¸6Ð*BÓCÓDˆÜœœq›	¤6¨%£=°q¸cÔBÀ1ÑEˆÜœœq›	¤6¨%£=°q¸cÔBÀ1ÑEˆä˜œvÔ&Ü˜œvÕ&r‰   c                 óª   — |j                  t        «      }|d d …df   }|d d }t        ||¬«      }t        ||dd¬«      d    t        ||d¬«      d    y )Nr   rk   ©r„   ro   )r  rõ   rj   ©r  )r‚   r  r   r   )rƒ   r„   rÓ   Údata1rÄ   Úcodes         r‡   Útest_kmeans2_rank1zTestKMean.test_kmeans2_rank1:  sZ   € Ø�z‰zœ+Ó&ˆØ’Q˜�T‘
ˆà�b�q�	ˆÜ�u Ô$ˆô 	��t !¨!Ô,¨QÒ/Ü��t !Ô$ QÓ'r‰   c                 ó\   — |j                  t        «      }|d d …df   }t        |dd¬«       y )Nr   rj   ro   r"  )r‚   r  r   )rƒ   r„   rÓ   r#  s       r‡   Útest_kmeans2_rank1_2zTestKMean.test_kmeans2_rank1_2E  s)   € Ø�z‰zœ+Ó&ˆØ’Q˜�T‘
ˆÜ��q˜qÖ!r‰   c                 ó|   — |j                  t        «      }|j                  |d«      d d…d d …f   }t        |d«       y )N©rã   rã   rî   rj   )r‚   r  Úreshaper   )rƒ   r„   rÓ   s      r‡   Útest_kmeans2_high_dimzTestKMean.test_kmeans2_high_dimJ  s9   € ð �z‰zœ+Ó&ˆØ�z‰z˜$ Ó)¨#¨2¨#ªq¨&Ñ1ˆÜ��aÕr‰   r�   r�   c                 ó°  — t         j                  j                  d«      }|j                  t        «      }d}t        ||d|¬«       t        |d d …df   |d|¬«       t        ||d|¬«       t        |d d …df   |d|¬«       t        «       5 }|j                  d¬«       t        ||d	|¬«       t        |d d …df   |d	|¬«       d d d «       y # 1 sw Y   y xY w)
Nr  rk   Úpoints©Úminitr  ro   ú++z%One of the clusters is empty. Re-run.)Úmessagerä   )r¬   rä   r  r‚   r  r   r	   r  )rƒ   r„   r  rÓ   Úkr  s         r‡   Útest_kmeans2_initzTestKMean.test_kmeans2_initQ  sÅ   € ô �i‰i×#Ñ# HÓ-ˆØ�z‰zœ+Ó&ˆØˆä��a˜x¨SÕ1Ü�’Q˜�T‘
˜A X°3Õ7ä��a˜t¨Õ-Ü�’Q˜�T‘
˜A T¨sÕ3ô Ó ð 	< CØ�J‰JÐFˆJÔGÜ�D˜! 8°Õ5Ü�Dš˜A˜‘J ¨°sÕ;÷	<÷ 	<ñ 	<ús   Â8CÃCc                 ó   — t        «       S r‹   r   rŒ   s    r‡   Ú
krand_lockzTestKMean.krand_lockd  rŽ   r‰   Úwin32zFails with MemoryError in Wine.c                 óì  — |j                  t        «      }|j                  |d«      |j                  |d«      d d…d d …f   g}t        d«      }t	        |«      }|5  |D ]  }t
        j                  j                  d«      }t        ||||«      }t        j                  |j                  |¬«      }	t        j                  |j                  |¬«      }
t        |	|
d¬«       Œ� 	 d d d «       y # 1 sw Y   y xY w)	Nrh   r)  rî   g    €„.AéÒ  r!  gºI+‡†?)Úatol)r‚   r  r*  rà   r   r¬   rä   r  r   ÚxpxÚcovÚTr   )rƒ   r„   r5  rÓ   Údatasr2  Úxp_testr  ÚinitÚorig_covÚinit_covs              r‡   Útest_krandinitzTestKMean.test_krandinith  sÚ   € ð �z‰zœ+Ó&ˆØ—‘˜D (Ó+Ø—‘˜D (Ó+¨C¨R¨C²¨FÑ3ð5ˆä�‹HˆÜ! $Ó'ˆØñ 	AØò A�Ü—i‘i×+Ñ+¨DÓ1�Ü! $¨¨3°Ó8�ÜŸ7™7 4§6¡6¨gÔ6�ÜŸ7™7 4§6¡6¨gÔ6�Ü ¨(¸Ö@ñA÷	A÷ 	Añ 	Aús   ÁBC*Ã*C3c                 óN   — t        t        t        |j                  g «      d«       y )Nrj   )r¥   r¦   r   r‚   ©rƒ   r„   s     r‡   Útest_kmeans2_emptyzTestKMean.test_kmeans2_emptyx  s   € ä”j¤'¨2¯:©:°b«>¸1Õ=r‰   c                 ó  — t        t        t        |j                  t        «      d«       t        t        t
        |j                  t        «      d«       t        t        t
        |j                  t        «      |j                  g «      «       y )Nr   )r¥   r¦   r   r‚   rÀ   r   rD  s     r‡   Útest_kmeans_0kzTestKMean.test_kmeans_0k|  sL   € ä”j¤&¨"¯*©*´Q«-¸Ô;Ü”j¤'¨2¯:©:´a«=¸!Ô<Ü”j¤'¨2¯:©:´a«=¸"¿*¹*ÀR».ÕIr‰   c                 ó  — |j                  g d¢|j                  ¬«      }t        |dd¬«      }t        |d   |j                  dg|j                  ¬«      «       t        |d   |j                  d|j                  ¬«      d	   «       y )
N)ro   rj   rk   rl   rî   r»   ro   g €à7yÃAC)Úthreshr   rr   g333333@rµ   ©r‚   rÚ   r   r   )rƒ   r„   rý   Úress       r‡   Útest_kmeans_large_thresz!TestKMean.test_kmeans_large_thres‚  sn   € à�J‰JÒ'¨r¯z©zˆJÓ:ˆÜ�Q˜ $Ô'ˆÜ˜˜A™ §
¡
¨B¨4°r·z±z 
Ó BÔCÜ˜˜A™ §
¡
Ð+=ÀRÇZÁZ 
Ó PÐQSÑ TÕUr‰   c                 óê   — t         j                  j                  d«      }|j                  ddgddgg|j                  ¬«      }t        |j                  t        «      dd|¬	«      \  }}t        ||«       y )
Nl   ÈC.�tà gC:úg>ÿ¿g#Ûù~j¼ì?g'1¬:	Àg-²�ï'@r»   rj   r0  r.  )r¬   rä   r  r‚   rÚ   r   r  r   )rƒ   r„   r  Úprev_resrK  rÍ   s         r‡   Útest_kmeans2_kpp_low_dimz"TestKMean.test_kmeans2_kpp_low_dim‰  so   € ô �i‰i×#Ñ#Ð$7Ó8ˆØ—:‘: ¨UÐ3Ø )¨6Ð2ð4Ø;=¿:¹:ð ó Gˆä˜Ÿ™¤KÓ0°!¸4ÀSÔI‰ˆˆQÜ˜˜XÕ&r‰   c           	      óV  — t         j                  j                  d«      }d}d}t        j                  dt        j                  |«      z  dt        j                  |«      z  g«      }t        j                  |j                  |d   t        j                  |«      |¬«      |j                  |d   t        j                  |«      |¬«      g«      }|j                  |«      }t        |d	d
|¬«      \  }}t        |j                  |«      |j                  |j                  |«      «      «       y )Nl   <DM]4žró   rî   rn   éûÿÿÿr   )Úsizero   rj   r0  r.  )r¬   rä   r  ÚvstackÚonesÚmultivariate_normalÚeyer‚   r   r   Úsign)	rƒ   r„   r  Ún_dimrR  ÚcentersrÓ   rK  rÍ   s	            r‡   Útest_kmeans2_kpp_high_dimz#TestKMean.test_kmeans2_kpp_high_dim“  sô   € ô
 �i‰i×#Ñ#Ð$5Ó6ˆØˆØˆÜ—)‘)˜Q¤§¡¨£Ñ/Ø¤"§'¡'¨%£.Ñ0ð2ó 3ˆô �y‰yØ×#Ñ# G¨A¡J´·±°u³ÀDÐ#ÓIØ×#Ñ# G¨A¡J´·±°u³ÀDÐ#ÓIð
ó ˆð
 �z‰z˜$ÓˆÜ˜˜q¨°#Ô6‰ˆˆQÜ˜Ÿ™ › b§g¡g¨b¯j©j¸Ó.AÓ&BÕCr‰   c                 ó.  — |j                  g d¢|j                  ¬«      }t        ||j                  ddg«      «      }t        |d   |j                  ddg|j                  ¬«      «       t        |d   |j                  d	|j                  ¬«      d
   «       y )N)éýÿÿÿr—   r   ro   ro   é   r»   r`   g®Gáz®ï?r   gš™™™™™Ù¿g       @ro   gñ?rµ   rJ  )rƒ   r„   r†   rK  s       r‡   Útest_kmeans_diff_convergencez&TestKMean.test_kmeans_diff_convergence§  s{   € à�j‰jÒ-°R·Z±ZˆjÓ@ˆÜ�S˜"Ÿ*™* c¨4 [Ó1Ó2ˆÜ˜˜A™ §
¡
¨D°2¨;¸b¿j¹j 
Ó IÔJÜ˜˜A™ §
¡
Ð+=ÀRÇZÁZ 
Ó PÐQSÑ TÕUr‰   c                 ó°  — dt         j                  j                  d«      t         j                  j                  d«      g}|D ]’  }t	        |«      }t	        |«      }|j                  t        «      }t        |d|¬«      \  }}t        |d|¬«      \  }	}t        ||	«       dD ]2  }
t        |d|
|¬«      \  }}t        |d|
|¬«      \  }	}t        ||	«       Œ4 Œ” y )Nr8  rj   rô   )rä   r-  r0  )r/  rõ   )
r¬   rä   ÚRandomStater  r   r‚   r  r   r   r   )rƒ   r„   Ú	seed_listrõ   Úseed1Úseed2rÓ   Úres1rÍ   Úres2r/  s              r‡   Ú#test_kmeans_and_kmeans2_random_seedz-TestKMean.test_kmeans_and_kmeans2_random_seed®  sÐ   € ð
 ”"—)‘)×'Ñ'¨Ó-¬r¯y©y×/DÑ/DÀTÓ/Jð
ˆ	ð ò 	,ˆDÜ˜T“NˆEÜ˜T“NˆEØ—:‘:œkÓ*ˆDä˜T 1¨5Ô1‰GˆD�!Ü˜T 1¨5Ô1‰GˆD�!Ü˜D $Ô'à3ò ,�Ü! $¨°¸UÔC‘��aÜ! $¨°¸UÔC‘��aÜ  dÕ+ñ,ñ	,r‰   N)r®   r¯   r°   rÿ   r	  r±   r³   r´   r   r  r  r  r  r%  r'  r+  r   r3  r²   r5  ÚsysÚplatformrB  rE  rG  rL  rO  Úthread_unsaferZ  r^  rf  rµ   r‰   r‡   rñ   rñ   ñ   s�  „ ò,ò$3ð ‡[�[×Ñ˜ØJð ó Lñ'óLð'òKò 	7ð ‡[�[×Ñ˜ØJð ó Lñ'óLð'ò	(ò"ò
ñ �kØHôJñ<óJð<ð" ‡^�^ñó ðð ‡[�[×Ñ˜Ÿ™¨Ñ/Ø@ð ó BñAóBðAò>òJòVñ �kØHôJñ'óJð'ð ‡[�[×ÑÙ�kØHôJñDóJó ðDò"Vñ �kØHôJñ,óJñ,r‰   rñ   )5r˜   rg  Úcopyr   Ú	threadingr   Únumpyr¬   Únumpy.testingr   r   r   r	   r±   r
   r¥   Úscipy.cluster.vqr   r   r   r   r   r   r   Úscipy.clusterr   Úscipy.conftestr   Úscipy.sparse._sputilsr   Ú
scipy._libr   r:  Úscipy._lib._array_apir   r   r   r   r   r³   ÚusefixturesÚ
pytestmarkr   Úarrayr*  r  rÀ   r  r  rÁ   rt   r·   rñ   rµ   r‰   r‡   ú<module>rw     s¢  ðÛ Û 
Ý Ý ã ÷ó ó Ý *÷8÷ 8ñ 8å Ý /Ý (å -÷õ ð # F§K¡K×$;Ñ$;Ð<NÓ$OÐP€
Ø—;‘;×/Ñ/Ð àˆb�h‰hò %
ó %÷J ‰7�8ÓðK ðR €B‡H�Hˆs�Aˆh˜˜A˜  A Ø�!ˆf�q˜!�f˜q !˜f q¨! fØ�!ˆf�q˜!�f˜q !˜f q¨! fð.ó /€ð 
ˆ�‰�F˜FÐ#Ø˜FÐ#Ø˜FÐ#ð%ó 
&€ð 
ˆ�‰�F˜E�?Ø˜FÐ#Ø˜FÐ#ð%ó 
&€ð 
ˆ�‰Ò3Ó	4€÷:3ñ :3÷z\Wñ \WñB ˜4Ô ÷P,ð P,ó !ñP,r‰   