Skip to content

Let enzymes with an unusable measurement be treated as unmeasured - #11

Closed
edkerk wants to merge 1 commit into
masterfrom
feat/unmeasured-enzymes
Closed

edkerk wants to merge 1 commit into
masterfrom
feat/unmeasured-enzymes

Conversation

@edkerk

@edkerk edkerk commented Sep 25, 2026 •

Copy link
Copy Markdown
Collaborator

The pentose phosphate pathway (PP shunt) carried no flux in the enzyme-constrained
models at CN38 and CN75, where the published analysis had about 20% median capacity
usage.

Cause

Not the objective: minimising protein, or total flux over all or only the metabolic
reactions, all gave zero. The pathway is capped by enzymes measured very low.

  • CN38: RKI1 is measured at about 0.01 mg/gDW and the model needs all of it for
    nucleotide precursors, so the shunt entry cannot carry any flux (maximum 0.000).
    Releasing RKI1 allows 0.073, releasing SOL3 as well 0.211. Nothing else is needed,
    and the protein pool does not grow.
  • hGR: releasing RKI1 raises the maximum from 0.31 to 0.89.
  • CN75: caps are not the only limit. The shunt releases CO2, and CO2 is already
    at the top of its 8% band there.

Change

--unmeasured UNIPROT ... leaves the named enzymes out of the measured abundances,
so they draw on the shared protein pool instead of being capped. The default is
none, so existing results do not change. The README recipe now uses
--unmeasured Q12189 P38858 (RKI1 and SOL3); dropping it builds strictly from the
measured abundances.

Result

Median PP shunt capacity usage, %, published / before / with the two released:

CN4 CN22 CN38 CN75 hGR
published 5.6 11.7 20.5 20.6 41.7
before 11.0 1.9 0.0 0.0 6.1
--unmeasured Q12189 P38858 4.0 6.8 8.9 8.0 12.2

The shunt now carries flux at every condition and rises with growth rate, but it is
still below the published values at the high-uptake conditions. The exchange-rate fit
is unchanged (mean residual 0.124), the ribosome and ETC results do not move, and
the protein pool is not grown in any condition. A 12% rate tolerance for CN75 gave
no better shunt and a worse fit (0.185), so it is not used.

Releasing two named enzymes is a modelling choice, which is why it is an option.

Why a list, and not a threshold rule

RKI1 and SOL3 are not outliers among the measured enzymes: RKI1 sits at the 17th
percentile of measured abundance at CN38 (15% at CN75, 38% at hGR) and SOL3 at the
39th (41%, 36%). Releasing the lowest 1-10% of enzymes (7 to 63 of them) leaves the
maximum shunt flux at 0.000 at CN38 and CN75. A cutoff of 0.05 mg/gDW catches both
and restores the shunt (0.35 at CN38, 0.46 at CN75, 1.46 at hGR), but releases 291
to 305 enzymes, about half the measured proteome. So no simple threshold isolates
them, and they are named explicitly. They were found as the binding caps by
releasing, one at a time, the cap with the largest reduced cost.

Tests

Two unit tests for dropping proteins, and one on the real model showing that an
unmeasured enzyme is left out of the abundances while the f-factor and protein
content are unchanged. The suite passes on Gurobi (191 tests).

--unmeasured leaves the named enzymes out of the measured abundances so they
draw on the shared pool. RKI1 and SOL3 are measured so low that they cap the
pentose phosphate pathway at zero; released, it carries flux again.
@edkerk

edkerk commented Sep 25, 2026

Copy link
Copy Markdown
Collaborator Author

Closing without merging. The shunt is capped by measured enzyme abundances (RKI1, SOL3) and that is accepted: the enzyme-constrained model does not have to reproduce the published shunt usage, and it may carry no flux at some conditions.

@edkerk edkerk closed this Sep 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant