Question: Is there a way to get the name or IDs of genes with the goseq table?
gravatar for unawaz
15 months ago by
unawaz50 wrote:

Hi all,

I've performed a GO enrichment analysis using goseq. The output of goseq() tells you the enriched categories with how many significant genes are in the categories etc, but it doesn't give you the ID of genes that are in any of those categories.

Obviously you can use getgo() to retrieve GOs for genes of interest, but is there a way to get a column of the genes in each of the enriched GO terms using the goseq() function.

So my desired output would be:

category over_represented_pvalue under_represented_pvalue numDEInCat numInCat    term ontology  Ensembl ID
GO:0000786            2.143408e-16                        1         12       43       nucleosome       CC. ENSG00000112655, ENSG00000158483  etc..

With the "Ensembl ID" column is the one I'm looking to add

Any help would be greatly appreciated!

rna-seq goseq gene ontology • 1.6k views
ADD COMMENTlink modified 15 months ago by darklings80 • written 15 months ago by unawaz50
gravatar for darklings
15 months ago by
darklings80 wrote:

Yes please refer to this post:

For my own case, I modified the function

# Get the gene lists of "numDFinCat" in GO.wall report
getGeneLists <- function(pwf, goterms, genome, ids){
  gene2cat <- getgo(rownames(pwf), genome, ids)
  cat2gene <- split(rep(names(gene2cat), sapply(gene2cat, length)),
                    unlist(gene2cat, use.names = FALSE))
  out <- list()
  for(term in goterms){
    tmp <- pwf[cat2gene[[term]],]
    tmp <- rownames(tmp[tmp$DEgenes > 0, ])
    out[[term]] <- tmp

This can get a list containing GO terms in my GO.wall report with their associated Ensembl IDs:

goList <- getGeneLists(pwf, GO.wall$category, "hg19", "ensGene")

> head(goList, 1)
 [1] "ENSG00000040275" "ENSG00000117724" "ENSG00000198901" "ENSG00000156970"
 [5] "ENSG00000186185" "ENSG00000143228" "ENSG00000090889" "ENSG00000125538"
 [9] "ENSG00000158402" "ENSG00000175063" "ENSG00000121152" "ENSG00000169679"

If you want to add the additional column in your report, you can just

 GO.wall$EnsemblID <- sapply(GO.wall$category, function(x) paste0(goList[[x]], collapse = ","))
ADD COMMENTlink modified 3 months ago • written 15 months ago by darklings80

Exactly what I needed! Thank you!

ADD REPLYlink written 15 months ago by unawaz50

Hi all, I am trying to adapt this code for my work but could not able to do so. I am working on rice which is a non-native organism for goseq. I am new in using R, can anyone suggest how to modify this code for non-native organism? I have run the goseq smoothly for rice but adding the gene column is tricky business for me. I have category mapping, pwf and GO.wall files.

ADD REPLYlink written 7 weeks ago by sanjay0

I am not sure, maybe getgo() doesn't support your genome. Could you provide a bit more details about your species and code/error?

ADD REPLYlink written 7 weeks ago by darklings80
Please log in to add an answer.


Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 2.3.0
Traffic: 933 users visited in the last hour