You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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”
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.
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.
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")
Activity
ncborcherding commentedon Jan 7, 2026
Hey Doug,
The pulling of msigdb in the
escapepackage is handled by the bioconductor packagemsigdb- 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 usesplit()using thegs_name.Hope that helps,
Nick
dhcorn commentedon Jan 12, 2026
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
ncborcherding commentedon Jan 12, 2026
@dhcorn
My mistake for not clarifying -
escapeis 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:Hope that helps,
Nick
dhcorn commentedon Jan 12, 2026
Oh ok, that makes sense. I thought it needed the whole dataframe from msigdbr.
Thank you.