Ë
    ÷Q(hþ]  ã                   óœ  — d dl Z d dlZd dlZd dlmZmZ d dlmZ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mZ d d	lmZ d d
lmZmZ d dlmZ ej8                  j;                  d «      ZdZddgdejA                  ed«      z  z   Z!ddgdejA                  ed«      z  z   Z"ddgdejA                  ed«      z  z   Z#ddgdejA                  ed«      z  z   Z$ddgdejA                  ed«      z  z   Z%ddgdejA                  ed«      z  z   Z& ejN                  e!e"e#e$e%e&f«      Z(ejR                  jU                  dg d¢dgg d¢d gdddd d!dejV                  gdgdddd d!dejV                  gdgg«      d"„ «       Z,ejR                  jU                  dddd#d$dd%d%ejV                  gdgddd#d$d&dd%d%ejV                  g	d gddd#dejV                  gd gddd#ejV                  gdgg«      d'„ «       Z-ejR                  jU                  d(g d)¢d dgddggg d*¢gg d)¢d dgddggg d+¢gg d)¢d dgddgd dggg d+¢gg d,¢d dgddgd dggg d-¢gg«      d.„ «       Z.d/„ Z/d0„ Z0ejR                  jU                  d1d2geD � cg c]  } | d3f‘Œ c} z   «      d4„ «       Z1d5„ Z2d6„ Z3d7„ Z4d8„ Z5d9„ Z6d:„ Z7d;„ Z8ejR                  jU                  d<g d=¢«      ejR                  jU                  d>g d?¢«      ejR                  jU                  d1d2d@geD � cg c]  } | d3f‘Œ c} z   «      dA„ «       «       «       Z9dB„ Z:ejR                  jU                  dC e;de(jx                  d    dz  dD«      «      dE„ «       Z=ejR                  jU                  dFe«      dG„ «       Z>dH„ Z?dI„ Z@dJ„ ZAejR                  jU                  dFdgez   «      dK„ «       ZBejR                  jU                  dFe«      dL„ «       ZCdM„ ZDyc c} w c c} w )Né    N)ÚDBSCANÚOPTICS)Ú_extend_regionÚ_extract_xi_labels)Úgenerate_clustered_data)Ú
make_blobs)ÚDataConversionWarningÚEfficiencyWarning)Úcontingency_matrix)Úpairwise_distances)Úshuffle)Úassert_allcloseÚassert_array_equal)ÚCSR_CONTAINERSé
   éûÿÿÿéþÿÿÿçš™™™™™é?é   é   éÿÿÿÿçš™™™™™¹?é   çš™™™™™É?é   ç333333Ó?gš™™™™™ù?é   é   )Úr_plotÚend)r   çÍÌÌÌÌÌ!@çš™™™™™!@çffffff!@é   r   )r   r!   r"   r#   g333333!@r$   r   r!   r"   r#   r$   c                 ó‚   — t        j                  | «      } | d d | dd  z  }|dk\  }|dk  }t        ||dd«      }||k(  sJ ‚y )Nr   r   grÇqÇñ?r   r   ©ÚnpÚarrayr   )r   r    ÚratioÚsteep_downwardÚupwardÚes         ú_/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/cluster/tests/test_optics.pyÚtest_extend_downwardr.      sV   € ô �X‰X�fÓ€FØ�3�BˆK˜&  ˜*Ñ$€EØ˜gÑ%€NØ�Q‰Y€Fä�~ v¨q°!Ó4€AØ�Š8€O‰8ó    gÍÌÌÌÌÌ @gš™™™™™@é   gffffff@c                 ó‚   — t        j                  | «      } | d d | dd  z  }|dk  }|dkD  }t        ||dd«      }||k(  sJ ‚y )Nr   r   gÍÌÌÌÌÌì?r   r   r&   )r   r    r)   Ústeep_upwardÚdownwardr,   s         r-   Útest_extend_upwardr4   2   sU   € ô �X‰X�fÓ€FØ�3�BˆK˜&  ˜*Ñ$€EØ˜C‘<€LØ�q‰y€Hä�| X¨q°!Ó4€AØ�Š8€O‰8r/   )ÚorderingÚclustersÚexpected©r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   c                 ó4   — t        | |«      }t        ||«       y ©N)r   r   )r5   r6   r7   Úlabelss       r-   Útest_the_extract_xi_labelsr<   E   s   € ô   ¨(Ó3€Fä�v˜xÕ(r/   c                 ón  — t         j                  j                  d«      }d}ddgd|j                  |d«      z  z   }ddgd	|j                  |d«      z  z   }d
dgd|j                  |d«      z  z   }ddgd|j                  |d«      z  z   }ddgd|j                  |d«      z  z   }ddgd|j                  |d«      z  z   }t        j                  |||||t        j
                  ddgg«      |f«      j                  | d¬«      }	t         j                  dgdz  dgdz  d
gdz  dgdz  d
gdz  ddgdz  f   }
t        |	|
|¬«      \  }	}
t        ddddd¬«      j                  |	«      }t        |j                  |
«       t        d	dddd¬«      j                  |	«      }t        |j                  |
«       t        j                  |||||t        j
                  ddggdz  «      |f«      j                  | d¬«      }	t         j                  d
