o
    {i                     @   s  d Z ddlZddlmZ ddlmZ ddlmZ ddl	m
Z
mZ ddlmZ ddlZddlmZ dd	lmZ dd
lmZ ddlZdZeddd\ZZeeedd\ZZe eZdd Zdd Zdd Zdd Zdd Zdd Zdd Z dd  Z!d!d" Z"d#d$ Z#ej$j%d%d&d'd( Z&dS ))z6
Tests for Robust Single Linkage clustering algorithm
    N)distance)sparse)check_estimator)RobustSingleLinkagerobust_single_linkage)datasets)
make_blobs)shuffle)StandardScaler   2      )	n_samplesrandom_state   )r   c                  C   s   t t t} | t|  } t| ddd\}}tt|t	d|v  }|dks*J t
dd| j}tt|t	d|v  }|dksEJ d S )N皙?precomputedmetric   )r   
squareformpdistXnpmaxr   lensetintr   fitlabels_)Dlabelstreen_clusters_1n_clusters_2 r&   J/home/ubuntu/.local/lib/python3.10/site-packages/hdbscan/tests/test_rsl.pytest_rsl_distance_matrix   s   r(   c                  C   sh   t td\} }tt| td| v  }|tksJ t tj} tt| td| v  }|tks2J d S )Nr   r   	r   r   r   r   r   
n_clustersr   r   r    r"   r#   r$   r%   r&   r&   r'   test_rsl_feature_vector*   s   r,   c                  C   sv   t j} ttd| d\}}tt|td|v  }|tksJ t| d	tj
}tt|td|v  }|tks9J d S )Nr   r   r   )r   	euclideanr   r   r   r   r   r*   r   r   r    )r   r"   r#   r$   r%   r&   r&   r'   test_rsl_callable_metric4   s   r.   c                  C   s    ddgddgg} t  |  d S )Ng      ?g       @g      @g      @)r   r   )r   r&   r&   r'   test_rsl_input_listsA   s   r/   c                  C   sr   t tddd\} }tt| td| v  }|tksJ tdddtj} tt| td| v  }|tks7J d S )Ng?boruvka_balltree	algorithmr   )cutr2   r)   r+   r&   r&   r'   test_rsl_boruvka_balltreeF   s   r4   c                  C   p   t tddd\} }tt| td| v  }|tksJ tddtj} tt| td| v  }|tks6J d S )Nr   prims_balltreer1   r   r)   r+   r&   r&   r'   test_rsl_prims_balltreeQ      r7   c                  C   r5   )Nr   prims_kdtreer1   r   r)   r+   r&   r&   r'   test_rsl_prims_kdtree[   r8   r:   c                  C   s   t  t} | jd usJ d S N)r   r   r   cluster_hierarchy_)	clustererr&   r&   r'   test_rsl_hierarchym   s   r>   c               	   C   s   t dddd\} }t | } t| d\}}tt|td|v  }|tks(J tdddd	t	
| jd
 id| j}tt|td|v  }|tksNJ d S )Nr   r   @   )r   r   
n_featuresg      @r   best
seuclideanVr   )r3   r2   r   metric_params)r   r
   fit_transformr   r   r   r   r*   r   r   onesshaper   r    )Hyr"   r#   r$   r%   r&   r&   r'   test_rsl_high_dimensionalr   s   rJ   c                   C   s  t t tdd W d    n1 sw   Y  t t td d W d    n1 s/w   Y  t t ttddd W d    n1 sKw   Y  t t ttddd W d    n1 sgw   Y  t t ttddd W d    n1 sw   Y  t t ttdd d W d    n1 sw   Y  t t ttdddd W d    n1 sw   Y  t t ttdddd	d
 W d    n1 sw   Y  t t ttddddd
 W d    n1 sw   Y  t t ttddddd
 W d    n	1 sw   Y  t t ttdddd W d    n	1 s5w   Y  t t ttddd	d W d    n	1 sSw   Y  t t ttdddd W d    n	1 sqw   Y  t t ttdddd W d    n	1 sw   Y  t t ttddd W d    n	1 sw   Y  t t ttddd W d    n	1 sw   Y  t t ttddd W d    n	1 sw   Y  t t ttddd d W d    n	1 sw   Y  t t ttddd W d    n	1 s!w   Y  t t ttddd W d    d S 1 s?w   Y  d S )Nfailr   )kr   imperialr   	minkowski)r   pr9   )r   rO   r2   r6   r0   r   boruvka_kdtree)r   r2   )alphasomething_elser1   r   )	leaf_size)gamma)pytestraises
ValueErrorr   r   	Exception	TypeErrorr&   r&   r&   r'   test_rsl_badargs   sx   $rZ   z(need to refactor to meet newer standards)reasonc                   C   s   t t d S r;   )r   r   r&   r&   r&   r'   test_rsl_is_sklearn_estimator   s   r\   )'__doc__numpyr   scipy.spatialr   scipyr   sklearn.utils.estimator_checksr   hdbscanr   r   sklearnr   warningssklearn.datasetsr   sklearn.utilsr	   sklearn.preprocessingr
   rU   r*   r   rI   rE   r(   r,   r.   r/   r4   r7   r:   r>   rJ   rZ   markskipr\   r&   r&   r&   r'   <module>   s8    

,