New functionality, dependencies, and error handling#
1. Gap-filling and context-specific model extraction#
RAVEN 2 |
RAVEN 3 |
|
|---|---|---|
|
one built-in MILP connectivity-maximization strategy |
same strategy is still the default; |
|
|
unchanged; new options are name-value-only |
|
depends on solver seed |
optional |
|
escalating relative-gap search only |
optional |
|
preserved |
unchanged; |
|
supported, no runtime notice |
supported, now under |
|
one behavior (equivalent to today's |
|
|
|
|
Task requiring net production of a metabolite with no reactions |
boundary constraint silently dropped before gap-filling; task could incorrectly report as passing |
constraint preserved; task correctly reports failing if the reference model can't produce it |
2. New functionality#
All additive; none of this replaces or changes behavior of existing RAVEN 2 functions, except where noted.
Area |
New function(s) |
What it adds |
|---|---|---|
Flux sampling ( |
|
|
Flux analysis / QC |
|
structured flux-vector diffing; MILP-based minimal-medium search; highest-flux-fraction path tracing between two reactions; interactive flux-neighborhood navigation; model/flux summary printing |
Model comparison ( |
|
structured, ID-keyed diff between two models: stoichiometry, bounds, objective, grRule (as logical DNF equality), EC codes, metabolite properties; distinct from the existing overlap-style |
Manipulation |
|
standalone duplicate-stoichiometry query; parse-tree-based non-DNF grRule detection (see §8) |
Genome-based curation ( |
|
pipeline from an NCBI genome accession to a gene ID mapping table to bulk gene renaming in a model; |
Biomass composition ( |
|
organism-agnostic biomass-composition and growth-associated-maintenance (GAM) calibration; |
Localization ( |
|
deterministic MILP compartment assignment (alternative to the heuristic |
Annotation ( |
|
organism-agnostic SBO term assignment; ΔG thermodynamic data CSV round-trip |
Conditions ( |
|
applies a data-driven growth/media condition (a YAML file, not code) to a model in a fixed sequence: exchange bounds, optional cofactor-pseudoreaction edits, optional biomass-stoichiometry deltas, per-reaction bound overrides |
Internal infrastructure |
|
central registry of every 1-D model field (entity type, default value), backing |
3. Toolbox dependencies and installation#
RAVEN 2 |
RAVEN 3 |
|
|---|---|---|
MATLAB version |
no pinned/documented minimum (guidance: avoid very new MATLAB syntax, to accommodate older installs) |
CI is tested against R2024b |
Statistics Toolbox |
required ( |
not required ( |
Bioinformatics Toolbox |
required ( |
not required ( |
Optimization Toolbox |
required for |
not required (both removed) |
Excel I/O |
bundled Apache POI (Java) |
dependency-free OOXML writer |
LP/MILP solver |
required (bundled |
unchanged, still required |
External binaries (BLAST+, DIAMOND, HMMER, cd-hit, MAFFT) |
committed to the repository, available offline immediately after clone |
fetched on demand from the |
KEGG HMM libraries / reference data |
manual download or local build required |
fetched on demand from |
Installation self-check |
|
renamed |
Net effect: a bare RAVEN 3 clone is far smaller and installs with fewer MATLAB toolbox prerequisites. The trade-off: it needs network access the first time KEGG- or homology-based reconstruction functions actually run.
4. Error and warning handling#
RAVEN 2's dispEM always raised errors with an empty identifier, so no RAVEN 2
try/catch could have matched on err.identifier; RAVEN 3's move to native
error()/warning() with real (mostly RAVEN:*) identifiers is additive from
that angle, not breaking. Message text is preserved for most existing checks,
so text-matching try/catch blocks are unaffected either way. See
§3 for the details and the new
utils/ravenList.m message-formatting helper.
One related, purely additive change: queries/checkModelStruct.m, called with
an output argument (issues = checkModelStruct(model)), now returns a
structured array of findings (category/target/message) instead of only
throwing or printing, useful for programmatic model QC. The no-output-argument
calling convention (throws/warns directly) is unchanged.