gdz  dgdz  dgdz  dgdz  dgdz  dddgdz  f   }
t        |	|
|¬«      \  }	}
t        ddddd¬«      j                  |	«      }t        |j                  |
«       ddgdd	gddgd	dgg}ddgddgddgddgg}ddgddgddgddgg}t        j                  |||f«      j                  | d¬«      }	t         j                  dgdz  d
gdz  dgdz  f   }
t        |	|
|¬«      \  }	}
t        ddt         j                  dd¬«      j                  |	«      }t        |j                  |
«       y ) Nr   r   r   r   r   r   r   r   r   r   r   r   r   g333333ã?r   éd   F©Úcopy©Úrandom_stateé   Úxiçš™™™™™Ù?)Úmin_samplesÚmin_cluster_sizeÚmax_epsÚcluster_methodrD   g{®Gáz´?çš™™™™™¹¿r   é	   é   éZ   én   ç{®Gáz¤?)r'   ÚrandomÚRandomStateÚrandnÚvstackr(   ÚastypeÚr_r   r   Úfitr   Úlabels_Úinf)Úglobal_dtypeÚrngÚn_points_per_clusterÚC1ÚC2ÚC3ÚC4ÚC5ÚC6ÚXÚexpected_labelsÚclusts               r-   Útest_extract_xire   T   s™  € ô �)‰)×
Ñ
 Ó
"€CØÐà
ˆbˆ�C˜#Ÿ)™)Ð$8¸!Ó<Ñ<Ñ	<€BØ
ˆRˆ�3˜Ÿ™Ð#7¸Ó;Ñ;Ñ	;€BØ
ˆRˆ�3˜Ÿ™Ð#7¸Ó;Ñ;Ñ	;€BØ
ˆaˆ�3˜Ÿ™Ð#7¸Ó;Ñ;Ñ	;€BØ
ˆRˆ�3˜Ÿ™Ð#7¸Ó;Ñ;Ñ	;€BØ
ˆQˆ�#˜Ÿ	™	Ð"6¸Ó:Ñ:Ñ	:€Bä
�	‰	�2�r˜2˜r 2¤r§x¡x°#°s°°Ó'=¸rÐBÓC×JÑJØ˜5ð 	Kó 	€Aô —e‘e˜Q˜C !™G a S¨1¡W¨q¨c°A©g¸°s¸Q±wÀÀÀaÁÈÈaÈSÐSTÉWÐTÑU€OÜ   OÀ#ÔFÑ€A€äØ¨°2ÀdÈsôç	�cˆ!ƒfð 
ô �u—}‘} oÔ6ô Ø¨$¸È4ÐTWôç	�cˆ!ƒfð 
ô �u—}‘} oÔ6ä
�	‰	�2�r˜2˜r 2¤r§x¡x°#°s°°¸qÑ0@Ó'AÀ2ÐFÓG×NÑNØ˜5ð 	Oó 	€Aô —e‘eØ	
ˆˆa‰�!��q‘˜1˜# ™' A 3¨¡7¨Q¨C°!©G°R¸¸a¸SÀ1¹WÐDñ€Oô !  OÀ#ÔFÑ€A€äØ¨°2ÀdÈsôç	�cˆ!ƒfð 
ô �u—}‘} oÔ6àˆaˆ&�1�c�(˜Q ˜I¨¨Q xÐ	0€BØˆrˆ(�R˜�G˜b "˜X¨¨2 wÐ	/€BØ�ˆ*�s˜B�i # s ¨b°#¨YÐ	7€BÜ
�	‰	�2�r˜2�,Ó×&Ñ& |¸%Ð&Ó@€AÜ—e‘e˜Q˜C !™G a S¨1¡W¨q¨c°A©gÐ5Ñ6€OÜ   OÀ#ÔFÑ€A€äØ¨´2·6±6È$ÐSWôç	�cˆ!ƒfð 
ô �u—}‘} oÕ6r/   c                 ó0  — t         j                  j                  d«      }d}ddgd|j                  |d«      j	                  | d¬«      z  z   }ddgd|j                  |d«      j	                  | d¬«      z  z   }t        j
                  ||f«      }t        |d¬«      }t        dd	¬
«      j                  |«      j                  }|j                  dk(  sJ ‚t        j                  |t        j                  ddgddgg«      z
  «      }|t        |«      z  dk  sJ ‚y )Nr   r>   r   Fr?   é2   rA   rC   r   )rF   rD   )r   r   éc   éÇ   çš™™™™™©?)r'   rP   rQ   rR   rT   rS   r   r   rV   Úcluster_hierarchy_ÚshapeÚsumr(   Úlen)rY   rZ   r[   r\   r]   rb   r6   Údiffs           r-   Útest_cluster_hierarchy_rp   �   s  € Ü
�)‰)×
Ñ
 Ó
