§
    ØjÅB  ã                   óX  — d Z ddlZddlZddlZddl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mZ dd	lmZ dd
lmZmZ dZ ee¬¦  «        Zd„ Zd„ Zej                             de¦  «        d„ ¦   «         Z ej                             dddg¦  «        d„ ¦   «         Z!d„ Z"ej                             dddg¦  «        ej                             dedgz   ¦  «        d„ ¦   «         ¦   «         Z#ej                             de¦  «        d„ ¦   «         Z$ej                             de¦  «        d„ ¦   «         Z%d„ Z&d„ Z'd„ Z(d „ Z)d!„ Z*d"„ Z+d#„ Z,ej                             d$g d%¢¦  «        d&„ ¦   «         Z-d'„ Z.ej                             de¦  «        d(„ ¦   «         Z/d)„ Z0d*„ Z1d+„ Z2dS ),z'
Tests for DBSCAN clustering algorithm
é    N)Údistance)ÚDBSCANÚdbscan)Úgenerate_clustered_data)ÚEfficiencyWarning)Úpairwise_distances)ÚNearestNeighborsÚkneighbors_graphÚsort_graph_by_row_values)Úassert_array_equal)ÚCSR_CONTAINERSÚLIL_CONTAINERSé   )Ú
n_clustersc                  óð  — d} d}t          j        t          j        t          ¦  «        ¦  «        }|t	          j        |¦  «        z  }t          |d| |¬¦  «        \  }}t          t          |¦  «        ¦  «        d|v rdndz
  }|t          k    sJ ‚t          d| |¬¦  «        }|                     |¦  «        j        }t          t          |¦  «        ¦  «        t          d|v ¦  «        z
  }|t          k    sJ ‚d S )Ng333333Ã?é
   Úprecomputed©ÚmetricÚepsÚmin_sampleséÿÿÿÿé   r   )r   Ú
squareformÚpdistÚXÚnpÚmaxr   ÚlenÚsetr   r   ÚfitÚlabels_Úint)r   r   ÚDÚcore_samplesÚlabelsÚn_clusters_1ÚdbÚn_clusters_2s           ú–/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/sklearn/cluster/tests/test_dbscan.pyÚtest_dbscan_similarityr+      só   € ð €CØ€KåÔ�HœN­1Ñ-Ô-Ñ.Ô.€AØ�Œ�‰Œ�N€Aå!Ø	�- S°kðñ ô Ñ€L�&õ •s˜6‘{”{Ñ#Ô#¨B°&¨L¨L q q¸aÑ@€Là�:Ò%Ð%Ð%Ð%å	�}¨#¸;Ð	GÑ	GÔ	G€BØ�VŠV�A‰YŒYÔ€Få•s˜6‘{”{Ñ#Ô#¥c¨"°¨,Ñ&7Ô&7Ñ7€LØ�:Ò%Ð%Ð%Ð%Ð%Ð%ó    c                  ó–  — d} d}d}t          t          || |¬¦  «        \  }}t          t          |¦  «        ¦  «        t	          d|v ¦  «        z
  }|t
          k    sJ ‚t          || |¬¦  «        }|                     t          ¦  «        j        }t          t          |¦  «        ¦  «        t	          d|v ¦  «        z
  }|t
          k    sJ ‚d S )Nçš™™™™™é?r   Ú	euclideanr   r   )	r   r   r   r    r#   r   r   r!   r"   ©r   r   r   r%   r&   r'   r(   r)   s           r*   Útest_dbscan_featurer1   4   sÈ   € ð €CØ€KØ€Fõ "¥!¨F¸ÈÐUÑUÔUÑ€L�&õ •s˜6‘{”{Ñ#Ô#¥c¨"°¨,Ñ&7Ô&7Ñ7€LØ�:Ò%Ð%Ð%Ð%å	�v 3°KÐ	@Ñ	@Ô	@€BØ�VŠV•A‰YŒYÔ€Få•s˜6‘{”{Ñ#Ô#¥c¨"°¨,Ñ&7Ô&7Ñ7€LØ�:Ò%Ð%Ð%Ð%Ð%Ð%r,   Úlil_containerc                 óÀ   — t           | t          ¦  «        dd¬¦  «        \  }}t          t          dd¬¦  «        \  }}t          ||¦  «         t          ||¦  «         d S )Nr.   r   ©r   r   )r   r   r   )r2   Úcore_sparseÚlabels_sparseÚ
