Skip to content

fix: update ferrochelatase (FECH) EC number to 4.98.1.1 - #1048

Merged
edkerk merged 2 commits into
developfrom
fix/fech-ec-number
Jul 11, 2026
Merged

fix: update ferrochelatase (FECH) EC number to 4.98.1.1#1048
edkerk merged 2 commits into
developfrom
fix/fech-ec-number

Conversation

@edkerk

@edkerk edkerk commented Jul 11, 2026

Copy link
Copy Markdown
Member

Main improvements in this PR:

Resolves #366. Ferrochelatase (FECH) was reclassified in the IUBMB Enzyme nomenclature: EC 4.99.1.1 is now a transferred entry pointing to EC 4.98.1.1 (protoporphyrin ferrochelatase), part of the new sub-class 4.98 for enzymes that form carbon-metal bonds.

  • Update MAR01044 (Ferrochelatase, Mitochondrial) eccodes from 4.99.1.1 to 4.98.1.1.

The old code is a deleted entry and is replaced rather than kept, to avoid a dead lookup for EC-based tools such as GECKO. Verified against the ExPASy ENZYME database.

I hereby confirm that I have:

  • Tested my code on my own computer for running the model
  • Selected develop as a target branch
  • Any removed reactions and metabolites have been moved to the corresponding deprecated identifier lists

edkerk and others added 2 commits July 11, 2026 18:10
EC 4.99.1.1 is a transferred entry pointing to EC 4.98.1.1
(protoporphyrin ferrochelatase), following the IUBMB creation of
sub-class 4.98 for enzymes forming carbon-metal bonds. Update MAR01044
to the current EC 4.98.1.1. The old code is a deleted entry, so it is
replaced rather than kept, to avoid a dead lookup for EC-based tools.
@github-actions

Copy link
Copy Markdown

This PR has been automatically tested with GH Actions. Here are the results of the quality-control tests:

MACAW: dead-end and duplicate tests

Starting dead-end test...
 - Found 1384 dead-end metabolites.
 - Found 1141 reactions incapable of sustaining steady-state fluxes in either direction due to these dead-ends.
 - Found 1369 reversible reactions that can only carry steady-state fluxes in a single direction due to dead-ends.
Starting duplicate test...
 - Skipping redox duplicates because no redox_pairs and/or proton_ids were provided.
 - Found 377 reactions that were some type of duplicate:
   - 0 were completely identical to at least one other reaction.
   - 13 involve the same metabolites but go in the opposite direction or have the opposite reversibility as at least one other reaction.
   - 377 involve the same metabolites but with different coefficients as at least one other reaction.

Mass and charge balance

Unbalanced reactions (excluding boundary and biomass): 277 (87 mass, 240 charge)

More detailed output is committed to data/testResults/ (macaw_results.csv and balance_results.csv).

Note: In the case of multiple test runs, this post will be edited.

@edkerk

edkerk commented Jul 11, 2026

Copy link
Copy Markdown
Member Author

No structural model change

