2016-02-09 6 views
2

Я очень новичок в анализе GO, и я немного запутался, как сделать это в моем списке генов.Анализ генной онтологии (GO) для списка генов (с ENTREZID) в R?

У меня есть список генов (N = 10):

gene_list 

    SYMBOL ENTREZID        GENENAME 
1 AFAP1 60312 actin filament associated protein 1 
2 ANAPC11 51529 anaphase promoting complex subunit 11 
3 ANAPC5 51433 anaphase promoting complex subunit 5 
4  ATL2 64225      atlastin GTPase 2 
5 AURKA  6790      aurora kinase A 
6 CCNB2  9133        cyclin B2 
7 CCND2  894        cyclin D2 
8 CDCA2 157313  cell division cycle associated 2 
9 CDCA7 83879  cell division cycle associated 7 
10 CDCA7L 55536 cell division cycle associated 7-like 

, и я просто хочу найти свою функцию, и я предложил использовать инструменты анализа GO. Я не уверен, что это правильный способ сделать это. вот мое решение:

< х - org.Hs.egGO

# Get the entrez gene identifiers that are mapped to a GO ID 

    xx<- as.list(x[gene_list$ENTREZID]) 

Итак, у меня есть список с EntrezID, присвоенные несколькими членами GO для каждого генов. , например:

> xx$`60312` 
$`GO:0009966` 
$`GO:0009966`$GOID 
[1] "GO:0009966" 

$`GO:0009966`$Evidence 
[1] "IEA" 

$`GO:0009966`$Ontology 
[1] "BP" 


$`GO:0051493` 
$`GO:0051493`$GOID 
[1] "GO:0051493" 

$`GO:0051493`$Evidence 
[1] "IEA" 

$`GO:0051493`$Ontology 
[1] "BP" 

Мой вопрос: как я могу найти функцию для каждого из этих генов в более простой способ, и я подумал, что я делаю это правильно или? , потому что я хочу добавить функцию в gene_list в качестве столбца функции/GO.

Спасибо заранее,

+0

Вы можете найти полезную информацию на https://www.bioconductor.org/help/workflows/ – JeremyS

ответ

3

EDIT: Существует новый Bioinformatics SE (в настоящее время в бета-режиме).


Я надеюсь, что я получаю то, что вы стремитесь здесь.

Кстати, для биоинформатики связанных тема, вы также можете взглянуть на biostar, которые имеют ту же цель, как SO, но и для биоинформатики

Если вы просто хотите иметь список всех функций, связанные с геном, вы может запрашивать базу данных, такую ​​как ENSEMBl через пакет bioconductor biomaRt, который является API для запроса базы данных biomart. Для выполнения запроса вам понадобится интернет.

Bioconductor предлагает пакеты для исследований в области биоинформатики, и эти пакеты обычно поставляются вместе с хорошими виньетками, которые позволяют вам пройти через различные этапы анализа (и даже подчеркнуть, как вы должны проектировать свои данные или какие-то тогда были бы ловушками).

В вашем случае, непосредственно из biomaRt vignette - задачи 2, в частности:

Примечание: Есть несколько более быстрый способ, что один я докладывал ниже:

# load the library 
library("biomaRt") 

# I prefer ensembl so that the one I will query, but you can 
# query other bases, try out: listMarts() 
ensembl=useMart("ensembl") 

# as it seems that you are looking for human genes: 
ensembl = useDataset("hsapiens_gene_ensembl",mart=ensembl) 
# if you want other model organisms have a look at: 
#listDatasets(ensembl) 

Вам нужно создать запрос (ваш список идентификаторов ENTREZ). Чтобы узнать, какие фильтры вы хотите задать, выполните следующие действия:

filters = listFilters(ensembl) 

И тогда вы хотите получить атрибуты: номер GO и описание.Чтобы увидеть список доступных атрибутов

attributes = listAttributes(ensembl) 

Для вас, запрос будет выглядеть как-то как:

goids = getBM(

     #you want entrezgene so you know which is what, the GO ID and 
     # name_1006 is actually the identifier of 'Go term name' 
     attributes=c('entrezgene','go_id', 'name_1006'), 

     filters='entrezgene', 
     values=gene_list$ENTREZID, 
     mart=ensembl) 

запросе сам может занять некоторое время.

Тогда вы всегда можете свернуть информацию в двух столбцах (но я не буду рекомендовать ее для чего-либо еще в целях отчетности).

Go.collapsed<-Reduce(rbind,lapply(gene_list$ENTREZID,function(x) 
          tempo<-goids[goids$entrezgene==x,] 
          return(
            data.frame('ENTREZGENE'= x, 
            'Go.ID'= paste(tempo$go_id,collapse=' ; '), 
            'GO.term'=paste(tempo$name_1006,collapse=' ; ')) 
) 


Edit:

Если вы хотите запросить прошлую версию Ensembl базы данных:

ens82<-useMart(host='sep2015.archive.ensembl.org', 
       biomart='ENSEMBL_MART_ENSEMBL', 
       dataset='hsapiens_gene_ensembl') 

, а затем запрос будет:

goids = getBM(attributes=c('entrezgene','go_id', 'name_1006'), 
     filters='entrezgene',values=gene_list$ENTREZID, 
     mart=ens82) 


Однако, если вы имели в виду сделать анализ обогащения GO, ваш список генов слишком короткий.

+0

Возможно, лучший и более элегантный способ свернуть информацию с помощью 'dplyr' – Mitra

+0

Спасибо большое! У меня все еще проблема с getBM, потому что веб-службы BioMart временно недоступны! :/ «Ошибка в значении [[3L]] (cond): Не удалось выполнить веб-сервис BioMart. Проверьте, все ли вы подключены к Интернету. В качестве альтернативы веб-сервис BioMart временно недоступен». – user3576287

+0

@ user3576287 Собственно, да, похоже. Если вы не возражаете использовать несколько более старую версию ансамбля (т. Е. Версию, выпущенную в сентябре 2015 года, а не декабрь 2015 года), она работает. Чтобы извлечь предыдущую версию: 'ens82 <-useMart (host = 'sep2015.archive.ensembl.org', biomart = 'ENSEMBL_MART_ENSEMBL', dataset = 'hsapiens_gene_ensembl')' И тогда в запросе вы должны заменить 'mart = ensembl' by 'mart = ens82' – Mitra