Skip to content

getGeneSets database versions #178

Closed

Description

@dhcorn

Hello again,

Thank you for making a great package. I am having a problem with the version command in the getGeneSet() function. it seems as though we can only go up to the 2023 release of MSigDB, however in the most recent 2025 release there are some new curated databases that i would like to use. For some reason when i try to use the 2025 version i get the following error:

gene_sets <- getGeneSets(species = "Mus musculus", 'M7', version = '2025.1')
Error in match.arg(version) :
'arg' should be one of “2023.1”, “2022.1”, “7.5.1”, “7.5”, “7.4”, “7.3”, “7.2”

Is there a way i can use the most recent version?

Thanks
Doug

Activity

  1. ncborcherding commented on Jan 7, 2026

    @ncborcherding
    Member

    Hey Doug,

    The pulling of msigdb in the escape package is handled by the bioconductor package msigdb - https://bioconductor.org/packages/release/data/experiment/html/msigdb.html. Looking at the github repo (https://github.com/DavisLaboratory/msigdb) - it does not look like it has been updated for the recent versions. It might be worth it to bring this issue up there.

    In the meantime that does not really help your issue - there is a secondary package that is more actively maintained (msigdbr) - https://igordot.github.io/msigdbr/index.html (it looks like they have the updated version of msigdb you are looking for - https://igordot.github.io/msigdbr/news/index.html). If you go this route - the major step to make it compatible with escape is to form a list of the gene sets - I would use split() using the gs_name.

    Hope that helps,

    Nick

  2. dhcorn commented on Jan 12, 2026

    @dhcorn
    Author

    I am sorry to keep bothering you, but for some reason this still isnt working really well and I really think i am just missing something in the code.

    I am trying to run the msigdbr code then split it like you suggested. It looks like it is working just fine with the following code:

    gene_sets_Hall <- msigdbr(db_species = "MM", species = 'Mus musculus', 'MH')

    hallGene <- split(gene_sets_Hall, gene_sets_Hall$gs_name)
    head((hallGene))

    $HALLMARK_ADIPOGENESIS

    $HALLMARK_ALLOGRAFT_REJECTION

    $HALLMARK_ANDROGEN_RESPONSE

    $HALLMARK_ANGIOGENESIS

    $HALLMARK_APICAL_JUNCTION

    $HALLMARK_APICAL_SURFACE

    However when i run:

    eff.cells <- runEscape(Teff.cells,
    method = "GSVA",
    gene.sets = hallGene,
    groups = 500,
    min.size = 3,
    new.assay.name = "GSVA")

    I get the warning:

    Error in escape.matrix(input.data, gene.sets, method, groups, min.size, :
    No gene-sets meet the size threshold (min.size = 3)

    Though if i run:

    eff.cells <- runEscape(Teff.cells,
    method = "GSVA",
    gene.sets = hallGene$HALLMARK_GLYCOLYSIS,
    groups = 500,
    min.size = 3,
    new.assay.name = "GSVA")

    it will run. though i cant really look at anything because i dont really know what the output means.

    I guess my question is, do you see what i am doing wrong. i think it is me just not understanding the assay and not being particularly good at coding but any help would be much appreciated.

    Thanks

    Doug

  3. ncborcherding commented on Jan 12, 2026

    @ncborcherding
    Member

    @dhcorn

    My mistake for not clarifying - escape is expecting a list of just gene symbols - right now you are feeding it a list of data.frame - here is a reproducible example to get the intended output:

    library(SeuratObject)
    library(msigdbr)
    library(dplyr)
    
    #Getting Human here to work with pbmc_small in SeuratObject
    gene_sets <- msigdbr()
    gene_sets_Hall <- gene_sets |> 
                        filter(gs_collection == "H")
    
    # Correct way to split
    hallGene <- split(gene_sets_Hall$gene_symbol, gene_sets_Hall$gs_name)
    head((hallGene))
      
    pbmc_small <- runEscape(pbmc_small,
                            method = "GSVA",
                            gene.sets = hallGene,
                            groups = 500,
                            min.size = 3,
                            new.assay.name = "GSVA")
    

    Hope that helps,
    Nick

  4. dhcorn commented on Jan 12, 2026

    @dhcorn
    Author

    Oh ok, that makes sense. I thought it needed the whole dataframe from msigdbr.

    Thank you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions