What each has that the other doesn't#
What only raven-toolbox has#
Built on cobrapy#
The largest difference is not a feature but a foundation: a raven-toolbox model
is a cobra.Model. Every cobrapy tool, and everything in the wider COBRA
Python ecosystem, works on it without conversion. RAVEN's own model is a MATLAB
struct, and ravenCobraWrapper converts between that and the COBRA Toolbox
format as an explicit step.
The practical consequence: FBA, FVA, knockouts, media handling and the rest come from cobrapy rather than from raven-toolbox, which is why so many RAVEN functions have a cobrapy row rather than a Python counterpart in the mapping table.
KEGG artefact generation#
raven-toolbox can build the KEGG reference artefacts themselves, parsing a KEGG release into reaction and compound tables, assembling the reference model, building the per-KO FASTA sets and HMM libraries, and deriving the phylogenetic distance matrix. RAVEN consumes pre-built artefacts; it does not produce them.
This is what keeps the KEGG route reproducible against a stated KEGG release rather than against whichever artefact is currently distributed.
Smaller additions#
Growth conditions: apply a named, versioned growth condition to a model.
Batch curation: apply a table of curation edits to a model in one pass.
ΔG and SBO annotation: load and save thermodynamic data through CSV, and assign SBO terms.
Biomass helpers: sum a biomass composition, rescale a pseudoreaction, and scale a fraction to a measured value.
Checksummed provisioning: both toolboxes now fetch BLAST+, DIAMOND, HMMER and the KEGG artefacts on demand rather than bundling them, from the same release. What is Python-only is the baked registry that pins a given release to the exact assets it was tested against; RAVEN resolves from the published release each time. See Download data and binaries.
What only RAVEN has#
tINIT#
getINITModel and runINIT are the original tINIT implementation. RAVEN keeps
them for the models already built with them; raven-toolbox, a new
implementation with no such installed base, carries ftINIT alone. A tINIT model
has to be reproduced in MATLAB; see
14. Context-specific models.
COBRA Toolbox conversion#
ravenCobraWrapper converts between the RAVEN and COBRA Toolbox model
structures. There is nothing to convert in Python: the model is already a
cobra.Model, so no equivalent exists or is needed.
Dynamic FBA#
runDynamicFBA has no Python counterpart, deliberately. Several maintained
Python packages already cover dynamic FBA well
(dfba,
reframed,
mewpy), and reimplementing it would add a
second-rate version of something that already exists.
MATLAB-specific plumbing#
A large share of RAVEN's function count is MATLAB housekeeping with nothing to
map to: path management (addRavenToUserPath, findRAVENroot), argument
handling (parseRAVENargs, convertCharArray), progress and printing
(setRavenProgress, printOrange), and the solver abstraction
(optimizeProb, setRavenSolver), which in Python is cobrapy's solver
interface via optlang.