2016-07-21 9 views
2

Я хочу применить byclustering на двоичной матрице в R. Существует хороший пакет под названием «biclust», который доступен, но он отображает не все, что я хочу.Biclustering in R

У меня есть бинарная матрица, которая выглядит следующим образом:

1 0 0 1 0 1 0 
0 0 0 0 0 0 0 
0 0 1 0 1 0 0 
1 0 0 1 0 1 0 
0 0 1 0 1 0 0 
1 0 0 1 0 1 0 
0 0 0 0 0 0 0 

И моя цель состоит в том, чтобы bicluster (и дисплей), это следующим образом (может быть окрашена):

1 1 1 0 0 0 0 
1 1 1 0 0 0 0 
1 1 1 0 0 0 0 
0 0 0 1 1 0 0 
0 0 0 1 1 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 

Настройка код:

# install.packages("biclust") (if necessary) 
library("biclust") 

testMatrix <- matrix(c(1,0,0,1,0,1,0, 
         0,0,0,0,0,0,0, 
         0,0,1,0,1,0,0, 
         1,0,0,1,0,1,0, 
         0,0,1,0,1,0,0, 
         1,0,0,1,0,1,0, 
         0,0,0,0,0,0,0), 
        nrow = 7, 
        ncol = 7, 
        byrow = TRUE) 

Я применил функцию biclust из "biclust" R пакет:

testCluster <- biclust(x = testMatrix, method=BCBimax()) 

и на самом деле я получаю два кластера ожидается:

An object of class Biclust 
call: 
biclust(x = testMatrix, method = BCBimax()) 
Number of Clusters found: 2 
First 2 Cluster sizes: 
         BC 1 BC 2 
Number of Rows:  3  2 
Number of Columns: 3  2 

Я могу как отобразить кластеры отдельно:

drawHeatmap(x = testMatrix, bicResult = testCluster, number = 1) # shown in picture below 
drawHeatmap(x = testMatrix, bicResult = testCluster, number = 2) 

Picture

и я могу показать все кластерная матрица (один кластер в верхнем левом углу):

drawHeatmap2(x = testMatrix, bicResult = testCluster, number = 1) # shown in picture below 
drawHeatmap2(x = testMatrix, bicResult = testCluster, number = 2) 

Picture

До сих пор так хорошо, но я хочу:

  1. Цвета дисплея включается. Теперь 1 красный, а 0 - зеленый.
  2. Я хочу видеть строки и столбцы исходной матрицы. Теперь отображаются только номера строк и номера столбцов конкретного кластера (с drawHeatMap), и не отображаются номера строк и столбцов во всей кластерной матрице (drawHeatMap2).
  3. Я хочу красиво упорядоченную кластерную матрицу. Теперь в верхнем левом углу отображается только кластер, указанный в drawHeatmap2, но для остальной части матрицы я также хочу, чтобы остальные кластеры красиво упорядочивались в верхнем левом углу в нижнем правом углу для остальной части матрицы.

Возможны ли эти изменения (с пакетом «biclust»)? Или лучше сделать это по-другому с R?

+0

Используйте * источник * пакета bicluster –

+0

@RobbertRaats, вы выяснить, как это может быть – Turcia

+1

@Turcia, я изменил Funtion drawHeatmap() в пакете biclust источник пак: 1. trace («drawHeatmap», edit = TRUE) 2. Измените следующее: (a) Переключите красный и зеленый - переключите rvect и gvect в вызов rgb() (b) Оригинальные имена ростов вместо нового - измените «метки = to '= bicCols' и '= bicRows' 3. Печатать рябины: перед осью вокруг строк: cat (bicRows) 4. Сохранить рябины для файла - перед осью о строках: write (bicRows, file = "FILENAME.txt") –

ответ

1

Изменение drawHeatmap() Funtion в пакете источника пак biclust:

  1. след ("drawHeatmap", редактировать = TRUE)
  2. Изменить следующее:
    (а) Переключатель красный и зеленый - переключите rvect и gvect в вызов rgb()
    (b) Оригинальные имена ростов вместо нового - измените 'метки =' на '= bicCols' и '= bicRows'.
  3. Print rownumbers: перед осью о рядах: cat (bicRows).
  4. Сохраните рулонах в файл - перед осью о строках: напишите (bicRows, file = "FILENAME.! .txt ")