The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
method = "sample" / "permute") for
the default two-sided (scoreType = "std") calculation: the
numerator counted only same-sign permutations while the denominator
divided by all permutations, so p-values were too small under a
symmetric null; the denominator now counts only permutations on the same
side of zero as the observed ES, following the main fgsea convention
(2026-10-06, Tue, closes #3)RcppEigen sparse-matrix interface in
rwr_eigen_cpp() from MappedSparseMatrix to
Map<SparseMatrix> for Eigen 5 compatibility
(2026-10-06, Tue, PR #2)reportNA argument to gsea_gson() so
pathways with NA multilevel p-values can be retained when
needed (2026-10-04, Sun, closes DOSE#88)rank = 0L sentinel for zero-overlap, N_R == 0,
and non-finite running-score paths; align as_gseaResult()
with the same contract; document the
gsea_leading_edge_details() return contract; and tighten
converter tests for the rank contract (2026-10-04–2026-10-05, Sun–Mon,
closes DOSE#46)qvalue as NA when estimation fails
instead of falling back to p.adjust, document the
pvalue / p.adjust / qvalue
semantics in as_enrichResult() and
as_gseaResult(), and update converter tests accordingly
(2026-10-05, Mon, addresses DOSE#24)oddsRatio
column (Fisher’s exact 2x2 odds ratio, placed next to
FoldEnrichment). FoldEnrichment is a ratio of
proportions, whereas the odds ratio is the effect size that the
hypergeometric/Fisher test is built on; note it is the plain
cross-product odds ratio and differs slightly from
fisher.test()$estimate, which reports the conditional MLE
(2026-09-22, Tue)missing value where TRUE/FALSE needed:
gsea_gson() checked is.unsorted() before
validating the input, and a bare if (NA) aborted there, so
an NA/NaN/Inf in the gene
statistics never reached the finiteness check that explains the problem;
gseaScores() now validates too and returns NA
rather than aborting when the running score is not finite (2026-09-22,
Tue)as_enrichResult() /
as_gseaResult(): build ‘enrichit’ result objects from
result tables of external enrichment tools (enrichr, g:Profiler,
WebGestalt, fgsea, …), with canonical column aliases, ID de-duplication,
p-value validation, derived statistics (RichFactor /
FoldEnrichment / zScore) when the query and
background are known, and missing GSEA detail columns recomputed via
gsea_leading_edge_details() (2026-09-21, Sun)no package '<...>' was found warnings when no input
gene can be mapped (2026-09-17, Thu)
check_gene_id() routed its informational notices
through yulab.utils::yulab_msg(), which builds the package
citation banner and expects a package name; it therefore called
packageDescription() on the notice text itself, so every
run with unmappable input emitted three warnings such as
no package '--> No gene can be mapped....' was foundmessage(), and
yulab.utils::yulab_msg() is no longer importedNA when a gene set has fewer than 100 genesnsea()/nsea_gson() pipeline ran
GSEA’s label-permutation test on the network-diffused scores; because
network diffusion induces strong autocorrelation between neighbouring
genes’ scores, that test violates the exchangeability assumption of
GSEA’s permutation null and produces anti-conservative p-values
(empirically ~2.5x the nominal false-positive rate)significance = "whole_pipeline" (new default) builds
the null distribution of the enrichment score by re-running the
entire pipeline under the null: permute gene labels ->
re-diffuse over the network with RWR -> recompute the enrichment
score; p-values and NES are then derived from this null, automatically
accounting for the smoothing induced by diffusionsignificance = "internal" keeps the earlier internal
label-permutation formulation on the diffused scoressignificance, nPerm, seed
and exponent arguments to nsea() and
nsea_gson(); expose pvalueCutoff and
pAdjustMethod in nsea_gson()
nPerm (default 1000) sets the number of whole-pipeline
permutations; the smallest estimable p-value is
1/(nPerm + 1)seed (default NULL) makes the whole-pipeline null
reproducible; set a numeric seed for deterministic resultsexponent (default 1) controls the weight of each step
of the running enrichment scorensea_gson() now applies pvalueCutoff to
both the raw and the adjusted p-value (matching
gsea_gson()), and accepts pAdjustMethodprepare_network() to accept a
mechgraph object as well as an edge-list
data.frame/matrix or a sparse matrix
mechgraph edges table must have
from/to columns; a numeric score
or weight column, when present, supplies the edge weight,
otherwise unit weights are usedenrichit does not
hard-depend on the mechgraph packagegsea_es_all_cpp() that computes
the classic weighted enrichment score for many gene sets at once from
the hit positions only, making it cheap enough to evaluate on every
whole-pipeline permutation.nsea_diffuse()) and TF-IDF specificity weighting
(.nsea_specific_weights()); in “signed” mode positive and
negative seeds are propagated in a single linear solvegsea_gson() p-value filtering with the historical
clusterProfiler/DOSE behavior: pvalueCutoff now requires
both the raw p-value and the adjusted p-value (p.adjust) to
pass the cutoff (previously only the raw p-value was filtered),
restoring significant-pathway counts comparable to clusterProfiler <=
4.18.x (2026-08-14, Fri)seed interface of GSEA for
reproducibility (2026-08-14, Thu)
gsea() now treats seed = TRUE as a fixed
default seed (consistent with the C++ default) instead of silently
coercing it to the integer 1gsea_gson() now exposes an explicit seed
argument (previously only reachable through ...) and
forwards it to gsea()seed = FALSE (default) draws a fresh seed
from R’s RNG on each run, so results may vary between runs, while a
numeric seed (or set.seed() before the call) makes the
result reproducible; the C++ engine seeds its own RNG with this
valuegsea() to intersect gene sets with
names(geneList) before applying
minGSSize/maxGSSize, so the size filter
constrains the actual overlap rather than the raw gene set size; also
guard gsea_gson() against NA pvalue rows
leaking into the result table (2026-08-04, Tue,
clusterProfiler#824)aggregate_enrichment() for multi-omics Late Fusion
at the pathway level by aggregating multiple
enrichResult/gseaResult objectsmethod = "brown" in aggregate_omics()method = "weighted_mean" in
aggregate_omics() for signed statistics with layer-specific
weightsmnsea() and mnsea_gson() for
multi-layer network-based enrichmentprepare_multilayer_network(),
propagate_multilayer(), and
collapse_multilayer_scores() for the multi-layer
propagation pipelinemnseaResult to store multi-layer diffusion results,
collapsed scores, layer weights, and cached explanation tablesmnseaResultget_mnsea_contribution() and
extract_mnsea_subnetwork() for explanation-ready data
extractionclusterProfiler::mnseGO(), mnseKEGG(),
mnseMKEGG(), and mnseWP()aggregate_omics(), harmonize_ids() and
select_features_for_ora() to support Multi-omics Early
Integration
conflict_policy parameter (“keep_all”, “strict”,
“penalty”) to handle directional conflicts in signed statistics
(2026-06-23, Tue)ora(), gsea(),
and nsea() through a decoupled aggregation layeraggregate_enrichment(), are designed to be reused by
downstream packages for high-level multi-omics analysisget_omics_contribution() and
classify_omics_pattern() for Multi-omics contribution
tracingweight parameter to ora(),
ora_gson(), gsea(), and
gsea_gson()BiasedUrn packagensea() and nsea_gson() for
network-ranked GSEA based on Random Walk with Restart (RWR)mode = "signed" support in nsea() and
nsea_gson() for bidirectional network propagation using
signed statisticsprepare_network() for parsing and normalizing edge
lists or sparse matricesRcppEigen sparse
matrix multiplicationclusterProfiler::nseGO(), nseKEGG(),
nseMKEGG(), and nseWP()fgsea::prepareStats() to reduce result drift relative to
the long-used fgsea backend (2026-06-22, Mon)
* 1e6 scaling in
prepare_gsea_inputs() with fgsea-style total-weight
normalization and integer roundinggsea(method = "multilevel") against
fgsea::fgseaMultilevel() on the same ranked inputora_gson() before
multiple-testing correction (2026-06-22, Mon)
Count = 0 rows out of
p.adjust/qvalue so ORA results match
historical DOSE/clusterProfiler behaviorclusterProfiler::enricher(), enrichKEGG(), and
compareCluster() workflows (e.g. compound KEGG analyses,
#821 & #819 of ‘clusterProfiler’)bayes_enrich() for estimating posterior
probabilities of active explanatory terms from enrichResult
objectsbayes_summary() to return Bayesian enrichment
results ordered by posterior probabilityas.data.frame() rows, all x@result
rows, or explicit term IDsenrichResult object with
posterior, posterior odds, Bayesian rank, active flag, and covered-gene
columnsTERM2NAME() for GSON objects to
map gsid to term names properlyTERMID2EXTID() for GSON objects to
return gene vectors by requested term ordercharacter(0) for missing terms to keep
downstream behavior stableDescription.* columns in downstream
clusterProfiler::groupGO()gsea_gson() (2026-03-10, Tue)
geneList to ensure result object is
consistent with inputenrichplot::gseaplot showing
incorrect metric/color alignmentcalculate_qvalue() (2026-02-02,
Mon)
qvalue package gracefullyqvalue() failsora_gson() (2026-02-02, Mon)
phyper instead of summing dhyper for
better performance and precisionsetReadable() to support converting gene ID to
other types (not limited to SYMBOL) (2026-01-21, Wed)organism slot in compareClusterResult
(2026-01-20, Tue)gsea_gson() and ora_gson()
(2026-01-11, Sun)
NA or duplicate gene set IDs in result rownames
to prevent errorscalculate_qvalue() (2026-01-11,
Sun)
ora_gson() output columns (2026-01-11, Sun)gseaScores function (2025-12-07, Sun)
ora_gson and gsea_gson
(2025-12-05, Fri)
enricher_internal and
GSEA_internalDOSE to
enrichit (2025-12-05, Fri)
clusterProfiler familygsea function (2025-12-04, Thu)
ora function (2025-12-03, Wed)
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.