core_denseÚlabels_denses        r*   Útest_dbscan_sparser9   J   sd   € å!'¨¨µaÑ(8Ô(8¸cÈrÐ!RÑ!RÔ!RÑ€K�Ý%¥a¨S¸bÐAÑAÔAÑ€J�Ý�z ;Ñ/Ô/Ð/Ý�| ]Ñ3Ô3Ð3Ð3Ð3r,   Úinclude_selfFTc                 ó¬  — t          t          ¦  «        }t          d¬¦  «                             t          ¦  «        }| rt          nd }|                     |d¬¦  «        }|j        |j        d         |j        d         dz
  z  k     sJ ‚t          |ddd	¬
¦  «        \  }}t          |ddd	¬
¦  «        \  }}t          ||¦  «         t          ||¦  «         d S )NgÍÌÌÌÌÌì?©Úradiusr   )r   Úmoder   r   r.   r   r   ©r   r   r   )	r   r   r	   r!   Úradius_neighbors_graphÚnnzÚshaper   r   )	r:   r$   ÚnnÚX_ÚD_sparser5   r6   r7   r8   s	            r*   Útest_dbscan_sparse_precomputedrF   R   sà   € å�1ÑÔ€AÝ	 Ð	%Ñ	%Ô	%×	)Ò	)­!Ñ	,Ô	,€BØÐ	$�ˆ €BØ×(Ò(¨2°JÐ(Ñ?Ô?€HàŒ<˜!œ' !œ*¨¬°¬
°Q©Ñ7Ò7Ð7Ð7Ð7Ý!'Ø�c r°-ð"ñ "ô "Ñ€K�õ  & a¨S¸bÈÐWÑWÔWÑ€J�Ý�z ;Ñ/Ô/Ð/Ý�| ]Ñ3Ô3Ð3Ð3Ð3r,   c                  óÜ  — d} t          | ¬¦  «                             t          ¦  «        }|                     t          d¬¦  «        }t	          || d¬¦  «        }| dz   }t          |¬¦  «                             t          ¦  «        }|                     t          d¬¦  «        }t	          || d¬¦  «        }t          |d         |d         ¦  «         t          |d	         |d	         ¦  «         d S )
Nçš™™™™™É?r<   r   )r>   r   ©r   r   gffffffæ?r   r   )r	   r!   r   r@   r   r   )Ú	lower_epsrC   rE   Údbscan_lowerÚ
higher_epsÚdbscan_highers         r*   Ú,test_dbscan_sparse_precomputed_different_epsrN   b   sÞ   € ð €IÝ	 Ð	+Ñ	+Ô	+×	/Ò	/µÑ	2Ô	2€BØ×(Ò(­°Ð(Ñ<Ô<€HÝ˜(¨	¸-ÐHÑHÔH€Là˜S‘€JÝ	 Ð	,Ñ	,Ô	,×	0Ò	0µÑ	3Ô	3€BØ×(Ò(­°Ð(Ñ<Ô<€HÝ˜8¨¸=ÐIÑIÔI€Må�| A”¨°aÔ(8Ñ9Ô9Ð9Ý�| A”¨°aÔ(8Ñ9Ô9Ð9Ð9Ð9r,   r   r   Ú	minkowskiÚcsr_containerc                 ód  — t           j                             d¦  «                             dd¦  «        }|� ||¦  «        n|}|                     ¦   «         }t          || ¬¦  «         |�6t          |                     ¦   «         |                     ¦   «         ¦  «         d S t          ||¦  «         d S )Nr   r   ©r   )r   ÚrandomÚRandomStateÚrandÚcopyr   r   Útoarray)r   rP   r   ÚX_copys       r*   Útest_dbscan_input_not_modifiedrY   s   s¦   € õ 	Œ	×Ò˜aÑ Ô ×%Ò% b¨"Ñ-Ô-€AØ)Ð5ˆˆ�aÑÔÐ¸1€AØ�VŠV‰XŒX€FÝ
ˆ1�VÐÑÔÐàÐ Ý˜1Ÿ9š9™;œ;¨¯ªÑ(8Ô(8Ñ9Ô9Ð9Ð9Ð9å˜1˜fÑ%Ô%Ð%Ð%Ð%r,   c                 óê  — t           j                             d¦  «                             dd¦  «        }t          j        |d¦  «          | |¦  «        }t          d„ t          |                     ¦   «         Ž D ¦   «         ¦  «        sJ ‚|                     ¦   «         }t          |d¬¦  «         |j
        |j
        k    sJ ‚t          |                     ¦   «         |                     ¦   «         ¦  «         dS )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  — | ]\  }}||k    V — Œd S ©N© )Ú.0ÚrowÚcols      r*   ú	<genexpr>zKtest_dbscan_input_not_modified_precomputed_sparse_nodiag.<locals>.<genexpr>�   s*   è è € Ð<Ð<™h˜c 3ˆs�cŠzÐ<Ð<Ð<Ð<Ð<Ð<r,   r   rR   N)r   rS   rT   rU   Úfill_diagonalÚallÚzipÚnonzerorV   r   rA   r   rW   )rP   r   rX   s      r*   Ú8test_dbscan_input_not_modified_precomputed_sparse_nodiagrf   ‚   sÜ   € õ 	Œ	×Ò˜aÑ Ô ×%Ò% b¨"Ñ-Ô-€Aõ Ô�Q˜ÑÔÐØˆ�aÑÔ€AÝÐ<Ð<­#¨q¯yªy©{¬{Ð*;Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ø�VŠV‰XŒX€FÝ
