tooluniverse-enzyme-kinetics

$npx mdskill add mims-harvard/ToolUniverse/tooluniverse-enzyme-kinetics

Fit Michaelis-Menten kinetics and classify inhibition from your own data.

  • Analyzes substrate-velocity data to compute Km, Vmax, kcat, and catalytic efficiency.
  • Uses nonlinear regression and reports Lineweaver-Burk plot for reference.
  • Determines inhibition mechanism (competitive, uncompetitive, non-competitive) and Ki.
  • Returns kinetic parameters and inhibition classification as structured data.

SKILL.md

.github/skills/tooluniverse-enzyme-kineticsView on GitHub ↗
---
name: tooluniverse-enzyme-kinetics
description: Enzyme kinetics — Michaelis-Menten Km, Vmax, kcat (turnover), and kcat/Km (catalytic efficiency / specificity constant) from substrate-velocity data, plus inhibition-mechanism analysis (competitive / uncompetitive / non-competitive, Ki). Fits the MM equation by nonlinear regression (and reports Lineweaver-Burk for reference). Use when you have substrate concentrations and initial reaction velocities and need kinetic parameters or to classify an inhibitor. NOT for BRENDA database lookups of published constants (use the BRENDA tools).
disable-model-invocation: true
---

# Enzyme Kinetics (Michaelis-Menten)

Turn **substrate concentration vs initial velocity** data into Km, Vmax, kcat, and catalytic efficiency — and classify an inhibitor's mechanism.

The Michaelis-Menten model: `v = Vmax·[S] / (Km + [S])`.

## When to use this

- You measured initial reaction rates at several substrate concentrations.
- You need Km (substrate affinity), Vmax, kcat (turnover number), or kcat/Km.
- You have ±inhibitor velocity data and want to classify the inhibition mode + Ki.

