
    WiDA              	       h   d dl mZ d dlZd dlZd dlZd dlmZ  ej                  ej                  d        ej                         d        Z ej                         d        Z ej                         d        Z ej                         d        Z ej                         d	        Z ej                         d
        Z ej                         	 	 d7d       Z ej                         d        Z ej                         d        Z ej                         d        Z ej                         d        Z ej                         d8d       Z ej                         d        Z ej                         d        Z ej                         d        Z ej                         d        Z ej                         d        Z ej                         d        Z ej                         d        Z ej                         d        Z ej                         d        Z ej                         d        Z  ej                         d        Z! ej                         d        Z" ej                         d        Z# ej                         d        Z$ ej                         d        Z% ej                         d         Z& ej                         d!        Z' ej                         d"        Z(i d#ed$ed%ed&ed'ed(ed)ed*ed+ed,ed-e(d.ed/ed0ed1ed2ed3eeee e!e"e$e#d4Z)d5Z*e#d6e(d-iZ+y)9    )print_functionN)normCc                     t        j                  |       }t        j                  t        j                  dt         j                        |dd  |d d k7  f      }||   S )N   dtype)npsortconcatenateonesbool_)arrauxflags      W/home/sietch6/trending-topics-pipeline/venv/lib/python3.12/site-packages/umap/sparse.py
arr_uniquer      sL    
''#,C>>2771BHH5s12w#cr(7JKLDt9    c                     | j                   d   dk(  r|S |j                   d   dk(  r| S t        t        j                  | |f            S Nr   )shaper   r   r   )ar1ar2s     r   	arr_unionr      sD    
yy|q
	1	
"..#s455r   c                 r    t        j                  | |f      }|j                          |d d |dd  |d d k(     S )Nr
   r   )r   r   r   )r   r   r   s      r   arr_intersectr   &   s?    
..#s
$CHHJs8CGs3Bx'((r   c                 F   t        | |      }t        j                  |j                  d   t        j                        }d}d}d}|| j                  d   k  r||j                  d   k  r| |   }	||   }
|	|
k(  r*||   ||   z   }|dk7  r|	||<   |||<   |dz  }|dz  }|dz  }nB|	|
k  r||   }|dk7  r|	||<   |||<   |dz  }|dz  }n||   }|dk7  r|
||<   |||<   |dz  }|dz  }|| j                  d   k  r||j                  d   k  r|| j                  d   k  r4||   }|dk7  r| |   ||<   |||<   |dz  }|dz  }|| j                  d   k  r4||j                  d   k  r4||   }|dk7  r||   ||<   |||<   |dz  }|dz  }||j                  d   k  r4|d | }|d | }||fS Nr   r   r   )r   r   zerosr   float32ind1data1ind2data2
result_indresult_datai1i2nnzj1j2vals               r   
sparse_sumr/   -   s.   4&J((:++A.bjjAK	
B	
B
C tzz!}
djjm!3"X"X8)eBi'Cax"$
3#&C q!GB!GB"W)Cax"$
3#&C q!GB)Cax"$
3#&C q!GB3 tzz!}
djjm!38 tzz!}
Bi!8"2hJsO"K1HC
a tzz!}
 tzz!}
Bi!8"2hJsO"K1HC
a tzz!}
 DS!Jds#K{""r   c                      t        | |||       S )N)r/   )r#   r$   r%   r&   s       r   sparse_diffr1   j   s    dE4%00r   c                    t        | |      }t        j                  |j                  d   t        j                        }d}d}d}|| j                  d   k  r||j                  d   k  rn| |   }	||   }
|	|
k(  r*||   ||   z  }|dk7  r|	||<   |||<   |dz  }|dz  }|dz  }n|	|
k  r|dz  }n|dz  }|| j                  d   k  r||j                  d   k  rn|d | }|d | }||fS r   )r   r   r    r   r!   r"   s               r   
sparse_mulr3   o   s   tT*J((:++A.bjjAK	
B	
B
C tzz!}
djjm!3"X"X8)eBi'Cax"$
3#&C q!GB!GB"W!GB!GB tzz!}
djjm!3$ DS!Jds#K{""r   c                 t   t        |j                         dz  d      }|	r+t        t        d|z
  j                         dz  d      d      }n't        t        |j                         dz  d      d      }t        |j                  d         D ]  }||   }||   }|}t        | |   | |dz            D ]  }||   |k(  s||   } |}t        ||   ||dz            D ]  }||   |k(  s|	r	d||   z
  }||   } ||kD  s||kD  sw|