"€CØÐØ
ˆQˆ�!�c—i‘iÐ 4°aÓ8×?Ñ?Ø˜5ð @ó ñ ñ 
€Bð ˆQˆ�"�s—y‘yÐ!5°qÓ9×@Ñ@Ø˜5ð Aó ñ ñ 
€Bô 	�	‰	�2�r�(Ó€AÜ� Ô"€Aä "¨Ô-×1Ñ1°!Ó4×GÑG€HØ�>‰>˜VÒ#Ð#Ð#Ü�6‰6�(œRŸX™X¨¨2 w°°C°Ð&9Ó:Ñ:Ó;€DØ”#�a“&‰=˜4ÒÐÑr/   zcsr_container, metric)NÚ	minkowskiÚ	euclideanc                 ó¨  — d}t        |¬«      }t        ddd| ¬«      }|j                  |� ||«      n|«       t        t	        |j
                  «      «      t        d|j
                  v «      z
  }||k(  sJ ‚|j
                  j                  t        |«      fk(  sJ ‚|j
                  j                  j                  dk(  sJ ‚|j                  j                  t        |«      fk(  sJ ‚|j                  j                  j                  d	k(  sJ ‚|j                  j                  t        |«      fk(  sJ ‚|j                  j                  j                  d	k(  sJ ‚|j                  j                  t        |«      fk(  sJ ‚|j                  j                  j                  dk(  sJ ‚t	        |j                  «      t	        t        t        |«      «      «      k(  sJ ‚y )
Nr   )Ú
n_clustersg      >@r   r   )rH   rF   rD   Úmetricr   ÚiÚf)r   r   rV   rn   ÚsetrW   Úintrl   ÚdtypeÚkindÚreachability_Úcore_distances_Ú	ordering_Úrange)ru   Úcsr_containerrt   rb   rd   Ún_clusters_1s         r-   Útest_correct_number_of_clustersr‚   Ÿ   s�  € ð €JÜ¨:Ô6€Aô ˜9°!¸ÀFÔK€EØ	‡I�I -Ð";‰m˜AÔÀÔCä”s˜5Ÿ=™=Ó)Ó*¬S°°u·}±}Ð1DÓ-EÑE€LØ˜:Ò%Ð%Ð%ð �=‰=×Ñ¤3 q£6 )Ò+Ð+Ð+Ø�=‰=×Ñ×#Ñ# sÒ*Ð*Ð*à×Ñ×$Ñ$¬¨Q«¨	Ò1Ð1Ð1Ø×Ñ×$Ñ$×)Ñ)¨SÒ0Ð0Ð0à× Ñ ×&Ñ&¬3¨q«6¨)Ò3Ð3Ð3Ø× Ñ ×&Ñ&×+Ñ+¨sÒ2Ð2Ð2à�?‰?× Ñ ¤S¨£V IÒ-Ð-Ð-Ø�?‰?× Ñ ×%Ñ%¨Ò,Ð,Ð,Üˆu�‰Ó¤3¤u¬S°«V£}Ó#5Ò5Ð5Ñ5r/   c                  ó°   — d} ddgg}t        ddd¬«      }t        j                  t        | ¬«      5  |j	                  |«       d d d «       y # 1 sw Y   y xY w)Nz#min_samples must be no greater thanr   g      ø?r   ç      ð?)rH   rF   rG   ©Úmatch)r   ÚpytestÚraisesÚ
ValueErrorrV   )Úmsgrb   rd   s      r-   Ú#test_minimum_number_of_sample_checkr‹   ¿   sR   € à
/€Cð ˆQˆˆ€AÜ˜9°"ÀsÔK€Eô 
�‰”z¨Ô	-ñ Ø�	‰	�!Œ÷÷ ñ ús   ±AÁAc                  óâ   — d} ddgddgddgg}t        d|dd¬«      \  }}t        dd	d
d¬«      }t        j                  t        | ¬«      5  |j                  |«       d d d «       y # 1 sw Y   y xY w)Nz.Specify an epsilon smaller than 0.15. Got 0.3.r   r   éî  rE   r   ©Ú	n_samplesÚcentersÚcluster_stdrB   g333333Ã?Údbscanr   r   ©rH   rI   ÚepsrF   r…   )r   r   r‡   rˆ   r‰   rV   ©rŠ   r�   rb   Úlabels_truerd   s        r-   Útest_bad_extractr—   Ì   sw   € à
:€CØ�1ˆv˜˜B�x ! R Ð)€GÜØ˜w°CÀaô�N€A€{ô
 ˜:°hÀCÐUWÔX€EÜ	�‰”z¨Ô	-ñ Ø�	‰	�!Œ÷÷ ñ ús   Á
A%Á%A.c                  óà   — d} ddgddgddgg}t        d|dd¬«      \  }}t        j                  t        | ¬«      5  t	        d	d
d	¬«      }|j                  |«       d d d «       y # 1 sw Y   y xY w)Nz6All reachability values are inf. Set a larger max_eps.r   r   r�   rE   r   rŽ   r…   g¸…ëQ¸Ž?r   )rH   rF   r”   )r   r‡   ÚwarnsÚUserWarningr   rV   r•   s        r-   Útest_bad_reachabilityr›   Ú   st   € Ø
B€CØ�1ˆv˜˜B�x ! R Ð)€GÜØ˜w°CÀaô�N€A€{ô 
�‰”k¨Ô	-ñ Ü˜{¸ÀÔFˆØ�	‰	�!Œ÷÷ ñ ús   » A$Á$A-c                  ó  — d} t         j                  j                  ddt        ¬«      }t	        j
                  «       5  t	        j                  dt        «       t        | ¬«      j                  |«       d d d «       y # 1 sw Y   y xY w)NÚrogerstanimotor   ©r   r   ©Úsizerz   Úerror©ru   )
r'   rP   ÚrandintÚboolÚwarningsÚcatch_warningsÚsimplefilterr	   r   rV   )Úpairwise_metricrb   s     r-   Ú$test_nowarn_if_metric_bool_data_boolr©   æ   si   € ð
 '€OÜ
�	‰	×Ñ˜! &´ÐÓ5€Aä	×	 Ñ	 Ó	"ñ .Ü×Ñ˜gÔ'<Ô=ä�oÔ&×*Ñ*¨1Ô-÷.÷ .ñ .ús   ½6A<Á<Bc                  ó*  — d} t         j                  j                  ddt         j                  ¬«      }d| › �}t	        j
                  t        |¬«      5 }t        | ¬«      j                  |«       t        |«      dk(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)	Nr�   r   rž   rŸ   z-Data will be converted to boolean for metric r…   r¢   r   )
