o
    Xεi	                     @   sP   d dl Zd dlZd dlmZ d dlmZ e dd Zdd Z		dd	d
Z
dS )    N)KDTree)named_distancesc           	      C   s   |j d }tj|d tjd}t|D ]A}t|D ]:}d}| ||f |||f kr9|d7 }| ||f |||f ks)t|d |d D ]}||krR||  || 7  < qBqqtd|d D ]}d|| d|| d| d|  d     ||< q\|S Nr      )dtypeg      ?g       @g      @)shapenpzerosfloat64range)	indices_sourceindices_embeddedmax_k	n_samplestrustworthinessijrankk r   C/home/ubuntu/.local/lib/python3.10/site-packages/umap/validation.pytrustworthiness_vector_bulk   s&   

r   c                    s   t jdd fdd}|S )NT)parallelc                    s2  |j d }tj|d tjd}tj|tjd}t|D ]U}t|D ]} | | | | ||< q"t|}t|D ]6}d}	||	 |||f krU|	d7 }	||	 |||f ksGt|d |d D ]}
|	|
krn||
  |	|
 7  < q^q9qtd|d D ]}
d||
 d||
 d| d|
  d     ||
< qxd|d< |S r   )r   r   r	   r
   r   numbaprangeargsort)sourcer   r   r   r   dist_vectorr   r   r   r   r   metricr   r   trustworthiness_vector_lowmem$   s0   


zFmake_trustworthiness_calculator.<locals>.trustworthiness_vector_lowmem)r   njit)r   r    r   r   r   make_trustworthiness_calculator#   s   
 r"   	euclideanc           	      C   sP   t ||d}|j||dd}|d d dd f }t| }t|}|| ||}|S )Nr   F)r   return_distancer   )r   queryr   r"   )	r   	embeddingr   r   treer   distvec_calculatorresultr   r   r   trustworthiness_vectorH   s   r+   )r#   )numpyr   r   sklearn.neighborsr   umap.distancesr   r!   r   r"   r+   r   r   r   r   <module>   s    
&