Is there a way to get the name or IDs of genes with the goseq table?
1
0
Entering edit mode
4.1 years ago
unawaz ▴ 60

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 gene ontology goseq • 4.8k views
ADD COMMENT
7
Entering edit mode
4.1 years ago
darklings ▴ 480

Yes please refer to this post: https://support.bioconductor.org/p/102273/

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
  }
  out
}

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)
$`GO:0140014`
 [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 COMMENT
0
Entering edit mode

Exactly what I needed! Thank you!

ADD REPLY
0
Entering edit mode

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 REPLY
0
Entering edit mode

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 REPLY
0
Entering edit mode

Hello there,

I am commenting to ask if you ever found a solution to this problem. I am currently working my way through goseq analysis of a non-native organism myself (nicotiana benthamiana), and my last hurdle is to try and retrieve the differentially expressed genes associated with GO terms that are of interest to us.

Thanks

ADD REPLY
0
Entering edit mode

Hello there,

I am commenting to ask if you ever found a solution to this problem. I am currently working my way through goseq analysis of a non-native organism myself (nicotiana benthamiana), and my last hurdle is to try and retrieve the differentially expressed genes associated with GO terms that are of interest to us.

Thanks

ADD REPLY

Login before adding your answer.

Traffic: 1501 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6