r'   rP   r£   Úint32r‡   r™   r	   r   rV   rn   )r¨   rb   rŠ   Úwarn_records       r-   Ú%test_warn_if_metric_bool_data_no_boolr­   ô   s�   € ð '€OÜ
�	‰	×Ñ˜! &´·±ÐÓ9€AØ9¸/Ð9JÐ
K€Cä	�‰Ô+°3Ô	7ð %¸;Ü�oÔ&×*Ñ*¨1Ô-Ü�;Ó 1Ò$Ð$Ñ$÷%÷ %ñ %ús   Á,B	Â	Bc                  ó¦  — d} t         j                  j                  ddt        ¬«      }t         j                  j                  ddt         j                  ¬«      }t        j                  «       5  t        j                  dt        «       t        | ¬«      j                  |«       t        | ¬«      j                  |«       d d d «       y # 1 sw Y   y xY w)Nrq   r   rž   rŸ   r¡   r¢   )r'   rP   r£   r¤   r«   r¥   r¦   r§   r	   r   rV   )r¨   ÚX_boolÚX_nums      r-   Útest_nowarn_if_metric_no_boolr±     s�   € ð "€OÜ�Y‰Y×Ñ˜q v´TÐÓ:€FÜ�I‰I×Ñ˜a f´B·H±HÐÓ=€Eä	×	 Ñ	 Ó	"ñ 2Ü×Ñ˜gÔ'<Ô=ô 	�oÔ&×*Ñ*¨6Ô2ä�oÔ&×*Ñ*¨5Ô1÷2÷ 2ñ 2ús   Á-ACÃCc                  ó®   — ddgddgddgg} t        d| dd¬«      \  }}t        ddd	d
¬«      j                  |«      }t        |j                  «      dk(  sJ ‚y )Nr   r   r�   rE   r   rŽ   r„   r’   r   r   r“   r   )r   r   rV   ÚmaxrW   )r�   rb   r–   rd   s       r-   Útest_close_extractr´     sh   € ð �1ˆv˜˜B�x ! R Ð)€GÜØ˜w°CÀaô�N€A€{ô
 ˜3¨x¸SÈbÔQ×UÑUÐVWÓX€Eäˆu�}‰}Ó Ò"Ð"Ñ"r/   r”   )r   r   ç      à?rF   )r   r   rC   )Nrr   c           	      ól  — ddgddgddgg}t        d|dd¬«      \  }}|� ||«      n|}|j                  |d¬«      }t        |d	| |¬
«      j                  |«      }t	        | |¬«      j                  |«      }	t        |	j                  |j                  «      }
t        t        j                  t        j                  |
d¬«      «      t        j                  t        j                  |
d¬«      «      «      }|j                  d   |z
  }t        j                  |dz
  |j                  d   z  d«      }|dk  sJ ‚y )Nr   r   é–   rE   r   rŽ   Fr?   r’   )rF   rI   r”   ru   )r”   rF   )Úaxisr   rj   )r   rT   r   rV   r   r   rW   Úminr'   rm   r³   rl   Úround)r”   rF   ru   rY   r€   r�   rb   r–   ÚopÚdbÚcontingencyÚagreeÚdisagreeÚpercent_mismatchs                 r-   Útest_dbscan_optics_parityrÁ   !  s#  € ð �1ˆv˜˜B�x ! R Ð)€GÜØ˜w°CÀaô�N€A€{ð *Ð5‰�aÔ¸1€Aà	�‰� EˆÓ*€Aô 
Ø°¸cÈ&ô
ç	�cˆ!ƒfð ô
 
�C [Ô	1×	5Ñ	5°aÓ	8€Bä$ R§Z¡Z°·±Ó<€KÜÜ
�‰Œr�v‰v�k¨Ô*Ó+¬R¯V©V´B·F±F¸;ÈQÔ4OÓ-Pó€Eð �w‰w�q‰z˜EÑ!€Hä—x‘x ¨A¡°·±¸±Ñ ;¸QÓ?Ðð ˜tÒ#Ð#Ñ#r/   c                 óæ  — ddgddgddgg}ddgddgddgg}ddgddgdd	gg}t        j                  |||f«      j                  | d
¬«      }t         j                  dgdz  dgdz  dgdz  f   }t	        dddd¬«      j                  |«      }t        |j                  |«       t         j                  dgdz  dgdz  dgdz  f   }t	        dddd¬«      j                  |«      }t        |j                  |«       t         j                  dgdz     }t        j                  t        d¬«      5  t	        dddd¬«      j                  |«      }t        |j                  |«       d d d «       y # 1 sw Y   y xY w)Nr   r   rJ   r   rK   rL   r>   é`   éj   Fr?   r   r   r   r$   rD   rO   )rF   rH   rI   rD   r   zAll reachability valuesr…   r   )r'   rS   rT   rU   r   rV   r   rW   r‡   r™   rš   )rY   r\   r]   r^   rb   rc   rd   s          r-   Útest_min_samples_edge_caserÅ   G  so  € Øˆaˆ&�1�c�(˜Q ˜IÐ	&€BØˆrˆ(�R˜�G˜b "˜XÐ	&€BØ�ˆ*�s˜B�i # s Ð	,€BÜ
�	‰	�2�r˜2�,Ó×&Ñ& |¸%Ð&Ó@€Aä—e‘e˜Q˜C !™G a S¨1¡W¨q¨c°A©gÐ5Ñ6€OÜ˜q¨!¸DÀTÔJ×NÑNÈqÓQ€EÜ�u—}‘} oÔ6ä—e‘e˜Q˜C !™G a S¨1¡W¨r¨d°Q©hÐ6Ñ7€OÜ˜q¨!¸DÀTÔJ×NÑNÈqÓQ€EÜ�u—}‘} oÔ6ä—e‘e˜R˜D 1™H‘o€OÜ	�‰”kÐ)BÔ	Cñ ;Ü 1¨aÀÈÔN×RÑRÐSTÓUˆÜ˜5Ÿ=™=¨/Ô:÷;÷ ;ñ ;ús   Ä)5E'Å'E0rG   é   c                 ó¨  — t         d d d…   j                  |d¬«      }t        d| ¬«      j                  |«      }t	        j
                  |j                  |j                  dk7     «      }|j                  rt        |«      | k\  sJ ‚t        d| |j                  d   z  ¬«      }|j                  |«       t        |j                  |j                  «       y )Nr   Fr?   rK   )rF   rG   r   r   )rb   rT   r   rV   r'   ÚbincountrW   r    r¹   rl   r   )rG   rY   ÚredXrd   Úcluster_sizesÚ
