
    Wi	                     j    d dl Zd dlZd dlmZ d dlmZ  ej                         d        Zd Z		 ddZ
y)    N)KDTree)named_distancesc                    |j                   d   }t        j                  |dz   t        j                        }t	        |      D ]e  }t	        |      D ]U  }d}| ||f   |||f   k7  r|dz  }| ||f   |||f   k7  rt	        |dz   |dz         D ]  }||kD  s	||xx   ||z
  z  cc<    W g t	        d|dz         D ]%  }d||   d||z  d|z  d|z  z
  dz
  z  z  z  z
  ||<   ' |S Nr      )dtypeg      ?g       @g      @)shapenpzerosfloat64range)	indices_sourceindices_embeddedmax_k	n_samplestrustworthinessijrankks	            [/home/sietch6/trending-topics-pipeline/venv/lib/python3.12/site-packages/umap/validation.pytrustworthiness_vector_bulkr      s6   
 !&&q)Ihhuqy

;O9 	3u 	3AD D)-=ad-CC	 !D)-=ad-CC 1q5%!), 3!8#A&$(2&3	3	3 1eai  
 ?1#59q=C)OcAg$=$CDE$
 


     c                 D     t        j                  d       fd       }|S )NT)parallelc                    |j                   d   }t        j                  |dz   t        j                        }t        j                  |t        j                        }t	        |      D ]  }t        j                  |      D ]  } | |   | |         ||<    t        j                  |      }t	        |      D ]Q  }d}	||	   |||f   k7  r|	dz  }	||	   |||f   k7  rt	        |dz   |dz         D ]  }
|	|
kD  s	||
xx   |	|
z
  z  cc<    S  t	        d|dz         D ]%  }
d||
   d||
z  d|z  d|
z  z
  dz
  z  z  z  z
  ||
<   ' d|d<   |S r   )r	   r
   r   r   r   numbaprangeargsort)sourcer   r   r   r   dist_vectorr   r   r   r   r   metrics              r   trustworthiness_vector_lowmemzFmake_trustworthiness_calculator.<locals>.trustworthiness_vector_lowmem$   s    %**1-	((519BJJ?hhy

;y! 	7A\\), >!'q	6!9!=A>  ZZ4N5\ 7$T*.>q!t.DDAID %T*.>q!t.DD q1ueai0 7Aax'*dQh6*77	7" q%!)$ 	A!$q'9y1}i#'(AC(GHI( "OA	
 !r   )r   njit)r"   r#   s   ` r   make_trustworthiness_calculatorr%   #   s'    
ZZ @ )(r   c                     t        ||      }|j                  ||d      }|d d dd f   }t        |   }t        |      } || ||      }|S )N)r"   F)r   return_distancer   )r   queryr   r%   )	r    	embeddingr   r"   treer   distvec_calculatorresults	            r   trustworthiness_vectorr.   H   s^     )F+Dzz)uezL'12.6"D4T:NF$4e<FMr   )	euclidean)numpyr
   r   sklearn.neighborsr   umap.distancesr   r$   r   r%   r.    r   r   <module>r4      s=      $ *  4")L &1r   