ˆ1�]Ð#Ñ#Ô#Ð#ð Œ5�F”JÒÐÐÐÝ�q—y’y‘{”{ F§N¢NÑ$4Ô$4Ñ5Ô5Ð5Ð5Ð5r,   c           	      óž  — t           j                             d¦  «        }|                     dd¦  «        }d||dk     <   | | |¦  «        fD ]€}t	          d¬¦  «                             |¦  «        }t          |j        t          j        d|j	        d         f¦  «        ¦  «         t          |j
        d¦  «         |j        j	        d	k    sJ ‚Œ�d S )
Nr   é(   r   r.   é   )r   r   r   )r   )r   rS   rT   rU   r   r!   r   Úcomponents_ÚemptyrB   r"   Úcore_sample_indices_)rP   Úrngr   rD   r(   s        r*   Útest_dbscan_no_core_samplesrn   ˜   sÐ   € å
Œ)×
Ò
 Ñ
"Ô
"€CØ�Š��RÑÔ€AØ€A€aˆ#‚g�Jà�-�- Ñ"Ô"Ð#ð 5ð 5ˆÝ Ð"Ñ"Ô"×&Ò& rÑ*Ô*ˆÝ˜2œ>­2¬8°Q¸¼À¼Ð4DÑ+EÔ+EÑFÔFÐFÝ˜2œ: rÑ*Ô*Ð*ØÔ&Ô,°Ò4Ð4Ð4Ð4Ð4ð	5ð 5r,   c                  ó®  — d} d}t           j        }t          t          || |d¬¦  «        \  }}t	          t          |¦  «        ¦  «        t          d|v ¦  «        z
  }|t          k    sJ ‚t          || |d¬¦  «        }| 	                    t          ¦  «        j
        }t	          t          |¦  «        ¦  «        t          d|v ¦  «        z
  }|t          k    sJ ‚d S )Nr.   r   Ú	ball_tree©r   r   r   Ú	algorithmr   )r   r/   r   r   r   r    r#   r   r   r!   r"   r0   s           r*   Útest_dbscan_callablers   ¥   sÖ   € ð €CØ€KåÔ€Fõ "Ý	�&˜c¨{Àkðñ ô Ñ€L�&õ
 •s˜6‘{”{Ñ#Ô#¥c¨"°¨,Ñ&7Ô&7Ñ7€LØ�:Ò%Ð%Ð%Ð%å	�v 3°KÈ;Ð	WÑ	WÔ	W€BØ�VŠV•A‰YŒYÔ€Få•s˜6‘{”{Ñ#Ô#¥c¨"°¨,Ñ&7Ô&7Ñ7€LØ�:Ò%Ð%Ð%Ð%Ð%Ð%r,   c            	      ó   — d} d}d}t          j        d¬¦  «        5 }t          dd|i| d |d¬	¦  «                             t          ¦  «        }d d d ¦  «         n# 1 swxY w Y   |rJ |d
         j        ¦   «         ‚|j        |j        }}t          d| |d|¬¦  «                             t          ¦  «        }|j        |j        }}t          ||¦  «         t          ||¦  «         t          d| |d¬¦  «                             t          ¦  «        }|j        |j        }
}	t          ||	¦  «         t          ||
¦  «         t          j
        t          d¬¦  «        5  t          dd|i| |dz   |d¬	¦  «                             t          ¦  «        }|j        |j        }}d d d ¦  «         n# 1 swxY w Y   t          ||¦  «         t          ||¦  «         d S )Nr.   r   r   T)ÚrecordrO   Úprp   )r   Úmetric_paramsr   rv   r   rr   r   )r   r   r   rr   rv   Ú	manhattanrq   z\Parameter p is found in metric_params. The corresponding parameter from __init__ is ignored.)Úmatch)ÚwarningsÚcatch_warningsr   r!   r   Úmessagerl   r"   r   ÚpytestÚwarnsÚSyntaxWarning)r   r   rv   r~   r(   Úcore_sample_1Úlabels_1Úcore_sample_2Úlabels_2Úcore_sample_3Úlabels_3Úcore_sample_4Úlabels_4s                r*   Útest_dbscan_metric_paramsrˆ   ¾   s—  € à
