
    >[g#              	       J   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>                  jA                  de      d        Z!d Z"ej>                  jA                  de      d        Z#ej>                  jA                  de      d        Z$d Z%d Z&ej>                  jA                  de      d        Z'ej>                  jA                  de      d        Z(d Z)d Z*ej>                  jA                  de      d        Z+d Z,ej>                  jA                  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>                  jA                  d' e
        e       f      d(        Z/y))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y)MockBiclusteringc                      y N )selfs    _/var/www/html/bid-api/venv/lib/python3.12/site-packages/sklearn/cluster/tests/test_bicluster.py__init__zMockBiclustering.__init__   s        c                 j    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   s2     HH56q9HH/03
 	
r   N)__name__
__module____qualname__r   r!   r   r   r   r   r      s    
r   r   csr_containerc                    t        j                  d      j                  dd      }t               }| | |      |j	                         fD ]~  }|j                  d|      }t        |      r|j                         }t        |ddgddgd	d
gg       d|d d  t        |      r|j                         }t        j                  |dk7        r~J  y )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                     t        | j                        D ]J  }| j                  |      \  }}| j                  |      \  }}t	        |      |k(  sJ t	        |      |k(  rJJ  y r   )range
n_clusters	get_shaper!   len)r8   r    mni_indj_inds         r   _test_shape_indicesrE   6   s]    5##$q!1((+u5zQ5zQ	 %r   c                    ddgd dgddgdgdgd}t        d	d
d|       \  }}}||j                         z  }t        j                  |dk  d|      }| ||      fD ]  }t	        |      D ]  }t        dd
| d|}|j                  |       |j                  j                  dk(  sJ t        |j                  j                  d      t        j                  d             t        |j                  j                  d      t        j                  d             t        |j                  ||f      dk(  sJ t        |         y )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 IIcN;;$$///u{{A6Du~~11q192772;G"5#4#4tTlCqHHH& 0 %r   c                    t        ddd|       \  }}}ddgdgdgd	gd
}| ||      fD ]  }|j                         D ]  \  }}|D ]t  }	t        ddd|       }
 |
j                  di t	        ||	fg       t        |      rV|
j                         j                  d      dk(  r4t        j                  t              5  |
j                  |       d d d        |
j                  |       |
j                  j                  dk(  sJ |
j                  j                  dk(  sJ t        |
j                  j!                  d      t#        j$                  dd             t        |
j                  j!                  d      t#        j$                  dd             t'        |
j(                  ||f      dk(  sJ t+        |
       w   y # 1 sw Y   xY w)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   ]   s    &!3-?MAtT
 E"jdf	 =#$(:(@(@(B$J+, $!3	 !  E4*k)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                    | j                  d      }| j                  d      }t        |       rFt        j                  |      j	                         }t        j                  |      j	                         }t        |t        j                  |j                         d      d       t        |t        j                  |j                         d      d       y)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**W%--/**W%--/grwww||~s'CQOgrwww||~s'CQOr   c                     t        |        t        | j                  d      j                         | j                  d      j                         d       y)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


*//16::1:3E3J3J3LVWXr   c                     t         j                  j                  |       }|j                  dd      }| ||      fD ]5  }t	        |      \  }}}t        |       t        |      s)t        |      r5J  y Nr|   )r   randomRandomStaterandr
   r   r   )r`   r%   	generatorr9   re   r   _s          r   test_scale_normalizer      sh    		%%&89IsC A=#$',1vC=F###	 %r   c                     t         j                  j                  |       }|j                  dd      }| ||      fD ]1  }t	        |      }t        |       t        |      s%t        |      r1J  y r   )r   r   r   r   r   r   r   )r`   r%   r   r9   re   r   s         r   test_bistochastic_normalizer      sb    		%%&89IsC A=#$(-f%C=F###	 %r   c                     t         j                  j                  |       }|j                  dd      }t	        |      dz   }t        |       y )Nr|   rU   )r   r   r   r   r	   r   )r`   r   re   r   s       r   test_log_normalizer      s@     		%%&89I
..c
"CC 1$F&!r   c                     t        |       }t        j                  g dg dg dg      }|j                  |dd      }t	        ||d d        y )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      sL     .@AEhh*,>@RSTG$$WQ1$EDtWRa[)r   c                    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 ].  }|j                  ||d      }t	        t        |g d      d	       0 y )
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     .@AE88Y	9i@ADhhAAA/0GmD)*++CQ+GOFLA3G +r   c                    t        dd|       }t        ddd|       \  }}}|j                  |       t        |j                  ||f      dk(  sJ t        ddd|       \  }}}|j                  |       t        |j                  ||f      dk(  sJ t        d	dd|       \  }}}|j                  |       t        |j                  ||f      dk(  sJ y )
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 
IIaL5,,tTl;q@@@%!1+=MAtT 
IIaL5,,tTl;q@@@%!1+=MAtT 
IIaL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      j                  d      }t        di | }t	        j
                  ||      5  |j                  |       ddd       y# 1 sw Y   yxY w)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      sN    6 99R=  (D *6*E	xw	/		$ 
0	/	/s   A""A+estc                     t        ddd      \  }}}t        | d      rJ | j                  |       | j                  dk(  sJ y )N)r+   r+   r+   r   r   n_features_in_)r   hasattrrY   r   )r   r9   r   s      r   test_n_features_in_r     sF    faa8GAq!s,---GGAJ"""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 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   