dk  r|t	        ||
d|
z
  z        z  ||<   t	        |d|
z
  |
z        |z  ||<    y )N       @:0yE>      ?g-C6?r   r         ?)maxminranger   pow)indptr1indices1r$   indptr2indices2r&   
result_row
result_col
result_valright_complement
mix_weightleft_min	right_minidxijleft_valk	right_vals                      r   general_sset_intersectionrN      s    599;$f-Hu!!#c)62D
	 		c!6*D
	 Z%%a() sOsOwqz71q5>2 	$A{a 8	$ 	wqz71q5>2 	)A{a# #eAhI %aI	) h)i"7C"*SzS:-=>. #
3
 3#3z"ABYN 3/6 r   c	                    t        |j                         dz  d      }	t        |j                         dz  d      }
t        |j                  d         D ]n  }||   }||   }|	}t        | |   | |dz            D ]  }||   |k(  s||   } |
}t        ||   ||dz            D ]  }||   |k(  s||   } ||z   ||z  z
  ||<   p y )Nr5   r6   r   r   )r9   r:   r;   r   )r=   r>   r$   r?   r@   r&   rA   rB   rC   rF   rG   rH   rI   rJ   rK   rL   rM   s                    r   general_sset_unionrP      s     599;$f-HEIIK#%v.IZ%%a() FsOsOwqz71q5>2 	$A{a 8	$ 	wqz71q5>2 	%A{a!!H		% #Y.I1EE
