Ë
    ÜÍ:j%  ã                   ó°  — d dl mZ d dlZd dlZd dlmZmZmZ d dl	m
Z
mZmZ d dlmZ d dlmZ d dlmZ d„ Zd	„ Zd
„ Zej,                  j/                  dddg«      d„ «       Zd„ Zej,                  j4                  d„ «       Zej,                  j9                  d«      ej,                  j/                  dg d¢«      d„ «       «       Zej,                  j9                  d«      ej,                  j/                  dddg«      d„ «       «       Zd„ Zej,                  j9                  d«      ej,                  j/                  dddg«      d„ «       «       Z ej,                  j9                  d«      ej,                  j/                  dddg«      d„ «       «       Z!d„ Z"d„ Z#ej,                  j/                  dddg«      ej,                  j/                  d g d!¢«      d"„ «       «       Z$y)#é    )ÚMockN)Úassert_allcloseÚassert_array_almost_equalÚassert_equal)Úload_digitsÚ	load_irisÚ
make_blobs)ÚClassicalMDS)Ú_mds)Úeuclidean_distancesc                  ó   — t        j                  g d¢g d¢g d¢g d¢g«      } t        j                  ddgddgd	d
gddgg«      }t        j                  | |ddd¬«      \  }}t        j                  ddgddgddgddgg«      }t	        ||d¬«       y )N©r   é   é   é   ©r   r   é   r   ©r   r   r   é   ©r   r   r   r   ç /Ý$Ñ¿çsh‘í|?á¿gw¾Ÿ/ÝÜ?gTã¥›Ä Ð?çü©ñÒMb�?çX9´ÈvÎ¿çš™™™™™É¿çøSã¥›Äà?r   r   )ÚinitÚn_componentsÚmax_iterÚn_initg¤p=
×£ö¿gøSã¥›ÄÀgTã¥›Ä ú?gƒÀÊ¡E¶ñ?g¬Zd;ßÏ?gôýÔxé&±¿gÁÊ¡E¶óÝ¿gL7‰A`åö?r   )Údecimal)ÚnpÚarrayÚmdsÚsmacofr   )ÚsimÚZÚXÚ_ÚX_trues        út/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/sklearn/manifold/tests/test_mds.pyÚtest_smacofr,      s–   € ô �(‰(’L¢,²ºlÐKÓ
L€CÜ
�‰�6˜6Ð" U¨E N°U¸F°OÀfÈeÀ_ÐUÓV€AÜ�:‰:�c °¸AÀaÔH�D€A€qÜ�X‰XØ
�&Ð	˜E 5˜>¨E°6¨?¸VÀU¸OÐLó€Fô ˜a °Ö3ó    c            	      ó¬  — t        d¬«      \  } }t        | «      }t        j                  j	                  d«       t        j                  j                  | j                  d   df¬«      }t        j                  ||dddd¬	«      \  }}t        j                  ||ddddd
¬«      \  }}||kD  sJ ‚t        j                  |dz  d|dz  z   z  «      }||kD  sJ ‚y )NT©Ú
return_X_yé*   r   r   )Úsizeéè  r   )r   r   r   r    Únormalized_stressF)r   r   r   r    r4   Úmetric)
r   r   r"   ÚrandomÚseedÚnormalÚshaper$   r%   Úsqrt)r(   r)   r&   r'   Ústress1Ústress2Ústress1_rescaleds          r+   Ú&test_nonmetric_lower_normalized_stressr>      sØ   € ô  Ô%�D€A€qÜ
˜aÓ
 €CÜ‡I�I‡N�N�2ÔÜ
�	‰	×Ñ˜qŸw™w q™z¨1˜oÐÓ.€Aä—‘Ø�! !¨d¸1ÐPTô�J€A€wô —‘ØØØØØØØô�J€A€wð �WÒÐÐô —w‘w˜w¨™z¨Q°¸!±©^Ñ<Ó=ÐØ˜gÒ%Ð%Ñ%r-   c                  óŒ  — t        d¬«      \  } }t        j                  j                  d¬«      }|j	                  t        | «      dd¬«      }| |   } t        j                  dd	ddd
d¬«      j                  | «      }|j                  }t        j                  dd	ddd
d¬«      j                  | «      }|j                  }||kD  sJ ‚y )NTr/   r1   )r7   éÈ   F)r2   Úreplacer   r   r6   )r   r    r   Ú
metric_mdsr   Úrandom_stater   )
r   r"   r6   Údefault_rngÚchoiceÚlenr$   ÚMDSÚfitÚstress_)r(   r)   ÚrngÚ
ind_subsetÚmds_estÚstress_after_2_iterÚstress_after_3_iters          r+   Útest_nonmetric_mds_optimizationrO   ;   sÍ   € ô  $Ô'�D€A€qÜ
�)‰)×
Ñ
 RÐ
Ó
(€CØ—‘œC ›F¨°e�Ó<€JØ	ˆ*‰€Aä�g‰gØØØØØØô÷ 
�cˆ!ƒfð ð "Ÿ/™/Ðä�g‰gØØØØØØô÷ 
�cˆ!ƒfð ð "Ÿ/™/ÐàÐ!4Ò4Ð4Ñ4r-   rB   TFc           	      óÐ   — t        j                  ddgddgddgddgg«      }t        j                  dddd| dd	¬
«      j	                  |«      }|j
                  }t        |dd¬«       y )Nr   r   r   r   r   gVçž¯Ò<r3   r6   r1   )r   r    Úepsr   rB   r   rC   r   g�íµ ÷Æ°>)Úatol)r"   r#   r$   rG   rH   rI   r   )rB   r(   rL   Ústresss       r+   Útest_mds_recovers_true_datarT   Z   sq   € ä
�‰�1�a�&˜1˜a˜& 1 a &¨1¨a¨&Ð1Ó2€AÜ�g‰gØØØØØØØô÷ 
�cˆ!ƒfð ð �_‰_€FÜ�F˜A DÖ)r-   c                  ó   — t        j                  g d¢g d¢g d¢g d¢g«      } t        j                  t        «      5  t        j                  | d¬«       d d d «       t        j                  g d¢g d¢g d¢g«      } t        j                  t        «      5  t        j                  | d¬«       d d d «       t        j                  g d¢g d¢g d¢g d¢g«      } t        j                  dd	gd
dgddgg«      }t        j                  t        «      5  t        j                  | |d¬«       d d d «       y # 1 sw Y   ŒÚxY w# 1 sw Y   Œ�xY w# 1 sw Y   y xY w)N)r   r   é	   r   r   r   r   r   )r    r   r   r   r   r   r   r   )r   r    )r"   r#   ÚpytestÚraisesÚ
ValueErrorr$   r%   )r&   r'   s     r+   Útest_smacof_errorrZ   j   sÿ   € ä
�(‰(’L¢,²ºlÐKÓ
L€Cä	�‰”zÓ	"ñ "Ü�
‰
�3˜qÕ!÷"ô �(‰(’L¢,²Ð=Ó
>€Cä	�‰”zÓ	"ñ "Ü�
‰
�3˜qÕ!÷"ô �(‰(’L¢,²ºlÐKÓ
L€Cä
�‰�6˜6Ð" U¨F O°f¸e°_ÐEÓF€AÜ	�‰”zÓ	"ñ *Ü�
‰
�3˜Q qÕ)÷*ð *÷"ð "ú÷"ð "ú÷*ð *ús#   »D,ÂD8Ä
EÄ,D5Ä8EÅEc                  óœ   — t        j                  g d¢g d¢g d¢g d¢g«      } t        j                  ddddd¬	«      }|j	                  | «       y )
Nr   r   r   r   Fr   Úprecomputedr6   )rB   Ún_jobsr    r5   r   )r"   r#   r$   rG   rH   )r&   Úmds_clfs     r+   Útest_MDSr_   �   sD   € ä
�(‰(’L¢,²ºlÐKÓ
L€CÜ�g‰gØØØØØô€Gð ‡K�K�Õr-   zignore::FutureWarningÚk)g      à?g      ø?r   c                 óô   — t        j                  g d¢g d¢g d¢g d¢g«      }t        j                  |ddd¬«      \  }}t        j                  | |z  ddd¬«      \  }}t	        ||d	¬
«       t	        ||d	¬
«       y)z>Test that non-metric MDS normalized stress is scale-invariant.r   r   r   r   Fr   r   )r5   r   rC   gñhãˆµøä>)ÚrtolN)r"   r#   r$   r%   r   )r`   r&   ÚX1r;   ÚX2r<   s         r+   Útest_normed_stressre   �   sg   € ô �(‰(’L¢,²ºlÐKÓ
L€Cä—*‘*˜S¨¸ÈÔK�K€BˆÜ—*‘*˜Q ™W¨U¸QÈQÔO�K€Bˆä�G˜W¨4Õ0Ü�B˜ Ö&r-   r5   c                 ó´  — t         j                  j                  d«      }|j                  dd«      }t	        |«      }t        t        j                  ¬«      }|j                  d|«       t        j                  | d|¬«      }|j                  |«       |j                  d   d	   | k7  sJ ‚t        j                  || d|¬«       |j                  d   d	   | k7  sJ ‚y )
Nr   r   r   )Úside_effectz$sklearn.manifold._mds._smacof_singleÚauto)r5   r4   rC   r   r4   )r"   r6   ÚRandomStateÚrandnr   r   r$   Ú_smacof_singleÚsetattrrG   Úfit_transformÚ	call_argsr%   )r5   ÚmonkeypatchrJ   r(   ÚdistÚmockÚests          r+   Útest_normalized_stress_autors   �   s¾   € ô �)‰)×
Ñ
 Ó
