Анализ генной онтологии (GO) для списка генов (с ENTREZID) в R?

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

У меня есть список генов (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-анализа. Я не уверен, что это правильный способ сделать это. вот мое решение:

x <- 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 как столбец function/GO.

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

1 ответ

Решение

РЕДАКТИРОВАТЬ: есть новый Биоинформатика SE (в настоящее время в бета-режиме).


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

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

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

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

В вашем случае непосредственно из виньетки biomaRt - задача 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=' ; '))
)


Редактировать:

Если вы хотите запросить предыдущую версию базы данных 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, ваш список генов слишком короткий.

Другие вопросы по тегам