{
 "about": {
  "method": "substrate-inhibition-haldane",
  "origin": "Original synthetic rates from known parameters with recorded noise vectors (NumPy default_rng seeds named per case); no published dataset",
  "ruling": "CSO memo of 11 October 2026, item 6 (docs/board/memos/2026-10-11-cso-assay-depth-stage.md); roadmap A5",
  "model": "v = Vmax S / (Km + S (1 + S/Ksi)); optimum sqrt(Km Ksi)",
  "minimumLevels": 6,
  "minimumBeyondOptimum": 2,
  "withheld": "Ksi at its box ('ksi-bound') or fewer than two distinct levels above the optimum ('no-decline'): no constant, the Michaelis-Menten fit offered; Vmax or Km at its box: 'bound'",
  "comparison": "AICc (K = parameters + 1) for Haldane and Michaelis-Menten on the same rates, dAicc = AICc_MM - AICc_Haldane, and the F of Michaelis-Menten within Haldane (approximate: the boundary Ksi -> infinity); withheld at an exact fit",
  "interval": "none this stage (CSO item 6)",
  "tolerances": {
   "statuses, refusals, reasons, the parameters at the box and the beyond count": "exact",
   "vmax, km, ksi and the optimum": "within 1e-5 relative; hand values within 1e-9 relative",
   "rss": "within 1e-6 relative, or both at the rates' numeric resolution",
   "correlations": "within 1e-4 absolute",
   "aicc and dAicc": "within 1e-6 absolute",
   "F": "within 1e-5 relative",
   "p": "within 1e-4 relative or 1e-10 absolute"
  },
  "recordedOn": "2026-10-13",
  "script": "pipeline/assay-analyser/oracles/substrate_inhibition.py",
  "scriptSha256": "1249a3171eaa6147addf90cdc8494805b1c0ce50ac97159d1af425e295567878",
  "helper": {
   "script": "pipeline/assay-analyser/oracles/stage_a_oracle.py",
   "sha256": "492d85ca2fa6750db80b1c64214fd4a0b13cd4c588267244f6262c504c73e3e8"
  },
  "environment": {
   "image": "ghcr.io/biotechmat/drybench/oracle-env:11b8a5e4456df7eb@sha256:7e69891ca1d9f24838660e0a9887bdb654ce7771d2f2ac7e7275e9b1eb3b6a09",
   "r": "R version 4.4.3 (2025-02-28)",
   "packages": {
    "jsonlite": "2.0.0"
   },
   "python": "3.11.15",
   "numpy": "2.0.2",
   "scipy": "1.13.1",
   "recordedOn": "2026-10-13",
   "cpu": "AMD EPYC 7763 64-Core Processor",
   "cpuClass": "x86-64-v3",
   "simd": [
    "SSSE3",
    "SSE41",
    "POPCNT",
    "SSE42",
    "AVX",
    "F16C",
    "FMA3",
    "AVX2"
   ],
   "openblasCore": "Haswell",
   "threads": 1
  },
  "crossCheck": {
   "tool": "R stats::nls",
   "version": "R version 4.4.3 (2025-02-28)",
   "script": "pipeline/assay-analyser/oracles/r/substrate_inhibition_nls.R",
   "scriptSha256": "b044dfb1e3c75570545625833e515ccd4350d4c16dc7581a54cd0f1200247f66",
   "ran": true,
   "settings": "nls on each estimate from the SciPy values, the same rows, tol 1e-8 then 1e-6, scaleOffset 1",
   "tolerances": {
    "parameters": "1e-5 relative",
    "rss": "1e-6 relative, or both at the rates' numeric resolution"
   },
   "cases": 4,
   "agreeing": 4,
   "scipyOnly": [
    "michaelis-menten-rates",
    "ksi-at-bound",
    "one-level-beyond",
    "refused-five-levels",
    "refused-negative-substrate"
   ],
   "result": [
    {
     "case": "noiseless-hand",
     "converged": true,
     "parameters": {
      "vmax": 10,
      "km": 2,
      "ksi": 20
     },
     "relativeDifferences": {
      "vmax": 1.77635683940025e-16,
      "km": 2.2204460492503126e-16,
      "ksi": 1.7763568394002508e-16
     },
     "rss": 1.38050658413677e-30,
     "agrees": true
    },
    {
     "case": "noisy-duplicate",
     "converged": true,
     "parameters": {
      "vmax": 9.44483997985759,
      "km": 1.75677406304968,
      "ksi": 22.441534072518
     },
     "relativeDifferences": {
      "vmax": 3.761539302282671e-16,
      "km": 2.401474146454483e-15,
      "ksi": 1.583097513441013e-16
     },
     "rss": 0.239747297756409,
     "agrees": true
    },
    {
     "case": "metamorphic-mM",
     "converged": true,
     "parameters": {
      "vmax": 9.44483996951667,
      "km": 0.00175677405913696,
      "ksi": 0.0224415341270204
     },
     "relativeDifferences": {
      "vmax": 1.8807696532005445e-16,
      "km": 2.098327538068079e-15,
      "ksi": 1.5459936617150799e-15
     },
     "rss": 0.239747297756409,
     "agrees": true
    },
    {
     "case": "metamorphic-row-order",
     "converged": true,
     "parameters": {
      "vmax": 9.44483998593297,
      "km": 1.75677406551393,
      "ksi": 22.4415340432398
     },
     "relativeDifferences": {
      "vmax": 5.642308949794604e-16,
      "km": 2.780654270941559e-15,
      "ksi": 1.1081682608544747e-15
     },
     "rss": 0.239747297756409,
     "agrees": true
    }
   ]
  }
 },
 "oracle": {
  "engine": "scipy.optimize.curve_fit",
  "method": "trf with bounds, log parameters, three starts, lowest RSS; Michaelis-Menten by michaelis_menten.py's method; AICc and F by hand, p from scipy.stats.f.sf"
 },
 "cases": [
  {
   "name": "noiseless-hand",
   "about": "Haldane rates from Vmax 10, Km 2, Ksi 20 at 9 levels 0.25 to 64 uM: the hand values exactly; the optimum sqrt(40) = 6.32 uM with 4 levels beyond",
   "substrate": [
    0.25,
    0.5,
    1.0,
    2.0,
    4.0,
    8.0,
    16.0,
    32.0,
    64.0
   ],
   "rate": [
    1.1095700416088767,
    1.990049751243781,
    3.278688524590164,
    4.761904761904762,
    5.882352941176471,
    6.0606060606060606,
    5.194805194805195,
    3.755868544600939,
    2.363367799113737
   ],
   "substrateUnit": "µM",
   "rateUnit": "µM/min",
   "expected": {
    "status": "estimated",
    "vmax": 10.000000000000002,
    "km": 2.0000000000000004,
    "ksi": 19.999999999999996,
    "optimum": 6.324555320336759,
    "beyond": 4,
    "rss": 1.3805065841367707e-30,
    "n": 9,
    "df": 6,
    "levels": 9,
    "correlation": {
     "order": [
      "vmax",
      "km",
      "ksi"
     ],
     "matrix": [
      [
       0.9999999999999999,
       0.9329704045692282,
       -0.9333155506431603
      ],
      [
       0.9329704045692283,
       0.9999999999999999,
       -0.8380428749506367
      ],
      [
       -0.9333155506431606,
       -0.8380428749506369,
       1.0
      ]
     ]
    },
    "kmKsiCorrelation": -0.8380428749506367,
    "residuals": [
     0.0,
     -4.440892098500626e-16,
     4.440892098500626e-16,
     0.0,
     0.0,
     -8.881784197001252e-16,
     0.0,
     0.0,
     4.440892098500626e-16
    ],
    "comparison": {
     "status": "not-available",
     "reason": "zero-residual"
    }
   },
   "hand": {
    "vmax": 10.0,
    "km": 2.0,
    "ksi": 20.0
   }
  },
  {
   "name": "noisy-duplicate",
   "about": "The same model in duplicate with additive noise SD 0.12 (seed 20261018)",
   "substrate": [
    0.25,
    0.25,
    0.5,
    0.5,
    1.0,
    1.0,
    2.0,
    2.0,
    4.0,
    4.0,
    8.0,
    8.0,
    16.0,
    16.0,
    32.0,
    32.0,
    64.0,
    64.0
   ],
   "rate": [
    1.315888767253595,
    1.1328871843510269,
    2.2892615464822184,
    2.059214411817305,
    3.251977631294432,
    3.346506299805909,
    4.7501327527692006,
    4.767471722572244,
    5.704844704760959,
    6.044774347534511,
    5.924243288974576,
    5.9740468878399255,
    5.421873895469991,
    5.103869519857333,
    3.832517224464059,
    3.746424645390394,
    2.488570935599556,
    2.29360972890806
   ],
   "substrateUnit": "µM",
   "rateUnit": "µM/min",
   "expected": {
    "status": "estimated",
    "vmax": 9.444839979857594,
    "km": 1.7567740630496758,
    "ksi": 22.441534072517996,
    "optimum": 6.278909538577951,
    "beyond": 4,
    "rss": 0.23974729775640946,
    "n": 18,
    "df": 15,
    "levels": 9,
    "correlation": {
     "order": [
      "vmax",
      "km",
      "ksi"
     ],
     "matrix": [
      [
       1.0,
       0.9235781194396192,
       -0.9241524201047563
      ],
      [
       0.9235781194396193,
       0.9999999999999999,
       -0.8188539335040075
      ],
      [
       -0.9241524201047563,
       -0.8188539335040075,
       0.9999999999999998
      ]
     ]
    },
    "kmKsiCorrelation": -0.8188539335040075,
    "residuals": [
     0.1408996757519847,
     -0.042101907150583484,
     0.20698693772216004,
     -0.023060196942753297,
     -0.11957284422203562,
     -0.025044175710558392,
     -0.05027587908682474,
     -0.03293690928378101,
     -0.13455112333456576,
     0.20537851943898566,
     -0.06837650884413904,
     -0.01857290997878991,
     0.2402652278231976,
     -0.0777391477894609,
     0.02538304709712813,
     -0.060709531976536724,
     0.05389743311224482,
     -0.14106377357925126
    ],
    "comparison": {
     "status": "computed",
     "michaelisMenten": {
      "status": "estimated",
      "vmax": 4.803607990561466,
      "km": 0.4061345971653802,
      "rss": 24.787479252101264
     },
     "aiccHaldane": -66.65682561988805,
     "aiccMichaelisMenten": 13.473689894822114,
     "dAicc": 80.13051551471017,
     "F": 1535.8503839709235,
     "p": 1.5846487286391638e-16,
     "df1": 1,
     "df2": 15,
     "boundary": true
    }
   }
  },
  {
   "name": "metamorphic-mM",
   "about": "The noisy rates with substrate in mM (every S x 1e-3): Km, Ksi and the optimum x 1e-3, Vmax and RSS unchanged",
   "substrate": [
    0.00025,
    0.00025,
    0.0005,
    0.0005,
    0.001,
    0.001,
    0.002,
    0.002,
    0.004,
    0.004,
    0.008,
    0.008,
    0.016,
    0.016,
    0.032,
    0.032,
    0.064,
    0.064
   ],
   "rate": [
    1.315888767253595,
    1.1328871843510269,
    2.2892615464822184,
    2.059214411817305,
    3.251977631294432,
    3.346506299805909,
    4.7501327527692006,
    4.767471722572244,
    5.704844704760959,
    6.044774347534511,
    5.924243288974576,
    5.9740468878399255,
    5.421873895469991,
    5.103869519857333,
    3.832517224464059,
    3.746424645390394,
    2.488570935599556,
    2.29360972890806
   ],
   "substrateUnit": "mM",
   "rateUnit": "µM/min",
   "expected": {
    "status": "estimated",
    "vmax": 9.444839969516668,
    "km": 0.0017567740591369564,
    "ksi": 0.022441534127020366,
    "optimum": 0.0062789095392103,
    "beyond": 4,
    "rss": 0.2397472977564094,
    "n": 18,
    "df": 15,
    "levels": 9,
    "correlation": {
     "order": [
      "vmax",
      "km",
      "ksi"
     ],
     "matrix": [
      [
       1.0,
       0.9235781192192593,
       -0.9241524198882577
      ],
      [
       0.9235781192192593,
       1.0,
       -0.8188539330386125
      ],
      [
       -0.9241524198882576,
       -0.8188539330386125,
       0.9999999999999998
      ]
     ]
    },
    "kmKsiCorrelation": -0.8188539330386125,
    "residuals": [
     0.1408996747467297,
     -0.042101908155838474,
     0.20698693638470678,
     -0.023060198280206556,
     -0.11957284537001556,
     -0.025044176858538325,
     -0.05027587913226661,
     -0.032936909329222885,
     -0.13455112203548847,
     0.20537852073806295,
     -0.06837650743444268,
     -0.01857290856909355,
     0.24026522787897786,
     -0.07773914773368062,
     0.02538304576333017,
     -0.060709533310334685,
     0.05389743139266567,
     -0.1410637752988304
    ],
    "comparison": {
     "status": "computed",
     "michaelisMenten": {
      "status": "estimated",
      "vmax": 4.803608000543734,
      "km": 0.00040613460528939114,
      "rss": 24.78747925210127
     },
     "aiccHaldane": -66.65682561988805,
     "aiccMichaelisMenten": 13.473689894822119,
     "dAicc": 80.13051551471017,
     "F": 1535.8503839709242,
     "p": 1.5846487286391593e-16,
     "df1": 1,
     "df2": 15,
     "boundary": true
    }
   }
  },
  {
   "name": "metamorphic-row-order",
   "about": "The noisy rates with the rows permuted (seed 20261018): everything unchanged",
   "substrate": [
    8.0,
    0.5,
    64.0,
    1.0,
    16.0,
    32.0,
    2.0,
    2.0,
    32.0,
    4.0,
    4.0,
    0.25,
    64.0,
    16.0,
    0.5,
    1.0,
    0.25,
    8.0
   ],
   "rate": [
    5.924243288974576,
    2.059214411817305,
    2.488570935599556,
    3.251977631294432,
    5.421873895469991,
    3.746424645390394,
    4.767471722572244,
    4.7501327527692006,
    3.832517224464059,
    5.704844704760959,
    6.044774347534511,
    1.1328871843510269,
    2.29360972890806,
    5.103869519857333,
    2.2892615464822184,
    3.346506299805909,
    1.315888767253595,
    5.9740468878399255
   ],
   "substrateUnit": "µM",
   "rateUnit": "µM/min",
   "expected": {
    "status": "estimated",
    "vmax": 9.444839985932965,
    "km": 1.7567740655139348,
    "ksi": 22.441534043239773,
    "optimum": 6.278909538885849,
    "beyond": 4,
    "rss": 0.23974729775640952,
    "n": 18,
    "df": 15,
    "levels": 9,
    "correlation": {
     "order": [
      "vmax",
      "km",
      "ksi"
     ],
     "matrix": [
      [
       1.0,
       0.9235781194823934,
       -0.9241524201389554
      ],
      [
       0.9235781194823934,
       1.0000000000000002,
       -0.8188539335690724
      ],
      [
       -0.9241524201389553,
       -0.8188539335690725,
       1.0
      ]
     ]
    },
    "kmKsiCorrelation": -0.8188539335690724,
    "residuals": [
     -0.06837650975931542,
     -0.023060196006279288,
     0.05389743390541746,
     -0.11957284335494567,
     0.24026522757216462,
     -0.060709531452385335,
     -0.03293690908174973,
     -0.05027587888479346,
     0.02538304762127952,
     -0.13455112402703673,
     0.2053785187465147,
     -0.04210190646341627,
     -0.14106377278607862,
     -0.07773914804049387,
     0.20698693865863405,
     -0.025044174843468436,
     0.1408996764391519,
     -0.018572910893966288
    ],
    "comparison": {
     "status": "computed",
     "michaelisMenten": {
      "status": "estimated",
      "vmax": 4.80360799520553,
      "km": 0.40613460110334315,
      "rss": 24.78747925210126
     },
     "aiccHaldane": -66.65682561988805,
     "aiccMichaelisMenten": 13.47368989482211,
     "dAicc": 80.13051551471017,
     "F": 1535.8503839709228,
     "p": 1.58464872863917e-16,
     "df1": 1,
     "df2": 15,
     "boundary": true
    }
   }
  },
  {
   "name": "michaelis-menten-rates",
   "about": "Michaelis-Menten rates (Vmax 10, Km 2) in duplicate with noise SD 0.12 (seed 20261019): no decline, so Ksi is withheld and the Michaelis-Menten fit offered",
   "substrate": [
    0.25,
    0.25,
    0.5,
    0.5,
    1.0,
    1.0,
    2.0,
    2.0,
    4.0,
    4.0,
    8.0,
    8.0,
    16.0,
    16.0,
    32.0,
    32.0,
    64.0,
    64.0
   ],
   "rate": [
    1.1185996326662486,
    0.9815409867685273,
    2.0499438626715265,
    2.0784279272341273,
    3.2777942060482173,
    3.2295575137904446,
    4.934308297225999,
    5.077061062947127,
    6.694476932334884,
    6.706874546223641,
    8.21237823878618,
    7.969233952772157,
    8.887960285768314,
    9.014182388418345,
    9.36802189694174,
    9.540141270342854,
    9.835254503026798,
    9.618156013088162
   ],
   "substrateUnit": "µM",
   "rateUnit": "µM/min",
   "expected": {
    "status": "withheld",
    "reason": "no-decline",
    "n": 18,
    "levels": 9,
    "beyond": 0,
    "michaelisMenten": {
     "status": "estimated",
     "vmax": 10.06850801866836,
     "km": 2.0233113465382297,
     "rss": 0.13439189914771657
    }
   }
  },
  {
   "name": "ksi-at-bound",
   "about": "Noiseless Michaelis-Menten rates (Vmax 10, Km 2) at the 9 levels: Ksi runs to its upper box, so Ksi is withheld and the Michaelis-Menten fit offered",
   "substrate": [
    0.25,
    0.5,
    1.0,
    2.0,
    4.0,
    8.0,
    16.0,
    32.0,
    64.0
   ],
   "rate": [
    1.1111111111111112,
    2.0,
    3.3333333333333335,
    5.0,
    6.666666666666667,
    8.0,
    8.88888888888889,
    9.411764705882353,
    9.696969696969697
   ],
   "substrateUnit": "µM",
   "rateUnit": "µM/min",
   "expected": {
    "status": "withheld",
    "reason": "ksi-bound",
    "n": 9,
    "levels": 9,
    "michaelisMenten": {
     "status": "estimated",
     "vmax": 10.000000000000002,
     "km": 2.0000000000000004,
     "rss": 1.4199496293978212e-29
    }
   }
  },
  {
   "name": "one-level-beyond",
   "about": "Haldane rates (Ksi 60) at 7 levels to 16 uM with a fixed small noise vector: the optimum near 11 uM leaves one level beyond, so Ksi is withheld (no decline evident beyond the optimum)",
   "substrate": [
    0.25,
    0.5,
    1.0,
    2.0,
    4.0,
    8.0,
    16.0
   ],
   "rate": [
    1.1305969458583989,
    1.9666722129783696,
    3.324917127071823,
    4.918032786885246,
    6.362978723404256,
    7.258915662650603,
    7.175628742514971
   ],
   "substrateUnit": "µM",
   "rateUnit": "µM/min",
   "expected": {
    "status": "withheld",
    "reason": "no-decline",
    "n": 7,
    "levels": 7,
    "beyond": 1,
    "michaelisMenten": {
     "status": "estimated",
     "vmax": 8.230839546768628,
     "km": 1.4045529811011215,
     "rss": 0.35960433533749125
    }
   }
  },
  {
   "name": "refused-five-levels",
   "about": "Five substrate levels: fewer than six",
   "substrate": [
    1.0,
    2.0,
    4.0,
    8.0,
    16.0
   ],
   "rate": [
    3.278688524590164,
    4.761904761904762,
    5.882352941176471,
    6.0606060606060606,
    5.194805194805195
   ],
   "substrateUnit": "µM",
   "rateUnit": "µM/min",
   "expected": {
    "status": "refused",
    "reason": "substrate-levels"
   }
  },
  {
   "name": "refused-negative-substrate",
   "about": "A negative substrate concentration",
   "substrate": [
    -1.0,
    0.5,
    1.0,
    2.0,
    4.0,
    8.0,
    16.0,
    32.0,
    64.0
   ],
   "rate": [
    1.1095700416088767,
    1.990049751243781,
    3.278688524590164,
    4.761904761904762,
    5.882352941176471,
    6.0606060606060606,
    5.194805194805195,
    3.755868544600939,
    2.363367799113737
   ],
   "substrateUnit": "µM",
   "rateUnit": "µM/min",
   "expected": {
    "status": "refused",
    "reason": "invalid"
   }
  }
 ]
}
