Bicluster with biclust Package

A. Pendahuluan

A.1 Package

Package Utama yang digunakan dalam materi ini adalah biclust.

install.packages("biclust")

Load Package biclust

library(biclust)
## Loading required package: MASS
## Loading required package: grid
## Loading required package: colorspace
## Loading required package: lattice

Namun, ada beberapa package yang digunakan untuk memudahkan visualisasi ataupun analisis, seperti packages berikut ini :

library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.3.3     v purrr   0.3.4
## v tibble  3.0.6     v dplyr   1.0.4
## v tidyr   1.1.2     v stringr 1.4.0
## v readr   1.4.0     v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
## x dplyr::select() masks MASS::select()

A.2 Data

Data yang digunakan dalam materi ini adalah data BicatYeast yang berasal dari package biclust tersebut.

data(BicatYeast)
glimpse(BicatYeast)
##  num [1:419, 1:70] -0.276 -0.941 1.642 0.69 1.749 ...
##  - attr(*, "dimnames")=List of 2
##   ..$ : chr [1:419] "249364_at" "253423_at" "250327_at" "247474_at" ...
##   ..$ : chr [1:70] "cold_green_6h" "cold_green_24h" "cold_roots_6h" "cold_roots_24h" ...
class(BicatYeast)
## [1] "matrix" "array"

Description

Microarray data matrix for 80 experiments with Saccharomyces Cerevisiae organism extracted from BicAT example data set.

Format

Data structure with information about the expression levels of 419 probesets over 70 conditions Row names follow Affymetrix probeset notation

Selain itu, akan dibangkitkan beberapa matrix, untuk menunjukkan bagaimana Algoritma yang digunakan dalam biclust ini bekerja.

Berikut adalah matrix yang dicobakan pada package biclust tersebut

Matrix \(7x7\)

tujuh <- matrix(c(1,0,0,0,0,0,1,
                  0,0,0,0,0,0,0,
                  0,0,1,0,1,0,0,
                  0,0,0,1,0,0,0,
                  0,0,1,0,1,0,0,
                  0,0,0,0,0,0,0,
                  1,0,0,0,0,0,1),
                nrow = 7,
                ncol = 7,
                byrow = TRUE)
colnames(tujuh)<-c("A","B","C","D","E","F","G")
rownames(tujuh)<-c("T","U","V","W","X","Y","Z")
tujuh
##   A B C D E F G
## T 1 0 0 0 0 0 1
## U 0 0 0 0 0 0 0
## V 0 0 1 0 1 0 0
## W 0 0 0 1 0 0 0
## X 0 0 1 0 1 0 0
## Y 0 0 0 0 0 0 0
## Z 1 0 0 0 0 0 1

B. biclust pada Matrix sederhana

B.1 The Bimax Bicluster algorithm BCBimax

Performs Bimax Biclustering based on the framework by Prelic et. al.(2006). It searches for submatrices of ones in a logical matrix. Uses the original C code of the authors.

tujuh.bimax <- biclust(tujuh, method=BCBimax())

tujuh.bimax
## 
## An object of class Biclust 
## 
## call:
##  biclust(x = tujuh, method = BCBimax())
## 
## Number of Clusters found:  2 
## 
## First  2  Cluster sizes:
##                    BC 1 BC 2
## Number of Rows:       2    2
## Number of Columns:    2    2
drawHeatmap2(x = tujuh, bicResult = tujuh.bimax, number = 1) 

B.2 The CC Bicluster algorithm BCCC

Performs CC Biclustering based on the framework by Cheng and Church (2000). Searches for submatrices with a score lower than a specific treshold in a standardized data matrix.

tujuh.cc <- biclust(tujuh, method=BCCC())

tujuh.cc
## 
## An object of class Biclust 
## 
## call:
##  biclust(x = tujuh, method = BCCC())
## 
## There was one cluster found with
##   7 Rows and  7 columns
drawHeatmap2(x = tujuh, bicResult = tujuh.cc, number = 1) 

B.3 The Plaid Model Bicluster algorithm BCPlaid

Performs Plaid Model Biclustering as described in Turner et al., 2003. This is an improvement of original ‘Plaid Models for Gene Expression Data’ (Lazzeroni and Owen, 2002). This algorithm models data matrices to a sum of layers, the model is fitted to data through minimization of error.

