R 中的双聚类
Biclustering in R
我想在 R 中的二进制矩阵上应用 byclustering。有一个名为 "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" R包的biclust函数:
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 是红色,0 是绿色。
- 我想查看原始矩阵的行和列。现在只显示特定集群的行号和列号(使用 drawHeatMap),并且在整个集群矩阵(drawHeatMap2)中没有显示行号和列号。
- 我想要一个有序的聚类矩阵。现在只有在 drawHeatmap2 中指定的簇显示在左上角,但对于矩阵的其余部分,我还希望其他簇从左上角到右下角很好地排列矩阵的其余部分。
是否可以进行这些更改(使用 "biclust" 软件包)?还是用 R 用另一种方式更好?
修改biclust源码包中的drawHeatmap()函数:
- 追踪("drawHeatmap",编辑=真)
- 更改以下内容:
(a) 切换红色和绿色 - 在调用 rgb()
时切换 rvect 和 gvect
(b) 原始行名而不是新行名 - 将 'labels=' 更改为 '=bicCols' 和 '=bicRows'。
- 打印行号:在关于行的轴之前:cat(bicRows)。
- 将行号保存到文件 - 在关于行的轴之前:write(bicRows, file="FILENAME.txt")
我想在 R 中的二进制矩阵上应用 byclustering。有一个名为 "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" R包的biclust函数:
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 是红色,0 是绿色。
- 我想查看原始矩阵的行和列。现在只显示特定集群的行号和列号(使用 drawHeatMap),并且在整个集群矩阵(drawHeatMap2)中没有显示行号和列号。
- 我想要一个有序的聚类矩阵。现在只有在 drawHeatmap2 中指定的簇显示在左上角,但对于矩阵的其余部分,我还希望其他簇从左上角到右下角很好地排列矩阵的其余部分。
是否可以进行这些更改(使用 "biclust" 软件包)?还是用 R 用另一种方式更好?
修改biclust源码包中的drawHeatmap()函数:
- 追踪("drawHeatmap",编辑=真)
- 更改以下内容:
(a) 切换红色和绿色 - 在调用 rgb()
时切换 rvect 和 gvect (b) 原始行名而不是新行名 - 将 'labels=' 更改为 '=bicCols' 和 '=bicRows'。 - 打印行号:在关于行的轴之前:cat(bicRows)。
- 将行号保存到文件 - 在关于行的轴之前:write(bicRows, file="FILENAME.txt")