1

我最近使用 30 个不同的 RNA-seq 样本制作了一个无监督的层次聚类热图。x 轴标记为每个样本的名称,y 轴显示以小鼠 Ensembl ID 表示的 100 个最可变基因(例如 ENSMUSG00000020573)。

我只是想知道在我将 Ensembl ID 输入到 pheatmap() 函数之前,是否有办法用基因名称(例如 Pik3cg)替换 Ensembl ID。

我的输入表是:

                        WT_Animal1      WT_Animal2     WT_Animal3
ENSMUSG00000094652      0.03463869       0.7333992     -0.29986091
ENSMUSG00000006356     -0.64264559      -0.5609578     -0.06037522
ENSMUSG00000019897      0.09159506      -0.1133322     -0.12974861
ENSMUSG00000027790     -0.25124228       1.2871582     -0.92491260
ENSMUSG00000054999     -0.58618795       1.2079283     -0.89929279
ENSMUSG00000072573      0.16812802       0.1058453     -0.16593449 

我使用 colnames(mat) <- c() 手动更改了列名,但我想知道如何使用不同的函数更改行名(Ensembl ID),以便我可以在进一步的图中重现它。

我试图阅读有关使用 biomaRt 和其他软件包的信息,但似乎无法找到一种方法来做到这一点。

任何帮助将非常感激!

4

1 回答 1

0

如果你想使用biomaRt,你可以这样做:

library(biomaRt)

# your example matrix
mat <- structure(list(
    WT_Animal1 = c(0.03463869, -0.64264559, 0.09159506, -0.25124228, -0.58618795, 0.16812802),
    WT_Animal2 = c(0.7333992, -0.5609578, -0.1133322, 1.2871582, 1.2079283, 0.1058453),
    WT_Animal3 = c(-0.29986091, -0.06037522, -0.12974861, -0.9249126, -0.89929279, -0.16593449)),
    class = "data.frame", 
    row.names = c("ENSMUSG00000094652", "ENSMUSG00000006356", "ENSMUSG00000019897", 
                  "ENSMUSG00000027790", "ENSMUSG00000054999",  "ENSMUSG00000072573"))

mart <- useMart(biomart = "ensembl", dataset = "mmusculus_gene_ensembl")
symb <- getBM(attributes = c("ensembl_gene_id","mgi_symbol"),
             filters = "ensembl_gene_id", values = rownames(mat),
             mart = mart)
symbs <- symb$mgi_symbol[match(rownames(mat), symb$ensembl_gene_id, nomatch = NA)]
heatmap(as.matrix(mat), labRow = symbs, margins = c(12, 10))

reprex 包(v0.3.0)于 2020 年 7 月 7 日创建

于 2020-07-07T21:52:20.583 回答