set.seed(1) #Kadang random, perlu buat seed.
tujuh.plaid <- biclust(x=tujuh, method=BCPlaid())
## layer: 0 
##  3.204082
## layer: 1 
## [1] 0 2 2
## [1] 30  2  2
## [1] 31  2  2
## [1] 60  2  2
## [1] 1
## [1] 1.4993753 0.0000000 0.0000000 0.6513953
## back fitting 2 times
## layer: 2 
## [1] 0 1 2
## [1] 1 5 2
## [1] 30  5  2
## [1] 31  5  2
## [1] 60  5  2
## [1] 2
## [1] 0.4911693 0.0000000 0.0000000 0.0000000
## back fitting 2 times
## layer: 3 
## [1] 0 2 1
## [1] "Zero residual degrees of freedom"
## [1] 30  2  1
## [1] 31  0  1
## [1] 32
## [1] 0 0 0 0
##      
## Layer Rows Cols Df   SS   MS Convergence Rows Released Cols Released
##     0    7    7 13 5.05 0.39          NA            NA            NA
##     1    2    2  3 5.20 1.73           1             0             0
##     2    5    2  6 2.70 0.45           1             0             0
tujuh.plaid
## 
## An object of class Biclust 
## 
## call:
##  biclust(x = tujuh, method = BCPlaid())
## 
## Number of Clusters found:  2 
## 
## First  2  Cluster sizes:
##                    BC 1 BC 2
## Number of Rows:       2    5
## Number of Columns:    2    2
drawHeatmap2(x = tujuh, bicResult = tujuh.plaid, number = 1)

B.4 The Questmotif Bicluster algorithm BCQuest

Performs Questmotif Biclustering a Bicluster algorithm for questionairs based on the framework by Murali and Kasif (2003). Searches subgroups of questionairs with same or similar answer to some questions.

tujuh.Quest <- biclust(tujuh, method=BCQuest())

tujuh.Quest
## 
## An object of class Biclust 
## 
## call:
##  biclust(x = tujuh, method = BCQuest())
## 
## There was no cluster found
#drawHeatmap2(x = tujuh, bicResult = tujuh.Quest, number = 1)

B.5 The Questmotif Bicluster algorithm BCQuestmet

Performs Questmotif Biclustering a Bicluster algorithm for questionairs based on the framework by Murali and Kasif (2003). Searches subgroups of questionairs with same or similar answer to some questions.

tujuh.Questmet <- biclust(tujuh, method=BCQuestmet())

tujuh.Questmet
## 
## An object of class Biclust 
## 
## call:
##  biclust(x = tujuh, method = BCQuestmet())
## 
## There was no cluster found
#drawHeatmap2(x = tujuh, bicResult = tujuh.Questmet, number = 1)

B.6 The Questmotif Bicluster algorithm BCQuestord

Performs Questmotif Biclustering a Bicluster algorithm for questionairs based on the framework by Murali and Kasif (2003). Searches subgroups of questionairs with same or similar answer to some questions.

tujuh.Questord <- biclust(tujuh, method=BCQuestord())

tujuh.Questord
## 
## An object of class Biclust 
## 
## call:
##  biclust(x = tujuh, method = BCQuestord())
## 
## There was no cluster found
# drawHeatmap2(x = tujuh, bicResult = tujuh.Questord, number = 1)

B.7 The Bimax Bicluster algorithm BCrepBimax

Performs Bimax Biclustering based on the framework by Prelic et. al.(2006). It searches for submatrices of ones in a logical matrix. Uses the original C code of the authors.

tujuh.CrepBimax <- biclust(tujuh, method=BCrepBimax())

tujuh.CrepBimax
## 
## An object of class Biclust 
## 
## call:
##  biclust(x = tujuh, method = BCrepBimax())
## 
## There was no cluster found
#drawHeatmap2(x = tujuh, bicResult = tujuh.CrepBimax, number = 1)

B.8 The Spectral Bicluster algorithm BCSpectral