€CØ€KØ	€Aõ 
Ô	 ¨Ð	-Ñ	-Ô	-ð °ÝØØ ˜(ØØØ#Ø!ð
ñ 
ô 
÷ Š#�a‰&Œ&ð 	ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð Ð&Ð&�e˜A”hÔ&Ñ&Ô&ˆ9Ø Ô5°r´z�8€Mõ 
Ø °ÈÐWXð
ñ 
ô 
ç	‚c�!�f„fð ð !Ô5°r´z�8€Må�} mÑ4Ô4Ð4Ý�x Ñ*Ô*Ð*õ 
Ø °Èð
ñ 
ô 
ç	‚c�!�f„fð ð !Ô5°r´z�8€Må�} mÑ4Ô4Ð4Ý�x Ñ*Ô*Ð*å	ŒÝðð
ñ 
ô 
ð Fð Fõ ØØ ˜(ØØ�!‰eØ#Ø!ð
ñ 
ô 
÷ Š#�a‰&Œ&ð 	ð #%Ô"9¸2¼:�xˆð#Fð Fð Fñ Fô Fð Fð Fð Fð Fð Fð Føøøð Fð Fð Fð Fõ& �} mÑ4Ô4Ð4Ý�x Ñ*Ô*Ð*Ð*Ð*s$   œ0AÁAÁAÅAF#Æ#F'Æ*F'c                  ó@  — d} d}t          t          ¦  «        }t          |d| |¬¦  «        \  }}t          t	          |¦  «        ¦  «        t          d|v ¦  «        z
  }|t          k    sJ ‚t          d| |d¬¦  «        }|                     t          ¦  «        j	        }t          t	          |¦  «        ¦  «        t          d|v ¦  «        z
  }|t          k    sJ ‚t          d| |d	¬¦  «        }|                     t          ¦  «        j	        }t          t	          |¦  «        ¦  «        t          d|v ¦  «        z
  }|t          k    sJ ‚t          d
| |d¬¦  «        }|                     t          ¦  «        j	        }t          t	          |¦  «        ¦  «        t          d|v ¦  «        z
  }	|	t          k    sJ ‚t          d| |d¬¦  «        }|                     t          ¦  «        j	        }t          t	          |¦  «        ¦  «        t          d|v ¦  «        z
  }
