Hi, I've been trying to use this - and it worked ages ago now I keep getting an error saying
"Error in getBM(attributes = c("wikigene_name", "ensembl_transcript_id", :
Invalid filters(s): go_id"
any suggestions? thanks
Hi,
I'm looking for an easy way to retrieve all the genes in a list that are associated with a certain GO term, preferably using R/Bioconductor packages. I'm not interested in under/overrepresentation or enrichment.
For instance, say I have a list of 1000 genes and I want to create a sublist with only the genes known to be involved in 'heart development'.
Thanks!
Using biomaRt within R:
library(biomaRt)
ensembl = useMart("ensembl",dataset="hsapiens_gene_ensembl") #uses human ensembl annotations
#gets gene symbol, transcript_id and go_id for all genes annotated with GO:0007507
gene.data <- getBM(attributes=c('hgnc_symbol', 'ensembl_transcript_id', 'go_id'),
filters = 'go_id', values = 'GO:0007507', mart = ensembl)
Hi, I've been trying to use this - and it worked ages ago now I keep getting an error saying
"Error in getBM(attributes = c("wikigene_name", "ensembl_transcript_id", :
Invalid filters(s): go_id"
any suggestions? thanks
Change "go_id" to "go".
You can find the valid filter names with listFilters(ensembl)
This seems to give the genes only specifically annotated to the given GO term, and not any genes associated with the child terms. Mostly one is interested in ALL the genes for a GO term, i.e, with both direct and indirect annotations.
how do I get only the BP goterms? I am only interested in deriving the Biological process goterms given a gene ID say 6713?
Have you tried 'prepare_database' from GeneSCF.
Hello EagleEye, no I did not try that out.
Forgive me if I misunderstand something here.
library(GO.db)
library(biomaRt)
GOBPOFFSPRING[["GO:1903450"]]
[1] "GO:1903451" "GO:1903452"
GOBPOFFSPRING[["GO:1903452"]]
[1] NA
According to GO.db, GO:1903452 should be children of GO:1903450 and itself have no children, however, I get nothing from
gene.1903450 <- getBM(attributes=c('hgnc_symbol', 'ensembl_transcript_id', 'go_id'),
filters = 'go_id', values = 'GO:1903450', mart = ensembl)
while I can retrieve 25 rows of RAB11FIP4 belonging to different go_id.
gene.1903452 <- getBM(attributes=c('hgnc_symbol', 'ensembl_transcript_id', 'go_id'),
filters = 'go_id', values = 'GO:1903452', mart = ensembl)
And None of these go_id is ancestor of GO:1903452
gene.1903452$go_id %in% GOBPANCESTOR[["GO:1903452"]]
so what is going on here? And how could I know if I REALLY retrieve ALL genes associated with a certain GO term and nothing else?
Hi ZeroFung,
I recently encountered a similiar issue to you where a lot of the tools that I tried did not capture the genes present in the child terms. What I ended up doing is: 1) downloading the GO terms with their corresponding gene names from Ensembl's biomart 2) Loading this into R as a dataframe along with the package GO.db 3) Using GO.db's GOBPOFFSPRING function to pull all of the child terms
# Get vector of all child terms
t <- c(GOBPOFFSPRING[["GO:0042110"]], "GO:0042110")
This can then be used to filter your ensembl downloaded GO terms to get all of the genes in your GO term and the child GO terms.
Not using R: Use quickGO to download all the annotation about your term (and its descendants):
$ curl -s "http://www.ebi.ac.uk/QuickGO/GAnnotation?tax=9606&relType=IP&goid=%20GO:0007507%20&format=tsv" | head | verticalize
>>> 2
$1 DB UniProtKB
$2 ID A0PJ49
$3 Splice -
$4 Symbol FGFRL1
$5 Taxon 9606
$6 Qualifier -
$7 GO ID GO:0003179
$8 GO Name heart valve morphogenesis
$9 Reference GO_REF:0000019
$10 Evidence IEA
$11 With Ensembl:ENSMUSP00000013633
$12 Aspect Process
$13 Date 20120825
$14 Source ENSEMBL
<<< 2
>>> 3
$1 DB UniProtKB
$2 ID A0PJ49
$3 Splice -
$4 Symbol FGFRL1
$5 Taxon 9606
$6 Qualifier -
$7 GO ID GO:0060412
$8 GO Name ventricular septum morphogenesis
$9 Reference GO_REF:0000019
$10 Evidence IEA
$11 With Ensembl:ENSMUSP00000013633
$12 Aspect Process
$13 Date 20120825
$14 Source ENSEMBL
<<< 3
>>> 4
$1 DB UniProtKB
$2 ID A0SZU5
$3 Splice -
$4 Symbol -
$5 Taxon 9606
$6 Qualifier -
$7 GO ID GO:0003007
$8 GO Name heart morphogenesis
$9 Reference GO_REF:0000019
$10 Evidence IEA
$11 With Ensembl:ENSMUSP00000058354
$12 Aspect Process
$13 Date 20120825
$14 Source ENSEMBL
<<< 4
(...)
sort and join with your list of genes.
I love the ease with which you can query data and customize the output with quickGO, but the verticalize in that command really threw me. I thought there was a cool member of the unix tool chain I didn't know, but I googled and found out it's actually a cool program you wrote! What a great way to make sense of data that wraps over numerous lines.
Similarly using Amigo you can craft URLs within a script to pull this info for a list of GO IDs (or query any number of different ways). For example:
That will return entries for GO:0007507, for human only (taxid=9606), all evidence code types allowed, all term associations allowed. Results are returned in xml format for convenient parsing. You can also download in the GO associations ('go_assoc') format.
You can retrieve genes directly from the annotation databases in Bioconductor, e.g. getting all genes annotated with "cell junction" (GO:0030054) in mouse:
library(org.Mm.eg.db)
retrieved <- AnnotationDbi::select(org.Mm.eg.db, keytype="GOALL", keys="GO:0030054", columns="ENSEMBL")
This is super helpful.
Log in to answer this question.