brenda-enzyme-data
Skill1 starsChanged 53 days agoMITView on GitHub
Life sciences / Enzymology — Parameterized BRENDA ingestion from a caller-supplied licensed bulk JSON release. Subset extractor and deterministic canonical-record builder where organism substring, EC number, and file path are all parameters. Includes a BRENDA numeric-value-string parser covering ranges, the -999 {more} sentinel, and ligand-in-braces labels, plus a schema validator that surfaces a genuine publisher-side EC-key regex defect instead of hiding it behind a false "0 errors". You must supply your own licensed BRENDA download: this skill never bundles, caches, downloads, or accepts the license for any BRENDA dump. WHEN: "BRENDA", "brenda-enzymes.org", "BRENDA bulk JSON", "km_value", "turnover_number", "kcat_km_value", "specific_activity", "BRENDA -999 sentinel", "BRENDA schema validation", "BRENDA license", "ingest enzyme kinetic parameters from BRENDA".
- Installs packages
In this repository17 other files it gives its agents.
- AGENTS.mdAGENTS.md
- alphafold-structure-provenanceSkill
- biochemical-identifier-crosswalkSkill
- biocyc-network-contextSkill
- build-research-paperSkill
- chat-session-experimentalSkill
- discovery-add-agentsSkill
- discovery-clarify-projectSkill
- discovery-dashboardSkill
- discovery-design-tasksSkill
- discovery-project-storySkill
- discovery-token-usageSkill
- engine-chat-experimentalSkill
- osti-literature-searchSkill
- sabio-rk-kineticsSkill
- scientific-database-accessSkill
- scientific-evidence-qcSkill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 0 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 35
Only scripts/validate_schema.py needs a third-party package, and gh skill install does not install it:
- Very specific: line 177
Run with python3 -m pytest tests/ -q from this skill's directory.
- Very specific: line 188
No EC number, organism substring, or file path is hardcoded anywhere in scripts/.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
brenda-enzyme-data — Parameterized BRENDA Bulk-JSON Ingestion
Reusable, project-agnostic adapter for extracting and canonicalizing
enzyme/kinetic-parameter data from BRENDA's licensed bulk JSON release,
generalized from two independent extraction passes (disjoint EC numbers and
organisms) over release 2026.1. Every EC number, organism substring, and
file path here is a caller-supplied parameter — this skill is not scoped to
any single project's target enzymes.
Dependencies
The extractor and canonical-record builder are standard-library only.
Only scripts/validate_schema.py needs a third-party package, and
gh skill install does not install it:
python3 -m pip install -r requirements.txt # jsonschemaWithout it the validator raises a clear error; everything else still runs.
Access-route status is owned by the scientific-database-access hub
skill (references/sources/brenda.md there records the last-verified
route status: the bulk JSON route is reachable_documented_auth — a
click-through license acceptance, no account needed; SOAP is
gated_credentialed; SPARQL is reachable_public but not a fully validated
recipe). This skill does not duplicate that; it assumes the bulk-JSON route
has already been confirmed and focuses on extraction/parsing/validation
logic over a file you have already licensed and downloaded.
Hard requirement: bring your own licensed bulk file
This skill never bundles, caches, auto-downloads, or reads any full
BRENDA dump (which runs to hundreds of megabytes uncompressed). Every
script that touches BRENDA's real data takes an explicit --full-dump or
--subset file-path argument supplied by the caller. If you don't have
one yet: go to https://www.brenda-enzymes.org/download.php, review and
accept BRENDA's own license (CC BY 4.0, with the DSI/Cali-Fund
benefit-sharing note — read it yourself), and download the JSON release
yourself. Never store that full file inside a shared/version-controlled
directory this skill or its caller commits — gitignore it (see
references/access-route.md).
When to use
- Extract a small, redistributable, organism/EC-scoped subset from your own
licensed BRENDA bulk JSON file (
scripts/extract_subset.py). - Deterministically rebuild canonical kinetic/organism/ligand/literature
records from a committed subset, with a byte-identical replay guarantee
(
scripts/build_canonical_records.py). - Parse BRENDA's
<number>[-<number>] {label}/-999 {more}sentinel value-string grammar without collapsing ranges to a fake midpoint or coercing the sentinel to a fake negative reading (scripts/brenda_value_parser.py). - Validate extracted entries against BRENDA's own published JSON Schema
and get an honest report of which entries a naive corpus-level pass
would have silently skipped due to a real publisher-side regex defect
(
scripts/validate_schema.py; seereferences/schema-generation-vs-version.md). - Cheaply re-verify BRENDA's SOAP/download/SPARQL routes are still
reachable without acquiring any licensed data or accepting any license
(
scripts/live_contract_probe.py, opt-in).
Extraction: user-supplied file only
scripts/extract_subset.py --full-dump <your-file> --ec <EC> [--ec <EC> ...]
--organism-substring "<exact species string>" --out <subset.json> reads
only the file you point it at. It keeps, per requested EC number: every
protein entry whose organism field contains your exact (case-sensitive)
substring — never promoted to a strain — plus every dataset-field entry
(across BRENDA's ~40 field types) and reference entry linked to one of
those matched protein ids. Organism matching is species-level, exactly as
BRENDA wrote it; if BRENDA doesn't record a strain, this skill never invents
one (any incidental strain name only ever appears in a free-text
comment, surfaced separately, never promoted to a canonical field — see
references/strain-vs-species.md).
Deterministic canonical-record replay
scripts/build_canonical_records.py --subset <subset.json> reads only that
committed subset (no network call, no full-dump read) and emits one record
per (EC, matched protein, kinetic-parameter-type) combination: parsed
value/range/sentinel, ligand name, literature (PMID/title/year when BRENDA
links a reference; null — never fabricated — when it doesn't), and an
explicit manual_vs_text_mined: "unavailable_source: ..." note (BRENDA's
bulk-JSON reference_dataset schema has no textmining flag; only the
credential-gated SOAP getReference-family calls expose it). Running this
script twice against the same subset produces byte-identical output —
verified in tests/test_build_canonical_records.py::test_deterministic_replay_is_byte_identical.
Value-string grammar
scripts/brenda_value_parser.py::parse_brenda_numeric_value turns
"0.147 {D-fructose 6-phosphate}", "0.05-0.09 {ligand}", and
"-999 {more}" into a structured, lossless ParsedBrendaValue: ranges keep
both bounds, the sentinel keeps point_value=None (never coerced to a fake
-999 reading), and ligand names in {...} — including charged-ion names
like {Zn2+} — are never mis-split on +. Raises BrendaValueParseError
on unrecognized input rather than silently guessing.
Schema validation: surfacing the publisher's own defect
BRENDA's brenda.schema.json keys its data object with patternProperties
but no additionalProperties: false, so any EC key that fails the
pattern — ^(?:[1-7]\.[1-9][0-9]{0,2}\.[1-9][0-9]{0,2}\.B?[1-7][0-9]{0,2})|spontaneous$ —
is silently skipped from validation, not flagged. That pattern's 4th
(serial) digit group only allows 1-7-leading values, wrongly excluding
any real EC number whose serial starts with 8/9 (confirmed: 729/8,129
EC keys in release 2026.1, including a real target EC 5.3.1.9).
scripts/validate_schema.py::validate_entries always validates every entry
directly against enzyme.schema.json, bypassing that gate, and reports
would_be_silently_skipped_by_publisher_pattern_property_gate per entry so
the defect is visible rather than hidden behind a false "0 errors". See
references/schema-generation-vs-version.md for why the payload's own
version field (a bulk-download-format generation counter) must never be
conflated with the externally-hosted schema document semver, or with the
release field (e.g. "2026.1") — three genuinely distinct numbers.
Opt-in live contract probe
scripts/live_contract_probe.py makes plain GET requests only (SOAP
WSDL contract shape, the download page, the public SPARQL endpoint) to
confirm BRENDA's routes are still reachable. It refuses to run without
explicit consent (--i-understand-this-makes-a-live-request or
BRENDA_LIVE_PROBE=1), asserts none of its URLs carry accept-license or
dlfile before issuing any request, and never POSTs the download form,
accepts the license, or writes a downloaded file — accepting BRENDA's
license is a separate, deliberate, human action outside this skill. Never
run this from an offline/CI test.
Files in this skill
scripts/brenda_value_parser.py— value-string grammar parser (ranges, sentinel, ligand labels).scripts/extract_subset.py— user-supplied-file-only subset extractor (--full-dump,--ec(repeatable),--organism-substring,--out).scripts/build_canonical_records.py— deterministic canonical-record builder over a committed subset (--subset).scripts/validate_schema.py— direct per-entry schema validation + publisher-regex-defect reporting (--subset).scripts/live_contract_probe.py— opt-in, license-safe live route probe.fixtures/synthetic_subset.json— a small, fabricated, clearly-labeled (_synthetic_do_not_use_as_evidence: true) BRENDA-shaped subset covering positive values, a range, both sentinel forms, two disjoint species-only organisms with an incidental strain-hint comment, ligand + PMID linkage, a missing-PMID reference, the publisher EC-key regex defect (5.3.1.9), and the release/version/schema-document-version distinction. Never present any value in it as real evidence.fixtures/brenda_schema/{brenda,enzyme}.schema.json— BRENDA's own officially published JSON Schema (v2.0.0), used for validation tests.tests/— offline pytest suite, zero network calls: value-parser known-answer tests, subset-extraction organism-scoping tests, deterministic-replay + known-answer canonical-record tests, schema-defect regression tests, and live-probe consent/license-safety guardrail tests. Run withpython3 -m pytest tests/ -qfrom this skill's directory.references/access-route.md— license/route summary and gitignore guidance for your own downloaded full dump.references/strain-vs-species.md— why BRENDA's organism field is species-level only and how incidental strain hints are handled.references/schema-generation-vs-version.md— the release / payloadversion/ schema-document-semver distinction, and the EC-key regex defect in full.
Generalization note
No EC number, organism substring, or file path is hardcoded anywhere in
scripts/. When adapting this skill to a new organism or enzyme set, pass
your own values via the CLI flags — never reuse another project's
EC-number/organism constants as if they were general defaults. The fixture
enzymes/organisms used in tests (glucose-6-phosphate dehydrogenase,
glucose-6-phosphate isomerase, RuBisCO; Escherichia coli,
Prochlorococcus marinus) are fabricated, illustrative placeholders only —
see fixtures/synthetic_subset.json's own _synthetic_do_not_use_as_evidence
flag.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

