
     hM"              	          d Z ddlZddl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 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 ddlmZ ddlmZmZ ddlmZmZ  G d dee          Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'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)
csr_matrixissparse)ParameterGrid)assert_almost_equal)assert_array_equal)assert_array_almost_equal)BaseEstimatorBiclusterMixin)SpectralCoclustering)SpectralBiclustering)_scale_normalize)_bistochastic_normalize)_log_normalize)consensus_scorev_measure_score)make_biclustersmake_checkerboardc                       e Zd Zd Zd ZdS )MockBiclusteringc                     d S N )selfs    `/var/www/html/Sam_Eipo/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   c                     t          j        d                              dd          } t                      }| 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   r   tolistget_submatrixr   toarrayr   all)datamodelX	submatrixs       r   test_get_submatrixr:   '   s    9R==  A&&DEJt$$dkkmm4  ''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)r7   r    mni_indj_inds         r   _test_shape_indicesrD   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|          }|t	          |          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   rP   r*   g?noiserandom_state   r   )r=   rS   )r*   rP   axisrP   r   )r   minr   r   r   r   r   fitrows_shaper   sumonescolumns_r   biclusters_rD   )global_random_seed
param_gridSrowscolsmatkwargsr7   s           r   test_spectral_coclusteringrf   ?   s    $X.Rjdm$ J $!3-?  MAtT LA
Q1A: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
}|t          |          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 )NrO   r*   g      ?rQ   scalelogrG   r&   T)methodrJ   rK   rL   rH   )r=   rN   rM   rS   rj   )	   rP   r   rU   rP   rT   r   )r   r   itemsr   
set_paramsdictr   
get_paramsgetpytestraises
ValueErrorrX   rY   rZ   r]   r   r[   r   repeatr   r^   rD   )
r_   ra   rb   rc   non_default_paramsrd   
param_nameparam_valuesparam_valuer7   s
             r   test_spectral_biclusteringry   \   sh   %!3-?  MAtT
 E"jdf	  :a==! + +(:(@(@(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****1+	++ +s   C<	<D D 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.rT   rU   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   rU   rT   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          }|t	          |          fD ]D}t          |          \  }}}t          |           t          |          rt          |          sJ Ed S Nr{   )r   randomRandomStaterandr   r   r   r   )r_   	generatorr8   rd   r   _s         r   test_scale_normalizer      s    	%%&899IsC  A:a==! $ $',,1vC== 	$F#####	$ $r   c                    t           j                            |           }|                    dd          }|t	          |          fD ]@}t          |          }t          |           t          |          rt          |          sJ Ad S r   )r   r   r   r   r   r   r   r   )r_   r   r8   rd   r   s        r   test_bistochastic_normalizer      s    	%%&899IsC  A:a==! $ $(--f%%%C== 	$F#####	$ $r   c                     t           j                            |           }|                    dd          }t	          |          dz   }t          |           d S )Nr{   rT   )r   r   r   r   r   r   )r_   r   rd   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rS   )r   r   r   rT   rT   rT   )r)   r)   r)   r*   r*   r*   )r   rT   r)   r*   r(   r'   r)   )n_bestr=   )r   r   array_fit_best_piecewiser   )r_   r7   vectorsbests       r   test_fit_best_piecewiser      sv     .@AAAEh***,>,>,>@R@R@RSTTG$$WQ1$EEDtWRaR[)))))r   c                 8   t          |           }t          j        g dg dg dg dg          }t          j        ddgddgddgg          }|t          |          fD ]:}|                    ||d          }t          t          |g d          d	           ;d S )
Nr   )rT   rT   rT   )r*   r+   r*   rT   r   r)   )r=   )r   r   rT   rT   g      ?)r   r   r   r   _project_and_clusterr   r   )r_   r7   r6   r   rd   labelss         r   test_project_and_clusterr      s     .@AAAE8YYY			999iii@AADhAAA/00Gj&&' 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*   rG   )rJ   rS   rO   r   rQ   rT   )(   rP   )rP   r   )r   r   rX   r   r^   )r_   r7   ra   rb   rc   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   r0   r1   r   rq   rr   rX   )paramstype_errerr_msgr6   r7   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   hasattrrX   r   )r   r8   r   s      r   test_n_features_in_r      s^     faa888GAq!s,-----GGAJJJ""""""r   )/__doc__numpyr   rq   scipy.sparser   r   sklearn.model_selectionr   sklearn.utils._testingr   r   r   sklearn.baser	   r
   sklearn.clusterr   r   sklearn.cluster._biclusterr   r   r   sklearn.metricsr   r   sklearn.datasetsr   r   r   r:   rD   rf   ry   r   r   r   r   r   r   r   r   markparametrizers   r   r   r   r   r   <module>r      s   / /      - - - - - - - - 1 1 1 1 1 1 6 6 6 6 6 6 5 5 5 5 5 5 < < < < < < 6 6 6 6 6 6 6 6 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 > > > > > > 5 5 5 5 5 5 < < < < < < < < ? ? ? ? ? ? ? ?

 

 

 

 

~} 

 

 

    ' ' ':'+ '+ '+TP P PY Y Y$ $ $$ $ $" " "* * *H H HA A A2  11	
 9%,	
 6",	
 !,,0	
! 2 3 2 !5!5!7!79M9M9O9O PQQ# # RQ# # #r   