|
t          k    sJ ‚d S )Nr.   r   r   r   r   ç       @rp   )rv   r   r   rr   Úkd_treeç      ð?é   )Ú	leaf_sizer   r   rr   )
r   r   r   r   r    r#   r   r   r!   r"   )r   r   r$   r%   r&   r'   r(   r)   Ún_clusters_3Ún_clusters_4Ún_clusters_5s              r*   Útest_dbscan_balltreer’   û   sì  € à
€CØ€Kå�1ÑÔ€AÝ!Ø	�- S°kðñ ô Ñ€L�&õ
 •s˜6‘{”{Ñ#Ô#¥c¨"°¨,Ñ&7Ô&7Ñ7€LØ�:Ò%Ð%Ð%Ð%å	�#˜3¨KÀ;Ð	OÑ	OÔ	O€BØ�VŠV•A‰YŒYÔ€Få•s˜6‘{”{Ñ#Ô#¥c¨"°¨,Ñ&7Ô&7Ñ7€LØ�:Ò%Ð%Ð%Ð%å	�#˜3¨KÀ9Ð	MÑ	MÔ	M€BØ�VŠV•A‰YŒYÔ€Få•s˜6‘{”{Ñ#Ô#¥c¨"°¨,Ñ&7Ô&7Ñ7€LØ�:Ò%Ð%Ð%Ð%å	�#˜3¨KÀ;Ð	OÑ	OÔ	O€BØ�VŠV•A‰YŒYÔ€Få•s˜6‘{”{Ñ#Ô#¥c¨"°¨,Ñ&7Ô&7Ñ7€LØ�:Ò%Ð%Ð%Ð%å	˜" #°;È+Ð	VÑ	VÔ	V€BØ�VŠV•A‰YŒYÔ€Få•s˜6‘{”{Ñ#Ô#¥c¨"°¨,Ñ&7Ô&7Ñ7€LØ�:Ò%Ð%Ð%Ð%Ð%Ð%r,   c                  óX   — ddgddgg} t          ¦   «                              | ¦  «         d S )NrŒ   rŠ   g      @g      @)r   r!   )r   s    r*   Útest_input_validationr”   "  s+   € à
ˆsˆ�c˜3�ZÐ €AÝ
�H„H‡L‚L��O„O€O€O€Or,   c                  óž   — t          ¦   «         } t          j        | ¦  «        }t          t          j        |¦  «        ¦  «        | j        u sJ ‚d S r\   )r   ÚpickleÚdumpsÚtypeÚloadsÚ	__class__)ÚobjÚss     r*   Útest_pickler�   (  sC   € Ý
‰(Œ(€CÝŒ�SÑÔ€AÝ•”˜Q‘”Ñ Ô  C¤MÐ1Ð1Ð1Ð1Ð1Ð1r,   c                  óÈ   — t          dgdggdd¬¦  «        \  } }d| v sJ ‚t          dgdgdggdd¬¦  «        \  } }d| v sJ ‚t          dgdgdggdd¬¦  «        \  } }d| vsJ ‚d S )Nr   r   é   r4   g®Gáz®ï?)r   )ÚcoreÚ_s     r*   Útest_boundariesr¢   .  s•   € å�q�c˜A˜3�Z Q°AÐ6Ñ6Ô6�G€Dˆ!Ø�ˆ9ˆ9ˆ9ˆ9å�q�c˜A˜3  �_¨!¸Ð;Ñ;Ô;�G€Dˆ!Ø�ˆ9ˆ9ˆ9ˆ9Ý�q�c˜A˜3  �_¨$¸AÐ>Ñ>Ô>�G€Dˆ!Ø�Dˆ=ˆ=ˆ=ˆ=ˆ=ˆ=r,   c           	      óÂ  — t          j        t          ¦  «        5  t          dgdggdg¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  t          dgdggg d¢¬¦  «         d d d ¦  «         n# 1 swxY w Y   t	          g t          dgdggd d¬¦  «        d         ¦  «         t	          g t          dgdggddgd¬¦  «        d         ¦  «         t	          dgt          dgdggddgd¬¦  «        d         ¦  «         t	          ddgt          dgdggddgd¬¦  «        d         ¦  «         t	          ddgt          dgdggd	ddgd¬
¦  «        d         ¦  «         t	          g t          dgdggddgd	d¬¦  «        d         ¦  «         t	          ddgt          dgdggddgd	d¬¦  «        d         ¦  «         t	          ddgt          dgdggddgd	d¬¦  «        d         ¦  «         t	          g t          dgdggddgd	d¬¦  «        d         ¦  «         t
          j                             | ¦  «        }|                     ddt          j
        d         ¦  «        }t          t          |¬¦  «        \  }}t          |¦  «        t          t          ¦  «        k    sJ ‚t          j        t          |d¬¦  «        }t          |¦  «        \  }}t          j        |j
        d         t          ¬¦  «        }d||<   t          j        t          j
        d         t          ¬¦  «        }	d|	|<   t	          t          j        |	|¦  «        |¦  «         t          t          ¦  «        }
t          |
|d¬¦  «        \  }}t	          ||¦  «         t	          ||¦  «         t!          ¦   «                              t          |¬¦  «        }|j        }|j        }t	          ||¦  «         t	          ||¦  «         t!          ¦   «         }|                     t          |¬¦  «        }|j        }t	          ||¦  «         t	          ||¦  «         t	          ||j        ¦  «         d S )Nr   r   rŸ   )Úsample_weight)rŸ   r   é   ri   )r¤   r   é   g      ø?)r   r¤   r   )r¤   r   r   gš™™™™™@çš™™™™™¹?r   )Úaxis)ÚdtypeTr   )r¤   r   )r}   ÚraisesÚ
ValueErrorr   r   r   rS   rT   Úrandintr   rB   r   ÚrepeatÚzerosÚboolr   r   r!   rl   r"   Úfit_predict)Úglobal_random_seedrm   r¤   Úcore1Úlabel1Ú
X_repeatedÚcore_repeatedÚlabel_repeatedÚcore_repeated_maskÚ	core_maskr$   Úcore3Úlabel3ÚestÚcore4Úlabel4Úlabel5Úcore5s                     r*   Útest_weighted_dbscanrÀ   9  sõ  € å	Œ•zÑ	"Ô	"ð .ð .Ý���a�Sˆz¨!¨Ð-Ñ-Ô-Ð-ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .å	Œ•zÑ	"Ô	"ð 4ð 4Ý���a�Sˆz¨¨¨Ð3Ñ3Ô3Ð3ð4ð 4ð 4ñ 4ô 4ð 4ð 4ð 4ð 4ð 4ð 4øøøð 4ð 4ð 4ð 4õ �r�6 A 3¨¨ *¸DÈaÐPÑPÔPÐQRÔSÑTÔTÐTÝ�r�6 A 3¨¨ *¸QÀ¸FÐPQÐRÑRÔRÐSTÔUÑVÔVÐVÝ˜�s�F Q C¨!¨ :¸aÀ¸VÐQRÐSÑSÔSÐTUÔVÑWÔWÐWÝØ	
ˆAˆ•˜˜˜a˜S�z°!°Q°ÀQÐGÑGÔGÈÔJñô ð õ
 Ø	
ˆAˆ•˜˜˜a˜S�z s¸1¸a¸&ÈaÐPÑPÔPÐQRÔSñô ð õ Ø
�F�Q�C˜!˜�:¨a°¨V¸È!ÐLÑLÔLÈQÔOñô ð õ Ø	
ˆAˆ•˜˜˜a˜S�z°#°s°ÀÐRSÐTÑTÔTÐUVÔWñô ð õ Ø	
ˆAˆ•˜˜˜a˜S�z°!°Q°¸SÈaÐPÑPÔPÐQRÔSñô ð õ Ø
�F�Q�C˜!˜�:¨a°¨W¸#È1ÐMÑMÔMÈaÔPñô ð õ
 Œ)×
