a
    h                     @   s   d dl mZ d dlZd dlZd dlmZmZ d dlm	Z
 d dlmZ dd Zdd	 Zd
d Zejdg ddd Zdd Zejdddgdd ZdS )    )MockN)assert_allcloseassert_array_almost_equal)_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|?gw/?gT㥛 ?Mb?X9vο皙ɿS㥛?r   r   )initZ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"   [/var/www/html/assistant/venv/lib/python3.9/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t t|  W d    n1 sL0    Y  t g dg dg dg} tt t|  W d    n1 s0    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    n1 s0    Y  d S )N)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_error   s    "(("r)   c                  C   s@   t g dg dg dg dg} tjdddd}||  d S )	Nr   r   r   r   Fr	   Zprecomputed)metricZn_jobsZdissimilarity)r   r   r   MDSfit)r   Zmds_clfr"   r"   r#   test_MDS,   s    "r-   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   random_stategh㈵>)ZrtolN)r   r   r   r   r   )r.   r   ZX1Zstress1ZX2Zstress2r"   r"   r#   test_normed_stress2   s
    "r0   c                  C   sh   d} t g dg dg dg dg}tjt| d  tj|ddd W d	   n1 sZ0    Y  d	S )
z^
    Test that a UserWarning is emitted when using normalized stress with
    metric-MDS.
    z"Normalized stress is not supportedr   r   r   r   )matchT)r*   normalized_stressNr&   )msgr   r"   r"   r#   test_normalize_metric_warning>   s    "r4   r*   TFc                 C   s   t jd}|dd}t|}ttjd}|d| tj	| d|d}|
| |jd d	 | kshJ tj|| d|d |jd d	 | ksJ d S )
Nr   r
   r	   )Zside_effectz$sklearn.manifold._mds._smacof_singleauto)r*   r2   r/   r   r2   )r   randomZRandomStateZrandnr   r   r   Z_smacof_singlesetattrr+   Zfit_transformZ	call_argsr   )r*   Zmonkeypatchrngr    distZmockZestr"   r"   r#   test_normalized_stress_autoI   s    
r:   )Zunittest.mockr   numpyr   r'   Znumpy.testingr   r   Zsklearn.manifoldr   r   Zsklearn.metricsr   r$   r)   r-   markZparametrizer0   r4   r:   r"   r"   r"   r#   <module>   s   
