Получить родительские термины GO вектора терминов GO?

У меня есть вектор GOID, которые являются конкретными идентификаторами GO, полученными в результате анализа обогащения. Я хочу сгруппировать свои GOID по их родительскому термину GOID. Я использовал GOstats для анализа обогащения и заметил, что существует индуцируемый TermGraph, который выводит объект graphNEL прямых дочерних элементов и родительских направлений запрашиваемых вами GOID. Если вы установите parent=TRUE и children=FALSE, ваш график будет включать только те родительские узлы, которые относятся к вашему запросу GOID.

Однако как я могу извлечь имена узлов этих родительских узлов??? См. код ниже:

gene.ids <- c(51141, 84968, 140850, 388289, 406994, 677828, 693217, 100287428, 
             100505685, 100506540, 101926966, 101927244, 101928659)
require(RnBeads)
uids <- rnb.get.annotation("genes")
uids <- sort(unique(as.numeric(na.omit(unlist(sapply(unlist(uids)$entrezID, 
        function(i) strsplit(i, split=";")))))))
params <- new("GOHyperGParams", annotation = "org.Hs.eg.db", geneIds = gene.ids, 
             universeGeneIds = uids, ontology = "BP", conditional = TRUE, 
             testDirection = "over")

res <- tryCatch({ hyper.genes <- hyperGTest(params) }, error = function(ee) { print("Errorfests.") })

go.ids <- summary(hyper.genes)[,"GOBPID"]
result <- inducedTermGraph(hyper.genes, id=go.ids, children=FALSE, parents=TRUE)
nAttrs <- list()
z <- attributes(result)$nodes
    names(z) <- nodes(result)
    nAttrs$label <- z
plot(result, nodeAttrs=nAttrs)
Что это за код? Должен ли быть этот разрыв форматирования? Есть длинные решения, которые я могу придумать с Biopython. Не могли бы вы четко указать свой вклад и то, что вы хотите, чтобы ваш вывод был.
Если вы просто хотите узнать родительские узлы списка терминов GO, вы можете использовать GOBPPARENTS в пакете GO.db Bioconductor (который вы используете при использовании GOstats). Это может быть лучшим способом программной обработки этой информации.
@ddiez у вас есть пример кода, что вы имеете в виду? например, если у меня есть: terms = c("GO:0001071","GO:0005886"), я не могу просто запустить это: GOMFPARENTS$terms или GOMFPARENTS(terms).
@RickBeeloo смотрите мой ответ ниже с некоторым кодом. Первая проблема — вы смешиваете онтологии (GO:0001071 для MF и GO:0005886 для CC). 2) Вы не можете получить доступ к GOMFPARENTS с помощью $такой переменной. 3) GOMFPARENTS не является функцией, поэтому использование ()тоже не работает.

Ответы (2)

Чтобы ответить на комментарий @RickBeeloo выше, я решил включить ответ с подробным кодом. По сути, чтобы получить предков любого термина Gene Ontology (GO) с помощью пакета BioconductorGO.db , нам нужен вызов объекта AnnDbBimapдля адекватной онтологии. Например, если мы хотим это для молекулярной функции (MF), мы будем использовать, GOMFANCESTORкак в примере:

library(GO.db)

terms <- c("GO:0008022","GO:0001071")
as.list(GOMFANCESTOR[terms])

$`GO:0008022`
[1] "GO:0005515" "GO:0003674" "GO:0005488" "all"       

$`GO:0001071`
[1] "GO:0003674" "all"       

Аналогичные объекты могут быть использованы для Биологического процесса (БП) и Клеточной компартмента (КК): GOBPANCESTORи GOCCANCESTOR. Единственным ограничением является то, что вы не можете смешивать термины из разных онтологий (т.е. все BP, MF или CC). Существуют аналогичные варианты получения дочерних элементов любого заданного термина GO (например, GOCCCHILDREN). Описание каждого термина можно получить с помощью:

Term(GOTERM[terms])
                   GO:0008022                                           GO:0001071 
 "protein C-terminus binding" "nucleic acid binding transcription factor activity" 

Все доступные сопоставления могут быть перечислены по телефону GO():

GO()

Quality control information for GO:


This package has the following mappings:

GOBPANCESTOR has 28477 mapped keys (of 28477 keys)
GOBPCHILDREN has 16829 mapped keys (of 28477 keys)
GOBPOFFSPRING has 16829 mapped keys (of 28477 keys)
GOBPPARENTS has 28477 mapped keys (of 28477 keys)
GOCCANCESTOR has 3897 mapped keys (of 3897 keys)
GOCCCHILDREN has 1317 mapped keys (of 3897 keys)
GOCCOFFSPRING has 1317 mapped keys (of 3897 keys)
GOCCPARENTS has 3897 mapped keys (of 3897 keys)
GOMFANCESTOR has 10021 mapped keys (of 10021 keys)
GOMFCHILDREN has 2046 mapped keys (of 10021 keys)
GOMFOFFSPRING has 2046 mapped keys (of 10021 keys)
GOMFPARENTS has 10021 mapped keys (of 10021 keys)
GOOBSOLETE has 2012 mapped keys (of 2012 keys)
GOTERM has 42396 mapped keys (of 42396 keys)


Additional Information about this package:

DB schema: GO_DB
DB schema version: 2.1
Date for GO data: 20160305
Спасибо! У меня есть один вопрос, который вы используете: as.list(GOMFANCESTOR[terms]) это даст две строки вывода. Но какая из этих строк является родительской для обоих терминов? @ddiez
Результатом является именованный список, имена которого следуют $в результате (например, $GO:0008022``). Имена — это идентификаторы исходных терминов GO в переменной terms. Каждая строка показывает предков соответствующего идентификатора. Например, для GO:0008022(первый идентификатор в терминах ) вы получите: "GO:0005515" "GO:0003674" "GO:0005488" "all".
Итак, вам нужно сравнить их вручную, чтобы получить общий родитель обоих идентификаторов? @ddiez
Я разместил вопрос по этой теме: stackoverflow.com/questions/39879936/… может быть, вам интересно ответить на него @ddiez

Оказывается, если вы установите font.size в объекте graphNEL, вы можете увидеть имена узлов в графике индуцируемого TermGraph.

Установка font.size на> 20 сработала для меня!