Executing the Calibration Pipeline: Autophagy as a Worked Case
WP-30 withdrew a claim: that the dimensionless eigenvalue μ = −2 could be rescaled by a real mTORC1 kinase time constant into a physical rate, μ_max ≈ −0.41 s¹⁻. The number didn't survive contact with its own sources. WP-31 generalized the failure into a checklist. This paper runs that checklist against the same system — the AMPK–mTORC1–ULK1 autophagy switch — starting over, forward from measured biology instead of backward from a target constant. It reports what cleared, what didn't, and what is still missing before any number here can be called a calibration rather than an illustration.
1. Operationalize
What it requires (per WP-31): name a real, measurable proxy for the abstract quantity before doing any arithmetic on it.
Instead of picking a single kinase time constant off a review article, the abstract operator was mapped onto an actual published mechanistic model of the pathway — the mutual-inhibition ODE network for active AMPK, mTORC1, and ULK1 fractions (Szymańska, Martin, MacKeigan, Hlavacek & Lipniacki, PLOS ONE 10(3): e0116550, 2015, "Computational Analysis of an Autophagy/Translation Switch Based on Mutual Inhibition of MTORC1 and ULK1"; Kapuy et al., FEBS Open Bio 2014, on the same mTOR–ULK1 bistable switch under ER stress). The observable is no longer "a time constant" — it is the Jacobian spectrum of a named, published, mass-action-derived dynamical system, evaluated at its own steady state.
The reaction network was built explicitly at the complex level (active species A, M, U and inactive pools Ai, Mi, Ui, three conservation laws), and its topology was checked independently rather than by hand:
verified by explicit graph construction (complexes as species-count vectors, linkage classes as connected components of the reaction graph, s as the rank of the reaction-vector matrix) — not asserted. An earlier draft of this same network mis-stated l = 3 by treating the shared zero-complex and the shared M+U complex as separate vertices; rebuilding the graph and computing connected components directly caught the error and corrected it to l = 4, δ = 2.
2. Estimate
What it requires: fit the parameter vector θ against real data by a stated loss, not cite a number.
A Jacobian was derived analytically from the active-fraction ODEs and evaluated numerically
across a stress sweep S ∈ [0.1, 5.0] using scipy.optimize.root for the
steady state and numpy.linalg.eigvals for the spectrum, at 50-point resolution.
This step is honest about the loss function only because there wasn't one — the rate
constants used,
are illustrative placeholders, not fit to any measured kinase or phosphatase rate. They were chosen to be generic (produce a stable, non-degenerate steady state), not estimated.
3. Validate
What it requires: test the fitted function out of sample.
With illustrative (not fitted) parameters, there is no out-of-sample claim to validate. What was checked instead — a weaker but real thing — is internal consistency of the model itself:
| Check | Method | Result |
|---|---|---|
| Trajectory convergence | Direct time-domain simulation (scipy.integrate.solve_ivp) from five widely separated initial conditions at fixed S | Converges to a single point with zero tail variance in every case — no oscillation, no path-dependence |
| Driver fixed point | Closed-form A*(S) = ka1S/(ka1S+ka2) checked against the numerically solved root at three stress values | Matched to six decimal places |
| Cooperativity | Sign transformation K = diag(+1,−1,+1) applied to the actual computed Jacobian (not its symbolic sign pattern) at four stress levels | All off-diagonal entries of the transformed matrix confirmed ≥ 0 in every case; loop-gain product J₂₃J₃₂ confirmed positive (≈0.78–0.84) throughout |
4. Iterate
Not reached. There is no fitted θ yet to refit.
5. What is actually established, versus what looked established
| Claim | Status |
|---|---|
| δ = 2 for the AMPK–mTORC1–ULK1 network (open, active/inactive formulation) | Established — computed twice, independently, by explicit graph construction |
| Feinberg's Deficiency One Theorem certifies multistability parameter-free | False for this network — δ ≠ 1, theorem doesn't apply; multistability is topologically permitted, not forced |
| The (M,U) subsystem is cooperative and forbids limit cycles | Established — Hirsch (1982, 1985), verified against the real numerical Jacobian |
| The full 3D cascade inherits that no-cycle result | Established for generic parameter sets — Markus (1956)/Thieme (1992) asymptotic-autonomy transfer |
| λ_max(S) clusters near integers (−2, −3) | False — full-resolution scan gives λ_max(S) ∈ [−0.65, −2.82] min⁻¹, smooth and continuous in S |
| μ_max ≈ −0.41 s⁻¹ is a physiological calibration of the dimensionless −2 | Withdrawn in WP-30; not re-established here — no valid path from −2 to a unit-bearing constant was found this time either |
| Σ CiJ = 1 (Kacser–Burns / Heinrich–Rapoport) is a genuine parameter-free invariant of metabolic networks | True, and worth keeping as the corpus's reference case for what a real dimensionless biological invariant looks like — it is not −2, −3, or −0.41 |
Path forward, if continued: pull actual fitted rate constants from Szymańska et al.'s supplement and/or von Bülow & Hummer's reported ATG2 transfer kinetics, rerun Stage 2 as a real least-squares or MLE fit against a stated observable, and only then treat Stage 3 as a genuine validation. WP-31D picks this up directly and finds the reduced model's own topology, not just its parameters, was unfit for the question.
All numerical claims above — the deficiency graph computation, the Jacobian sign/cooperativity check against real computed values, the eigenvalue continuation sweep, and the five-initial-condition time-domain simulation — were executed directly (Python 3, NumPy/SciPy/NetworkX) rather than derived by hand, in keeping with WP-31B's own standard of tracing claims to a checkable source before publishing them.