Ò
Ð 2Ñ
3Ô
3€CØ—K’K  1¥a¤g¨a¤jÑ1Ô1€MÝ�1¨MÐ:Ñ:Ô:�M€Eˆ6Ýˆv‰;Œ;�#�a™&œ&Ò Ð Ð Ð å”�1˜m°!Ð4Ñ4Ô4€JÝ$*¨:Ñ$6Ô$6Ñ!€M�>Ýœ *Ô"2°1Ô"5½TÐBÑBÔBÐØ(,Ð�}Ñ%Ý”�œ œ­4Ð0Ñ0Ô0€IØ€IˆeÑÝ•r”y ¨MÑ:Ô:Ð<NÑOÔOÐOõ 	�1ÑÔ€AÝ˜1¨MÀ-ÐPÑPÔP�M€Eˆ6Ý�u˜eÑ$Ô$Ð$Ý�v˜vÑ&Ô&Ð&õ ‰(Œ(�,Š,•q¨ˆ,Ñ
6Ô
6€CØÔ$€EØŒ[€FÝ�u˜eÑ$Ô$Ð$Ý�v˜vÑ&Ô&Ð&å
‰(Œ(€CØ�_Š_�Q¨mˆ_Ñ<Ô<€FØÔ$€EÝ�u˜eÑ$Ô$Ð$Ý�v˜vÑ&Ô&Ð&Ý�v˜sœ{Ñ+Ô+Ð+Ð+Ð+s!   š=½AÁAÁ!BÂB	ÂB	rr   )Úbruter‹   rp   c                 óP  — dgdgdgdgdgdgdgg}t          |¦  «        }t          || dd¬	¦  «        \  }}t          |t          j        |¦  «        ¦  «         t          |g d
¢¦  «         t          || dd¬	¦  «        \  }}t          |g d¢¦  «         t          |g d¢¦  «         t          || dd¬	¦  «        \  }}t          |dg¦  «         t          |g d¢¦  «         t          || dd¬	¦  «        \  }}t          |g ¦  «         t          |t          j        |d¦  «        ¦  «         d S )Nr   rŸ   r   r¥   ri   é   r   r   )rr   r   r   )r   r   r   r   rŸ   r   r¥   )r   rŸ   r   )r   r   r   r   r   r   r   g      ð¿)r   r   r   r   ÚarangeÚfull)rr   r   Ú	n_samplesr%   r&   s        r*   Útest_dbscan_core_samples_toyrÇ   }  sZ  € à
ˆˆqˆc�A�3˜˜˜a˜S 1 #¨ tÐ,€AÝ�A‘”€Iõ " !¨y¸aÈQÐOÑOÔOÑ€L�&Ý�|¥R¤Y¨yÑ%9Ô%9Ñ:Ô:Ð:Ý�vÐ4Ð4Ð4Ñ5Ô5Ð5õ " !¨y¸aÈQÐOÑOÔOÑ€L�&Ý�| Y Y YÑ/Ô/Ð/Ý�vÐ8Ð8Ð8Ñ9Ô9Ð9õ " !¨y¸aÈQÐOÑOÔOÑ€L�&Ý�| a SÑ)Ô)Ð)Ý�vÐ8Ð8Ð8Ñ9Ô9Ð9õ " !¨y¸aÈQÐOÑOÔOÑ€L�&Ý�| RÑ(Ô(Ð(Ý�v�rœw y°$Ñ7Ô7Ñ8Ô8Ð8Ð8Ð8r,   c                  ó‚  — t          j        d¦  «        } t          dd¬¦  «                             | ¦  «        j        }t          t          |¦  «        ¦  «        dk    sJ ‚t          j        d¦  «        } t          dd¬¦  «                             | ¦  «        j        }t          t          |¦  «        ¦  «        dk    sJ ‚d S )Nr   ç      à?r   rI   r   )r   r   )r   Úeyer   r!   r"   r   r    r®   )r   r&   s     r*   Ú;test_dbscan_precomputed_metric_with_degenerate_input_arraysrË   ›  sª   € õ 	Œˆr‰
Œ
€AÝ˜ MÐ2Ñ2Ô2×6Ò6°qÑ9Ô9ÔA€FÝ�s�6‰{Œ{ÑÔ˜qÒ Ð Ð Ð å
Œ�ÑÔ€AÝ˜ MÐ2Ñ2Ô2×6Ò6°qÑ9Ô9ÔA€FÝ�s�6‰{Œ{ÑÔ˜qÒ Ð Ð Ð Ð Ð r,   c           
      óæ   — t          j        g d¢g d¢g d¢g d¢g d¢g d¢g d¢g¦  «        } | |¦  «        }t          ddd¬	¦  «                             |¦  «        j        }t          |g d
¢¦  «         d S )N)ç        rÍ   rÍ   rÍ   rÍ   rÍ   rÍ   )rÍ   rÍ   rÍ   rÍ   r§   rÍ   rÍ   )rÍ   rÍ   r§   r§   rÍ   rÍ   ç333333Ó?)rÍ   rÍ   rÍ   rÍ   rÍ   rÍ   r§   )rÍ   rÍ   rÍ   rÍ   rÎ   r§   rÍ   rH   r   rŸ   )r   r   r   )r   r   r   r   r   r   r   )r   Úarrayr   r!   r"   r   )rP   ÚarÚmatrixr&   s       r*   Ú5test_dbscan_precomputed_metric_with_initial_rows_zerorÒ   §  s¬   € õ 
Œà/Ð/Ð/Ø/Ð/Ð/Ø/Ð/Ð/Ø/Ð/Ð/Ø/Ð/Ð/Ø/Ð/Ð/Ø/Ð/Ð/ð	
ñ

ô 

€Bð ˆ]˜2ÑÔ€FÝ˜ M¸qÐAÑAÔA×EÒEÀfÑMÔMÔU€FÝ�vÐ6Ð6Ð6Ñ7Ô7Ð7Ð7Ð7r,   c                 ó*  — |                       ¦   «         } t          | j        d         ¦  «        D ]c}| j        |         | j        |dz            }}| j        ||…         d d d…         | j        ||…<   | j        ||…         d d d…         | j        ||…<   Œd| S )Nr   r   r   )rV   ÚrangerB   ÚindptrÚdataÚindices)ÚgraphÚiÚstartÚends       r*   Ú_reverse_row_orderrÜ   º  sœ   € à�JŠJ‰LŒL€EÝ�5”;˜q”>Ñ"Ô"ð Bð BˆØ”\ !”_ e¤l°1°q±5Ô&9ˆsˆØ %¤
¨5°¨9Ô 5°d°d¸°dÔ ;ˆŒ
�5˜�9ÑØ#(¤=°°s°Ô#;¸D¸D¸b¸DÔ#AˆŒ�e˜C�iÑ Ð Ø€Lr,   c                  ó\  — t           j                             d¦  «                             dd¦  «        } t	          t          | dd¬¦  «        ¦  «        }t          j        ¦   «         5  t          j        dt          ¦  «         t          |dd	d
¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   éÈ   r   é   r   ©Ún_neighborsr>   ÚerrorrÉ   r¦   r   r?   )r   rS   rT   ÚrandnrÜ   r
   rz   r{   Úsimplefilterr   r   )r   rØ   s     r*   Ú+test_dbscan_no_warning_unsorted_precomputedrå   Ä  sö   € å
