Skip to content

multiomeR 1.0.0

Choose a tag to compare

@koefoeden koefoeden released this 29 Sep 10:27
· 370 commits to main since this release

multiomeR 1.0.0 (2026-09-29)

The first stable release. The manuscript describing multiomeR is under peer review (link to come). From this release on, incompatible changes to configuration, target names or output schemas require a new major version; see RELEASES.md.

This release changes cell-type labels, peak–gene inference, genetic-enrichment inputs and several target and parameter names. Expect a full rebuild of existing aggregations and review the migration notes first.

Configuration

  • Keep each project's settings in its own configuration directory, selected by a single path in the ignored configuration.local; configuration/ holds the public defaults and examples. Module settings use flat cfg_module_<module>.yaml files, and disabled modules need no file.
  • Pass scalar component counts to GEX PCA and ATAC LSI, so changing only the selected dimensions, for example dropping the first LSI component, no longer recomputes either reduction.
  • Stop before building the target graph, with the install command, when the Bioconda BSgenome data packages are missing because Pixi skipped their post-link scripts.
  • Add the output gallery's mixed_human_31x aggregation of public 10x Genomics and ENCODE data as an inactive example with its module settings. Its GEM wells are processed locally with Cell Ranger ARC 2.1.0 and GRCh38-2024-A.

QC and cell-type annotation

  • Title the QC-exclusion UpSet plots with the number of retained barcodes and plot the nuclei per donor that reach the final WNN object.
  • Centre the motif-family accessibility heatmaps on each family's mean across groups, so abundant groups do not set their zero point.
  • Unify pre-filter QC plots across modalities, show doublet evidence beside GEX cluster markers, and report the selected wells, QC rules and configuration values in checkpoint captions.
  • Diagnose WNN modality weights by their association with metadata within clusters, and show WNN markers and UCell evidence as cluster dot plots.

Differential analyses

  • Use WNN-derived cell-type labels throughout, with named abundance and feature models, predictor-only abundance formulas and descriptive target names.
  • Test gene sets on the existing contrast results.
  • Give donors absent from the extended donor metadata missing model variables, so models exclude them instead of the module stopping.
  • Estimate intra-block correlations on at most 50,000 evenly spaced features and give each forked cell-type fit one BLAS thread, so a 590,000-peak chromatin-accessibility fit takes minutes instead of hours.

Genetic enrichment

  • Report SCAVENGE trait-relevance scores without permutation P-values, summarized by WNN cluster and cell type in four heatmaps.
  • Decompose cell-type chromVAR deviations additively into peak, variant and locus contributions, with ordinary and automatic absolute-effect weighting, and screen locus detail plots with a configurable z-score threshold.
  • Compare the credible sets of all configured GWAS by their shared normalized posterior-probability mass, to show which traits give non-independent enrichment results.
  • Build each GWAS's peak weights once and derive the chromVAR annotation from the peak-to-variant allocation. This also fixes the ordinary posterior- probability path, whose normalized inputs had lost their posteriorProbability column, and reports PIPs rather than effect weights as absolute-effect locus leads.
  • Sort the Open Targets credible-set records deterministically and allocate peak contributions to variants without per-variant summaries.
  • Weight every cell type equally in the expected accessibility of the cell-type pseudobulk chromVAR background, so an abundant cell type is no longer compared mainly with itself and pinned near zero.

Peak–gene correlation

  • Make peak–gene correlation an optional module on WNN cell types.
  • Replace the HC3 scan with a hierarchical donor-slope model fitted by native REML with Kenward–Roger inference over all eligible pairs; links require a positive, reliable hierarchical estimate at FDR < 0.05.
  • Filter hypotheses by RNA, ATAC and shared-donor measurement support, and show genomic context, coverage and donor-adjusted scatterplots in top-link figures. The moderate support preset is the default.
  • Fit the hierarchical model in donor space, without aggregate-by-aggregate matrices, so a branch projected at about a day takes minutes.

Runtime and dependencies

  • Export normalized GEX data in the Seurat objects: RNA gains a lazy log-normalized data layer, the BPCells backend adds the regressed Pearson residuals as RNA scale.data, and the Seurat backend adds the SCTransform() assay as SCT. The cell metadata includes the Seurat cell-cycle scores.
  • Build the multimodal Seurat export without rehashing every fragment file and count each assay once, which takes about a fifth of the time for large aggregations.
  • Save plots through one staged path that removes only obsolete outputs recorded in each target's inventory, and build each ggplot once.
  • Save plots as images only. The mirrored plot_objects/*.rds copies re-serialized each plot's inputs, reaching hundreds of gigabytes for large aggregations, and took about half of all plot-saving time.
  • Score the cluster UCell evidence with a compiled kernel, and compute the consensus peak matrix, ATAC blacklist counts and gene scores per GEM well; both return identical results, several times faster.
  • Compute ATAC coverage tracks from an in-memory copy of the plotted regions, which takes seconds instead of minutes to hours per region set on large merged fragment objects and returns identical data.
  • Make the project bootstrap stateless and share one checksum-keyed loader for the standalone native sources.
  • Rerun the dependents of opened BPCells directories when the directory content changes; previously they could keep results computed from the old content, and a cheap CI check now rejects bare BPCells opens in targets.
  • Update the locked environment within R 4.5 and Bioconductor 3.22 (among them Seurat 5.5.1, scDblFinder 1.24.10, arrow 25 and Python 3.13), move BPCells, Signac and betterChromVAR to current revisions, and drop 31 unused dependencies. multiomeRCore 0.2.0 narrows get_tar_resources().
  • Keep only reference-parity tests of the reimplemented algorithms, which pass with the updated reference packages.
  • Run only cheap checks in cloud CI: documentation source links and, also weekly, the example-data download URLs. Run the reference-parity tests locally, and build the documentation site with the repository builder.

Documentation

  • Restructure the manual around Configure, Run and Review steps, with one page per checkpoint and module, a standalone parameter browser, an output gallery generated from saved plots and an implementation book with one methods page per stage.
  • Share the method descriptions with the manuscript supplement and describe the validation contract of each reimplemented algorithm.

Migration

  • The Seurat objects no longer contain the counts-only SCTregr assay. Use RNA (BPCells backend) or SCT (Seurat backend); the WNN weight column is RNA.weight or SCT.weight instead of SCTregr.weight.
  • Move existing settings into a configuration directory and select it in configuration.local.
  • Remove these parameters, which configuration validation now rejects: aggregation_GALAXY_track_upload_API_KEY, aggregation_GALAXY_track_upload_HISTORY_ID, aggregation_tar_make_skip_regex_patterns, differential_analyses_bulk_RNA_rds_file_path, differential_analyses_OLINK_parquet_file_path, genetic_enrichment_posterior_probability_weighting_function_name and genetic_enrichment_SCAVENGE_permutation_times, and the per-study variant_weighting_mode GWAS field.
  • Reinstall the environment with pixi install --locked --run-post-link-scripts and the pinned GitHub packages with pixi run install-r-github-packages.
  • Update scripts that read HC3 peak–gene results, SCAVENGE P-values or renamed differential-analysis targets.
  • Redraw plots from their data instead of reading plot_objects/*.rds, as the demo-output page shows.

Validation: VALIDATION-1.0.0.md.