@edkerk
edkerk merged commit d456a30 into develop Jul 11, 2026
@edkerk
edkerk deleted the fix/fech-ec-number branch July 11, 2026 17:18
@edkerk edkerk added this to the 2.0.1 milestone Jul 11, 2026
edkerk added a commit that referenced this pull request Jul 11, 2026
* feat: fill in missing EC numbers for 236 reactions (#416)

Curate EC numbers for metabolic reactions that have a GPR but no EC,
keeping to the "fill only the empty fields" approach agreed in the issue.

EC numbers were assigned from three sources, preferring reaction-level
evidence and requiring gene corroboration:
- KEGG reaction -> EC (via rxnKEGGID), which ties the EC to the reaction
  chemistry;
- gene -> EC from UniProt and KEGG (via the geneUniProtID / geneEntrezID
  already in genes.tsv), used when the gene set gives one unambiguous EC;
- MetaNetX reaction EC, used only to disambiguate multifunctional genes.

Reactions were left untouched when gene- and reaction-level evidence
disagreed, or when a multifunctional gene could not be disambiguated, so
no low-confidence EC is introduced. Transport and exchange reactions were
excluded, as transporters are classified by TC number rather than EC.

All 236 assignments are complete four-part EC numbers, none overwrite an
existing value, and a biochemical spot-check confirmed they match the
reaction chemistry. EC codes are annotation only, so model structure and
balance are unchanged. This leaves 531 metabolic GPR reactions without an
EC (multifunctional or without database evidence), better suited to a
dedicated GECKO getECfromDatabases run or manual curation.

* fix: correct obsolete and erroneous EC numbers (#366)

Systematic sweep of the existing EC numbers against the IUBMB/ExPASy
ENZYME database (enzyme.dat), addressing the general checking question
raised in #366.

- 510 reactions updated where an EC had been transferred to a new number,
  e.g. the ABC-transporter ATPases 3.6.3.44 -> 7.6.2.2 and 3.6.3.1 ->
  7.6.2.1 (moved into the translocase class EC 7), and many cytochrome
  P450 monooxygenases 1.14.13.x -> 1.14.14.x. Transfer chains were followed
  to the current entry; where one old EC was split into several, the
  successor was chosen from KEGG reaction and gene evidence, or all closely
  related successors were kept.
- Corrected erroneous EC strings: 1.4.11.1 -> 1.14.11.1 (typo, gamma-
  butyrobetaine dioxygenase), 2.1.3.85 -> 2.3.1.85 (typo, fatty-acid
  synthase, matching six sibling reactions), removed the spurious 5.2.2.2
  from phosphoglucomutase, and updated the deleted 3.1.2.15 -> 3.4.19.12
  (ubiquitinyl hydrolase).

Nine reactions with ambiguous deleted or divergent-split ECs are left
unchanged for manual review. MAR01044 (FECH, 4.99.1.1 -> 4.98.1.1) is
handled separately in #1048. EC codes are annotation only, so model
structure and balance are unchanged.

* fix: resolve the 9 flagged EC numbers (#366)

Resolve the nine reactions left for manual review in the obsolete-EC
sweep, by a per-reaction decision against the reaction chemistry, genes,
and ExPASy.

Reassigned:
- MAR06916 -> 7.1.2.2 (proton-translocating ATP synthase; replaces a
  grab-bag of generic ATPase codes).
- MAR07145 -> 4.1.99.22 and 4.6.1.17 (the reaction spans both MOCS1
  domains, GTP to cyclic pyranopterin monophosphate).
- MAR09473, MAR09482 -> 3.4.17.1 and 3.4.17.15 (carboxypeptidase A, from
  the CPA1/CPA2/CPA3 gene set).
- MAR09491 -> 2.3.2.23, 2.3.2.27 and 6.2.1.45 (the lumped ubiquitin
  E1/E2/E3 cascade).

Removed the obsolete EC where no valid current entry fits the reaction and
there is no gene to support one:
- MAR04372 (3.1.3.13 deleted; acylphosphatase 3.6.1.7 does not act on
  bisphosphoglycerate).
- MAR08442 (1.2.7.2 deleted, a bacterial ferredoxin enzyme).
- MAR04767 (2.4.1.95 deleted; the UDP-glucuronosyltransferase 2.4.1.17
  uses a different donor).
- MAR03911 (1.8.1.3 deleted, hypotaurine dehydrogenase not substantiated).

EC codes are annotation only, so model structure and balance are unchanged.

* fix: fill missing EC numbers by gene-consensus propagation (#416)

Assign EC numbers to 94 metabolic reactions that had a GPR but no EC.
For each, propagate the EC shared by its genes across the model's
already-annotated reactions: a full EC where the genes agree exactly, a
sub-subclass wildcard (a.b.c.-) where they agree only to that level.
Transport/exchange reactions and SLC/ABC transporter genes are excluded
as evidence.

Every assignment was cross-checked against the gene's UniProt EC. The 94
applied here (35 full, 59 wildcard) are UniProt-confirmed; 13 candidates
that UniProt contradicts or cannot support were left out.

* fix: fill more EC numbers from UniProt gene annotations (#416)

Add EC numbers to 32 further metabolic reactions that had a GPR but no
EC, taking the code directly from the UniProt annotation of the reaction's
genes: a full EC where the genes agree, a sub-subclass wildcard otherwise.
Transport reactions and SLC/ABC genes are excluded; two reactions with a
non-catalytic or spurious GPR were left out.
@edkerk edkerk mentioned this pull request Jul 15, 2026
3 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant