Ë
    ÷Q(h¦#  ã            	       óJ  — d 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
mZ ddlmZmZm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mZmZ ddlmZ  G d„ dee«      Zej>                  jA                  de«      d„ «       Z!d„ Z"ej>                  jA                  de«      d„ «       Z#ej>                  jA                  de«      d„ «       Z$d„ Z%d„ Z&ej>                  jA                  de«      d„ «       Z'ej>                  jA                  de«      d„ «       Z(d„ Z)d„ Z*ej>                  jA                  de«      d„ «       Z+d„ Z,ej>                  jA                  dddie-dfddie-d fdd!ie-d fd"d#d$œe-d%fg«      d&„ «       Z.ej>                  jA                  d' e
«        e«       f«      d(„ «       Z/y))z)Testing for Spectral Biclustering methodsé    N)Úissparse)ÚBaseEstimatorÚBiclusterMixin)ÚSpectralBiclusteringÚSpectralCoclustering)Ú_bistochastic_normalizeÚ_log_normalizeÚ_scale_normalize)Úmake_biclustersÚmake_checkerboard)Úconsensus_scoreÚv_measure_score)ÚParameterGrid)Úassert_almost_equalÚassert_array_almost_equalÚassert_array_equal)ÚCSR_CONTAINERSc                   ó   — e Zd Zd„ Zd„ Zy)ÚMockBiclusteringc                  ó   — y ©N© )Úselfs    úb/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/cluster/tests/test_bicluster.pyÚ__init__zMockBiclustering.__init__   s   € Øó    c                 ój   — t        j                  g d¢«      d   t        j                  g d¢«      d   fS )N)TTFFTr   )FFTT)ÚnpÚwhere)r   Úis     r   Úget_indiceszMockBiclustering.get_indices   s2   € ô �H‰HÒ5Ó6°qÑ9Ü�H‰HÒ/Ó0°Ñ3ð
ð 	
r   N)Ú__name__Ú
__module__Ú__qualname__r   r!   r   r   r   r   r      s   „ òó
r   r   Úcsr_containerc                 ó–  — t        j                  d«      j                  dd«      }t        «       }| | |«      |j	                  «       fD ]~  }|j                  d|«      }t        |«      r|j                  «       }t        |ddgddgd	d
gg«       d|d d  t        |«      r|j                  «       }t        j                  |dk7  «      rŒ~J ‚ y )Né   é   é   r   é   é   é   é   é   é   éÿÿÿÿ)
r   ÚarangeÚreshaper   ÚtolistÚget_submatrixr   Útoarrayr   Úall)r%   ÚdataÚmodelÚXÚ	submatrixs        r   Útest_get_submatrixr;   &   s¹   € ä�9‰9�R‹=× Ñ   AÓ&€DÜÓ€Eà‘M $Ó'¨¯©«Ð7ò ˆØ×'Ñ'¨¨1Ó-ˆ	Ü�IÔØ!×)Ñ)Ó+ˆIÜ˜9¨¨1 v°°1¨v¸¸B°xÐ&@ÔAØˆ	‘!ˆÜ�AŒ;Ø—	‘	“ˆAÜ�v‰v�a˜2‘g�Ðˆñr   c                 óÈ   — t        | j                  «      D ]J  }| j                  |«      \  }}| j                  |«      \  }}t	        |«      |k(  sJ ‚t	        |«      |k(  rŒJJ ‚ y r   )ÚrangeÚ
n_clustersÚ	get_shaper!   Úlen)r8   r    ÚmÚnÚi_indÚj_inds         r   Ú_test_shape_indicesrE   6   sb   € ä�5×#Ñ#Ó$ò ˆØ�‰˜qÓ!‰ˆˆ1Ø×(Ñ(¨Ó+‰ˆˆuÜ�5‹z˜QŠÐˆÜ�5‹z˜Q‹Ðˆñ	r   c                 óŠ  — ddgd dgddgdgdgdœ}t        d	d
d| ¬«      \  }}}||j                  «       z  }t        j                  |dk  d|«      }| ||«      fD ]æ  }t	        |«      D ]Ö  }t        dd
| dœ|¤Ž}|j                  |«       |j                  j                  dk(  sJ ‚t        |j                  j                  d¬«      t        j                  d«      «       t        |j                  j                  d¬«      t        j                  d«      «       t        |j                  ||f«      dk(  sJ ‚t        |«       ŒØ Œè y )NÚ
randomizedÚarpackr'   FTú	k-means++é
   )Ú