Œ	×Ò˜aÑ Ô ×&Ò& s¨BÑ/Ô/€AÝÕ/°¸rÈ
ÐSÑSÔSÑTÔT€EÝ	Ô	 Ñ	"Ô	"ð Dð DÝÔ˜gÕ'8Ñ9Ô9Ð9Ýˆu˜#¨1°]ÐCÑCÔCÐCðDð Dð Dñ Dô Dð Dð Dð Dð Dð Dð Dð Døøøð Dð Dð Dð Dð Dð Ds   Á&.B!Â!B%Â(B%c                  ó¢  — t           j                             d¦  «                             dd¦  «        } t	          t          | dd¬¦  «        ¦  «        }t          |                     ¦   «         d¬¦  «        }t          j	        ¦   «         5  t          j
        d	t          ¦  «         t          |d
dd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   rÞ   r   rß   r   rà   F)Úwarn_when_not_sortedrâ   rÉ   r¦   r   r?   )r   rS   rT   rã   rÜ   r
   r   rV   rz   r{   rä   r   r   )r   rØ   Úsorted_graphs      r*   Ú,test_dbscan_no_warning_presorted_precomputedré   Í  s  € å
Œ	×Ò˜aÑ Ô ×&Ò& s¨BÑ/Ô/€AÝÕ/°¸rÈ
ÐSÑSÔSÑTÔT€EÝ+¨E¯JªJ©L¬LÈuÐUÑUÔU€LÝ	Ô	 Ñ	"Ô	"ð Kð KÝÔ˜gÕ'8Ñ9Ô9Ð9Ýˆ| °!¸MÐJÑJÔJÐJðKð Kð Kñ Kô Kð Kð Kð Kð Kð Kð Kð Køøøð Kð Kð Kð Kð Kð Ks   Â	.CÃCÃC)3Ú__doc__r–   rz   Únumpyr   r}   Úscipy.spatialr   Úsklearn.clusterr   r   Úsklearn.cluster.tests.commonr   Úsklearn.exceptionsr   Úsklearn.metrics.pairwiser   Úsklearn.neighborsr	   r
   r   Úsklearn.utils._testingr   Úsklearn.utils.fixesr   r   r   r   r+   r1   ÚmarkÚparametrizer9   rF   rN   rY   rf   rn   rs   rˆ   r’   r”   r�   r¢   rÀ   rÇ   rË   rÒ   rÜ   rå   ré   r]   r,   r*   ú<module>rö      sq  ððð ð €€€Ø €€€à Ð Ð Ð Ø €€€Ø "Ð "Ð "Ð "Ð "Ð "à *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø @Ð @Ð @Ð @Ð @Ð @Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7ðð ð ð ð ð ð ð ð ð ð
 6Ð 5Ð 5Ð 5Ð 5Ð 5Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >à€
ØÐ zÐ2Ñ2Ô2€ð&ð &ð &ð0&ð &ð &ð, „×Ò˜¨.Ñ9Ô9ð4ð 4ñ :Ô9ð4ð „×Ò˜¨%°¨Ñ7Ô7ð4ð 4ñ 8Ô7ð4ð:ð :ð :ð" „×Ò˜ M°;Ð#?Ñ@Ô@Ø„×Ò˜¨.¸D¸6Ñ*AÑBÔBð
&ð 
&ñ CÔBñ AÔ@ð
&ð „×Ò˜¨.Ñ9Ô9ð6ð 6ñ :Ô9ð6ð* „×Ò˜¨.Ñ9Ô9ð	5ð 	5ñ :Ô9ð	5ð&ð &ð &ð2:+ð :+ð :+ðz$&ð $&ð $&ðNð ð ð2ð 2ð 2ðð ð ðA,ð A,ð A,ðH „×Ò˜Ð&GÐ&GÐ&GÑHÔHð9ð 9ñ IÔHð9ð:	!ð 	!ð 	!ð „×Ò˜¨.Ñ9Ô9ð8ð 8ñ :Ô9ð8ð$ð ð ðDð Dð DðKð Kð Kð Kð Kr,   