U
    3‰dÛ  ã                   @   sz   d dl Zd dlZd dlm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eeg¡dd„ ƒZdS )é    N)Úeuclidean_distances)ÚKNeighborsTransformerÚRadiusNeighborsTransformer)Ú_is_sorted_by_data)Úassert_array_equalc                  C   sÖ  d} d}d}d}t j d¡}| ||¡}| ||¡}t  t|ƒd¡}dD ]¸}|dk}	t| |d}
|
 |¡}|j||fks|t	‚|j
j|| |	  fks–t	‚|jd	ks¤t	‚t|ƒs°t	‚|
 |¡}|j||fksÌt	‚|j
j|| |	  fksæt	‚|jd	ksôt	‚t|ƒsHt	‚qHdD ]Ê}|dk}	t||d
}
|
 |¡}|j||fks<t	‚|j
j|| |	  fkrXt	‚|jd	ksht	‚t|ƒsvt	‚|
 |¡}|j||fks”t	‚|j
j|| |	  fkr°t	‚|jd	ksÀt	‚t|ƒst	‚qd S )Né   é   é   é
   é*   )ÚdistanceZconnectivityr   )Ún_neighborsÚmodeZcsr)Úradiusr   )ÚnpÚrandomÚRandomStateÚrandnZ
percentiler   r   Úfit_transformÚshapeÚAssertionErrorÚdataÚformatr   Ú	transformr   )r   Ún_samples_fitZ	n_queriesÚ
n_featuresÚrngÚXÚX2r   r   Zadd_oneÚnntÚXtÚX2t© r"   úF/tmp/pip-unpacked-wheel-zrfo1fqw/sklearn/neighbors/tests/test_graph.pyÚtest_transformer_result
   sD    



r$   c                 C   s,   |   ¡ } | j| j| jk }t|ƒ| jd kS )z0Return True if the diagonal is explicitly storedr   )ZtocooÚrowÚcolÚlenr   )r   Úexplicitr"   r"   r#   Ú_has_explicit_diagonal7   s    r)   c            
      C   sÚ   d} d\}}}t j d¡}| ||¡}| ||¡}t| d}| |¡}t|ƒsRt‚t  |j	 
|| d ¡d d …df dk¡s~t‚| |¡}t|ƒs”t‚t  |j	 
|| d ¡d d …df dk¡sÀt‚| |¡}	t|	ƒrÖt‚d S )Nr   )r   r	   r
   r   )r   é   r   )r   r   r   r   r   r   r)   r   Úallr   Zreshaper   )
r   r   Zn_samples_transformr   r   r   r   r   r    r!   r"   r"   r#   Útest_explicit_diagonal>   s    


,
,
r,   ÚKlassc                    sn   d}d}t j d¡}| ||¡}| ƒ  |¡}| ¡ }| j ¡ ‰ t j‡ fdd„t	|j
ƒD ƒtd}t||ƒ dS )zFCheck `get_feature_names_out` for transformers defined in `_graph.py`.r   r
   r   c                    s   g | ]}ˆ › |› ‘qS r"   r"   )Ú.0Úi©Zclass_name_lowerr"   r#   Ú
<listcomp>b   s     z0test_graph_feature_names_out.<locals>.<listcomp>)ZdtypeN)r   r   r   r   ZfitZget_feature_names_outÚ__name__ÚlowerÚarrayÚrangeZn_samples_fit_Úobjectr   )r-   r   r   r   r   ZestZ	names_outZexpected_names_outr"   r0   r#   Útest_graph_feature_names_outT   s    
þr7   )Znumpyr   ZpytestZsklearn.metricsr   Zsklearn.neighborsr   r   Zsklearn.neighbors._baser   Zsklearn.utils._testingr   r$   r)   r,   ÚmarkZparametrizer7   r"   r"   r"   r#   Ú<module>   s   -