This is a test version of Biostars. For the public version, visit https://www.biostars.org.
GSEA analysis with Mouse (Please give some comments..)

Hello all,

I am doing GSEA analysis. I have done with human successfully.

However, this time, I am trying to run with my mouse gene. I realized that these mSIGDB are annotated with only human.. I downloaded the msigDB for mouse from genepattern website.

However, GSEA program didn't allow me to use this downloaded data for my analysis...

Could you please someone help me with this?

I am creating with my *.rnk (rank file) for this analysis.

gsea mouse

I will try to capitalize all my mouse genes. Sometimes, it can fool the software to treat the mouse gene as human gene. If you want a even better approach, you can check the homology and convert the mouse to human. Usually capitalize are simple enough.

Thank you so much!

Yes. I will try.. :)

6 answers

A mouse verson of the MSigDB is given at http://bioinf.wehi.edu.au/MSigDB/

We found that no single homology resource like Ensembl/BiomaRt was sufficiently comprehensive to create a mouse version of MSigDB, especially for non-protein coding genes. Just to give one example, Ensembl does not map XIST to Xist. We found that the integrated collection of many resources provided by HCOP provided the best mapping.

Just FYI, this is a 5 year old question.

Thanks for your concern, but I can read dates too. Note:

  • This question was active in the past 4 months (including by you!)
  • This question did not have a definitive or accepted answer
  • The topic is of current interest with a similar question just 2 hours ago GSEA Positional Gene sets for mouse chromosomes
  • A new link to this question was placed by another Moderator just 20 minutes ago (see previous link)

GSEA never goes out style.

It was an FYI in case you hadn't noticed. Glad you noticed the date.

Good to know. Is there a reference (or code) one could cite if using that murine MSigDB version?

Have a look at the msigdbr R package. It easily converts mouse gene names to human homolog equivalents.

Jackson Lab has the Vertebrate Homology resource for converting between homologous human and mouse genes (most of the time, it's just adjusting the case).

Update: you can also try msigdbr which already solved the multi-species conversion issue (there are a number of caveats to the process that are not very obvious): MSigDB for Multiple Organisms in a Tidy Data Format

Generally I use Ensembl Biomart (but you can substitute your favorite gene ID conversion tool here) to convert all of the gene names in each gene signature in the *.gmx or *.gmt, from human to mouse. I then use the mouse IDs to make a custom *.gmx or *.gmt file.

It's convenient to do this in R if you know how but not necessary, it works perfectly well do to copy-paste into the web interface.

Word of warning: look out for genes that don't convert using automated tools. Often you will come across genes that actually do have mouse orthologs but are not annotated in Biomart. You can manually add these genes to the signatures by a quick Google search.

Here is a solution using biomaRt (in R) from Ensembl which creates a table that lists all mouse genes and the respective human orthologs. Credits mainly to Dave Tang's blog where the idea is from.

library(biomaRt)

Mouse2Human <- function(MouseGenes){

  human = useMart("ensembl", dataset = "hsapiens_gene_ensembl")
  mouse = useMart("ensembl", dataset = "mmusculus_gene_ensembl")

  genesMousetoHuman = getLDS(attributes = c("ensembl_gene_id","mgi_symbol"), 
                             filters = "mgi_symbol", 
                             values = MouseGenes , 
                             mart = mouse, 
                             attributesL = c("ensembl_gene_id", "hgnc_symbol"), 
                             martL = human, 
                             uniqueRows = TRUE)

  colnames(genesMousetoHuman) <- c("Mouse.Gene_ID", "MGI", "Human.Gene_ID", "HGNC")

  return(genesMousetoHuman) 

}

## Get mouse genes
mmusculus_genes <- getBM(attributes = c("ensembl_gene_id", "mgi_symbol"),  
                         mart = useMart("ensembl", dataset = "mmusculus_gene_ensembl"),
                         useCache = FALSE)

## create the conversion table
Mouse2HumanTable <- Mouse2Human(MouseGenes = mmusculus_genes$mgi_symbol)

Output:

> Mouse2HumanTable
         Mouse.Gene_ID           MGI   Human.Gene_ID           HGNC
1   ENSMUSG00000070979        Actl7a ENSG00000187003         ACTL7A
2   ENSMUSG00000069911       Insyn2b ENSG00000204767        INSYN2B
3   ENSMUSG00000028173           Wls ENSG00000116729            WLS
4   ENSMUSG00000094356      Igkv8-28 ENSG00000211598        IGKV4-1
5   ENSMUSG00000104769      Igkv8-34 ENSG00000211598        IGKV4-1
6   ENSMUSG00000076581      Igkv8-26 ENSG00000211598        IGKV4-1
7   ENSMUSG00000095794      Igkv6-17 ENSG00000211598        IGKV4-1
8   ENSMUSG00000064370       mt-Cytb ENSG00000198727         MT-CYB
9   ENSMUSG00000022099          Dmtn ENSG00000158856           DMTN
10  ENSMUSG00000033717        Adra2a ENSG00000150594         ADRA2A
11  ENSMUSG00000022016        Akap11 ENSG00000023516         AKAP11
(...)

You don't need this line within the Mouse2Human function:

MouseGenes <- as.character(mmusculus_genes$mgi_symbol)

If it is to deal with a scenario where MouseGenes is undefined, mmusculus_genes will need to be initialized within the function as well, or the function ends up having undeclared dependencies.

You're right, not sure how this non-sense line made it in there. Edited.

I tried GSEA with mouse data both by mapping the homologs using a proper method (ensembl/biomaRt as suggested here), and also by simply converting sentence case gene names (i.e. Pdcd1) to upper case (i.e. PDCD1). In my experience, these approaches work similarly.

Using uppercase letters, for the most part, works because human gene names are simply a capitalized version of mouse genes. Although this "conversion" may result in losing a few genes, since you are looking at a constellation of genes in GSEA, I don't think it is a big problem.

Log in to answer this question.