Performs Spectral Biclustering as described in Kluger et al., 2003. Spectral biclustering supposes that normalized microarray data matrices have a checkerboard structure that can be discovered by the use of svd decomposition in eigenvectors, applied to genes (rows) and conditions (columns).

tujuh.spectral <- biclust(tujuh, method=BCSpectral())

tujuh.spectral
## 
## An object of class Biclust 
## 
## call:
##  biclust(x = tujuh, method = BCSpectral())
## 
## Number of Clusters found:  3 
## 
## First  3  Cluster sizes:
##                    BC 1 BC 2 BC 3
## Number of Rows:       5    5    5
## Number of Columns:    5    3    3
drawHeatmap2(x = tujuh, bicResult = tujuh.spectral, number = 1) 

B.9 The Xmotifs Bicluster algorithm BCXmotifs

Performs XMotifs Biclustering based on the framework by Murali and Kasif (2003). Searches for a submatrix where each row as a similar motif through all columns. The Algorihm needs a discret matrix to perform.

tujuh.motif <- biclust(tujuh, method=BCXmotifs())

tujuh.motif
## 
## An object of class Biclust 
## 
## call:
##  biclust(x = tujuh, method = BCXmotifs())
## 
## There was one cluster found with
##   3 Rows and  6 columns
drawHeatmap2(x = tujuh, bicResult = tujuh.motif, number = 1) 

C. biclust pada data BicatYeast

C.1 The Bimax Bicluster algorithm BCBimax

BicatYeast.bimax <- biclust(BicatYeast, method=BCBimax())

BicatYeast.bimax
## 
## An object of class Biclust 
## 
## call:
##  biclust(x = BicatYeast, method = BCBimax())
## 
## Number of Clusters found:  100 
## 
## First  5  Cluster sizes:
##                    BC 1 BC 2 BC 3 BC 4 BC 5
## Number of Rows:      18   96   26  107   20
## Number of Columns:    2    2    2    2    2
drawHeatmap2(x = BicatYeast, bicResult = BicatYeast.bimax, number = 1) 

C.2 The CC Bicluster algorithm BCCC

BicatYeast.cc <- biclust(BicatYeast, method=BCCC())

BicatYeast.cc
## 
## An object of class Biclust 
## 
## call:
##  biclust(x = BicatYeast, method = BCCC())
## 
## There was one cluster found with
##   419 Rows and  70 columns
drawHeatmap2(x = BicatYeast, bicResult = BicatYeast.cc, number = 1) 

C.3 The Plaid Model Bicluster algorithm BCPlaid

set.seed(1) #Kadang random, perlu buat seed.
BicatYeast.plaid <- biclust(x=BicatYeast, method=BCPlaid())
## layer: 0 
##  1224.87
## layer: 1 
## [1]   0 153  14
## [1]   1 141  14
## [1]   2 134  14
## [1]   3 131  14
## [1]   4 130  14
## [1]   5 129  14
## [1]   6 125  14
## [1]   7 122  14
## [1]   8 120  14
## [1]   9 119  14
## [1]  30 119  14
## [1] 31 24 14
## [1] 32 24  7
## [1] 33 23  7
## [1] 34 23  7
## [1] 35 23  7
## [1] 60 23  7
## [1] 10
## [1] 859.7717   0.0000   0.0000   0.0000
## back fitting 2 times
## layer: 2 
## [1]   0 171  11
## [1]   1 164  11
## [1]   2 163  11
## [1]   3 162  11
## [1]  30 162  11
## [1] 31 30 11
## [1] 32 30  8
## [1] 33 29  8
## [1] 34 29  8
## [1] 35 29  8
## [1] 60 29  8
## [1] 4
## [1] 591.8997   0.0000   0.0000   0.0000
## back fitting 2 times
## layer: 3 
## [1]   0 176  15
## [1]   1 147  14
## [1]   2 131  14
## [1]   3 129  14
## [1]   4 126  14
## [1]  30 126  14
## [1] "Zero residual degrees of freedom"
## [1] 31  1 14
## [1] "Zero residual degrees of freedom"
## [1] 32  1 14
## [1] 33  0 14
## [1] 34
## [1] 0 0 0 0
##      
## Layer Rows Cols  Df      SS    MS Convergence Rows Released Cols Released
##     0  419   70 488 1934.97  3.97          NA            NA            NA
##     1   23    7  29 1213.50 41.84           1            96             7
##     2   29    8  36  846.65 23.52           1           133             3
BicatYeast.plaid
## 
## An object of class Biclust 
## 
## call:
##  biclust(x = BicatYeast, method = BCPlaid())
## 
## Number of Clusters found:  2 
## 
## First  2  Cluster sizes:
##                    BC 1 BC 2
## Number of Rows:      23   29
## Number of Columns:    7    8
drawHeatmap2(x = BicatYeast, bicResult = BicatYeast.plaid, number = 1)

