Как я могу преобразовать идентификатор Ensembl в символ гена в R?

У меня есть data.frame, содержащий идентификаторы Ensembl в одном столбце; Я хотел бы найти соответствующие символы генов для значений этого столбца и добавить их в новый столбец в моем кадре данных. Я использовал bioMaRt, но не смог найти ни одного из идентификаторов Ensembl!

Вот мои данные образца (df[1:2,]):

row.names organism    gene
41  Homo-Sapiens ENSP00000335357
115 Homo-Sapiens ENSP00000227378

и я хочу получить что-то вроде этого

row.names organism    gene         id
41  Homo-Sapiens ENSP00000335357   CDKN3
115 Homo-Sapiens ENSP00000227378   HSPA8

и вот мой код:

library('biomaRt')
mart <- useDataset("hsapiens_gene_ensembl", useMart("ensembl"))
genes <- df$genes
df$id <- NA
G_list <- getBM(filters= "ensembl_gene_id", attributes= c("ensembl_gene_id",
"entrezgene", "description"),values=genes,mart= mart)

Затем я получаю это, когда я проверяю G_list

[1] ensembl_gene_id entrezgene      description  <0 rows> (or 0-length row.names)

Так что я не мог добавить G_list в свой df! потому что нечего добавлять!

Спасибо, Advance,

Ответ 1

Это связано с тем, что значения в вашем столбце gene - это не идентификаторы генов, а идентификаторы пептидов (они начинаются с ENSP). Чтобы получить необходимую информацию, попробуйте заменить ensembl_gene_id на ensembl_peptide_id:

G_list <- getBM(filters = "ensembl_peptide_id", 
                attributes = c("ensembl_peptide_id", "entrezgene", "description"),
                values = genes, mart = mart)

Кроме того, что вы действительно ищете, так это hgnc_symbol

Вот полный код, чтобы получить ваш вывод:

library('biomaRt')
mart <- useDataset("hsapiens_gene_ensembl", useMart("ensembl"))
genes <- df$genes
df<-df[,-4]
G_list <- getBM(filters= "ensembl_peptide_id", attributes= c("ensembl_peptide_id","hgnc_symbol"),values=genes,mart= mart)
merge(df,G_list,by.x="gene",by.y="ensembl_peptide_id")