Enzyme Specificity Project
Bottom line: a GO molecular-function term can name the right kind of
enzyme and still get the substrate, the cofactor or the reaction wrong, and
those errors spread through pathway reconstruction and IBA. We reviewed 14
genes chosen to show each kind of error: four single-gene exemplars (LPL1 and
GND1 from C. albicans, human PHYKPL, EryCIII from Saccharopolyspora
erythraea) and all ten human mitochondrial fatty acid β-oxidation enzymes,
a paralog set where chain-length specificity decides the term. The errors
caught include a too-narrow substrate (LPL1 GO:0004622 MODIFY to
phospholipase B GO:0102545), a wrong reaction from family membership
(PHYKPL transaminase activity REMOVE), a wrong sugar donor (EryCIII
UDP-glycosyltransferase activity REMOVE), a wrong chain length (HADH
long-chain GO:0016509 MARK_AS_OVER_ANNOTATED), a thiolase activity on the
wrong subunit (HADHA GO:0003985 REMOVE) and a nickname collision (ACAT1
cholesterol O-acyltransferase activity REMOVE). GND1 served as a negative
control: a coenzyme-motif script confirmed its NADP+-specific term. All 14
reviews exist and the project is complete.
We did this because specificity is where family-based annotation is most
confidently wrong: the fold and even the enzyme class are right, so nothing
looks amiss until someone checks the substrate, cofactor or subunit.
Overview
This project tracks GO molecular-function annotations that name the right broad
enzyme family but miss a decisive specificity axis:
- Substrate range or chain length: an annotation names one substrate when
the enzyme has a broader range, or transfers a term from the wrong acyl-chain
paralog. - Cofactor or donor specificity: the enzyme belongs to the right
transferase or dehydrogenase class, but the GO term names the wrong sugar
nucleotide or redox cofactor. - Reaction mechanism: a domain-family hit supplies the wrong catalytic
type, as in a PLP enzyme that is a phospho-lyase rather than a transaminase. - Subunit, paralog or name-collision transfer: a catalytic term belongs to
another subunit, paralog or historical synonym rather than the reviewed gene.
Enzyme specificity is crucial for accurate functional annotation. Misannotated specificity can:
- Mislead metabolic pathway reconstruction
- Cause errors in drug target identification
- Propagate incorrect annotations via IBA
Source: Presented at Gene Ontology Consortium Meeting, October 2025, Cambridge UK. See ai4curation/ai-gene-review.
Categories
1. Substrate Specificity Errors
The Problem: Enzyme annotated to a substrate term that is too narrow for
the branch or belongs to the wrong ortholog/paralog.
Example - LPL1 (C. albicans):
- Annotated: GO:0004622 (phosphatidylcholine lysophospholipase activity)
- Review conclusion: Candida LPL1 belongs to the phospholipase B branch,
not a phosphatidylcholine-only or monoacylglycerol lipase branch. The
characterized S. cerevisiae LPL1 homolog has sn-1/sn-2 fatty-acid ester
hydrolase, lysophospholipase and transacylase activities on glycerophospholipids.
- Action: MODIFY → GO:0102545 (phospholipase B activity)
2. Reaction Mechanism Errors
The Problem: Wrong reaction type inferred from domain classification.
Example - PHYKPL (human):
- Domain: Aminotransferase III family
- Annotated: GO:0008483 (transaminase activity)
- Actual: Phospho-lyase (EC 4.2.3.134), NOT a transaminase
- Evidence: "Unlike AGXT2, AGXT2L1 and AGXT2L2 did not act as transaminases"
- Action: REMOVE transaminase; ADD GO:0016838 (carbon-oxygen lyase activity, acting on phosphates)
3. Cofactor Specificity Errors
The Problem: Enzyme annotated with wrong cofactor preference.
Examples:
- NAD+ vs NADP+ dependent dehydrogenases
- PLP-dependent enzymes with different reaction types
4. Non-Enzymatic Homologs
The Problem: Enzymatic activity annotated to proteins that have lost catalytic function.
Example - Epe1 (S. pombe) (see CONTESTED_FUNCTION.md):
- Annotated: Histone demethylase, oxidoreductase, dioxygenase
- Actual: pseudo-enzyme with a degenerate active site
- Action: REMOVE all enzymatic annotations
Featured Examples
LPL1 (Candida albicans)
UniProt: Q5AMS2
Species: CANAL
Status: COMPLETE
Specificity Issue:
- GO:0004622 (phosphatidylcholine lysophospholipase) - too narrow
- Enzyme acts on ALL glycerophospholipids, not just PC
- Has three distinct activities (hydrolase, lysophospholipase, transacylase)
Also: GO:0047372 (monoacylglycerol lipase activity, IBA) marked REMOVE
- Wrong-paralog transfer: the IBA source is S. cerevisiae ROG1 (PANTHER:PTN000773837), a monoacylglycerol lipase, while Candida LPL1 sits in the LPL1 phospholipase B branch
PHYKPL (Homo sapiens)
UniProt: Q8IUZ5
Species: human
Status: COMPLETE
Specificity Issue:
- Classified in aminotransferase family → annotated with transaminase activity
- Biochemically demonstrated to be a phospho-lyase
- Different reaction mechanism entirely
Proposed New Terms:
- 5-phosphooxy-L-lysine phospho-lyase activity - specific MF for PHYKPL
- 5-phosphohydroxy-L-lysine catabolic process - specific BP
GND1 (Candida albicans) — cofactor-specificity control
UniProt: A0A1D8PFS4
Species: CANAL
Status: COMPLETE
Specificity check (category 3, cofactor): GO:0004616 (phosphogluconate
dehydrogenase (decarboxylating) activity) is defined as the NADP+-dependent
reaction (EC 1.1.1.44), but 6PGDHs also occur as NAD+-specific and dual-specificity
forms (EC 1.1.1.343) in bacteria (PMID:35234135). The C. albicans sequence carries
both NADP+-specificity determinants described from the sheep structure and by
mutagenesis — the Gly-X-Ala-X-Met-Gly fingerprint (residues 13-18) and the
Asn-Arg-Thr 2'-phosphate-binding turn (residues 36-38), coinciding with the UniProt
NADP(+) binding features — and lacks the Asp-Arg-Asp motif of NAD+-preferring
enzymes (genes/CANAL/GND1/GND1-bioinformatics/RESULTS.md). Oxidative-PPP NADPH
production with NADP+ as acceptor has been measured in C. albicans lysates
(PMID:40183578). Verdict: annotation is at the correct cofactor specificity — no error.
A negative control for the project: the specific term was checked, not assumed.
Specificity error caught (category 1, substrate): GO:0019521 D-gluconate
metabolic process (IEA, keyword "Gluconate utilization"). UniProt applies this keyword
to 6-phosphogluconate-metabolising enzymes irrespective of pathway context — on this entry
it is attached by an automated family rule (ECO:0000256|ARBA:ARBA00023064, RuleBase
RU000485) that travels with 6PGDH sequence membership, and human PGD and the bacterial
ortholog PSEPK/gntZ carry it alike — so it does not
establish that free D-gluconate is metabolised. The fungal enzyme's substrate is
6-phospho-D-gluconate supplied by Zwf1/6-PGL from glucose 6-phosphate, and no
C. albicans evidence for free-gluconate assimilation via Gnd1 was found.
Action: MARK_AS_OVER_ANNOTATED. Note this diverges from the human PGD review, which
keeps the same annotation as KEEP_AS_NON_CORE; the same keyword on PSEPK/gntZ, in an
organism that does catabolise gluconate, makes that trio of human, fungal and bacterial
orthologs the discriminating case for whether keyword-derived substrate terms warrant
this action.
Also: minor peroxisomal PTS2 splice isoform (~5% of protein) kept as non-core;
biofilm-matrix proteomic detection kept as non-core.
Mitochondrial fatty acid β-oxidation (acyl-chain-length specificity)
Species: human · Status: COMPLETE · Module: MODULE:fatty_acid_beta_oxidation
A clean, paralog-rich worked example of substrate (acyl-chain-length)
specificity. The four-step β-oxidation spiral (dehydrogenase → hydratase →
3-hydroxyacyl-CoA dehydrogenase → thiolase) is run by families of chain-length-
specific isozymes; the curation principle is use the chain-length-specific MF
term where one exists, and fall back to the general term where it does not
("not all MF have them"). Reviewed across all ten human enzymes:
| Step | Gene | UniProt | MF term | Chain-length specificity |
|---|---|---|---|---|
| ① dehydrogenase | ACADVL | P49748 | GO:0017099 |
very-long/long-chain-specific |
| ① dehydrogenase | ACAD9 | Q9H845 | GO:0004466 |
long-chain FAO + complex I assembly factor |
| ① dehydrogenase | ACADM | P11310 | GO:0070991 |
medium-chain-specific |
| ① dehydrogenase | ACADS | P16219 | GO:0016937 |
short-chain-specific |
| ② hydratase | HADHA | P40939 | GO:0004300 |
long-chain (no LC-specific MF; in MTP) |
| ② hydratase | ECHS1 | P30084 | GO:0004300 |
short/medium (no SC-specific MF) |
| ③ 3-OH-acyl-CoA DH | HADHA | P40939 | GO:0016509 |
long-chain-specific (in MTP) |
| ③ 3-OH-acyl-CoA DH | HADH | Q16836 | GO:0003857 |
short/medium (no SC-specific MF) |
| ④ thiolase | HADHB | P55084 | GO:0003988 |
long-chain (in MTP; no chain-specific MF) |
| ④ thiolase | ACAA2 | P42765 | GO:0003988 |
medium/long straight-chain (no chain-specific MF) |
| ④ thiolase | ACAT1 | P24752 | GO:0003985 |
acetoacetyl-CoA (C4; ketone-body/Ile, not the spiral) |
Specificity errors caught:
- Too broad → specific (MODIFY): HADHA's generic 3-hydroxyacyl-CoA
dehydrogenase annotations modified to the long-chain-specific GO:0016509.
- Wrong chain-length (over-annotation): long-chain GO:0016509 annotated on
HADH, which is the short/medium-chain enzyme — that activity is HADHA's.
- Wrong subunit / activity (REMOVE): thiolase MF (GO:0003985) on HADHA —
thiolase is the HADHB subunit's activity; the cited paper itself shows the
α-cDNA yields only hydratase + dehydrogenase.
- Cross-gene mis-attribution (REMOVE): cholesterol O-acyltransferase +
ER localization on ACAT1 — these came from a SOAT1/SOAT2 paper via the
historical "ACAT1" nickname collision; mitochondrial T2 has no sterol activity.
- Evidence-scope correction (MODIFY): two very-long-chain GO:0017099
rows on ACAD9 were refined to long-chain GO:0004466 because the
supporting palmitoyl-CoA assays demonstrate C16 chemistry.
- Unresolved cross-species regulatory transfers (UNDECIDED): ACADVL
receives mouse VLCAD/P50544-derived fatty-acid oxidation regulation rows
whose donor identity is now clear but whose direct transferability still
needs full-text resolution.
Reaction-specificity / mapping gap (links to RHEA project): the GO→RHEA
chaining check on the module flags ① → ② as a break — step ① makes
(2E)-enoyl-CoA, but the hydratase MF GO:0004300 maps only to RHEA:20724 (the
(3E)-enoyl-CoA variant), not the canonical (2E) crotonase RHEA:16105. The
chemistry is correct; the gap is in the GO:0004300 → RHEA mapping. See
projects/RHEA/RHEA-EC-SPECIFICITY.md and the module's
modules/fatty_acid_beta_oxidation/RESULTS.md.
Genes for Review
Priority 1: Completed
| Gene | Species | Issue | Status |
|---|---|---|---|
| LPL1 | CANAL | Substrate specificity too narrow | COMPLETE |
| PHYKPL | human | Wrong reaction mechanism | COMPLETE |
| eryCIII | SACEN | Wrong donor: GO:0008194 UDP-glycosyltransferase, but uses TDP-D-desosamine |
COMPLETE |
| GND1 | CANAL | Cofactor specificity verified (NADP+-specific GO:0004616, no error); keyword-derived GO:0019521 D-gluconate over-annotation flagged |
COMPLETE |
eryCIII (cofactor/donor specificity error, BGC project): the desosaminyl transferase
EryCIII (EC 2.4.1.278) was IEA-annotated GO:0008194 UDP-glycosyltransferase activity, but it
transfers TDP-D-desosamine (a dTDP-sugar), not a UDP-sugar (PMID:15303858). REMOVE: the
accurate GO:0016758 hexosyltransferase activity is already annotated (IEA + IDA), so a MODIFY
would only duplicate it. See genes/SACEN/eryCIII/.
Priority 1: Completed — fatty acid β-oxidation (acyl-chain-length specificity)
| Gene | Species | Issue | Status |
|---|---|---|---|
| ACADVL | human | Chain-length-specific MF; mouse VLCAD/P50544 regulatory transfers unresolved | COMPLETE |
| ACAD9 | human | Long-chain dehydrogenase + complex I assembly factor | COMPLETE |
| ACADM | human | Medium-chain-specific MF (GO:0070991) |
COMPLETE |
| ACADS | human | Short-chain-specific MF (GO:0016937) |
COMPLETE |
| HADHA | human | Generic→long-chain-specific MODIFY; thiolase MF removed (HADHB's) | COMPLETE |
| HADHB | human | Long-chain thiolase (MTP β subunit) | COMPLETE |
| ECHS1 | human | General hydratase MF (no SC-specific term) | COMPLETE |
| HADH | human | Short/medium MF; long-chain GO:0016509 over-annotation flagged |
COMPLETE |
| ACAT1 | human | SOAT1/cholesterol mis-attribution removed | COMPLETE |
| ACAA2 | human | Straight-chain 3-ketoacyl-CoA thiolase | COMPLETE |
Priority 2: Pending
| Gene | Species | Issue | Status |
|---|---|---|---|
| none | All listed genes reviewed |
Curation Principles
- Verify substrate range: Don't assume specificity from one characterized reaction
- Check reaction mechanism: Domain family doesn't guarantee mechanism
- Distinguish promiscuity from core function: see the three tiers below
- Propose specific terms: When existing terms are too broad or narrow
Promiscuous and residual activities
A measured activity is not automatically a function. The question is whether
the protein evolved to catalyse the reaction, not whether it can be made to do
so in a test tube. There is no numeric cutoff; it is a judgement call, made
from the criteria below and stated in the reason. The tiers follow the
categories of de Crécy-Lagard et al. 2025 (PMID:40703034).
| Tier | Action | When |
|---|---|---|
| Genuine secondary activity | KEEP_AS_NON_CORE |
Respectable efficiency, and a plausible physiological substrate or an in vivo phenotype; no other enzyme in the cell clearly owns the reaction |
| In vitro activity, relevance unknown (their UNC) | MARK_AS_OVER_ANNOTATED |
Activity is real but nothing shows it is used, and nothing else in the cell can be named as the enzyme that does the job |
| Promiscuous noise (their PLI/NPI) | REMOVE |
Most of: a dedicated enzyme for the same reaction exists in the same organism (ideally essential or non-redundant); the activity is orders of magnitude below it (as a guide, about 10³-fold or more); the protein sits in a different subfamily or lacks the specificity determinants; no in vivo phenotype for the reaction |
REMOVE in the third tier does not doubt the assay. It accepts the
measurement and argues that the activity is not the gene's function, which is
the "genuinely contradicted function" case that permits removing an
experimental annotation.
Worked pair (both from the same ML-prediction paper, PMID:37963869):
- ECOLI/yciO, TC-AMP synthase (GO:0061710): REMOVE. TsaC is the
essential dedicated enzyme, YciO's rate is about 10⁴-fold lower, and YciO
lacks the KRSN tetrad and sits in a different subfamily.
- ECOLI/yjdM, phosphonoacetate hydrolase (GO:0047400):
MARK_AS_OVER_ANNOTATED. The link to phosphonates is a name collision
(positional phnA synonym) and YjdM is a zinc-ribbon protein, but E. coli has
no dedicated phosphonoacetate hydrolase, so the activity cannot be assigned
elsewhere.
STATUS
Completed Reviews
- [x] CANAL/LPL1 - Phospholipase B specificity
- [x] human/PHYKPL - Phospho-lyase vs transaminase
- [x] human β-oxidation acyl-chain-length set (ACADVL, ACAD9, ACADM, ACADS, HADHA, HADHB, ECHS1, HADH, ACAT1, ACAA2)
- [x] CANAL/GND1 - 6-phosphogluconate dehydrogenase (cofactor-specificity control; D-gluconate keyword over-annotation)
Pending Reviews
- (none)
Last updated: 2026-10-04
NOTES
2026-10-24
Added tiers for promiscuous and residual activities (Curation Principle 3).
The old rule ("secondary activities → KEEP_AS_NON_CORE") did not separate a
real secondary activity from noise-level in vitro activity, and would have
kept E. coli yciO's TC-AMP synthase activity as non-core. Replaced it with three
tiers aligned to de Crécy-Lagard et al. 2025 (PMID:40703034), with no numeric
cutoff. Prompted by OpenScientist function-assignment runs on seven bacterial
REMOVE/over-annotated calls (yciO, yjdM, traB, glpK, PP_3195, mdcD, kguE); all
seven supported the direction of the existing calls. yciO stays REMOVE and
yjdM stays MARK_AS_OVER_ANNOTATED, as in the worked pair above.
2026-10-04
Project audit confirmed the 14-review set remains complete.
Rechecked the three frontmatter species and 14 listed genes against the current
*-ai-review.yaml files. All 14 reviews are COMPLETE; LPL1, PHYKPL, eryCIII,
GND1, HADHA, HADH, ACAT1, ACAD9 and ACADVL still carry the specificity actions
summarized above. No pending genes remain. The overview taxonomy was refreshed
so the older substrate/reaction/mechanism framing also names the cofactor,
donor, subunit, paralog and name-collision errors that were added later. The
ACAD9 and ACADVL beta-oxidation rows, slide text and SVG were brought into line
with the current reviews: ACAD9 now points to long-chain GO:0004466, and the
mouse VLCAD/P50544-derived ACADVL regulatory rows are UNDECIDED rather than a
removed paralog-transfer example.
2026-09-04
Revisited the project; closed out the last pending gene, CANAL/GND1.
GND1 was framed as a cofactor-specificity (category 3) control: GO:0004616
is NADP+-specific by definition, and NAD+-specific / dual-specificity 6PGDHs exist
(EC 1.1.1.343). Rather than accept the term on family membership, added a small
reproducible check (GND1-bioinformatics/check_coenzyme_motifs.py) that locates
the coenzyme-specificity determinants from Hanau & Helliwell 2022 (PMID:35234135)
in the C. albicans sequence: the Gly-X-Ala-X-Met-Gly fingerprint and the
Asn-Arg-Thr 2'-phosphate turn are both present (13-18, 36-38, matching UniProt
NADP(+) binding features) and the NAD+-type Asp-Arg-Asp is absent. Together with
the NADP+-acceptor lysate assay in Garg et al. 2025 (PMID:40183578), the
NADP+-specific term stands. Outcome: no cofactor error — a useful negative
control showing the specific term was verified rather than assumed.
One substrate-level over-annotation was flagged: GO:0019521 D-gluconate
metabolic process, mapped from the keyword "Gluconate utilization", names free
D-gluconate whereas the enzyme acts on 6-phospho-D-gluconate supplied from
glucose 6-phosphate in the fungal oxPPP. The keyword itself is pathway-agnostic
(human PGD carries it too), so the case rests on the substrate class alone.
Changed KEEP_AS_NON_CORE → MARK_AS_OVER_ANNOTATED.
This is the same "keyword mapping imports a substrate class the enzyme does not
use" pattern seen elsewhere in the project.
Added two PubMed-verified references (PMID:34065948 yeast PPP review; PMID:35234135
6PGDH structural review), populated supported_by quotes throughout, wrote
GND1-notes.md, set status COMPLETE. No pending genes remain; project maturity
stays COMPLETE. Candidate follow-ups if the project is extended: other keyword-
derived substrate-class terms on PPP enzymes (e.g. ZWF1), and NAD/NADP-specific
dehydrogenase pairs where GO has both cofactor-specific terms.
2026-01-22
Project Creation
Created project to track enzyme specificity annotation issues.
LPL1 Key Points:
- Phospholipase B enzymes have three activities in one protein
- Current annotation (GO:0004622) captures only lysophospholipase on PC
- Better term: GO:0102545 (phospholipase B activity)
- Also: GO:0047372 (monoacylglycerol lipase) was initially kept as non-core,
then changed to REMOVE once the IBA source was traced to the ROG1 paralog
PHYKPL Key Points:
- Domain classification misleading (aminotransferase family)
- Biochemically: "did not act as transaminases"
- Functions as phospho-lyase (EC 4.2.3.134)
- Needs specific GO term for its reaction
2026-06-30
Added the mitochondrial fatty acid β-oxidation acyl-chain-length specificity set.
Reviewed all ten human β-oxidation enzymes as a paralog-rich worked example of
substrate-chain-length specificity (a flavour of categories 1 "too broad" and
"wrong substrate"). Curation principle confirmed: use the chain-length-specific
MF where it exists (VLCAD GO:0017099, MCAD GO:0070991, SCAD GO:0016937,
long-chain 3-OH-acyl-CoA DH GO:0016509) and fall back to the general term where
none exists (the hydratases ECHS1/HADHA → GO:0004300; the straight-chain
thiolases HADHB/ACAA2 → GO:0003988; short/medium HADH → GO:0003857).
Specificity errors removed/modified: ACAD9 very-long-chain→long-chain MODIFY,
HADHA generic→long-chain MODIFY and the mis-attributed thiolase MF removed; the
long-chain GO:0016509 over-annotation on short-chain HADH flagged; ACAT1's
SOAT1/cholesterol terms removed (nickname collision); ACADVL's mouse
VLCAD/P50544-derived regulatory transfers left UNDECIDED.
Cross-link: the cross-species MODULE:fatty_acid_beta_oxidation and its
GO→RHEA chaining check (now generalized into the module tooling) surface a
reaction-specificity mapping gap — GO:0004300 maps to RHEA:20724 (the (3E)
variant) rather than the canonical (2E) crotonase RHEA:16105. Logged for the
RHEA project (projects/RHEA/RHEA-EC-SPECIFICITY.md).