o
    i                     @   sB  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
 d dlmZ d dlmZ dd Zd	d
 Zdd Zejdddgdd Zdd Zdd Zejdejdg ddd Zejdejdddgdd Zdd Zejdejdddgd d! Zejdejdddgd"d# Zd$d% ZdS )&    )MockN)assert_allcloseassert_array_almost_equalassert_equal)load_digits)_mds)euclidean_distancesc                  C   s   t g dg dg dg dg} t ddgddgd	d
gddgg}tj| |dddd\}}t ddgddgddgddgg}t||dd d S )Nr            r
   r      r   r   r   r      r   r   r   r   /$ѿsh|?w/?T㥛 ?Mb?X9vο皙ɿS㥛?r   r   )initn_componentsmax_itern_initgp=
ףgS㥛gT㥛 ?gʡE?gZd;?gx&gʡEݿgL7A`?r   )decimal)nparraymdssmacofr   )simZX_ZX_true r'   n/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/sklearn/manifold/tests/test_mds.pytest_smacof   s   ""r)   c               	   C   s   t g dg dg dg dg} t ddgddgd	d
gddgg}tj| |ddddd\}}tj| |dddddd\}}||ksCJ d S )Nr	   r   r   r   r   r   r   r   r   r   r   r   r     r   T)r   r   r   r   normalized_stressF)r   r   r   r   r+   metricr   r    r!   r"   )r#   r$   r&   stress1stress2r'   r'   r(   &test_nonmetric_lower_normalized_stress   s   ""

	r0   c                  C   s   t dd\} }tjjdd}|jt| ddd}| | } tjdd	dddd
| }|j	}tjdd	dddd
| }|j	}||ksBJ d S )NT)Z
return_X_y*   )seed   F)sizereplacer   r   )r   r   r   r,   random_stater   )
r   r   randomZdefault_rngchoicelenr!   MDSfitstress_)r%   r&   rngZ
ind_subsetmds_estZstress_after_2_iterZstress_after_3_iterr'   r'   r(   test_nonmetric_mds_optimization.   s2   r?   r,   TFc                 C   sV   t ddgddgddgddgg}tjdddd| dd	|}|j}t|d
dd d S )Nr   r   r
   r   r   gV瞯<r*   r1   )r   r   Zepsr   r,   r6   r   gư>)Zatol)r   r    r!   r:   r;   r<   r   )r,   r%   r>   stressr'   r'   r(   test_mds_recovers_true_dataK   s   "rA   c                  C   s,  t g dg dg dg dg} tt tj| dd W d    n1 s(w   Y  t g dg dg dg} tt tj| dd W d    n1 sRw   Y  t g dg dg dg dg} t dd	gd
dgddgg}tt tj| |dd W d    d S 1 sw   Y  d S )N)r   r
   	   r   r   r   r   r   )r   r	   r   r   r   r   r   r   )r   r   )r   r    pytestZraises
ValueErrorr!   r"   )r#   r$   r'   r'   r(   test_smacof_errorZ   s   """rE   c                  C   sB   t g dg dg dg dg} tjddddd}||  d S )	Nr	   r   r   r   Fr   Zprecomputed)r,   Zn_jobsr   Zdissimilarity)r   r    r!   r:   r;   )r#   Zmds_clfr'   r'   r(   test_MDSo   s   "rF   zignore::FutureWarningk)g      ?g      ?r   c                 C   sr   t g dg dg dg dg}tj|dddd\}}tj| | dddd\}}t||d	d
 t||d	d
 dS )z>Test that non-metric MDS normalized stress is scale-invariant.r	   r   r   r   Fr
   r   )r,   r   r6   gh㈵>)ZrtolN)r   r    r!   r"   r   )rG   r#   ZX1r.   ZX2r/   r'   r'   r(   test_normed_stress{   s
   "rH   c                 C   s   t jd}|dd}t|}ttjd}|d| tj	| d|d}|
| |jd d	 | ks4J tj|| d|d |jd d	 | ksHJ d S )
Nr   r   r   )Zside_effectz$sklearn.manifold._mds._smacof_singleauto)r,   r+   r6   r   r+   )r   r7   ZRandomStateZrandnr   r   r!   Z_smacof_singlesetattrr:   Zfit_transformZ	call_argsr"   )r,   Zmonkeypatchr=   r%   distZmockZestr'   r'   r(   test_normalized_stress_auto   s   
rL   c                  C   sN   t g dg dg dg} t ddgddgdd	gg}tj| |d
dd d S )N)        LXz?LXz?)rN   rM         <)rO   rP   rM   gE/?g8$g?g"?grY؀-?g;
-?gd%?Fr   )r   r,   r   r-   )disr   r'   r'   r(   test_isotonic_outofbounds   s   rR   r+   c                 C   s   t ddgddgddgddgg}t|}tjdd| d|}|j}|j}t|}| |  d 	 d }| rIt 
|| d 	 d  }t|| d S )Nr   r   r
   r   r   r1   )r   r6   r+   )r   r    r   r!   r:   r;   Z
embedding_r<   Zravelsumsqrtr   )r+   r%   Dr>   r$   r@   ZD_mdsZstress_Zr'   r'   r(   test_returned_stress   s    "rV   c                 C   sh   t ddgddgddgddgg}tjdd| d}||d  |j}||d  |j}t|| d S )	Nr   r   r
   r   r   r1   )r   r6   r,   d   )r   r    r!   r:   r;   Zn_iter_r   )r,   r%   r>   Zn_iter1Zn_iter2r'   r'   r(   )test_convergence_does_not_depend_on_scale   s   "rX   c                  C   s   t ddgddgddgddgg} t g dg dg dg dg}tt t| W d    n1 s7w   Y  tt t |  W d    d S 1 sTw   Y  d S )	Nr   r   r
   r   r	   r   r   r   )	r   r    rC   ZwarnsFutureWarningr!   r"   r:   r;   )r%   r#   r'   r'   r(   test_future_warning_n_init   s   """rZ   )Zunittest.mockr   numpyr   rC   Znumpy.testingr   r   r   Zsklearn.datasetsr   Zsklearn.manifoldr   r!   Zsklearn.metricsr   r)   r0   r?   markZparametrizerA   rE   rF   filterwarningsrH   rL   rR   rV   rX   rZ   r'   r'   r'   r(   <module>   s8    