svd_methodÚ
n_svd_vecsÚ
mini_batchÚinitÚn_init©é   rQ   r+   gš™™™™™¹?©ÚnoiseÚrandom_stateé   r   )r>   rT   )r+   rQ   ©ÚaxisrQ   r   )r   Úminr   r   r   r   ÚfitÚrows_Úshaper   ÚsumÚonesÚcolumns_r   Úbiclusters_rE   )	Úglobal_random_seedr%   Ú
param_gridÚSÚrowsÚcolsÚmatÚkwargsr8   s	            r   Útest_spectral_coclusteringrg   ?   sI  € ð $ XÐ.Ø˜R�jØ˜d�mØ�Ø�$ñ€Jô $Ø�!˜3Ð-?ô�M€A€tˆTð ˆ�‰‹�L€AÜ
�‰��Q‘˜˜1Ó€AØ‘= Ó#Ð$ò 'ˆÜ# JÓ/ò 	'ˆFÜ(ð ØÐ+=ñØAGñˆEð �I‰I�cŒNà—;‘;×$Ñ$¨Ò/Ð/Ð/Ü˜uŸ{™{Ÿ™°A˜Ó6¼¿¹À»ÔDÜ˜uŸ~™~×1Ñ1°qÐ1Ó9¼2¿7¹7À2»;ÔGÜ" 5×#4Ñ#4°t¸T°lÓCÀqÒHÐHÐHä Õ&ñ	'ñ'r   c                 ó¤  — t        ddd| ¬«      \  }}}ddgdgdgd	gd
œ}| ||«      fD �]—  }|j                  «       D �]€  \  }}|D �]t  }	t        ddd| ¬«      }
 |