C.4 The Questmotif Bicluster algorithm BCQuest

BicatYeast.Quest <- biclust(BicatYeast, method=BCQuest())

BicatYeast.Quest
## 
## An object of class Biclust 
## 
## call:
##  biclust(x = BicatYeast, method = BCQuest())
## 
## There was no cluster found
#drawHeatmap2(x = BicatYeast, bicResult = BicatYeast.Quest, number = 1)

C.5 The Questmotif Bicluster algorithm BCQuestmet

BicatYeast.Questmet <- biclust(BicatYeast, method=BCQuestmet())

BicatYeast.Questmet
## 
## An object of class Biclust 
## 
## call:
##  biclust(x = BicatYeast, method = BCQuestmet())
## 
## Number of Clusters found:  10 
## 
## First  5  Cluster sizes:
##                    BC 1 BC 2 BC 3 BC 4 BC 5
## Number of Rows:      95   59   64   49   21
## Number of Columns:   23   20   15   12   15
drawHeatmap2(x = BicatYeast, bicResult = BicatYeast.Questmet, number = 1)

C.6 The Questmotif Bicluster algorithm BCQuestord

BicatYeast.Questord <- biclust(BicatYeast, method=BCQuestord())

BicatYeast.Questord
## 
## An object of class Biclust 
## 
## call:
##  biclust(x = BicatYeast, method = BCQuestord())
## 
## Number of Clusters found:  10 
## 
## First  5  Cluster sizes:
##                    BC 1 BC 2 BC 3 BC 4 BC 5
## Number of Rows:     153   49   32   41   18
## Number of Columns:   30   28   34   27   27
drawHeatmap2(x = BicatYeast, bicResult = BicatYeast.Questord, number = 1)

C.7 The Bimax Bicluster algorithm BCrepBimax

BicatYeast.CrepBimax <- biclust(BicatYeast, method=BCrepBimax())

BicatYeast.CrepBimax
## 
## An object of class Biclust 
## 
## call:
##  biclust(x = BicatYeast, method = BCrepBimax())
## 
## Number of Clusters found:  100 
## 
## First  5  Cluster sizes:
##                    BC 1 BC 2 BC 3 BC 4 BC 5
## Number of Rows:      24   14   10    9    5
## Number of Columns:   11   11   11   11   11
drawHeatmap2(x = BicatYeast, bicResult = BicatYeast.CrepBimax, number = 1)

C.8 The Spectral Bicluster algorithm BCSpectral

BicatYeast.spectral <- biclust(BicatYeast, method=BCSpectral())
## Warning in spectral(x, normalization, numberOfEigenvalues, minr, minc,
## withinVar): No biclusters found
BicatYeast.spectral
## 
## An object of class Biclust 
## 
## call:
##  biclust(x = BicatYeast, method = BCSpectral())
## 
## There was no cluster found
# drawHeatmap2(x = BicatYeast, bicResult = BicatYeast.spectral, number = 1) 

C.9 The Xmotifs Bicluster algorithm BCXmotifs

BicatYeast.motif <- biclust(BicatYeast, method=BCXmotifs())

BicatYeast.motif
## 
## An object of class Biclust 
## 
## call:
##  biclust(x = BicatYeast, method = BCXmotifs())
## 
## There was no cluster found
#drawHeatmap2(x = BicatYeast, bicResult = BicatYeast.motif, number = 1) 

  1. IPB University - Badan Informasi Geospasial, ↩︎

  2. IPB University - Badan Pusat Statistik, ↩︎

  3. IPB University - Badan Pusat Statistik, ↩︎