我有一个表达式集矩阵,其中行名是我认为是格式的 GENCODE ID,例如“ENSG00000000003.14”“ENSG00000000457.13”“ENSG00000000005.5”等等。我想将这些转换为gene_symbol,但我不确定最好的方法,特别是因为我认为是“.14”或“.13”版本。我是否应该首先修剪点后的所有 ID,然后使用 biomaRt 进行转换?如果是这样,最有效的方法是什么?有没有更好的方法来获取gene_symbol?
非常感谢你的帮助
我有一个表达式集矩阵,其中行名是我认为是格式的 GENCODE ID,例如“ENSG00000000003.14”“ENSG00000000457.13”“ENSG00000000005.5”等等。我想将这些转换为gene_symbol,但我不确定最好的方法,特别是因为我认为是“.14”或“.13”版本。我是否应该首先修剪点后的所有 ID,然后使用 biomaRt 进行转换?如果是这样,最有效的方法是什么?有没有更好的方法来获取gene_symbol?
非常感谢你的帮助
如前所述,这些是 ENSEMBL ID。首先,您需要检查您的表达式集对象并确定它用于注释的数据库。有时,ID 可能会映射到较新(更新的)注释数据库中的不同基因符号。
无论如何,假设 ID 属于人类,您可以使用此代码非常轻松地获取基因符号。
library(org.Hs.eg.db) ## Annotation DB
library(AnnotationDbi)
ids <- c("ENSG00000000003", "ENSG00000000457","ENSG00000000005")
gene_symbol <- select(org.Hs.eg.db,keys = ids,columns = "SYMBOL",keytype = "ENSEMBL")
您可以尝试使用 org.Hs.eg.db 或您的表达式集使用的确切 db(如果该信息可用)。
谢谢您的帮助。我的问题是去掉每个 ensembl 基因 id 末尾的 .XX 版本。我认为有一种更直接的方法可以从具有版本号(基因代码基本注释)的整体基因 id 到基因符号。最后,我做了以下事情,似乎正在工作:
df$ensembl_gene_id <- gsub('\\..+$', '', df$ensembl_gene_id)
library(biomaRt)
mart <- useDataset("hsapiens_gene_ensembl", useMart("ensembl"))
genes <- df$ensembl_gene_id
symbol <- getBM(filters = "ensembl_gene_id",
attributes = c("ensembl_gene_id","hgnc_symbol"),
values = genes,
mart = mart)
df <- merge(x = symbol,
y = df,
by.x="ensembl_gene_id",
by.y="ensembl_gene_id")