j                  di t	        ||	fg«      ¤Ž t        |«      rV|
j                  «       j                  d«      dk(  r4t        j                  t        «      5  |
j                  |«       d d d «       Œ’|
j                  |«       |
j                  j                  dk(  sJ ‚|
j                  j                  dk(  sJ ‚t        |
j                  j!                  d¬«      t#        j$                  dd«      «       t        |
j                  j!                  d¬«      t#        j$                  dd«      «       t'        |
j(                  ||f«      dk(  sJ ‚t+        |
«       �Œw �Œƒ �Œš y # 1 sw Y   Œ÷xY w)NrP   r+   g      à?rR   ÚscaleÚlogrH   r'   T)ÚmethodrK   rL   rM   rI   )r>   rO   rN   rT   rk   )é	   rQ   r   rV   rQ   rU   r   )r   Úitemsr   Ú
set_paramsÚdictr   Ú
get_paramsÚgetÚpytestÚraisesÚ
ValueErrorrY   rZ   r[   r^   r   r\   r   Úrepeatr   r_   rE   )r`   r%   rb   rc   rd   Únon_default_paramsre   Ú
param_nameÚparam_valuesÚparam_valuer8   s              r   Útest_spectral_biclusteringrz   ]   s¼  € ô &Ø�!˜3Ð-?ô�M€A€tˆTð
 ˜EÐ"Ø�jØ�dØ�fñ	Ðð ‘= Ó#Ð$ó +ˆØ(:×(@Ñ(@Ó(Bó 	+Ñ$ˆJ˜Ø+ó +�Ü,Ø ØØ$Ø!3ô	�ð !�× Ñ ÑE¤4¨*°kÐ)BÐ(CÓ#DÒEä˜C”= U×%5Ñ%5Ó%7×%;Ñ%;¸HÓ%EÈÒ%NäŸ™¤zÓ2ñ 'ØŸ	™	 #œ÷'àà—I‘I˜c”Nà—{‘{×(Ñ(¨GÒ3Ð3Ð3Ø—~‘~×+Ñ+¨wÒ6Ð6Ð6Ü" 5§;¡;§?¡?¸ ?Ó#:¼B¿I¹IÀaÈÓ<LÔMÜ" 5§>¡>×#5Ñ#5¸1Ð#5Ó#=¼r¿y¹yÈÈBÓ?OÔPÜ& u×'8Ñ'8¸4À¸,ÓGÈ1ÒLÐLÐLä# EÖ*ò/+ò	+ñ+÷'ð 'ús   Â>G	ÇGc                 ó®  — | j                  d¬«      }| j                  d¬«      }t        | «      rFt        j                  |«      j	                  «       }t        j                  |«      j	                  «       }t        |t        j                  |j                  «       d«      d¬«       t        |t        j                  |j                  «       d«      d¬«       y)z<Check that rows sum to one constant, and columns to another.rU   rV   r   éd   ©ÚdecimalN)r\   r   r   ÚasarrayÚsqueezer   ÚtileÚmean)ÚscaledÚrow_sumÚcol_sums      r   Ú_do_scale_testr†   ‡   s’   € à�j‰j˜aˆjÓ €GØ�j‰j˜aˆjÓ €GÜ�ÔÜ—*‘*˜WÓ%×-Ñ-Ó/ˆÜ—*‘*˜WÓ%×-Ñ-Ó/ˆÜ˜g¤r§w¡w¨w¯|©|«~¸sÓ'CÈQÕOÜ˜g¤r§w¡w¨w¯|©|«~¸sÓ'CÈQÖOr   c                 ó®   — t        | «       t        | j                  d¬«      j                  «       | j                  d¬«      j                  «       d¬«       y)z5Check that rows and columns sum to the same constant.r   rV   rU   r}   N)r†   r   r\   r‚   )rƒ   s    r   Ú_do_bistochastic_testrˆ   ’   s?   € ä�6ÔÜ˜Ÿ
™
¨˜
Ó*×/Ñ/Ó1°6·:±:À1°:Ó3E×3JÑ3JÓ3LÐVWÖXr   c                 óê   — t         j                  j                  | «      }|j                  dd«      }| ||«      fD ]5  }t	        |«      \  }}}t        |«       t        |«      sŒ)t        |«      rŒ5J ‚ y ©Nr|   )r   ÚrandomÚRandomStateÚrandr
   r†   r   )r`   r%   Ú	generatorr9   re   rƒ   Ú_s          r   Útest_scale_normalizer�   ˜   sm   € ä—	‘	×%Ñ%Ð&8Ó9€IØ�‰�s˜CÓ €AØ‘= Ó#Ð$ò $ˆÜ'¨Ó,‰ˆ��1Ü�vÔÜ�C�=Ü˜FÕ#Ð#Ð#ñ	$r   c                 óâ   — t         j                  j                  | «      }|j                  dd«      }| ||«      fD ]1  }t	        |«      }t        |«       t        |«      sŒ%t        |«      rŒ1J ‚ y rŠ   )r   r‹   rŒ   r�   r   rˆ   r   )r`   r%   rŽ   r9   re   rƒ   s         r   Útest_bistochastic_normalizer’   £   sg   € ä—	‘	×%Ñ%Ð&8Ó9€IØ�‰�s˜CÓ €AØ‘= Ó#Ð$ò $ˆÜ(¨Ó-ˆÜ˜fÔ%Ü�C�=Ü˜FÕ#Ð#Ð#ñ	$r   c                 ó˜   — t         j                  j                  | «      }|j                  dd«      }t	        |«      dz   }t        |«       y )Nr|   rU   )r   r‹   rŒ   r�   r	   rˆ   )r`   rŽ   re   rƒ   s       r   Útest_log_normalizer”   ®   s@   € ô —	‘	×%Ñ%Ð&8Ó9€IØ
�.‰.˜˜cÓ
"€CÜ˜CÓ  1Ñ$€FÜ˜&Õ!r   c                 óž   — t        | ¬«      }t        j                  g d¢g d¢g d¢g«      }|j                  |dd¬«      }t	        ||d d «       y )N©rT   )r   r   r   rU   rU   rU   )r*   r*   r*   r+   r+   r+   )r   rU   r*   r+   r)   r(   r*   )Ún_bestr>   )r   r   ÚarrayÚ_fit_best_piecewiser   )r`   r8   ÚvectorsÚbests       r   Útest_fit_best_piecewiserœ   ·   sL   € Ü Ð.@ÔA€EÜ�h‰hÒ*Ò,>Ò@RÐSÓT€GØ×$Ñ$ W°QÀ1Ð$ÓE€DÜ�t˜W R a˜[Õ)r   c                 ó  — t        | ¬«      }t        j                  g d¢g d¢g d¢g d¢g«      }t        j                  ddgddgddgg«      }| ||«      fD ].  }|j                  ||d¬«      }t	        t        |g d¢«      d	«       Œ0 y )
Nr–   )rU   rU   rU   )r+   r,   r+   rU   r   r*   )r>   )r   r   rU   rU   g      ð?)r   r   r˜   Ú_project_and_clusterr   r   )r`   r%   r8   r7   rš   re   Úlabelss          r   Útest_project_and_clusterr    ¾   sˆ   € ä Ð.@ÔA€EÜ�8‰8’Y¢	ª9²iÐ@ÓA€DÜ�h‰h˜˜A˜  A ¨¨A¨Ð/Ó0€GØ‘m DÓ)Ð*ò HˆØ×+Ñ+¨C°ÀQÐ+ÓGˆÜœO¨F²LÓAÀ3ÕGñHr   c                 ó¦  — t        dd| ¬«      }t        ddd| ¬«      \  }}}|j                  |«       t        |j                  ||f«      dk(  sJ ‚t        ddd| ¬«      \  }}}|j                  |«       t        |j                  ||f«      dk(  sJ ‚t        d	dd| ¬«      \  }}}|j                  |«       t        |j                  ||f«      dk(  sJ ‚y )
Nr+   rH   )rK   rT   rP   r   rR   rU   )é(   rQ   )rQ   r¢   )r   r   rY   r   r_   )r`   r8   rb   rc   rd   s        r   Útest_perfect_checkerboardr£   È   sè   € ä Ø	�hÐ-?ô€Eô &Ø�!˜1Ð+=ô�M€A€tˆTð 
‡I�Iˆa„LÜ˜5×,Ñ,¨t°T¨lÓ;¸qÒ@Ð@Ð@ä%Ø�!˜1Ð+=ô�M€A€tˆTð 
‡I�Iˆa„LÜ˜5×,Ñ,¨t°T¨lÓ;¸qÒ@Ð@Ð@ä%Ø�!˜1Ð+=ô�M€A€tˆTð 
‡I�Iˆa„LÜ˜5×,Ñ,¨t°T¨lÓ;¸qÒ@Ð@Ñ@r   zparams, type_err, err_msgr>   r,   z#n_clusters should be <= n_samples=5)r+   r+   r+   zIncorrect parameter n_clusters)r+   r,   r+   r)   )Ún_componentsr—   z"n_best=4 must be <= n_components=3c                 óÜ   — t        j                  d«      j                  d«      }t        di | ¤Ž}t	        j
                  ||¬«      5  |j                  |«       ddd«       y# 1 sw Y   yxY w)z5Check parameters validation in `SpectralBiClustering`é   )r(   r(   )ÚmatchNr   )r   r1   r2   r   rr   rs   rY   )ÚparamsÚtype_errÚerr_msgr7   r8   s        r   Ú.test_spectralbiclustering_parameter_validationr«   á   sW   € ô6 �9‰9�R‹=× Ñ  Ó(€DÜ Ñ* 6Ñ*€EÜ	�‰�x wÔ	/ñ Ø�	‰	�$Œ÷÷ ñ ús   ÁA"Á"A+Úestc                 óˆ   — t        ddd¬«      \  }}}t        | d«      rJ ‚| j                  |«       | j                  dk(  sJ ‚y )N)r+   r+   r+   r   r–   Ún_features_in_)r   ÚhasattrrY   r®   )r¬   r9   r�   s      r   Útest_n_features_in_r°     sF   € ä˜f a°aÔ8�G€A€qˆ!ä�sÐ,Ô-Ð-Ð-Ø‡G�GˆA„JØ×Ñ Ò"Ð"Ñ"r   )0Ú__doc__Únumpyr   rr   Úscipy.sparser   Úsklearn.baser   r   Úsklearn.clusterr   r   Úsklearn.cluster._biclusterr   r	   r
   Úsklearn.datasetsr   r   Úsklearn.metricsr   r   Úsklearn.model_selectionr   Úsklearn.utils._testingr   r   r   Úsklearn.utils.fixesr   r   ÚmarkÚparametrizer;   rE   rg   rz   r†   rˆ   r�   r’   r”   rœ   r    r£   rt   r«   r°   r   r   r   ú<module>r¾      sþ  ðÙ /ã Û Ý !ç 6ß F÷ñ ÷
 @ß <Ý 1÷ñ õ
 /ô

�~ }ô 

ð ‡�×Ñ˜¨.Ó9ñó :ðòð ‡�×Ñ˜¨.Ó9ñ'ó :ð'ð: ‡�×Ñ˜¨.Ó9ñ&+ó :ð&+òRPòYð ‡�×Ñ˜¨.Ó9ñ$ó :ð$ð ‡�×Ñ˜¨.Ó9ñ$ó :ð$ò"ò*ð ‡�×Ñ˜¨.Ó9ñHó :ðHòAð2 ‡�×ÑØð ˜1ÐØØ1ð	
ð ˜9Ð%ØØ,ð	
ð ˜6Ð"ØØ,ð	
ð ¨!Ñ,ØØ0ð	
ð!óñ2ó3ð2ð ‡�×Ñ˜Ñ!5Ó!7Ñ9MÓ9OÐ PÓQñ#ó Rñ#r   