Changes in version 2.5.3 (2025-05-19) Highlights - Streamlined code-base – major internal refactor for clarity, speed and a ~20 % smaller dependency tree. - Consistent, flexible visualisation API across all plotting helpers. - Robust unit-test suite (>250 expectations) now ships with the package. New & enhanced functionality | Area | Function(s) | What changed | |------|-------------|--------------| | Visualisation | ridgeEnrichment() | True gradient coloring mode for numeric color.by; optional per-cell rugs; quantile median line; fixed grey-fill bug | | | densityEnrichment() | accepts new rug.height; ~4× faster ranking routine using MatrixGenerics::rowMeans2; cleaner two-panel layout via patchwork | | | gseaEnrichment() | new rug.height; clearer legend showing ES/NES/ p; internal vectorised ES calculation | | | splitEnrichment() | rewritten: split violins when split.by has 2 levels, dodged violins otherwise; inline boxplots; auto Z-scaling; palette helper | | | scatterEnrichment() | density-aware points (via ggpointdensity), hex-bin alternative, optional Pearson/Spearman overlay, continuous or discrete color mapping | | Dimensionality reduction | performPCA() / pcaEnrichment() | uses irlba::prcomp_irlba() automatically for large matrices; stores eigen-values/contribution in misc; add.percent.contribution now always respected | | Scoring backend | escape.matrix() / .compute_enrichment() | lazy loading of heavy back-ends (GSVA, UCell, AUCell); unified .build_gsva_param(); drops empty gene-sets up-front | | Normalization | performNormalization() | chunk-wise expressed-gene scaling (memory-friendly); accepts external scale.factor; optional signed log-transform; returns object with assay _normalized | | Gene-set retrieval | getGeneSets() | downloads now cached under tools::R_user_dir("escape", "cache"); graceful KEGG append; clearer error for non-human/mouse requests | Performance & dependency reductions - Replaced plyr, stringr, rlang usage with base-R helpers; these packages are now Suggests only. - Common color and label utilities (.colorizer(), .colorby(), .orderFunction()) removed redundant tidyverse imports. - Internal matrices split/chunked with new .split_* helpers to cap memory during parallel scoring/normalization. Bug fixes - Gradient mode in ridgeEnrichment() no longer produces grey fills when the chosen gene-set is mapped to color.by. - pcaEnrichment() axis labels correctly include variance contribution when display.factors = FALSE. - .grabDimRed() handles both Seurat v5 and