3F  r   c                     t        | |||      \  }}d}t        |j                  d         D ]  }|||   dz  z  } t        j                  |      S )N        r      )r1   r;   r   r   sqrtr#   r$   r%   r&   aux_indsaux_dataresultrI   s           r   sparse_euclideanrY      sZ    $T5$>HhF8>>!$% #(1+""#776?r   c                     t        | |||      \  }}d}t        |j                  d         D ]  }|t        j                  ||         z  } |S NrR   r   r1   r;   r   r   absrU   s           r   sparse_manhattanr^      sU    $T5$>HhF8>>!$% &"&&!%%&Mr   c                     t        | |||      \  }}d}t        |j                  d         D ]$  }t        |t	        j
                  ||               }& |S r[   )r1   r;   r   r9   r   r]   rU   s           r   sparse_chebyshevr`      sW    $T5$>HhF8>>!$% 2VRVVHQK012Mr   c                     t        | |||      \  }}d}t        |j                  d         D ]   }|t        j                  ||         |z  z  }" |d|z  z  S NrR   r   r7   r\   )	r#   r$   r%   r&   prV   rW   rX   rI   s	            r   sparse_minkowskird     sd    $T5$>HhF8>>!$% +"&&!%**+cAgr   c                 Z    t        | |||      d   j                  d   }t        |      |z  S r   )r1   r   float)r#   r$   r%   r&   
n_featuresnum_not_equals         r   sparse_hammingri     s2    eT59!<BB1EM*,,r   c                    t        j                  |      }t        j                  |      }t        | |||      \  }}d|z  }t        | |||      \  }}	t        j                  |	      }	t	        ||	||      \  }
}t        j
                  |      S )Nr7   )r   r]   r/   r1   r3   sum)r#   r$   r%   r&   	abs_data1	abs_data2
denom_inds
denom_data
numer_inds
numer_dataval_indsval_datas               r   sparse_canberrart     s    uIuI'iyIJ
z!J(udEBJ

#J#J
J
SHh66(r   c                 <   t        | |||      \  }}t        j                  |      }|j                  d   dk(  ryt        j                  |      }|dk(  ryt        | |||      \  }}t        j                  |      }t        j                  |      }	t        |	      |z  S Nr   rR   )r/   r   r]   r   rk   r1   rf   )
r#   r$   r%   r&   rn   ro   denominatorrp   rq   	numerators
             r   sparse_bray_curtisry   "  s    'eT5AJ

#Ja&&$Ka(udEBJ

#Jz"Ik))r   c                     t        | |      j                  d   }t        | |      j                  d   }|dk(  ryt        ||z
        |z  S rv   )r   r   r   rf   )r#   r$   r%   r&   num_non_zero	num_equals         r   sparse_jaccardr}   7  sP    T4(..q1LdD)//2Iq\I-.==r   c                     t        | |      j                  d   }t        | |      j                  d   }||z
  }t        |      |z  S r   r   r   r   rf   r#   r$   r%   r&   rg   num_true_truer{   rh   s           r   sparse_matchingr   B  sJ    !$-33A6MT4(..q1L =0M*,,r   c                     t        | |      j                  d   }t        | |      j                  d   }||z
  }|dk(  ry|d|z  |z   z  S )Nr   rR   r5   r   r   r   r#   r$   r%   r&   r   r{   rh   s          r   sparse_dicer   K  Z    !$-33A6MT4(..q1L =0Mm 3m CDDr   c                     t        | |      j                  d   }t        | |      j                  d   }||z
  }|dk(  ryt        ||z
  |z         ||z   z  S rv   r   r   s           r   sparse_kulsinskir   W  si    !$-33A6MT4(..q1L =0M]]2Z?@J&
 	
r   c                     t        | |      j                  d   }t        | |      j                  d   }||z
  }d|z  ||z   z  S Nr   r5   r   r   s           r   sparse_rogers_tanimotor   e  O    !$-33A6MT4(..q1L =0M-J$>??r   c                 4   | j                   d   |j                   d   k(  rt        j                  | |k(        ryt        | |      j                   d   }|t        j                  |dk7        k(  r|t        j                  |dk7        k(  ryt        ||z
        |z  S rv   )r   r   allr   rk   rf   )r#   r$   r%   r&   rg   r   s         r   sparse_russellraor   n  s    zz!}

1%"&&*>!$-33A6Muz**}uPQz@R/RZ-/0J??r   c                     t        | |      j                  d   }t        | |      j                  d   }||z
  }d|z  ||z   z  S r   r   r   s           r   sparse_sokal_michenerr   {  r   r   c                     t        | |      j                  d   }t        | |      j                  d   }||z
  }|dk(  ry|d|z  |z   z  S )Nr   rR   r8   r   r   s          r   sparse_sokal_sneathr     r   r   c                     t        | |||      \  }}d}t        |      }t        |      }t        |j                  d         D ]
  }	|||	   z  } |dk(  r|dk(  ry|dk(  s|dk(  ryd|||z  z  z
  S rb   )r3   r   r;   r   )
r#   r$   r%   r&   rV   rW   rX   norm1norm2rI   s
             r   sparse_cosiner     s    #D%u=HhFKEKE8>>!$% (1+ |	##f.//r   c                    t        | |||      \  }}d}t        j                  |      }t        j                  |      }t        j                  ||z        }	t	        |j
                  d         D ]  }
|t        j                  ||
         z  } |dk(  r|dk(  ry|dk(  s|dk(  ry||	kD  ryt        j                  d||	z  z
        S rb   )r3   r   rk   rT   r;   r   )r#   r$   r%   r&   rV   rW   rX   r   r   sqrt_norm_prodrI   s              r   sparse_hellingerr     s    #D%u=HhFFF5MEFF5MEWWUU]+N8>>!$% '"''(1+&&' |	##	.	 wwsf~5677r   c                 b   d}d}d}| j                   d   dk(  r|j                   d   dk(  ry| j                   d   dk(  s|j                   d   dk(  ryt        |j                   d         D ]
  }|||   z  } t        |j                   d         D ]
  }|||   z  } ||z  }||z  }t        j                  |j                   d   t        j                        }	t        j                  |j                   d   t        j                        }
t        |j                   d         D ]  }||   |z
  |	|<    t        |j                   d         D ]  }||   |z
  |
|<    t        j
                  t        |	      dz  || j                   d   z
  |dz  z  z         }t        j
                  t        |
      dz  ||j                   d   z
  |dz  z  z         }t        | |	||
      \  }}t        |      }t        |j                   d         D ]
  }|||   z  } t        | j                   d         D ]  }| |   |vs||	|   |z  z  } t        |j                   d         D ]  }||   |vs||
|   |z  z  } t        | |      }|||z  ||j                   d   z
  z  z  }|dk(  r|dk(  ry|dk(  ryd|||z  z  z
  S )NrR   r   r7   r   rS   )
r   r;   r   emptyr!   rT   r   r3   setr   )r#   r$   r%   r&   rg   mu_xmu_ydot_productrI   shifted_data1shifted_data2r   r   dot_prod_indsdot_prod_datacommon_indicesall_indicess                    r   sparse_correlationr     s    DDKzz!}djjmq0	A!	tzz!}15;;q>" a5;;q>" a 	JDJDHHU[[^2::>MHHU[[^2::>M5;;q>" + 8d?a+5;;q>" + 8d?a+ GG	m		!j4::a=&@T1W%MME GG	m		!j4::a=&@T1W%MME $.dM4#W M='N=&&q)* (}Q''( 4::a=! 57.(=+t44K5 4::a=! 57.(=+t44K5 D$'K4$;*{/@/@/C"CDDK|		kUU]344r   c                     | dk(  ry| t        j                  |       z  | z
  dt        j                  dt         j                  z  | z        z  z   d| dz  z  z   S )Nr   r   r8   r5   r7   g      (@r   logpixs    r   approx_log_Gammar     sT    Av 	
BFF1IC"&&ruuq"999C1t8<LLr   c                 N   t        | |      }t        | |      }|dk  rct        j                  |       }t	        dt        |            D ]3  }|t        j                  |      t        j                  ||z         z
  z  }5 |S t        |       t        |      z   t        | |z         z
  S )N   r   )r:   r9   r   r   r;   intr   )r   yabvaluerI   s         r   log_betar     s    Aq	AAq	A1u
q#a&! 	/ARVVAYA..E	/"%5a%88;KAPQE;RRRr   c                     t        j                  d      d| z  dz   z  dt        j                  dt         j                  z  | z        z  z   d| z  z   S )Nr5   g       r8   g      ?r   r   s    r   log_single_betar     sJ     	stax#~&rvvcBEEkAo/F)FFQRRr   c           	         t        j                  |      }t        j                  |      }|dk(  r|dk(  ry|dk(  s|dk(  ryd}d}d}|| j                  d   k  r||j                  d   k  rr| |   }	||   }
|	|
k(  r.||   ||   z  dk7  r|t        ||   ||         z  }|dz  }|dz  }n|	|
k  r|dz  }n|dz  }|| j                  d   k  r||j                  d   k  rrd}|D ]  }|t	        |      z  } d}|D ]  }|t	        |      z  } t        j
                  d|z  |t        ||      z
  |t	        |      z
  z
  z  d|z  |t        ||      z
  |t	        |      z
  z
  z  z         S )Nr   rR   g    חAr   r7   )r   rk   r   r   r   rT   )r#   r$   r%   r&   n1n2log_br)   r*   r,   r-   self_denom1d1self_denom2d2s                  r   sparse_ll_dirichletr     s    
B	B	Qw27	qB!GE	
B	
B
tzz!}
djjm!3"X"X8Ry59$)%)U2Y77!GB!GB"W!GB!GB tzz!}
djjm!3 K +r**+ K +r**+ 77bEHR,,ob>Q0QRS
(ehr2..+PR@S2ST
U	V r   	euclidean	manhattanl1taxicab	chebyshevlinflinfty	linfinity	minkowskicanberrall_dirichlet
braycurtishammingjaccarddicematching	kulsinski)rogerstanimoto
russellraosokalmichenersokalsneathcosinecorrelation	hellinger)r   r   r   r   r   r   r   r   )Fr8   )r5   ),
__future__r   localenumbanumpyr   
umap.utilsr   	setlocale
LC_NUMERICnjitr   r   r   r/   r1   r3   rN   rP   rY   r^   r`   rd   ri   rt   ry   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   sparse_named_distancessparse_need_n_featuresSPARSE_SPECIAL_METRICS r   r   <module>r      s  
 &       ""C (   6 6 ) ) 9# 9#x 1 1 # #B  3 3l  B         - -
 
 
 * *( > > - - E E 

 

 @ @ 	@ 	@ @ @ E E 0 0" 8 8( 95 95x   	S 	S   ' 'T! ! 	
	
  !   ! !  ' $  ~!" ~#$ K%& '( !)* -#*&%!7 <  k r   