clust_fracs         r-   Útest_min_cluster_sizerÌ   \  s°   € ä‰SˆqˆS‰6�=‰=˜¨Eˆ=Ó2€DÜ˜qÐ3CÔD×HÑHÈÓN€EÜ—K‘K §¡¨e¯m©m¸rÑ.AÑ BÓC€MØ×ÒÜ�=Ó!Ð%5Ò5Ð5Ð5äØØ)¨D¯J©J°q©MÑ9ô€Jð ‡N�N�4ÔÜ�u—}‘} j×&8Ñ&8Õ9r/   r€   c                 ó–  — t        t        t        «      dz   ¬«      }t        j                  t
        d¬«      5  |j                  t        «       d d d «       t        t        t        «      dz   d¬«      }t        j                  t
        d¬«      5  |j                   | t        «      «       d d d «       y # 1 sw Y   ŒfxY w# 1 sw Y   y xY w)Nr   )rG   zmust be no greater than the r…   rr   )rG   ru   )r   rn   rb   r‡   rˆ   r‰   rV   )r€   rd   s     r-   Útest_min_cluster_size_invalid2rÎ   l  s“   € ä¤C¬£F¨Q¡JÔ/€EÜ	�‰”zÐ)GÔ	Hñ Ø�	‰	”!Œ÷ô ¤C¬£F¨Q¡J°{ÔC€EÜ	�‰”zÐ)GÔ	Hñ $Ø�	‰	‘-¤Ó"Ô#÷$ð $÷	ð ú÷$ð $ús   ¸B3ÂB?Â3B<Â?Cc                  ó<  — dgdgdgdgg} t        dd¬«      j                  | «      }t        |j                  t        j
                  dddg«       t        |j                  ddt        j
                  t        j
                  g«       t        |j                  g d¢«       y )	Nr   r   iöÿÿÿé   r   é   ©rF   rH   r8   )r   rV   r   r|   r'   rX   r}   r~   )ÚYrd   s     r-   Útest_processing_orderrÔ   w  s}   € ð ˆˆrˆd�S�E˜B˜4Ð €Aä˜q¨"Ô-×1Ñ1°!Ó4€EÜ�u×*Ñ*¬R¯V©V°R¸¸RÐ,@ÔAÜ�u×,Ñ,¨r°2´r·v±v¼r¿v¹vÐ.FÔGÜ�u—‘ªÕ5r/   c                  óx	  — g t         j                  ‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d	‘d	‘d
‘d
‘d
‘d	‘d	‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d ‘d‘d!‘d"‘d#‘d$‘d%‘d%‘d%‘d%‘d&‘d&‘d&‘d'‘} g d(¢}g d)¢}t        d*¬+«      j                  t        «      }t        |j                  t        j                  |«      «       t        |j                  |j                     t        j                  |«      «       t        |j                  |j                     t        j                  | «      «       |j                  d,d  D ]0  }|j                  |   |j                  |j                  |      k\  rŒ0J ‚ g t         j                  ‘t         j                  ‘t         j                  ‘t         j                  ‘t         j                  ‘t         j                  ‘t         j                  ‘t         j                  ‘t         j                  ‘t         j                  ‘t         j                  ‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d-‘t         j                  ‘d.‘d‘d‘d‘d‘d/‘d‘d‘d‘t         j                  ‘d	‘d	‘d
‘d
‘d
‘d	‘d	‘d‘d0‘t         j                  ‘t         j                  ‘t         j                  ‘t         j                  ‘t         j                  ‘t         j                  ‘t         j                  ‘t         j                  ‘t         j                  ‘t         j                  ‘t         j                  ‘t         j                  ‘t         j                  ‘t         j                  ‘t         j                  ‘t         j                  ‘t         j                  ‘t         j                  ‘}g d1¢}g d2¢}t        d*d3¬4«      j                  t        «      }t        |j                  t        j                  |«      «       t        |j                  |j                     t        j                  |«      «       t        |j                  |j                     t        j                  |«      «       t        j                  |j                  d3k  «      d5   }	t        |j                  |	   |j                  |	   «       y )6NgÕÓ@zëð?g­¯N	Hè?gÞ‡~NTç?gšu™õå?gæµ”åE²í?g#íšrýËò?gÜž™„2¯
@g`ÒzÁß?gP{¾
„VÐ?gØ:×“ÚíÏ?g}~ aÁÓ?gÊ$Ôáï¦@gÐ°{änøù?göŒ Ý?g€ŒuûºLÐ?gÀ»*æëÙÌ?g$¼ý&È?gÛÐ{æ˜PÇ?gÔê¦x²¬Ì?g\xð·*xò?gù~)ÔN{õ?göÞe’E,õ?go°¸F‹ë?g–Ç>E”kÑ?gPñÖRùÀ?g�ŒBåQ¹?g‚÷òªWÁ?gÃ@¸‹*Ä?g´r©2\kÆ?gúØhGÆ?g[Øœ]N†ã?g!ì´Lõ?gª´ƒá@g¿wÏc?�@g;¹Ã©fh@gK�!Q¡œ@gó,@ùM@gÄåZôvÄ@gr/É%ñA@)<r   r   r   r   r$   r0   r   rK   r   r   é   é   é    é"   é!   é&   é'   é#   é%   é$   é,   é   rÆ   é   é   rÐ   é   é   é   é   rC   é(   é-   é.   r   rÑ   rL   é   é   é   é   é   é   é   é/   é1   é+   é0   é*   é)   é5   é9   é3   é4   é8   é;   é6   é7   é:   rg   )<r   r   r   r   r   r   r0   r   r$   r   r   rÖ   r×   r×   rÙ   rÙ   rÙ   rØ   rØ   rÞ   rß   rà   rá   rÆ   râ   rã   rÐ   rÐ   rã   rã   rã   rá   rè   ré   rê   r   rÑ   rÑ   rë   rë   rÑ   rL   rí   rÑ   r   rò   rï   ré   rñ   rô   rö   rø   rù   rù   rù   rù   rý   rý   rý   r   r   )rF   r   gÄ9'Ê%Šß?g�ÉÎ–FÑ?gx»ôåÕôÇ?gÑ*üùÖ?)<r   r   r   r   r   r   r   r$   r0   rK   r   rÑ   rL   rë   rì   rí   rî   rï   rð   rñ   rò   rê   rC   rã   rÐ   rÆ   rä   rå   râ   ræ   rç   rá   r×   rØ   rÙ   rÚ   rÛ   rÜ   rÝ   rÞ   rß   rÖ   rè   r÷   rö   rô   rà   ré   rõ   ró   rg   rú   rû   rø   rþ   rÿ   rü   rù   r   rý   )<r   r   r   r   r   r   r   r   r   r   r   r   rÑ   rÑ   rë   rë   rÑ   rL   rí   rÑ   r   rò   r   rC   rã   rÐ   rÐ   rÐ   rÐ   rã   rã   rÆ   r   r×   r×   rÙ   rÙ   rÙ   rØ   rØ   rÞ   rÛ   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rµ   rÒ   r   )r'   rX   r   rV   rb   r   r~   r(   Úpredecessor_r   r|   r}   Úwhere)
Úr1Úo1Úp1Úclust1rv   Úr2Úo2Úp2Úclust2Úindexs
             r-   Útest_compare_to_ELKIr  ‚  sH  € ð
=
Ü
�‰ð=
àð=
ð 	ð=
ð 	ð	=
ð
 	ð=
ð 	ð=
ð 	ð=
ð 	ð=
ð 	ð=
ð 	ð=
ð 	ð=
ð 	ð=
ð 	ð=
ð 	ð=
ð 	ð=
ð  	ð!=
ð" 	ð#=
ð$ 	ð%=
ð& 	ð'=
ð( 	ð)=
ð* 	ð+=
ð, 	ð-=
ð. 	ð/=
ð0 	ð1=
ð2 	ð3=
ð4 	ð5=
ð6 	ð7=
ð8 	ð9=
ð: 	ð;=
ð< 	ð==
ð> 	ð?=
ð@ 	ðA=
ðB 	ðC=
ðD 	ðE=
ðF 	ðG=
ðH 	ðI=
ðJ 	ðK=
ðL 	ðM=
ðN 	ðO=
ðP 	ðQ=
ðR 	ðS=
ðT 	ðU=
ðV 	ðW=
ðX 	ðY=
ðZ 	ð[=
ð\ 	ð]=
ð^ 	ð_=
ð` 	ða=
ðb 	ðc=
ðd 	ðe=
ðf 	ðg=
ðh 	ði=
ðj 	ðk=
ðl 	ðm=
ðn 	ðo=
ðp 	ðq=
ðr 	ðs=
ðt 	ðu=
ðv 	ðw=
ðx 	ðy=
€Bò|=
€Bò|=
€BôD  Ô"×&Ñ&¤qÓ)€Fä�v×'Ñ'¬¯©°"«Ô6Ü�v×*Ñ*¨6×+;Ñ+;Ñ<¼b¿h¹hÀr»lÔKÜ�F×(Ñ(¨×)9Ñ)9Ñ:¼B¿H¹HÀR»LÔIð ×Ñ˜a˜bÐ!ò YˆØ×#Ñ# AÑ&¨&×*@Ñ*@À×ATÑATÐUVÑAWÑ*XÓXÐXÐXðYð=
Ü
�‰ð=
ä
�‰ð=
ô 	�‰ð=
ô 	�‰ð	=
ô
 	�‰ð=
