I am running groupGO function from clusterProfiler:

ggo <- groupGO(gene     = head(gene, 200),
           OrgDb    = org.Mm.eg.db,
           keyType = "ENSEMBL",
           ont      = "BP",
           level    = 2,
           readable = TRUE)

And getting the following output:

> head(ggo)
                   ID            Description Count GeneRatio
GO:0000003 GO:0000003           reproduction     5     5/200
GO:0008152 GO:0008152      metabolic process    40    40/200
GO:0001906 GO:0001906           cell killing     0     0/200
GO:0002376 GO:0002376  immune system process    20    20/200
GO:0006791 GO:0006791     sulfur utilization     0     0/200
GO:0006794 GO:0006794 phosphorus utilization     0     0/200

As can be seen cell killing, sulfur utilization and phosphorus utilization have zero genes. Then, why are they here at all? Should not the groupGO show only biological processes the fed in genes are related to? This seems very weird to me. What is the meaning of the GeneRatio column?

  • 1
    $\begingroup$ If you don't want terms with zero genes, just use ggo[ggo$Count>0] $\endgroup$ – heathobrien Apr 26 '18 at 21:10

As you seem to be learning, the clusterProfiler package is a bit "special". It doesn't filter the results you're seeing for relevance, it returns everything. The GeneRatio is the number of genes in your input list associated with the given GO term (e.g., 5) and then a / and the total number of input genes. This is generally not that useful. Since many things aren't documented, you may find the source code helpful.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.