"€CØ�	‰	�!�Q‹€AÜ˜qÓ!€DäœC×.Ñ.Ô/€DØ×ÑÐ>ÀÔEä
�'‰'˜°6ÈÔ
L€CØ×Ñ�aÔØ�>‰>˜!ÑÐ0Ñ1°VÒ;Ð;Ð;ä‡J�Jˆt˜F°fÈ3ÕOØ�>‰>˜!ÑÐ0Ñ1°VÒ;Ð;Ñ;r-   c                  ó®   — t        j                  g d¢g d¢g d¢g«      } t        j                  ddgddgdd	gg«      }t        j                  | |d
d¬«       y )N)ç        ç©LXèz¶û?çªLXèz¶û?)rv   ru   ç      È<)rw   rx   ru   gðúü«E/¶?g8$è¹gé?gž"”œßï?grY‹Ø€-è?g;
ç-ì?gd%�ÌÛ?Fr   )r   r5   r    )r"   r#   r$   r%   )Údisr   s     r+   Útest_isotonic_outofboundsrz   ¯   sd   € ô �(‰(â8Ú;Ú<ð	
ó€Cô �8‰8à Ð"4Ð5ØÐ!3Ð4ØÐ!3Ð4ð	
ó€Dô ‡J�Jˆs˜ e°AÖ6r-   r4   c                 óê  — t        j                  ddgddgddgddgg«      }t        |«      }t        j                  dd| ¬«      j                  |«      }|j                  }|j                  }t        |«      }|j                  «       |j                  «       z
  dz  j                  «       dz  }| r:t        j                  ||j                  «       dz  j                  «       dz  z  «      }t        ||«       y )Nr   r   r   r   r   r1   )r   rC   r4   )r"   r#   r   r$   rG   rH   Ú
