Как я могу преобразовать Ensembl ID в символ гена в 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! ведь добавить нечего!

Заранее спасибо,


person user3576287    schedule 16.02.2015    source источник


Ответы (2)


Это связано с тем, что значения в столбце 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")
person NicE    schedule 16.02.2015
comment
Вы также забыли переключить фильтры на ensembl_peptide_id. - person cdeterman; 16.02.2015
comment
спасибо, поменял атрибуты вместо фильтров, поменял сейчас - person NicE; 16.02.2015

Я попробовал несколько пакетов R (mygene, org.Hs.eg.db, biomaRt, EnsDb.Hsapiens.v79) для преобразования Ensembl.gene в gene.symbol и обнаружил, что база данных пакетов / генов EnsDb.Hsapiens.v79 обеспечивает наилучшее качество конвертации (с точки зрения возможности конвертировать большую часть Ensembl.gene в gene.symbol).

Установите пакет, если вы не установили его, выполнив следующую команду: BiocManager :: install ("EnsDb.Hsapiens.v79")

library(EnsDb.Hsapiens.v79)

# 1. Convert from ensembl.gene to gene.symbol
ensembl.genes <- c("ENSG00000150676", "ENSG00000099308", "ENSG00000142676", "ENSG00000180776", "ENSG00000108848", "ENSG00000277370", "ENSG00000103811", "ENSG00000101473")

geneIDs1 <- ensembldb::select(EnsDb.Hsapiens.v79, keys= ensembl.genes, keytype = "GENEID", columns = c("SYMBOL","GENEID"))

# 2. Convert from gene.symbol to ensembl.gene
geneSymbols <-  c('DDX26B','CCDC83',  'MAST3', 'RPL11', 'ZDHHC20',  'LUC7L3',  'SNORD49A',  'CTSH', 'ACOT8')

geneIDs2 <- ensembldb::select(EnsDb.Hsapiens.v79, keys= geneSymbols, keytype = "SYMBOL", columns = c("SYMBOL","GENEID"))

Другие доступные пакеты R / база данных генов для преобразования могут ссылаться на эту страницу GitHub.

Мой ответ на аналогичный вопрос в bioinformatics.stackexchange < / а>.

person Good Will    schedule 28.11.2019