U
    e                     @   s   d dl mZ d dlZd dlmZmZ d dl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dgdd Zdd Zejdddgdd Zejdddgdd ZdS )    )MockN)assert_array_almost_equalassert_allclose)_mds)euclidean_distancesc               	   C   s   t ddddgddddgddddgddddgg} t ddgd	d
gddgddgg}tj| |ddddd\}}t ddgddgddgddgg}t||dd d S )Nr                  /$ѿsh|?gw/?gT㥛 ?Mb?X9vο皙ɿS㥛?auto)initZn_componentsmax_itern_initnormalized_stressgp=
ףgS㥛gT㥛 ?gʡE?gZd;?gx&gʡEݿgL7A`?)decimal)nparraymdssmacofr   )simZX_ZX_true r    `/var/www/html/assets/scripts/venv/lib/python3.8/site-packages/sklearn/manifold/tests/test_mds.pytest_smacof
   s    2"     
r"   c               	   C   s  t ddddgddddgddddgddddgg} tt tj| dd	 W 5 Q R X t ddddgddddgddddgg} tt tj| dd	 W 5 Q R X t ddddgddddgddddgddddgg} t d
dgddgddgg}tt tj| |ddd W 5 Q R X d S )Nr   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    2(2r'   c               	   C   sR   t ddddgddddgddddgddddgg} tjdddd	d
}||  d S )Nr   r   r   r	   r
   r   FZprecomputedr   )metricZn_jobsZdissimilarityr   )r   r   r   MDSfit)r   Zmds_clfr    r    r!   test_MDS-   s    2   r+   kg      ?g      ?r
   c              	   C   s   t ddddgddddgddddgddddgg}tj|ddddd	\}}tj| | d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	   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_stress5   s"    2    
    
r.   c               	   C   sd   d} t ddddgddddgddddgddddgg}tjt| d tj|d	d	d
 W 5 Q R X 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	   r
   r   matchT)r(   r   Nr$   )msgr   r    r    r!   test_normalize_metric_warningE   s    2r2   r(   TFc              	   C   s   d}t ddddgddddgddddgddddgg}tj| d}tjt|d	 tj|| d W 5 Q R X tjt|d	 || W 5 Q R X d S )
Nz4The default value of `normalized_stress` will changer   r   r   r	   r
   r   )r(   r/   )	r   r   r   r)   r%   ZwarnsFutureWarningr   r*   )r(   r1   r   estr    r    r!   %test_normalized_stress_default_changeP   s    2r5   c                 C   s   t jd}|dd}t|}ttjd}|d| tj	| d|d}|
| |jd d	 | kshttj|| d|d |jd d	 | kstd S )
Nr   r	   r   )Zside_effectz$sklearn.manifold._mds._smacof_singler   )r(   r   r-   r   r   )r   randomZRandomStateZrandnr   r   r   Z_smacof_singlesetattrr)   Zfit_transformZ	call_argsAssertionErrorr   )r(   Zmonkeypatchrngr   distZmockr4   r    r    r!   test_normalized_stress_auto[   s    
r;   )Zunittest.mockr   numpyr   Znumpy.testingr   r   r%   Zsklearn.manifoldr   r   Zsklearn.metricsr   r"   r'   r+   markZparametrizer.   r2   r5   r;   r    r    r    r!   <module>   s   


