
    Ki#              	       N   S r SSKrSSKrSSK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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@                  RC                  S\5      S 5       r"S r#\R@                  RC                  S\5      S 5       r$\R@                  RC                  S\5      S 5       r%S r&S r'\R@                  RC                  S\5      S 5       r(\R@                  RC                  S\5      S 5       r)S r*S r+\R@                  RC                  S\5      S 5       r,S r-\R@                  RC                  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@                  RC                  S'\" 5       \" 5       45      S( 5       r0g))z)Testing for Spectral Biclustering methods    N)issparse)BaseEstimatorBiclusterMixinclone)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    f/var/www/html/dynamic-report/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_submatrixrA   &   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_indicesrK   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   rW   r1   g?noiserandom_state   r   )rD   rZ   )r1   rW   axisrW   r   )r   minr!   r"   r   r   fitrows_shaper   sumonescolumns_r   biclusters_rK   )	global_random_seedr+   
param_gridSrowscolsmatkwargsr>   s	            r   test_spectral_coclusteringrm   ?   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)NrV   r1   g      ?rX   scalelogrN   r-   T)methodrQ   rR   rS   rO   )rD   rU   rT   rZ   rq   )	   rW   r   r\   rW   r[   r   )r   itemsr   
set_paramsdictr   
get_paramsgetpytestraises
ValueErrorr_   r`   ra   rd   r   rb   r!   repeatr   re   rK   )rf   r+   rh   ri   rj   non_default_paramsrk   
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.r[   r\   r   d   decimalN)rb   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\   r[   r   N)r   r   rb   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   )rf   r+   	generatorr?   rk   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   )rf   r+   r   r?   rk   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   r[   )r!   r   r   r   r
   r   )rf   r   rk   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rZ   )r   r   r   r[   r[   r[   )r0   r0   r0   r1   r1   r1   )r   r[   r0   r1   r/   r.   r0   )n_bestrD   )r   r!   array_fit_best_piecewiser   )rf   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   )r[   r[   r[   )r1   r2   r1   r[   r   r0   )rD   )r   r   r[   r[   g      ?)r   r!   r   _project_and_clusterr   r   )rf   r+   r>   r=   r   rk   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 )
Nr1   rN   )rQ   rZ   rV   r   rX   r[   )(   rW   )rW   r   )r   r   r_   r   re   )rf   r>   rh   ri   rj   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_msgrD   r2   z#n_clusters should be <= n_samples=5)r1   r1   r1   zIncorrect parameter n_clusters)r1   r2   r1   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!   r7   r8   r   rx   ry   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 5      n [        U S5      (       a   eU R                  U5        U R                  S:X  d   eg )N)r1   r1   r1   r   r   n_features_in_)r   r   hasattrr_   r   )r   r?   r   s      r   test_n_features_in_r     sR    faa8GAq!
*Cs,----GGAJ"""r   )1__doc__numpyr!   rx   scipy.sparser   sklearn.baser   r   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parametrizerA   rK   rm   r   r   r   r   r   r   r   r   r   rz   r   r   r   r   r   <module>r      s   /   ! = = 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   