Structure, removals and renames#
RAVEN 3 sorts its functions into folders by function area. It removes 65 functions of RAVEN 2, merges or renames 8, and keeps 5 RAVEN 2 names as wrappers.
Repository reorganisation#
The code of RAVEN 3 is in src/. RAVEN 2 kept its functions in the top-level folders core/, external/, INIT/, hpa/, io/, legacy/, pathway/, plotting/, solver/, struct_conversion/, installation/ and utils/, and its bundled third-party code in software/. Other top-level folders moved as well: the third-party code of software/ is in src/external/, tutorial/ is tutorials/, doc/ is docs/, and testing/ is tests/function_tests/.
RAVEN 3 folder (under |
Contents |
RAVEN 2 source |
|---|---|---|
|
|
|
|
Analyses based on flux balance analysis (FBA): flux variability analysis (FVA), sampling, FSEOF, OptKnock, robustness, production envelope, flux comparison and flux tracing |
|
|
MIRIAM editing, SBO term assignment, ΔG CSV I/O |
|
|
Fitting and scaling of the biomass composition, growth-associated maintenance (GAM) |
|
|
Comparison of several models, structured model diffing |
|
|
Applying a growth or media condition from data to a model |
New folder |
|
RAVEN⇄COBRA conversion, identifier prefixing, field ordering |
|
|
Gene and model curation driven by a genome annotation |
New folder |
|
Bundled third-party code (GLPKmex, libSBML and m2html) and the target folder |
|
|
|
|
|
Path setup, download of binaries and data on demand |
|
|
Model import and export (SBML, YAML, Excel), FASTA I/O |
|
|
Prediction and scoring of subcellular localisation, compartment assignment |
|
|
Structural edits: adding, removing and changing reactions, metabolites and genes; merging, sorting and simplifying |
|
|
Lookups that do not change the model: indexes, exchange and transport reactions, construction of stoichiometry, model checking |
|
|
Draft reconstruction from KEGG and from homology |
|
|
LP and MILP solving |
|
|
Parsing and checking of metabolic task lists |
|
|
General helpers, among them the argument parsing and the registry |
|
|
Wrappers for merged and renamed functions |
New folder |
|
Class-based |
|
The files checkRaven.m and checkInstallation.m (a wrapper) are in the repository root.
Some code has no successor folder: the subfolder external/metacyc/ with the MetaCyc function external/combineMetaCycKEGGModels.m, pathway/ and plotting/ (visualisation), legacy/ (CellDesigner import and other pre-2.0 code), and the Excel-POI helpers of io/ together with the Apache POI libraries in software/apache-poi.
A script that calls RAVEN functions by name keeps working when the whole RAVEN folder tree, subfolders included, is on the MATLAB path (through addRavenToUserPath or addpath(genpath(...))), because MATLAB resolves functions by name across the path. The reorganisation affects a script in three cases: it uses a hard-coded path to a specific .m file, it calls a removed function or a merged function that has no wrapper, or it contains a function with the name of a RAVEN 3 function. checkFunctionUniqueness warns about the last case. Individual moved files are not mapped.
Removed functionality#
The table lists all 65 functions of RAVEN 2 that RAVEN 3 removes without a successor of the same name. The counts per RAVEN 2 folder are pathway/ 6, plotting/ 10, external/ 12 (8 for MetaCyc, 4 others), legacy/ 11, io/ 12, core/ 8, utils/ 3, solver/ 2 and INIT/ 1. No function of RAVEN 3 calls a removed function. The name getToolboxVersion exists in RAVEN 3 as a local function of exportForGit.
Removed |
Former purpose |
Replacement |
|---|---|---|
|
Handling and colouring of metabolic pathway maps |
None in RAVEN 3. Alternatives are the COBRA Toolbox, Escher, and the export of flux and omics data for plotting elsewhere |
|
Drawing of metabolic maps and colouring with omics data |
None, as above |
|
Draft reconstruction from MetaCyc |
None. The reconstruction methods of RAVEN 3 are the KEGG-based and the homology-based method |
|
CellDesigner import and pre-2.0 compatibility code |
None |
|
Excel model I/O through Apache POI |
|
|
Export of a SIF graph; tab-delimited export of a model |
None. The sole caller of |
|
Canonical file path; MD5 hash of a file; git version of the toolbox |
Inlined where needed: the MD5 hash through Java |
|
Display of errors and warnings (388 lines call it in RAVEN 2, counted outside |
|
|
Report of flux changes relative to a reference solution |
|
|
Printing of reactions to the screen or to a file |
|
|
Indices of the metabolites in a compartment |
|
|
Merging and splitting of the score columns of a localisation-score structure by compartment rules |
The |
|
Loading of an expression structure from an ad hoc Excel format |
|
|
Debugging of the synthesisability of one reaction |
No direct successor. |
|
Parsing of WoLF PSORT scores |
None. |
|
Assembly of a multi-FASTA file per KO; translation of WSL paths; import of BLAST results from Excel |
The KEGG pipeline based on the artefacts of |
|
MOMA analyses and quadratic programming |
None. RAVEN 3 has no quadratic programming. The arguments removed from |
|
Validators of arguments |
|
|
Reaction scores from expression data |
A private helper of the test suite in |
The function printFluxes prints the reactions of a flux vector whose absolute flux is at least cutOffFlux (default 10^-8), one line per reaction. It prints exchange reactions unless onlyExchange is false. A listing of all reactions of a model without fluxes has no direct replacement.
Renamed and merged functions#
The folder deprecated/ holds makeSomething, consumeSomething, canProduce and canConsume. These wrappers keep the RAVEN 2 names callable, issue a RAVEN:deprecated warning once ("will be removed in the next major release") and forward to the RAVEN 3 function. The other functions in the table have no wrapper, except checkInstallation, which has a row of its own.
RAVEN 2 functions |
RAVEN 3 function |
Notes |
|---|---|---|
|
|
The argument order maps one to one, and the wrapper forwards |
|
|
The RAVEN 2 order has no position for |
|
|
None |
|
|
None |
|
|
The overlap output of RAVEN 2 (reactions, genes, metabolites, EC codes, metabolite names, equations and unique equations) is part of the output of |
|
|
Merged, no wrapper. A call moves to |
|
|
Available through the option |
|
|
None. |
|
|
The data source differs, so the signatures are not compatible (see Reconstruction: KEGG and homology pipelines) |
|
|
|
|
|
The signature is identical. |
Gene scoring with scoreModel#
RAVEN 2 has INIT/scoreComplexModel.m and hpa/scoreModel.m. RAVEN 3 has one scoreModel, which the legacy method tINIT and its replacement ftINIT call with different settings. A call written for hpa/scoreModel.m differs in these points (checked against 2.11.3):
RAVEN 2 scored a reaction by the best or the average score over all its genes (
multipleGeneScoring, values'best'and'average'). RAVEN 3 appliesisozymeScoring(default'max') to theorparts andcomplexScoring(default'min') to theandparts of the rule. A reaction with anandrule therefore gets a different default score.Positions count all arguments of the call. The 7th to 9th arguments of a RAVEN 2 call (
multipleGeneScoring,multipleCellScoring,hpaLevelScores) are read asisozymeScoring,complexScoringandmultipleCellScoring.hpaLevelScoresis the 10th argument.multipleCellScoringaccepts'max'and'average'. RAVEN 2 accepted'best'and'average'.dataPrecedenceis an argument of RAVEN 3 with the default'gene'.A gene that is absent from the data receives
NaNingeneScores, and the RAVEN 2 documentation states-Inf.getINITModelconvertsNaNback to-Inf.
Backward-incompatible changes lists these differences as table rows. The function getINITModel passes 'max' for isozymeScoring and for complexScoring, and 'reaction' for dataPrecedence. Whether these settings reproduce the scores of the RAVEN 2 hpa/scoreModel was not checked, and the RAVEN 2 value 'average' of multipleGeneScoring has no equivalent among them.
Legacy tINIT functions#
The method ftINIT replaces the legacy method tINIT. The functions getINITModel and runINIT (in INIT/tINIT/) implement tINIT, are marked legacy and are not scheduled for removal. utils/legacyMethodNotice.m issues a RAVEN:legacyMethod warning once, which can be silenced, and points to ftINIT. The method ftINIT is meant for new work, and getINITModel and runINIT reproduce models that were built with them.