
    0Ph#              	       ~   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                             de          d             Z!d Z"ej                             de          d             Z#ej                             de          d             Z$d Z%d Z&ej                             de          d             Z'ej                             de          d             Z(d Z)d Z*ej                             de          d             Z+d Z,ej                             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                             d' e
             e            f          d(             Z/dS ))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dS )MockBiclusteringc                     d S N )selfs    d/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sklearn/cluster/tests/test_bicluster.py__init__zMockBiclustering.__init__   s        c                 r    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   s@     H55566q9H///003
 	
r   N)__name__
__module____qualname__r   r!   r   r   r   r   r      s2          
 
 
 
 
r   r   csr_containerc                    t          j        d                              dd          }t                      }| | |          |                                fD ]}|                    d|          }t          |          r|                                }t          |ddgddgd	d
gg           d|d d <   t          |          r|                                }t          j	        |dk              sJ d S )N         r                     )
r   arangereshaper   tolistget_submatrixr   toarrayr   all)r%   datamodelX	submatrixs        r   test_get_submatrixr;   &   s    9R==  A&&DEMM$''7  ''1--	I 	,!))++I91v1vBx&@AAA	!!!A;; 			Ava2g r   c                     t          | j                  D ]\}|                     |          \  }}|                     |          \  }}t	          |          |k    sJ t	          |          |k    sJ ]d S r   )range
n_clusters	get_shaper!   len)r8   r    mni_indj_inds         r   _test_shape_indicesrE   6   sz    5#$$  q!!1((++u5zzQ5zzQ	 r   c                    ddgd dgddgdgdgd}t          d	d
d|           \  }}}||                                z  }t          j        |dk     d|          }| ||          fD ]}t	          |          D ]}t          dd
| d|}|                    |           |j        j        dk    sJ t          |j        
                    d          t          j        d                     t          |j        
                    d          t          j        d                     t          |j        ||f          dk    sJ t          |           یd S )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   ?   s    $X.Rjdm$ J $!3-?  MAtT LA
Q1A==##$ ' '#J// 	' 	'F( += AG E IIcNNN;$////u{A66DDDu~11q199272;;GGG"5#4tTlCCqHHHH&&&&	'' 'r   c                    t          ddd|           \  }}}ddgdgdgd	gd
}| ||          fD ]}|                                D ]\  }}|D ]}	t          ddd|           }
 |
j        di t	          ||	fg           t          |          rr|
                                                    d          dk    rGt          j	        t                    5  |
                    |           d d d            n# 1 swxY w Y   |
                    |           |
j        j        dk    sJ |
j        j        dk    sJ t          |
j                            d          t#          j        dd                     t          |
j                            d          t#          j        dd                     t'          |
j        ||f          dk    sJ t+          |
           d S )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   ]   sn    &!3-?  MAtT
 E"jdf	  ==##$ + +(:(@(@(B(B 	+ 	+$J+ + +, $!3	   ! EE4*k)B(C#D#DEEEC== #U%5%5%7%7%;%;H%E%E%N%Nz22 ' '		#' ' ' ' ' ' ' ' ' ' ' ' ' ' 'IIcNNN{(G3333~+w6666"5;???#:#:BIa<L<LMMM"5>#5#51#5#=#=ryB?O?OPPP&u'84,GG1LLLL#E****/+	++ +s   C8	8C<?C<c                    |                      d          }|                      d          }t          |           rLt          j        |                                          }t          j        |                                          }t          |t          j        |                                d          d           t          |t          j        |                                d          d           dS )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    jjaj  Gjjaj  G 0*W%%--//*W%%--//grww||~~s'C'CQOOOOgrww||~~s'C'CQOOOOOOr   c                     t          |            t          |                     d                                          |                     d                                          d           dS )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16::1:3E3E3J3J3L3LVWXXXXXXr   c                    t           j                            |           }|                    dd          }| ||          fD ]D}t	          |          \  }}}t          |           t          |          rt          |          sJ Ed S Nr|   )r   randomRandomStaterandr
   r   r   )r`   r%   	generatorr9   re   r   _s          r   test_scale_normalizer      s    	%%&899IsC  A==##$ $ $',,1vC== 	$F#####	$ $r   c                    t           j                            |           }|                    dd          }| ||          fD ]@}t	          |          }t          |           t          |          rt          |          sJ Ad S r   )r   r   r   r   r   r   r   )r`   r%   r   r9   re   r   s         r   test_bistochastic_normalizer      s    	%%&899IsC  A==##$ $ $(--f%%%C== 	$F#####	$ $r   c                     t           j                            |           }|                    dd          }t	          |          dz   }t          |           d S )Nr|   rU   )r   r   r   r   r	   r   )r`   r   re   r   s       r   test_log_normalizer      sS     	%%&899I
..c
"
"CC  1$F&!!!!!r   c                     t          |           }t          j        g dg dg dg          }|                    |dd          }t	          ||d d                    d S )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      sv     .@AAAEh***,>,>,>@R@R@RSTTG$$WQ1$EEDtWRaR[)))))r   c                 0   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 ]:}|                    ||d          }t	          t          |g d          d	           ;d S )
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AAE8YYY			999iii@AADhAAA/00GmmD))* H H++CQ+GGOFLLLAA3GGGGH Hr   c                    t          dd|           }t          ddd|           \  }}}|                    |           t          |j        ||f          dk    sJ t          ddd|           \  }}}|                    |           t          |j        ||f          dk    sJ t          d	dd|           \  }}}|                    |           t          |j        ||f          dk    sJ d S )
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+=  MAtT 
IIaLLL5,tTl;;q@@@@%!1+=  MAtT 
IIaLLL5,tTl;;q@@@@%!1+=  MAtT 
IIaLLL5,tTl;;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                              d          }t          di | }t	          j        ||          5  |                    |           ddd           dS # 1 swxY w Y   dS )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      s    6 9R==  ((D **6**E	xw	/	/	/  		$                 s   
A--A14A1estc                     t          ddd          \  }}}t          | d          rJ |                     |           | j        dk    sJ d S )N)r+   r+   r+   r   r   n_features_in_)r   hasattrrY   r   )r   r9   r   s      r   test_n_features_in_r     s\    faa888GAq!s,-----GGAJJJ""""""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 6 6 6 6 6 6 6 F F F F F F F F         
 @ ? ? ? ? ? ? ? < < < < < < < < 1 1 1 1 1 1         
 / . . . . .

 

 

 

 

~} 

 

 

 .99  :9   .99' ' :9': .99&+ &+ :9&+RP P PY Y Y .99$ $ :9$ .99$ $ :9$" " "* * * .99H H :9HA A A2  11	
 9%,	
 6",	
 !,,0	
! 2 3 2 !5!5!7!79M9M9O9O PQQ# # RQ# # #r   