
    -i#              	       J   S r SSKrSSKrSSKJr  SSKJrJr  SSK	J
r
Jr  SSKJrJrJr  SSKJrJr  SSKJrJr  SS	KJr  SS
KJrJrJr  SSKJr   " S S\\5      r\R>                  RA                  S\5      S 5       r!S r"\R>                  RA                  S\5      S 5       r#\R>                  RA                  S\5      S 5       r$S r%S r&\R>                  RA                  S\5      S 5       r'\R>                  RA                  S\5      S 5       r(S r)S r*\R>                  RA                  S\5      S 5       r+S r,\R>                  RA                  SSS0\-S4SS0\-S 4SS!0\-S 4S"S#S$.\-S%4/5      S& 5       r.\R>                  RA                  S'\
" 5       \" 5       45      S( 5       r/g))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                        \ rS rSrS rS rSrg)MockBiclustering   c                     g N )selfs    W/var/www/html/venv/lib/python3.13/site-packages/sklearn/cluster/tests/test_bicluster.py__init__MockBiclustering.__init__   s        c                 n    [         R                  " / SQ5      S   [         R                  " / SQ5      S   4$ )N)TTFFTr   )FFTT)npwhere)r   is     r   get_indicesMockBiclustering.get_indices   s2     HH56q9HH/03
 	
r   r   N)__name__
__module____qualname____firstlineno__r   r#   __static_attributes__r   r   r   r   r      s    
r   r   csr_containerc                    [         R                  " S5      R                  SS5      n[        5       nX" U5      UR	                  5       4 H  nUR                  SU5      n[        U5      (       a  UR                  5       n[        USS/SS/S	S
//5        SUS S & [        U5      (       a  UR                  5       n[         R                  " US:g  5      (       a  M   e   g )N         r                     )
r    arangereshaper   tolistget_submatrixr   toarrayr   all)r*   datamodelX	submatrixs        r   test_get_submatrixr@   &   s    99R=  A&DEM$'7''1-	I!))+I91v1vBx&@A	!A;;		Avva2g 8r   c                     [        U R                  5       HK  nU R                  U5      u  p#U R                  U5      u  pE[	        U5      U:X  d   e[	        U5      U:X  a  MK   e   g r   )range
n_clusters	get_shaper#   len)r=   r"   mni_indj_inds         r   _test_shape_indicesrJ   6   sY    5##$q!((+5zQ5zQ	 %r   c                    SS/S S/SS/S/S/S.n[        S	S
SU S9u  p4nX3R                  5       -  n[        R                  " US:  SU5      nX1" U5      4 H  n[	        U5       H  n[        SS
U S.UD6nUR                  U5        UR                  R                  S:X  d   e[        UR                  R                  SS9[        R                  " S5      5        [        UR                  R                  SS9[        R                  " S5      5        [        UR                  XE45      S:X  d   e[        U5        M     M     g )N
randomizedarpackr,   FT	k-means++
   )
svd_method
n_svd_vecs
mini_batchinitn_init   rV   r0   g?noiserandom_state   r   )rC   rY   )r0   rV   axisrV   r   )r   minr    r!   r   r   fitrows_shaper   sumonescolumns_r   biclusters_rJ   )	global_random_seedr*   
param_gridSrowscolsmatkwargsr=   s	            r   test_spectral_coclusteringrl   ?   s9    $X.Rjdm$J $!3-?MAT LA
Q1A=#$#J/F( +=AGE IIcN;;$$///u{{A6Du~~11q192772;G"5#4#4tlCqHHH& 0 %r   c                    [        SSSU S9u  p#nSS/S/S/S	/S
.nX!" U5      4 GH  nUR                  5        GH  u  pxU GHw  n	[        SSSU S9n
U
R                  " S0 [	        Xy4/5      D6  [        U5      (       aY  U
R                  5       R                  S5      S:X  a6  [        R                  " [        5         U
R                  U5        S S S 5        M  U
R                  U5        U
R                  R                  S:X  d   eU
R                  R                  S:X  d   e[        U
R                  R!                  SS9["        R$                  " SS5      5        [        U
R                  R!                  SS9["        R$                  " SS5      5        ['        U
R(                  X445      S:X  d   e[+        U
5        GMz     GM     GM     g ! , (       d  f       GN= f)NrU   r0   g      ?rW   scalelogrM   r,   T)methodrP   rQ   rR   rN   )rC   rT   rS   rY   rp   )	   rV   r   r[   rV   rZ   r   )r   itemsr   
set_paramsdictr   
get_paramsgetpytestraises
ValueErrorr^   r_   r`   rc   r   ra   r    repeatr   rd   rJ   )re   r*   rg   rh   ri   non_default_paramsrj   
param_nameparam_valuesparam_valuer=   s              r   test_spectral_biclusteringr   ]   s    &!3-?MAT
 E"jdf	 =#$(:(@(@(B$J+, $!3	   E4*)B(C#DEC==U%5%5%7%;%;H%E%Nz2		# 3IIcN{{((G333~~++w666"5;;???#:BIIa<LM"5>>#5#51#5#=ryyB?OP&u'8'84,G1LLL#E*/  , )C % 32s   ;G	
Gc                    U R                  SS9nU R                  SS9n[        U 5      (       aH  [        R                  " U5      R	                  5       n[        R                  " U5      R	                  5       n[        U[        R                  " UR                  5       S5      SS9  [        U[        R                  " UR                  5       S5      SS9  g)z<Check that rows sum to one constant, and columns to another.rZ   r[   r   d   decimalN)ra   r   r    asarraysqueezer   tilemean)scaledrow_sumcol_sums      r   _do_scale_testr      s    jjaj Gjjaj G**W%--/**W%--/grwww||~s'CQOgrwww||~s'CQOr   c                     [        U 5        [        U R                  SS9R                  5       U R                  SS9R                  5       SS9  g)z5Check that rows and columns sum to the same constant.r   r[   rZ   r   N)r   r   ra   r   )r   s    r   _do_bistochastic_testr      s?    6


*//16::1:3E3J3J3LVWXr   c                    [         R                  R                  U 5      nUR                  SS5      nX1" U5      4 HA  n[	        U5      u  n  n[        U5        [        U5      (       d  M/  [        U5      (       a  MA   e   g Nr   )r    randomRandomStaterandr
   r   r   )re   r*   	generatorr>   rj   r   _s          r   test_scale_normalizer      sm    		%%&89IsC A=#$',1vC==F####	 %r   c                     [         R                  R                  U 5      nUR                  SS5      nX1" U5      4 H=  n[	        U5      n[        U5        [        U5      (       d  M+  [        U5      (       a  M=   e   g r   )r    r   r   r   r   r   r   )re   r*   r   r>   rj   r   s         r   test_bistochastic_normalizer      sg    		%%&89IsC A=#$(-f%C==F####	 %r   c                     [         R                  R                  U 5      nUR                  SS5      n[	        U5      S-   n[        U5        g )Nr   rZ   )r    r   r   r   r	   r   )re   r   rj   r   s       r   test_log_normalizer      s@     		%%&89I
..c
"CC 1$F&!r   c                     [        U S9n[        R                  " / SQ/ SQ/ SQ/5      nUR                  USSS9n[	        X2S S 5        g )NrY   )r   r   r   rZ   rZ   rZ   )r/   r/   r/   r0   r0   r0   )r   rZ   r/   r0   r.   r-   r/   )n_bestrC   )r   r    array_fit_best_piecewiser   )re   r=   vectorsbests       r   test_fit_best_piecewiser      sJ     .@AEhh*,>@RSTG$$WQ1$EDtRa[)r   c                    [        U S9n[        R                  " / SQ/ SQ/ SQ/ SQ/5      n[        R                  " SS/SS/SS//5      nX1" U5      4 H+  nUR                  XTSS9n[	        [        U/ SQ5      S	5        M-     g )
Nr   )rZ   rZ   rZ   )r0   r1   r0   rZ   r   r/   )rC   )r   r   rZ   rZ   g      ?)r   r    r   _project_and_clusterr   r   )re   r*   r=   r<   r   rj   labelss          r   test_project_and_clusterr      s     .@AE88Y	9i@ADhhAAA/0GmD)*++CQ+GOFLA3G +r   c                    [        SSU S9n[        SSSU S9u  p#nUR                  U5        [        UR                  X445      S:X  d   e[        SSSU S9u  p#nUR                  U5        [        UR                  X445      S:X  d   e[        S	SSU S9u  p#nUR                  U5        [        UR                  X445      S:X  d   eg )
Nr0   rM   )rP   rY   rU   r   rW   rZ   )(   rV   )rV   r   )r   r   r^   r   rd   )re   r=   rg   rh   ri   s        r   test_perfect_checkerboardr      s     	h-?E &!1+=MAT 
IIaL5,,tl;q@@@%!1+=MAT 
IIaL5,,tl;q@@@%!1+=MAT 
IIaL5,,tl;q@@@r   zparams, type_err, err_msgrC   r1   z#n_clusters should be <= n_samples=5)r0   r0   r0   zIncorrect parameter n_clusters)r0   r1   r0   r.   )n_componentsr   z"n_best=4 must be <= n_components=3c                     [         R                  " S5      R                  S5      n[        S0 U D6n[        R
                  " XS9   UR                  U5        SSS5        g! , (       d  f       g= f)z5Check parameters validation in `SpectralBiClustering`r   )r-   r-   )matchNr   )r    r6   r7   r   rw   rx   r^   )paramstype_errerr_msgr<   r=   s        r   .test_spectralbiclustering_parameter_validationr      sL    6 99R=  (D *6*E	x	/		$ 
0	/	/s   A  
A.estc                     [        SSSS9u  n  n[        U S5      (       a   eU R                  U5        U R                  S:X  d   eg )N)r0   r0   r0   r   r   n_features_in_)r   hasattrr^   r   )r   r>   r   s      r   test_n_features_in_r     sI    faa8GAq!s,----GGAJ"""r   )0__doc__numpyr    rw   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@   rJ   rl   r   r   r   r   r   r   r   r   r   ry   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!79M9O PQ# R#r   