ô 	�‰ð=
ô 	�‰ð=
ô 	�‰ð=
ô 	�‰ð=
ô 	�‰ð=
ô 	�‰ð=
ð 	ð=
ð 	ð=
ð 	ð=
ð 	ð=
ð  	ð!=
ð" 	ð#=
ð$ 	ð%=
ð& 	ð'=
ð( 	ð)=
ð* 	ð+=
ð, 	ð-=
ô. 	�‰ð/=
ð0 	ð1=
ð2 	ð3=
ð4 	ð5=
ð6 	ð7=
ð8 	ð9=
ð: 	ð;=
ð< 	ð==
ð> 	ð?=
ð@ 	ðA=
ôB 	�‰ðC=
ðD 	ðE=
ðF 	ðG=
ðH 	ðI=
ðJ 	ðK=
ðL 	ðM=
ðN 	ðO=
ðP 	ðQ=
ðR 	ðS=
ðT 	ðU=
ôV 	�‰ðW=
ôX 	�‰ðY=
ôZ 	�‰ð[=
ô\ 	�‰ð]=
ô^ 	�‰ð_=
ô` 	�‰ða=
ôb 	�‰ðc=
ôd 	�‰ðe=
ôf 	�‰ðg=
ôh 	�‰ði=
ôj 	�‰ðk=
ôl 	�‰ðm=
ôn 	�‰ðo=
ôp 	�‰ðq=
ôr 	�‰ðs=
ôt 	�‰ðu=
ôv 	�‰ðw=
ôx 	�‰ðy=
€Bò|=
€Bò|=
€Bô|  ¨3Ô/×3Ñ3´AÓ6€Fä�v×'Ñ'¬¯©°"«Ô6Ü�v×*Ñ*¨6×+;Ñ+;Ñ<¼b¿h¹hÀr»lÔKÜ�F×(Ñ(¨×)9Ñ)9Ñ:¼B¿H¹HÀR»LÔIä�H‰H�V×+Ñ+¨sÑ2Ó3°AÑ6€EÜ�F×*Ñ*¨5Ñ1°6×3IÑ3IÈ%Ñ3PÕQr/   c                 ó  — t         j                  j                  d«      }d}ddgd|j                  |d«      z  z   }ddgd|j                  |d«      z  z   }d	dgd|j                  |d«      z  z   }dd
gd|j                  |d«      z  z   }t        j                  ||||f«      j                  | d¬«      }t        dd¬«      j                  |«      }t        t        j                  t        j                  |j                  «      «      g d¢«       y )Nr   rC   r   r   r   r   r   r   r   r   Fr?   r’   rµ   )rI   r”   r8   )r'   rP   rQ   rR   rS   rT   r   rV   r   ÚsortÚuniquerW   )	rY   rZ   r[   r\   r]   r^   r_   rb   rd   s	            r-   Útest_extract_dbscanr    sø   € ô �)‰)×
Ñ
 Ó
"€CØÐØ
ˆbˆ�C˜#Ÿ)™)Ð$8¸!Ó<Ñ<Ñ	<€BØ
ˆRˆ�3˜Ÿ™Ð#7¸Ó;Ñ;Ñ	;€BØ
ˆQˆ�#˜Ÿ	™	Ð"6¸Ó:Ñ:Ñ	:€BØ
ˆaˆ�3˜Ÿ™Ð#7¸Ó;Ñ;Ñ	;€BÜ
�	‰	�2�r˜2˜rÐ"Ó#×*Ñ*¨<¸eÐ*ÓD€Aä (°Ô4×8Ñ8¸Ó;€EÜ”r—w‘wœrŸy™y¨¯©Ó7Ó8º,ÕGr/   c                 óê  — t         d d d…   j                  | d¬«      }t        |d¬«      }|� ||«      n|}t        j                  «       5  t        j
                  dt        «       t        ddd	¬
«      j                  |«      }d d d «       t        ddd¬
«      j                  |«      }t        j                  |j                  «       t        |j                  |j                  «       y # 1 sw Y   ŒgxY w)Nr   Fr?   rr   r¢   Úignorer   ÚbruteÚprecomputed)rF   Ú	algorithmru   )rb   rT   r   r¥   r¦   r§   r
   r   rV   r   r|   r   rW   )rY   r€   rÉ   Údistsr  r
  s         r-   Útest_precomputed_distsr  #  sÊ   € ä‰SˆqˆS‰6�=‰=˜¨Eˆ=Ó2€DÜ˜t¨KÔ8€EØ$1Ð$=‰M˜%Ô À5€EÜ	×	 Ñ	 Ó	"ñ 
Ü×Ñ˜hÔ(9Ô:Ü B°'À-ÔP×TÑTØó
ˆ÷
ô
  ¨g¸kÔJ×NÑNÈtÓT€Fä�F×(Ñ(¨&×*>Ñ*>Ô?Ü�v—~‘~ v§~¡~Õ6÷
ð 
ús   Á8C)Ã)C2c                 óÊ  — t         j                  j                  d«      j                  dd«      }t        j                  |d«        | |«      }t        d„ t        |j                  «       Ž D «       «      sJ ‚|j                  «       }t        d¬«      j                  |«       |j                  |j                  k(  sJ ‚t        |j                  «       |j                  «       «       y)z£Check that we don't modify in-place the pre-computed sparse matrix.
    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/27508
    r   r   c              3   ó,   K  — | ]  \  }}||k7  –— Œ y ­wr:   © )Ú.0ÚrowÚcols      r-   ú	<genexpr>zKtest_optics_input_not_modified_precomputed_sparse_nodiag.<locals>.<genexpr>?  s   è ø€ Ò<™h˜c 3ˆs�c�zÑ<ùs   ‚r  r¢   N)r'   rP   rQ   ÚrandÚfill_diagonalÚallÚzipÚnonzeror@   r   rV   Únnzr   Útoarray)r€   rb   ÚX_copys      r-   Ú8test_optics_input_not_modified_precomputed_sparse_nodiagr'  3  s­   € ô 	�	‰	×Ñ˜aÓ ×%Ñ% a¨Ó+€Aô ×Ñ�Q˜ÔÙ�aÓ€AÜÑ<¬#¨q¯y©y«{Ð*;Ô<Ô<Ð<Ð<Ø�V‰V‹X€FÜ
�-Ô ×$Ñ$ QÔ'ð �5‰5�F—J‘JÒÐÐÜ�q—y‘y“{ F§N¡NÓ$4Õ5r/   c                  ó  — t        j                  g d¢«      j                  dd«      } g d¢}| |   }t        dd¬«      j	                  | «      }t        dd¬«      j	                  |«      }t        |j                  |   |j                  «       y)	aƒ  Check that cluster correction using predecessor is working as expected.

    In the following example, the predecessor correction was not working properly
    since it was not using the right indices.

    This non-regression test check that reordering the data does not change the results.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/26324
    )r   r   r   r   r0   r0   r$   r>   r   r   )r   r   r   r   r   r   r$   r   r   rr   )rF   ru   N)r'   r(   Úreshaper   rV   r   rW   )ÚX_1ÚreorderÚX_2Úoptics_1Úoptics_2s        r-   Ú+test_optics_predecessor_correction_orderingr/  H  sw   € ô �(‰(Ò-Ó
.×
6Ñ
6°r¸1Ó
=€CÚ&€GØ
ˆg‰,€Cä !¨KÔ8×<Ñ<¸SÓA€HÜ !¨KÔ8×<Ñ<¸SÓA€Hä�x×'Ñ'¨Ñ0°(×2BÑ2BÕCr/   )Er¥   Únumpyr'   r‡   Úsklearn.clusterr   r   Úsklearn.cluster._opticsr   r   Úsklearn.cluster.tests.commonr   Úsklearn.datasetsr   Úsklearn.exceptionsr	   r
   Úsklearn.metrics.clusterr   Úsklearn.metrics.pairwiser   Úsklearn.utilsr   Úsklearn.utils._testingr   r   Úsklearn.utils.fixesr   rP   rQ   rZ   r[   rR   r\   r]   r^   r_   r`   ra   rS   rb   ÚmarkÚparametrizerX   r.   r4   r<   re   rp   r‚   r‹   r—   r›   r©   r­   r±   r´   rÁ   rÅ   r   rl   rÌ   rÎ   rÔ   r  r  r  r'  r/  )Ú	containers   0r-   ú<module>r>     s  ðó ã Û ç *ß FÝ @Ý 'ß GÝ 6Ý 7Ý !ß FÝ .à‡i�i×Ñ˜AÓ€ØÐ Øˆ"€X��c—i‘iÐ 4°aÓ8Ñ8Ñ8€Øˆ€Wˆs�S—Y‘YÐ3°QÓ7Ñ7Ñ7€Øˆ€Wˆs�S—Y‘YÐ3°QÓ7Ñ7Ñ7€Øˆ!€Wˆs�S—Y‘YÐ3°QÓ7Ñ7Ñ7€Øˆ€Wˆs�S—Y‘YÐ3°QÓ7Ñ7Ñ7€Øˆ€Vˆa�#—)‘)Ð0°!Ó4Ñ4Ñ4€Ø€B‡I�Iˆr�2�r˜2˜r 2Ð&Ó'€ð ‡�×ÑØâ	# QÐ'Ú	(¨!Ð,Ø
