Parameter benchmarks#
Parameters whose defaults were measured but did not need a study of their own. Everything here was run on 2026-06-20 unless a row says otherwise, on yeast-GEM (4,102 reactions), iJO1366 (2,583) and e_coli_core (95).
The parameters that did get a dedicated campaign are in the studies listed under Parameter tuning; the current value and one-line reason for every parameter on either side is in Tuned parameter defaults.
Two measurements that show MATLAB's default should change#
fseof: MATLAB classifies targets with no tolerance at all#
flux_eps is the floor below which a reaction's flux trend is treated as noise
rather than signal. It does three jobs inside the classifier: skip a reaction
whose flux is flat across the scan, skip one whose regression slope is
indistinguishable from zero, and call a reaction a knockout when its flux at
maximum enforcement is effectively zero.
On iJO1366:
|
Amplified |
Knocked down or out |
|---|---|---|
|
18 |
414 |
|
18 |
414 |
|
18 |
393 |
The 21 extra targets admitted below 1e-6 all have a flux standard deviation
around 5e-7 across the ten scan steps, Gurobi's primal feasibility tolerance
accumulated across 2,583 reactions, which is floating-point summation noise
rather than a metabolic trend. Reporting them would send a user to engineer
reactions that are functionally zero throughout.
MATLAB's FSEOF.m compares each step against the previous one as bare floats,
with no threshold of any kind. That is stricter than the 1e-8 row here, so 21
is a lower bound on what the MATLAB side would flag, not a measurement of it.
Giving MATLAB a floor means adding one rather than exposing a value it already
has.
remove_genes: the MATLAB default predicts growth after deleting an essential gene#
blocked_reactions decides what happens to a reaction whose gene rule is emptied
by a deletion. Deleting b1779 from e_coli_core removes the only gene for GAPD,
which is essential for aerobic growth on glucose:
|
Reactions left |
Predicted growth |
|
|---|---|---|---|
|
95 |
0.874 |
GAPD survives with an empty rule and runs unconstrained |
|
94 |
0.000 |
GAPD is deleted, glycolysis breaks |
Both behaviours are defensible, for different jobs. Keeping the reaction is right when editing gene annotations, where the network should not change as a result. Removing it is right for essentiality and engineering work, where a reaction with no enzyme should not carry flux. The defaults disagree about which job is the common one, and the MATLAB default silently produces a false negative in essentiality screens.
Literature and convention values, checked#
These were swept and confirmed rather than changed. Both implementations agree on each, so there is nothing to reconcile; the value of the check is that the number is no longer taken on trust.
Parameter |
Value |
What the sweep showed |
|---|---|---|
|
|
Choi et al. 2010's value; 5 and 20 give the same target set on iJO1366 |
|
|
Choi et al. 2010; below 0.9 admits spurious targets, 0.99 finds nothing extra |
|
|
Choi et al. 2010; 0.7 adds four spurious amplification targets |
|
|
Correct for RAVEN-convention models, where exchanges carry ±1000 bounds |
|
|
The stricter question, and the one the function exists to ask |
|
|
The fastGapFill paper's value |
|
|
Matches RAVEN-convention bounds |
|
|
Matches RAVEN's |