Бикластеризация в R

Я хочу применить кластеризацию к двоичной матрице в R. Имеется хороший пакет под названием "biclust", но он делает и отображает не все, что я хочу.

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

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

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

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)

Картина

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

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

Картина

Пока все хорошо, но я хочу:

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

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

1 ответ

Решение

Измените функцию drawHeatmap() в пакете исходного кода biclust:

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