embedding_rI   ÚravelÚsumr:   r   )r4   r(   ÚDrL   r'   rS   ÚD_mdsÚstress_Zs           r+   Útest_returned_stressr‚   Ä   sÜ   € ô
 	�‰�1�a�&˜1˜a˜& 1 a &¨1¨a¨&Ð1Ó2€AÜ˜AÓ€Aä�g‰gØØØ+ô÷ 
�cˆ!ƒfð	 ð 	×Ñ€AØ�_‰_€Fä Ó"€EØ—‘“ §¡£Ñ*¨qÑ0×5Ñ5Ó7¸!Ñ;€HáÜ—7‘7˜8¨¯©«¸Ñ(:×'?Ñ'?Ó'AÀAÑ'EÑFÓGˆä�F˜HÕ%r-   c                 ó  — t        j                  ddgddgddgddgg«      }t        j                  dd| ¬«      }|j	                  |dz  «       |j
                  }|j	                  |dz  «       |j
                  }t        ||«       y )	Nr   r   r   r   r   r1   )r   rC   rB   éd   )r"   r#   r$   rG   rH   Ún_iter_r   )rB   r(   rL   Ún_iter1Ún_iter2s        r+   Ú)test_convergence_does_not_depend_on_scalerˆ   ß   s€   € ô
 	�‰�1�a�&˜1˜a˜& 1 a &¨1¨a¨&Ð1Ó2€Aä�g‰gØØØô€Gð ‡K�K��C‘ÔØ�o‰o€Gà‡K�K��C‘ÔØ�o‰o€Gä�˜'Õ"r-   c                  óð  — t        j                  ddgddgddgddgg«      } t        j                  g d¢g d¢g d¢g d¢g«      }t        j                  t        d	¬
