[R] Biclustering issues with biclust()

michele caseposta mic.cipi at gmail.com
Thu Oct 10 02:35:52 CEST 2013


Hello everyone,
I am trying to test some biclustering algorithms, and I am using the package biclust.
I tried to bicluster a very simple matrix, and it seems that I cannot obtain what I was expecting, even though the cluster, to me, seem pretty obvious.
The code is the following:

mat1<- matrix(c( 5,1,2,9,2,8,5,10,1,4,
                 1,10,2,2,2,2,1,4,3,8,
                 4,9,3,3,3,3,9,6,0,1,
                 9,6,4,4,4,4,5,4,5,6,
                 2,0,5,5,5,5,1,4,5,6,
                 5,6,3,7,0,3,2,4,5,6,
                 6,4,8,5,4,9,9,4,5,6,
                 7,7,7,7,0,8,2,4,5,6,
                 7,7,7,7,5,8,4,5,2,8,
                 7,7,7,7,9,1,3,8,4,1
), ncol=10)

If you see this matrix, it has a sub matrix of only "7", and two sub matrices with perfectly correlated rows.
It seems to me that every biclustering algorithm should return at least those three clusters, but so far I had no luck.
I tried the BCCC method, the BCPlaid, BCXmotifs, and BCSpectral.
I did not try the BCBimax (it seems that it requires a logical matrix), BCQuest (questionnaires).
None of the used methods was able to retrieve what I was expecting. BCCC performs better than the others, as it finds "something".
The code I used is the following:

resBC  <- biclust(stdm(mat1), method=BCCC(), delta=1*10^-2,alpha=10^-5)
for(i in 1:resBC at Number){
  bcs <- simpleBc(data=mat1,bicResult=resBC, clusterNo=i)
  print(bcs$bcMat)
}

where the function stdm is the following (I read somewhere to use stdize() on the matrix):

> stdm
function(x){
  
  require(pls)
  xs <-stdize(x)
  rowdim <- dim(xs)[1]
  coldim <- dim(xs)[2]
  standardMatrix <- matrix(as.numeric(xs), nrow=rowdim, ncol=coldim)
  rownames(standardMatrix) <- rownames(xs)
  colnames(standardMatrix) <- colnames(xs)
  standardMatrix
}

Without stdm not even BCCC can find anything.

Am I missing something?

Best,
Michele

 


More information about the R-help mailing list