
    /ii#              	          d Z ddlZddlZddl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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(             Z0dS ))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                       e Zd Zd Zd ZdS )MockBiclusteringc                     d S N )selfs    j/var/www/html/bet.cuttalo.com/ml/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)r9   r!   mni_indj_inds         r   _test_shape_indicesrF   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   rR   r,   g?noiserandom_state   r   )r?   rU   )r,   rR   axisrR   r   )r   minr   r    r   r   fitrows_shaper   sumonescolumns_r   biclusters_rF   )	global_random_seedr&   
param_gridSrowscolsmatkwargsr9   s	            r   test_spectral_coclusteringrh   ?   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 )NrQ   r,   g      ?rS   scalelogrI   r(   T)methodrL   rM   rN   rJ   )r?   rP   rO   rU   rl   )	   rR   r   rW   rR   rV   r   )r   itemsr   
set_paramsdictr   
get_paramsgetpytestraises
ValueErrorrZ   r[   r\   r_   r   r]   r   repeatr   r`   rF   )ra   r&   rc   rd   re   non_default_paramsrf   
param_nameparam_valuesparam_valuer9   s              r   test_spectral_biclusteringr{   ]   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.rV   rW   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   rW   rV   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   )ra   r&   	generatorr:   rf   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   )ra   r&   r   r:   rf   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}   rV   )r   r   r   r   r
   r   )ra   r   rf   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rU   )r   r   r   rV   rV   rV   )r+   r+   r+   r,   r,   r,   )r   rV   r+   r,   r*   r)   r+   )n_bestr?   )r   r   array_fit_best_piecewiser   )ra   r9   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   )rV   rV   rV   )r,   r-   r,   rV   r   r+   )r?   )r   r   rV   rV   g      ?)r   r   r   _project_and_clusterr   r   )ra   r&   r9   r8   r   rf   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,   rI   )rL   rU   rQ   r   rS   rV   )(   rR   )rR   r   )r   r   rZ   r   r`   )ra   r9   rc   rd   re   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   r2   r3   r   rs   rt   rZ   )paramstype_errerr_msgr8   r9   s        r   .test_spectralbiclustering_parameter_validationr      s    6 9R==  ((D **6**E	xw	/	/	/  		$                 s   
A--A14A1estc                     t          ddd          \  }}}t          |           } t          | d          rJ |                     |           | j        dk    sJ d S )N)r,   r,   r,   r   r   n_features_in_)r   r   hasattrrZ   r   )r   r:   r   s      r   test_n_features_in_r     sg    faa888GAq!
**Cs,-----GGAJJJ""""""r   )1__doc__numpyr   rs   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parametrizer<   rF   rh   r{   r   r   r   r   r   r   r   r   ru   r   r   r   r   r   <module>r      s   / /      ! ! ! ! ! ! = = = = = = = = = = 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   