For *published* kinetic constants (someone else's Km/kcat), use the BRENDA tools instead — this skill is for analyzing **your own measured** data.

## Step 1 — Prepare the data

| Issue | What to do |
|---|---|
| **Initial velocities, not endpoints** | `v` must be the *initial* rate (linear phase, <10% substrate consumed). Endpoint or plateaued rates give a wrong Km/Vmax. |
| **Substrate range must span Km** | Include `[S]` both well below and well above Km (ideally ~0.2×Km to ~5×Km). Points only above Km can't define Km; only below can't define Vmax. |
| **Units — be consistent** | One `[S]` unit (mM, µM) → Km comes back in that unit. One velocity unit. Keep them fixed. |
| **For kcat you need [E]** | kcat = Vmax / [E]total. The tool's "catalytic_efficiency" is Vmax/Km on the velocity scale; to get true kcat (per-second turnover) and kcat/Km, divide Vmax by the molar enzyme concentration yourself. |
| **≥5–7 points** | Few points → unstable fit. Spread them across the range, not clustered. |

## Step 2 — Fit Michaelis-Menten

```bash
tu run EnzymeKinetics_calculate '{"operation":"michaelis_menten",
  "substrate_concs":[0.1,0.25,0.5,1,2,5,10],
  "velocities":[8.5,18,32,52,72,90,98]}'
```

Returns a `nonlinear_fit` block (`Vmax`, `Km`, `R2`, `SSE`) **— use these as the answer**, a `lineweaver_burk` block (for reference only), `catalytic_efficiency` (Vmax/Km), and `predicted_velocities` + `residuals`.

> **Prefer the nonlinear fit, not Lineweaver-Burk.** The double-reciprocal (Lineweaver-Burk) linearization distorts error (it over-weights low-`[S]` points) and is only for visualization/sanity — never report its Km/Vmax as the final values. The tool gives both; cite `nonlinear_fit`.

`scripts/fit_michaelis_menten.py` does the same nonlinear fit from a CSV and converts Vmax→kcat→kcat/Km when you supply the enzyme concentration.

## Step 3 — Interpret

| Parameter | Meaning | Notes |
|---|---|---|
| **Km** | Substrate concentration at ½Vmax — *apparent affinity* (lower Km = tighter binding / higher affinity). | In the same units as `[S]`. Must lie inside your tested range to be trustworthy. |
| **Vmax** | Maximum velocity at saturating substrate. | Depends on [E]; not an intrinsic enzyme property. |
| **kcat** | Turnover number = Vmax/[E] (per second). | Requires the molar enzyme concentration; intrinsic to the enzyme. |
| **kcat/Km** | Catalytic efficiency / specificity constant. | The best single metric to compare enzymes or substrates; near ~10⁸–10⁹ M⁻¹s⁻¹ is diffusion-limited ("catalytically perfect"). |
| **R² / SSE** | Fit quality. | R²≥0.98 good; check `residuals` for systematic curvature (a pattern, not random scatter, means MM is the wrong model). |

## Step 4 — Inhibition mechanism

Provide velocities ±inhibitor to classify the mode:

```bash
tu run EnzymeKinetics_calculate '{"operation":"inhibition",
  "substrate_concs":[...],
  "velocities_no_inhibitor":[...],
  "velocities_with_inhibitor":[...],
  "inhibitor_conc":5, "inhibition_type":"competitive"}'
```

| Mechanism | Effect on apparent Km | Effect on Vmax | Signature |
|---|---|---|---|
| **Competitive** | ↑ (increases) | unchanged | inhibitor competes at the active site; beatable by more substrate |
| **Uncompetitive** | ↓ (decreases) | ↓ | inhibitor binds only the ES complex |
| **Non-competitive (mixed)** | ~unchanged (pure) / changes (mixed) | ↓ | binds enzyme and ES; not relieved by substrate |

Ki is the inhibition constant (lower = more potent inhibitor). Decide the mechanism from how Km and Vmax shift, not from a single Lineweaver-Burk eyeball.

## Step 5 — Gotchas (state these)

- **Substrate inhibition** (velocity rises then *falls* at high `[S]`) breaks MM — the fit will show systematic residuals; flag it instead of forcing one Km.
- **Km outside the tested range** → unreliable; widen `[S]`.
- **kcat without [E]** is impossible — don't report a turnover number if you only fit velocities.
- **Lineweaver-Burk for final numbers** is the classic error — it's for a quick plot, not the reported Km/Vmax.

## Honest limitations

- MM assumes a single substrate, initial-rate, steady-state, one active site. Allosteric (sigmoidal) enzymes need the Hill equation; multi-substrate enzymes need their own formalism.
- Parameters are only as good as the substrate range and the initial-rate measurement.

## Related skills
- `tooluniverse-dose-response` — IC50/EC50 (the Hill/4PL sibling for concentration-response).
- `tooluniverse-statistical-modeling` — general nonlinear regression and model comparison.
- BRENDA tools — look up *published* enzyme kinetic constants.

More from mims-harvard/ToolUniverse

SkillDescription
create-tooluniverse-skillCreate high-quality ToolUniverse skills following test-driven, implementation-agnostic methodology.
devtu-auto-discover-apisAutomatically discover life science APIs online, create ToolUniverse tools, validate them, and prepare integration PRs. Performs gap analysis to identify missing tool categories, web searches for APIs, automated tool creation using devtu-create-tool patterns, validation with devtu-fix-tool, and git workflow management. Use when expanding ToolUniverse coverage, adding new API integrations, or systematically discovering scientific resources.
devtu-benchmark-harnessContinuous improvement system for ToolUniverse tools, skills, and plugin. Run benchmarks, diagnose failures, route fixes to devtu skills, retest. Use after skill optimization, tool additions, or as regression check.
devtu-code-optimization>
devtu-create-toolCreate new scientific tools for ToolUniverse framework with proper structure, validation, and testing. Use when users need to add tools to ToolUniverse, implement new API integrations, create tool wrappers for scientific databases/services, expand ToolUniverse capabilities, or follow ToolUniverse contribution guidelines. Supports creating tool classes, JSON configurations, validation, error handling, and test examples.
devtu-docs-qualityTOP PRIORITY skill — find and immediately fix or remove every piece of wrong, outdated, or redundant information in ToolUniverse docs. Wrong code, broken links, incorrect counts, and overlapping instructions must be fixed or removed — never left in place. Runs five phases: (D) static method scan, (C) live code execution, (A) automated validation, (B) ToolUniverse audit, (E) less-is-more simplification. Core philosophy: each concept appears exactly once; remove don't add; no emojis; single setup entry point. Use when reviewing docs, before releases, after API changes, or when asked to audit, fix, or simplify documentation.
devtu-fix-toolFix failing ToolUniverse tools by diagnosing test failures, identifying root causes, implementing fixes, and validating solutions. Use when ToolUniverse tools fail tests, return errors, have schema validation issues, or when asked to debug or fix tools in the ToolUniverse framework.
devtu-githubGitHub workflow for ToolUniverse - push code safely by moving temp files, activating pre-commit hooks, running tests, and cleaning staged files. Use when pushing to GitHub, fixing CI failures, or cleaning up before commits.
devtu-optimize-descriptionsOptimize tool descriptions in ToolUniverse JSON configs for clarity and usability. Reviews descriptions for missing prerequisites, unexpanded abbreviations, unclear parameters, and missing usage guidance. Use when reviewing tool descriptions, improving API documentation, or when user asks to check if tools are easy to understand.
devtu-optimize-skillsOptimize ToolUniverse skills for better report quality, evidence handling, and user experience. Apply patterns like tool verification, foundation data layers, disambiguation-first, evidence grading, quantified completeness, and report-only output. Use when reviewing skills, improving existing skills, or creating new ToolUniverse research skills.