R - Использование biomaRt / getBM генерирует список из 55 000+ генов вместо ~ 15 000, которые я ввожу в качестве фрейма данных под "значениями" - PullRequest
0 голосов
/ 20 ноября 2018

Я скачал обширный набор данных из NIH GEO и пытаюсь преобразовать имена Ensembl в первом столбце в символы MGI

Таблица, которую я назвал SOD, показана ниже

Данные SOD - Всего строк = 15 396

Я использовал следующий код:

setwd("C:/R/Project")
if (!requireNamespace("BiocManager", quietly = TRUE))
  install.packages("BiocManager")
BiocManager::install("biomaRt", version = "3.8")
library(BiocManager)
library(biomaRt)
SOD<-read.csv("Static Organoid Data.csv")
names_only<-data.frame(SOD[,1])
mart <- useMart(biomart = "ensembl", dataset = "mmusculus_gene_ensembl")
Gene_list <- getBM(attributes = c("ensembl_gene_id", "mgi_symbol"),
                   values     = names_only, 
                   mart       = mart)
View(Gene_list)

Это выводит список символов ансамбля и MGI с более чем 55 000 строк.

Я попытался добавить filter = "ensembl_gene_id в функцию getBM, но вывод содержит 0 строк и 0 столбцов.

Что я здесь не так делаю?

1 Ответ

0 голосов
/ 20 ноября 2018

Ваши идентификаторы ансамбля имеют версии, то есть они имеют форму, в которой они имеют .#, тогда как идентификаторы ансамблей в biomart - нет.Чтобы это исправить, вам нужно удалить .# в конце имен следующим образом:

names_only <- gsub("\\.*","",data.frame(SOD[,1]))
mart <- useMart(biomart = "ensembl", dataset = "mmusculus_gene_ensembl")
Gene_list <- getBM(attributes = c("ensembl_gene_id", "mgi_symbol"),
                   values     = names_only,
                   filter     = "ensembl_gene_id",
                   mart       = mart)
...