ˆc�3˜˜Q  2§6¡6Ð	*¨AÐ.Ø
ˆc�3˜˜Q  2§6¡6Ð	*¨AÐ.ð	óñóðð ‡�×ÑØà
ˆQ��S˜!˜Q  2§6¡6Ð	*¨AÐ.Ø
ˆQ��S˜#˜q ! Q¨¯©Ð	/°Ð3Ø
ˆQ��Q˜Ÿ™Ð	 Ð#Ø
ˆQ��R—V‘VÐ	˜aÐ ð	óñóðð ‡�×ÑØ(â	˜˜A˜  A Ð'ªÐ6Ú	˜˜A˜  A Ð'ªÐ7Ú	˜˜A˜  A ¨¨A¨Ð/²Ð?Ú	˜˜A˜  A ¨¨A¨Ð/²Ð?ð	óñ)óð)ò67òr ð$ ‡�×ÑØØÐÀ~ÖV¸)˜i¨Ò5ÒVÑVóñ6ó	ð6ò8
òò	ò.ò%ò2ò #ð ‡�×Ñ˜¢Ó0Ø‡�×Ñ˜ªÓ4Ø‡�×ÑØØÐ-Ð.Ø1?Ö@ Iˆ	�;ÒÒ@ñAóñ
$óó 5ó 1ð$ò>;ð* ‡�×ÑÐ+©U°1°a·g±g¸a±jÀBÑ6FÈÓ-KÓLñ:ó Mð:ð ‡�×Ñ˜¨.Ó9ñ$ó :ð$ò6òORòdHð ‡�×Ñ˜¨4¨&°>Ñ*AÓBñ7ó Cð7ð ‡�×Ñ˜¨.Ó9ñ6ó :ð6ó(DùòO WùòJ As   É(OË.O	