{
 "about": {
  "method": "michaelis-menten-initial-rate",
  "recordedOn": "2026-10-10",
  "script": "pipeline/assay-analyser/oracles/michaelis_menten.py",
  "scriptSha256": "470e84aa305d94f2f326b55bf37911a00670e6754489254730b3f7d1c970cdcc",
  "origin": "Self-constructed rates from known parameters, with fixed noise vectors",
  "tolerances": {
   "rss": "within 1e-6 relative of the oracle's minimum; a lower engine RSS means rerun the oracle",
   "vmax and km": "within 1e-5 relative",
   "correlation": "within 1e-4 absolute",
   "kcat": "within 1e-5 relative",
   "status, flags and refusals": "exact"
  }
 },
 "oracle": {
  "engine": "scipy.optimize.curve_fit",
  "method": "trf with bounds, log parameters (ln Vmax, ln Km), three starts, lowest RSS",
  "scipy": "1.13.1",
  "numpy": "2.0.2",
  "python": "3.11.15"
 },
 "cases": [
  {
   "name": "noiseless",
   "about": "Exact rates from Vmax 10 uM/min and Km 2 uM at seven substrate levels: the hand values",
   "substrate": [
    0.25,
    0.5,
    1,
    2,
    4,
    8,
    16
   ],
   "rate": [
    1.1111111111111112,
    2.0,
    3.3333333333333335,
    5.0,
    6.666666666666667,
    8.0,
    8.88888888888889
   ],
   "substrateUnit": "µM",
   "rateUnit": "µM/min",
   "enzyme": null,
   "expected": {
    "status": "estimated",
    "vmax": 10.000000000000002,
    "km": 2.0000000000000004,
    "rss": 7.888609052210118e-30,
    "correlation": 0.8317889677656696,
    "residuals": [
     0.0,
     0.0,
     0.0,
     -8.881784197001252e-16,
     -8.881784197001252e-16,
     -1.7763568394002505e-15,
     -1.7763568394002505e-15
    ],
    "kmOutsideRange": false,
    "n": 7,
    "levels": 7
   },
   "hand": {
    "vmax": 10,
    "km": 2
   }
  },
  {
   "name": "noisy-duplicates",
   "about": "Duplicate rates with a fixed proportional noise vector; each replicate rate is an observation",
   "substrate": [
    0.25,
    0.25,
    0.5,
    0.5,
    1,
    1,
    2,
    2,
    4,
    4,
    8,
    8,
    16,
    16
   ],
   "rate": [
    1.1377777777777778,
    1.0711111111111111,
    2.036,
    1.976,
    3.4333333333333336,
    3.2600000000000002,
    5.04,
    4.87,
    6.8933333333333335,
    6.5600000000000005,
    8.096,
    7.776,
    9.066666666666666,
    8.8
   ],
   "substrateUnit": "µM",
   "rateUnit": "µM/min",
   "enzyme": null,
   "expected": {
    "status": "estimated",
    "vmax": 10.01710609654363,
    "km": 2.0093835941081073,
    "rss": 0.19930161180066583,
    "correlation": 0.8322423179985423,
    "residuals": [
     0.029388511490097358,
     -0.037278155176569294,
     0.040070378067499135,
     -0.01992962193250092,
     0.10470945296277367,
     -0.06862388037055966,
     0.04316901018698971,
     -0.12683098981301022,
     0.22569034488114692,
     -0.10764298845218612,
     0.08982778980310613,
     -0.23017221019689416,
     0.16721174045071763,
     -0.09945492621594809
    ],
    "kmOutsideRange": false,
    "n": 14,
    "levels": 7
   }
  },
  {
   "name": "noisy-with-kcat",
   "about": "The duplicate series with 10 nM active enzyme: kcat = Vmax / [E] per minute",
   "substrate": [
    0.25,
    0.25,
    0.5,
    0.5,
    1,
    1,
    2,
    2,
    4,
    4,
    8,
    8,
    16,
    16
   ],
   "rate": [
    1.1377777777777778,
    1.0711111111111111,
    2.036,
    1.976,
    3.4333333333333336,
    3.2600000000000002,
    5.04,
    4.87,
    6.8933333333333335,
    6.5600000000000005,
    8.096,
    7.776,
    9.066666666666666,
    8.8
   ],
   "substrateUnit": "µM",
   "rateUnit": "µM/min",
   "enzyme": {
    "value": 10,
    "unit": "nM"
   },
   "expected": {
    "status": "estimated",
    "vmax": 10.01710609654363,
    "km": 2.0093835941081073,
    "rss": 0.19930161180066583,
    "correlation": 0.8322423179985423,
    "residuals": [
     0.029388511490097358,
     -0.037278155176569294,
     0.040070378067499135,
     -0.01992962193250092,
     0.10470945296277367,
     -0.06862388037055966,
     0.04316901018698971,
     -0.12683098981301022,
     0.22569034488114692,
     -0.10764298845218612,
     0.08982778980310613,
     -0.23017221019689416,
     0.16721174045071763,
     -0.09945492621594809
    ],
    "kmOutsideRange": false,
    "n": 14,
    "levels": 7,
    "kcat": {
     "status": "estimated",
     "kcat": 1001.710609654363,
     "unit": "per minute"
    }
   }
  },
  {
   "name": "kcat-refused-amount-rate",
   "about": "Rates in nmol/min (an amount per time) with a molar enzyme concentration: kcat refused without a volume; Km and Vmax still estimated",
   "substrate": [
    0.25,
    0.5,
    1,
    2,
    4,
    8,
    16
   ],
   "rate": [
    1.1111111111111112,
    2.0,
    3.3333333333333335,
    5.0,
    6.666666666666667,
    8.0,
    8.88888888888889
   ],
   "substrateUnit": "µM",
   "rateUnit": "nmol/min",
   "enzyme": {
    "value": 10,
    "unit": "nM"
   },
   "expected": {
    "status": "estimated",
    "vmax": 10.000000000000002,
    "km": 2.0000000000000004,
    "rss": 7.888609052210118e-30,
    "correlation": 0.8317889677656696,
    "residuals": [
     0.0,
     0.0,
     0.0,
     -8.881784197001252e-16,
     -8.881784197001252e-16,
     -1.7763568394002505e-15,
     -1.7763568394002505e-15
    ],
    "kmOutsideRange": false,
    "n": 7,
    "levels": 7,
    "kcat": {
     "status": "refused",
     "reason": "needs-volume"
    }
   }
  },
  {
   "name": "unsaturated",
   "about": "Substrate only to 1 uM against a true Km of 20 uM: Km lies above the highest substrate, flagged, and Km and Vmax are strongly correlated",
   "substrate": [
    0.1,
    0.2,
    0.4,
    0.6,
    0.8,
    1.0
   ],
   "rate": [
    0.03105074626865672,
    0.05850594059405942,
    0.11874705882352944,
    0.17335728155339802,
    0.23156923076923078,
    0.2851142857142857
   ],
   "substrateUnit": "µM",
   "rateUnit": "µM/min",
   "enzyme": null,
   "expected": {
    "status": "estimated",
    "vmax": 5.597870868240011,
    "km": 18.618063185149776,
    "rss": 6.241905764306062e-06,
    "correlation": 0.9999380266948429,
    "residuals": [
     0.0011444957508085045,
     -0.0009887142294779591,
     0.0010090785940579106,
     -0.0014117619545536697,
     0.0009439283437630008,
     -0.0002284015535080619
    ],
    "kmOutsideRange": true,
    "n": 6,
    "levels": 6
   }
  },
  {
   "name": "bound-contact",
   "about": "Rates exactly proportional to substrate (v = 0.5 S): no saturation at all, Km runs to the upper search bound and no estimate is shown",
   "substrate": [
    0.5,
    1,
    2,
    3,
    4
   ],
   "rate": [
    0.25,
    0.5,
    1,
    1.5,
    2
   ],
   "substrateUnit": "µM",
   "rateUnit": "µM/min",
   "enzyme": null,
   "expected": {
    "status": "bound",
    "rss": 3.541869136262576e-07
   }
  },
  {
   "name": "refused-three-levels",
   "about": "Three distinct substrate levels in triplicate: refused, the four-level floor",
   "substrate": [
    1,
    1,
    1,
    2,
    2,
    2,
    4,
    4,
    4
   ],
   "rate": [
    3.3,
    3.4,
    3.2,
    5.0,
    5.1,
    4.9,
    6.7,
    6.6,
    6.7
   ],
   "substrateUnit": "µM",
   "rateUnit": "µM/min",
   "enzyme": null,
   "expected": {
    "status": "refused",
    "reason": "substrate-levels"
   }
  },
  {
   "name": "refused-negative-substrate",
   "about": "A negative substrate concentration",
   "substrate": [
    -1,
    1,
    2,
    4,
    8
   ],
   "rate": [
    0.1,
    3.3,
    5.0,
    6.7,
    8.0
   ],
   "substrateUnit": "µM",
   "rateUnit": "µM/min",
   "enzyme": null,
   "expected": {
    "status": "refused",
    "reason": "invalid"
   }
  }
 ]
}
