Übergeordnete GO-Begriffe des GO-Begriffsvektors abrufen?

Ich habe einen Vektor von GOIDs, die spezifische GO-IDs sind, die von einer Anreicherungsanalyse ausgegeben werden. Ich möchte meine GOIDs nach ihrem übergeordneten GOID-Begriff gruppieren. Ich habe GOstats verwendet, um meine Anreicherungsanalyse durchzuführen, und ich habe festgestellt, dass es einen ducedTermGraph gibt, der ein graphNEL-Objekt direkter Kinder und direkter Eltern der von Ihnen abgefragten GOIDs ausgibt. Wenn Sie parent=TRUE und children=FALSE setzen, enthält Ihr Diagramm nur übergeordnete Knoten, die sich auf Ihre GOID-Abfrage beziehen.

Wie kann ich jedoch die Knotennamen dieser übergeordneten Knoten extrahieren??? Siehe Code unten:

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)
Was ist dieser Code? Soll diese Formatierungspause da sein? Es gibt langatmige Lösungen, die mir mit Biopython einfallen. Könnten Sie Ihre Eingabe klarstellen und was Ihre Ausgabe sein soll?
Wenn Sie nur die übergeordneten Knoten einer Liste von GO-Begriffen wissen möchten, können Sie GOBPPARENTS im Bioconductor-Paket GO.db verwenden (das Sie verwenden, wenn Sie GOstats verwenden). Dies ist möglicherweise eine bessere Möglichkeit, diese Informationen programmgesteuert zu bearbeiten.
@ddiez hast du ein Codebeispiel dafür, was du meinst? wenn ich zum Beispiel habe: terms = c("GO:0001071","GO:0005886") kann ich nicht einfach Folgendes ausführen: GOMFPARENTS$terms oder GOMFPARENTS(terms).
@RickBeeloo siehe meine Antwort unten mit etwas Code. Das erste Problem besteht darin, dass Sie Ontologien mischen (GO:0001071 ist für MF und GO:0005886 für CC). 2) Sie können auf GOMFPARENTS nicht mit $und auf eine solche Variable zugreifen. 3) GOMFPARENTS ist keine Funktion, daher ()funktioniert die Verwendung auch nicht.

Antworten (2)

Um den obigen Kommentar von @RickBeeloo zu beantworten, habe ich beschlossen, eine Antwort mit einem detaillierten Code einzufügen. Um die Vorfahren eines Genontologie- Begriffs (GO) mit dem Bioconductor- Paket zu erhalten GO.db, benötigen wir grundsätzlich einen Aufruf des AnnDbBimapObjekts für die adäquate Ontologie. Wenn wir es zum Beispiel für Molecular Function (MF) wollen, würden wir GOMFANCESTORes wie im Beispiel verwenden:

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"       

Ähnliche Objekte können für den biologischen Prozess (BP) und das zelluläre Kompartiment (CC) verwendet werden: GOBPANCESTORund GOCCANCESTOR. Die einzige Einschränkung besteht darin, dass Sie Begriffe aus verschiedenen Ontologien (dh alle BP, MF oder CC) nicht mischen können. Es gibt ähnliche Optionen, um die untergeordneten Elemente eines bestimmten GO-Begriffs (z. B. GOCCCHILDREN) zu erhalten. Die Beschreibung der einzelnen Begriffe erhalten Sie mit:

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

Alle verfügbaren Mappings können mit folgendem Aufruf aufgelistet werden 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
Danke schön! Ich habe eine Frage, die Sie verwenden: as.list(GOMFANCESTOR[Terms]) dies wird zwei Ausgabezeilen geben. Aber welche dieser Zeilen ist der Elternteil beider Begriffe? @ddiez
Das Ergebnis ist eine benannte Liste, die Namen folgen $im Ergebnis (zB $GO:0008022``). Die Namen sind die IDs der ursprünglichen GO-Terme in der Variablen terms. Jede Zeile zeigt die Vorfahren der entsprechenden ID. Zum Beispiel erhalten Sie für GO:0008022(erste ID in Begriffen"GO:0005515" "GO:0003674" "GO:0005488" "all" ) Folgendes: .
Sie müssen diese also von Hand vergleichen, um den gemeinsamen Elternteil beider IDs zu erhalten? @ddiez
Ich habe eine Frage zu diesem Thema gepostet: stackoverflow.com/questions/39879936/… Vielleicht haben Sie Interesse daran, sie zu beantworten @ddiez

Es stellt sich heraus, wenn Sie die font.size im graphNEL-Objekt festlegen, können Sie die Knotennamen im Diagramm des ducedTermGraph sehen.

Das Festlegen von font.size auf> 20 hat bei mir funktioniert!