如何在 R 中将共识序列绘制为二进制热图
How can I plot consensus sequences as a binary heatmap in R
我有很多氨基酸序列,例如我进行多序列比对的 fasta 格式。我试图将二进制代码之类的东西绘制为热图。例如,如果它有变化,它将是红色的,如果没有变化,它将是黄色的。
我从 ggtree
包中遇到 msaplot
。我还为此检查了 ggmsa
包。但到目前为止,我没有得到我想要的。
所以基本上我想:
将多序列比对更改为二进制矩阵(如果氨基与参考序列不同,绘制 x,如果不是 y)
绘制为热图
对于不知道的人来说,多序列比对是这样的。
我知道我应该提供某种类型的数据示例,但我不确定如何创建多序列比对示例
如果你安装 ggmsa
你可以在 r 中有一个数据和绘图的例子:
protein_sequences <- system.file("extdata", "sample.fasta", package = "ggmsa")
ggmsa(protein_sequences, start = 265, end = 300)
我们在对齐中读到:
library(Biostrings)
library(ggmsa)
protein_sequences <- system.file("extdata", "sample.fasta", package = "ggmsa")
aln = readAAMultipleAlignment(protein_sequences)
ggmsa(protein_sequences, start = 265, end = 300)
将参考设置为第一个序列,一些Rattus,您也可以使用consensusString()
的共识:
aln = unmasked(aln)
names(aln)[1]
[1] "PH4H_Rattus_norvegicus"
ref = aln[1]
这里我们遍历序列并生成序列与参考相同的二进制文件:
bm = sapply(1:length(aln),function(i){
as.numeric(as.matrix(aln[i])==as.matrix(ref))
})
bm = t(bm)
rownames(bm) = names(aln)
你在上面看到的情节有颠倒的顺序,所以为了形象化我们颠倒它的同一件事,并且还在 265 - 300 上设置子集:
library(pheatmap)
pheatmap(bm[nrow(bm):1,265:300],cluster_rows=FALSE,cluster_cols=FALSE)
最后一行是 Rattus,参考文献,以及任何与此类似的内容,如您在上面的比对中所见,最后 4 个序列是相同的。
我有很多氨基酸序列,例如我进行多序列比对的 fasta 格式。我试图将二进制代码之类的东西绘制为热图。例如,如果它有变化,它将是红色的,如果没有变化,它将是黄色的。
我从 ggtree
包中遇到 msaplot
。我还为此检查了 ggmsa
包。但到目前为止,我没有得到我想要的。
所以基本上我想:
将多序列比对更改为二进制矩阵(如果氨基与参考序列不同,绘制 x,如果不是 y)
绘制为热图
对于不知道的人来说,多序列比对是这样的。
我知道我应该提供某种类型的数据示例,但我不确定如何创建多序列比对示例
如果你安装 ggmsa
你可以在 r 中有一个数据和绘图的例子:
protein_sequences <- system.file("extdata", "sample.fasta", package = "ggmsa")
ggmsa(protein_sequences, start = 265, end = 300)
我们在对齐中读到:
library(Biostrings)
library(ggmsa)
protein_sequences <- system.file("extdata", "sample.fasta", package = "ggmsa")
aln = readAAMultipleAlignment(protein_sequences)
ggmsa(protein_sequences, start = 265, end = 300)
将参考设置为第一个序列,一些Rattus,您也可以使用consensusString()
的共识:
aln = unmasked(aln)
names(aln)[1]
[1] "PH4H_Rattus_norvegicus"
ref = aln[1]
这里我们遍历序列并生成序列与参考相同的二进制文件:
bm = sapply(1:length(aln),function(i){
as.numeric(as.matrix(aln[i])==as.matrix(ref))
})
bm = t(bm)
rownames(bm) = names(aln)
你在上面看到的情节有颠倒的顺序,所以为了形象化我们颠倒它的同一件事,并且还在 265 - 300 上设置子集:
library(pheatmap)
pheatmap(bm[nrow(bm):1,265:300],cluster_rows=FALSE,cluster_cols=FALSE)
最后一行是 Rattus,参考文献,以及任何与此类似的内容,如您在上面的比对中所见,最后 4 个序列是相同的。