
    Wi                     j   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      \  ZZ eeed      \  ZZ e       j3                  e      Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#ejH                  jK                  d      d        Z&y)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                     t        j                  t        j                  t                    } | t	        j
                  |       z  } t        | dd      \  }}t        t        |            t        d|v       z
  }|dk(  sJ t        d      j                  |       j                  }t        t        |            t        d|v       z
  }|dk(  sJ y )N皙?precomputedmetric   )r   
squareformpdistXnpmaxr   lensetintr   fitlabels_)Dlabelstreen_clusters_1n_clusters_2s        b/home/sietch6/trending-topics-pipeline/venv/lib/python3.12/site-packages/hdbscan/tests/test_rsl.pytest_rsl_distance_matrixr)      s    HNN1-.ANA(CFLFDs6{#c",&77L1 6::1=EEFs6{#c",&77L1    c                  ,   t        t        d      \  } }t        t        |             t	        d| v       z
  }|t
        k(  sJ t               j                  t              j                  } t        t        |             t	        d| v       z
  }|t
        k(  sJ y )Nr   r   	r   r   r   r   r    
n_clustersr   r!   r"   r$   r%   r&   r'   s       r(   test_rsl_feature_vectorr/   *   s    (C0LFDs6{#c",&77L:%&% "&&q)11Fs6{#c",&77L:%&%r*   c                  T   t         j                  } t        t        d|       \  }}t	        t        |            t        d|v       z
  }|t        k(  sJ t        |       j                  t              j                  }t	        t        |            t        d|v       z
  }|t        k(  sJ y )Nr   r   r   )r   	euclideanr   r   r   r   r    r-   r   r!   r"   )r   r$   r%   r&   r'   s        r(   test_rsl_callable_metricr2   4   s    F(C?LFDs6{#c",&77L:%&% /33A6>>Fs6{#c",&77L:%&%r*   c                  F    ddgddgg} t               j                  |        y )Ng      ?g       @g      @g      @)r   r!   )r   s    r(   test_rsl_input_listsr4   A   s%    
bB8Aa r*   c                  6   t        t        dd      \  } }t        t        |             t	        d| v       z
  }|t
        k(  sJ t        dd      j                  t              j                  } t        t        |             t	        d| v       z
  }|t
        k(  sJ y )Ng?boruvka_balltree	algorithmr   )cutr8   r,   r.   s       r(   test_rsl_boruvka_balltreer:   F   s    (D<NOLFDs6{#c",&77L:%&% T+=??Bs1vgg s6{#c",&77L:%&%r*   c                  4   t        t        dd      \  } }t        t        |             t	        d| v       z
  }|t
        k(  sJ t        d      j                  t              j                  } t        t        |             t	        d| v       z
  }|t
        k(  sJ y )Nr   prims_balltreer7   r   r,   r.   s       r(   test_rsl_prims_balltreer=   Q   s    (C;KLLFDs6{#c",&77L:%&% +;<@@CKKFs6{#c",&77L:%&%r*   c                  4   t        t        dd      \  } }t        t        |             t	        d| v       z
  }|t
        k(  sJ t        d      j                  t              j                  } t        t        |             t	        d| v       z
  }|t
        k(  sJ y )Nr   prims_kdtreer7   r   r,   r.   s       r(   test_rsl_prims_kdtreer@   [   s    (C>JLFDs6{#c",&77L:%&% >:>>qAIIFs6{#c",&77L:%&%r*   c                  Z    t               j                  t              } | j                  J y N)r   r!   r   cluster_hierarchy_)	clusterers    r(   test_rsl_hierarchyrE   m   s'    #%))!,I''333r*   c            
         t        ddd      \  } }t               j                  |       } t        | d      \  }}t	        t        |            t        d|v       z
  }|t        k(  sJ t        dddd	t        j                  | j                  d
         i      j                  |       j                  }t	        t        |            t        d|v       z
  }|t        k(  sJ y )Nr   r   @   )r   r   
n_featuresg      @r   best
seuclideanVr   )r9   r8   r   metric_params)r	   r   fit_transformr   r   r   r    r-   r   r   onesshaper!   r"   )Hyr$   r%   r&   r'   s         r(   test_rsl_high_dimensionalrR   r   s    rBDAq&&q)A(C0LFDs6{#c",&77L:%&% SF(403RWWQWWQZ5H/IKKN3q6RYRY  s6{#c",&77L:%&%r*   c                  *
   t        j                  t              5  t        dd       d d d        t        j                  t              5  t        d d       d d d        t        j                  t              5  t        t        dd       d d d        t        j                  t              5  t        t        dd       d d d        t        j                  t              5  t        t        dd       d d d        t        j                  t              5  t        t        dd        d d d        t        j                  t              5  t        t        ddd       d d d        t        j                  t              5  t        t        dddd	
       d d d        t        j                  t              5  t        t        dddd
       d d d        t        j                  t              5  t        t        dddd
       d d d        t        j                  t              5  t        t        ddd       d d d        t        j                  t              5  t        t        ddd	       d d d        t        j                  t              5  t        t        ddd       d d d        t        j                  t              5  t        t        ddd       d d d        t        j                  t              5  t        t        dd       d d d        t        j                  t              5  t        t        dd       d d d        t        j                  t
              5  t        t        dd       d d d        t        j                  t              5  t        t        ddd        d d d        t        j                  t              5  t        t        dd       d d d        t        j                  t              5  t        t        dd       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ~xY w# 1 sw Y   WxY w# 1 sw Y   0xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   exY w# 1 sw Y   =xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xxY w# 1 sw Y   PxY w# 1 sw Y   )xY w# 1 sw Y   y xY w)Nfailr   )kr   imperialr   	minkowski)r   pr?   )r   rX   r8   r<   r6   r   boruvka_kdtree)r   r8   )alphasomething_elser7   r   )	leaf_size)gamma)pytestraises
ValueErrorr   r   	Exception	TypeError r*   r(   test_rsl_badargsrd      s   	z	" +fc*+	z	" )dC()	z	" 0a/0	z	" ,a+,	z	" 9aZ89	z	" 3aT23	z	" @a[B?@	z	" Za[B.YZ	z	" \a[BJZ[\	z	" ^a[BJ\]^	z	" Xa]FVWX	z	" Va]nUV	z	" Xa]FVWX	z	" Za]FXYZ	z	" 0aB/0	z	" 4aF34	y	! Ba0@AB	y	! Ba[DAB	z	" 3a23	z	" /aA./ /M+ +) )0 0, ,9 93 3@ @Z Z\ \^ ^X XV VX XZ Z0 04 4B BB B3 3/ /s   PP6P,*P9QQQ ;Q-1Q:'RRR!R.<R;1S%SS"S/S<6T	PP),P69QQQ Q*-Q7:RRR!R+.R8;SSS"S,/S9<T	Tz(need to refactor to meet newer standards)reasonc                  "    t        t               y rB   )r   r   rc   r*   r(   test_rsl_is_sklearn_estimatorrg      s    '(r*   )'__doc__numpyr   scipy.spatialr   scipyr   sklearn.utils.estimator_checksr   hdbscanr   r   sklearnr   warningssklearn.datasetsr	   sklearn.utilsr
   sklearn.preprocessingr   r^   r-   r   rQ   rM   r)   r/   r2   r4   r:   r=   r@   rE   rR   rd   markskiprg   rc   r*   r(   <module>ru      s     "  : >   ' ! 0 
BQ/1q!!$1""1%'
'!
'''$4
'(/X CD) E)r*   