«      5  t        j                  ddd¬«      j                  |«       d d d «       t        j                  t        d¬
«      5  t        j                  ddd¬«      j                  | «       d d d «       t        j                  t        d¬
«      5  t        j                  ddd¬«      j                  | «       d d d «       t        j                  t        d¬
«      5  t        j                  dd¬«      j                  | «       d d d «       t        j                  t        d¬
«      5  t        j                  dddd¬«      j                  | «       d d d «       y # 1 sw Y   �Œ7xY w# 1 sw Y   ŒøxY w# 1 sw Y   Œ¹xY w# 1 sw Y   Œ{xY w# 1 sw Y   y xY w)Nr   r   r   r   r   r   r   r   z`dissimilarity` parameter is)Úmatchr\   r6   )Údissimilarityr   r    zUse metric_mdsT)r5   r   r    FzThe default value of `init`Ú	euclidean)r5   r    zprovided both `dissimilarity`Úcosine)r5   r‹   r   r    )
r"   r#   rW   ÚwarnsÚFutureWarningr$   rG   rH   rX   rY   )r(   r&   s     r+   Ú#test_future_warning_init_and_metricr�   ö   s�  € Ü
�‰�1�a�&˜1˜a˜& 1 a &¨1¨a¨&Ð1Ó2€AÜ
�(‰(’L¢,²ºlÐKÓ
L€Cô 
�‰”mÐ+IÔ	Jñ OÜ�‰˜m°(À1ÔE×IÑIÈ#ÔN÷Oô 
�‰”mÐ+;Ô	<ñ =Ü�‰�t (°1Ô5×9Ñ9¸!Ô<÷=ô 
�‰”mÐ+;Ô	<ñ >Ü�‰�u 8°AÔ6×:Ñ:¸1Ô=÷>ô 
�‰”mÐ+HÔ	Iñ 5Ü�‰�{¨1Ô-×1Ñ1°!Ô4÷5ô 
�‰”zÐ)HÔ	Iñ Ü�‰Ø¨;¸XÈaô	
ç
‰#ˆaŒ&÷ð ÷!Oñ Oú÷=ð =ú÷>ð >ú÷5ð 5ú÷ð ús<   Á(F;Â)(GÃ4(GÄ?'G Æ	)G,Æ;GÇGÇGÇ G)Ç,G5c                  ó  — t        d¬«      \  } }t        «       }|j                  | «      }t        j                  d¬«      }|j                  | «      }t        j                  d¬«      }|j                  | |¬«      }t        ||«       y )NTr/   Úclassical_mds)r   r6   )r   r
   rm   r$   rG   r   )r(   r)   ÚcmdsÚZ_classicalÚmds1ÚZ1Úmds2ÚZ2s           r+   Útest_classical_mds_init_to_mdsr™     sr   € Ü Ô%�D€A€qä‹>€DØ×$Ñ$ QÓ'€Kä�7‰7˜Ô(€DØ	×	Ñ	˜AÓ	€Bä�7‰7˜Ô!€DØ	×	Ñ	˜A KÐ	Ó	0€Bä�B˜Õr-   r   r6   r’   r   )r   r   r   é
   c                 óœ   — t        d¬«      \  }}t        j                  | |d¬«      }|j                  |«      }|j                  d   |k(  sJ ‚y )Nrš   )Ú
n_featuresr   )r   r   r    )r	   r$   rG   rm   r9   )r   r   r(   r)   Úmodelr'   s         r+   Útest_correct_n_componentsrž      sJ   € ô  Ô$�D€A€qä�G‰G˜¨LÀÔC€EØ×Ñ˜AÓ€Aà�7‰7�1‰:˜Ò%Ð%Ñ%r-   )%Úunittest.mockr   Únumpyr"   rW   Únumpy.testingr   r   r   Úsklearn.datasetsr   r   r	   Úsklearn.manifoldr
   r   r$   Úsklearn.metricsr   r,   r>   rO   ÚmarkÚparametrizerT   rZ   Úthread_unsafer_   Úfilterwarningsre   rs   rz   r‚   rˆ   r�   r™   rž   © r-   r+   ú<module>rª      sÒ  ðÝ ã Û ß RÑ Rç ?Ñ ?Ý )Ý (Ý /ò	4ò&òD5ð> ‡�×Ñ˜¨¨e }Ó5ñ*ó 6ð*ò*ð. ‡�×Ññ	ó ð	ð ‡�×ÑÐ3Ó4Ø‡�×Ñ˜šmÓ,ñ'ó -ó 5ð'ð ‡�×ÑÐ3Ó4Ø‡�×Ñ˜ D¨% =Ó1ñ<ó 2ó 5ð<ò 7ð* ‡�×ÑÐ3Ó4Ø‡�×ÑÐ,¨t°U¨mÓ<ñ&ó =ó 5ð&ð2 ‡�×ÑÐ3Ó4Ø‡�×Ñ˜¨¨e }Ó5ñ#ó 6ó 5ð#ò*ò6ð ‡�×Ñ˜ (¨OÐ!<Ó=Ø‡�×Ñ˜ªÓ7ñ&ó 8ó >ñ&r-   