enrichment_analysis completeness audit (2026-08-21)
Upstream: epigen/enrichment_analysis @ v3.0.1 · Port: oxo-flow-enrichment
(live-verified).
Single-Snakefile module, 15 rules, 6 analysis tools. Input-type-driven
branching: .bed → region branch (LOLA/GREAT/pycisTarget + derived
ORA/RcisTarget on GREAT-associated genes); .txt → gene branch
(ORA_GSEApy/RcisTarget); .csv → preranked branch (preranked_GSEApy).
Tool branches toggle by database-dict config keys (empty path = skip).
Mode matrix (upstream)
| tool | db config key | inputs |
|---|---|---|
| LOLA | lola_databases | region (.bed) |
| GREAT + region→gene association | local_databases | region |
| pycisTarget | pycistarget_parameters.databases | region |
| ORA_GSEApy | local_databases | gene + region-derived |
| RcisTarget | rcistarget_parameters.databases | gene + region-derived |
| preranked_GSEApy | local_databases | ranked (.csv) |
| summaries/plots | — | per group×tool×db |
No differential-enrichment or multi-factor mode upstream.
Gap tiers vs the port
P0: pycisTarget (HDF5 + process-results chain); RcisTarget; LOLA (databio regionDB); GREAT region→gene association step (feeds the derived ORA/RcisTarget paths); preranked branch. Whichever of the 6 tools the port omitted = P0.
P1: none — all DBs user-supplied, no paid services. License-adjacent notes: MSigDB/Enrichr/cisTarget terms (free for academic use).
P2: great_parameters (mode/basal/extension/map_associated_regions), adjp thresholds per tool, top_n, caps, cluster_summary, top_terms_n, pycisTarget/RcisTarget hyperparams, genome→org.db selection.
External gates: rGREAT runtime download (GREAT server TSS/gap annotation), LOLA regionDB download, conda/container provisioning.
Upstream fail-open design (CAUTION for port): empty/erroring analyses write empty files + exit 0 (pycisTarget/RcisTarget soft-fail) — the port's live-verified claim must not rely on non-empty outputs alone. Known upstream bug: "mm11" typo in species mapping → mm10 pycisTarget soft-fails; genome key unvalidated.
Verdict
Mid-size: 6 tools × 3 input types. Port scope check = which tool branches exist in the port (metadata scope 38 rules after normalization suggests partial tool coverage).
Re-verification (2026-08-23, 9-mini queue 7/9)
Engine: latest main (post-v0.14.1) · Box: bioinfo-wsx · Mode: real CLI
run, not dry-run · -j 4 --keep-going.
First run 43/12/2 + resume 6/51/0 — full chain green. Coverage (real): prepare_databases (Azimuth + Reactome real downloads) → GSEApy preranked ×2 → GREAT (region_gene_association + Reactome Bcell/Ery + ATAC aggregate) → LOLA (Bcell/Ery + plot + visualize, Fisher scores computed) → summary.
Real repo fix (c7f194c): the LOLA fixture index lacked the
filename header — LOLA ≥1.22's loadRegionDB evaluates that column
by name and errored with "object 'filename' not found". Adding the
header row fixed it. Box-side only: the region env's 7 bioconda data
packages post-link downloads were proxy-truncated; solved by Mac
relay + rewriting the pkgs-cache dataURLs.json to file:// (patch
the pkgs cache, not the env dir — rebuilds wipe env-dir patches).