GEM Autocurator
Back to the autocurator

Methods, data and limits

What the GEM Autocurator computes at each stage, the reference data behind it and at which release, and what each result cannot support.

How a model moves through it

Everything runs in your browser. The model file is read by JavaScript in this tab, curated in memory, and written back out by the same tab. It is never uploaded, and there is no server that could store it. The one exception is described under network.

Each stage produces proposals, not edits. A proposal only reaches the exported model if you approve it. Approving a finding does one of three things, and the report says which for every finding:

What each stage checks

1. Identifier mapping

Every metabolite and reaction is looked up in a structure-clustered reference built from MetaNetX MNXref, which groups compounds across BiGG, KEGG, ModelSEED, ChEBI, MetaCyc, Rhea and HMDB by InChIKey. A cluster that contains a BiGG identifier lends that identifier to the whole cluster. A cluster with no BiGG identifier is given one stable BiGG-style identifier, minted once and frozen, so the same compound gets the same identifier in every model that passes through this page.

Every proposal carries one evidence tier, strongest first:

  1. InChIKey or a database cross-reference. The entity matches on its structure, or on an identifier it already carries.
  2. Matched by name only. The names agree and no structure or cross-reference does. A name cannot distinguish a stereoisomer, a salt form or a synonym group from the compound itself, and a name match is not used to merge two entities.
  3. Minted from a name. Nothing in the reference matches, and a BiGG-style identifier is constructed from the entity's own name. It is unique within your model and recognised by no database.
  4. No evidence. Nothing matches and nothing can be derived; the original identifier is kept.
  5. Cross-references disagree. The cross-references in the file, or the file's own compound name, point at different compounds. Nothing is renamed, and the row names every candidate with the reference behind it.

How a cross-reference match is decided. Every cross-reference an entity carries is looked up. A full InChIKey settles the match, being the structure itself. A candidate whose heavy atoms contradict the model's own formula is excluded, and the entity's own name in the model has to corroborate the identifier it would be renamed to. Where the candidates still disagree the rename is withheld, and the row lists each candidate with the reference that supports it. A match that changes the recorded formula or charge is stated on the row and decided as its own class.

Each identifier is carried by at most one entity. Where a proposed identifier is already in use, the rename is withheld and reported, and both entities are kept.

2. Discrepancies

Two identifiers for the same compound in the same compartment are proposed for merging. A compartment suffix is not a discrepancy: cytosolic and extracellular glucose are two entities and stay two entities. Two reactions are proposed for merging only when their stoichiometry matches. Two reactions with similar names but different chemistry are a conflict, listed for review and not merged.

3. Structural QC

Dead-end metabolites (produced but never consumed, or the reverse), reactions with no gene association, and reactions that cannot carry flux even with every exchange reaction opened. That last test is a flux-variability sweep over the internal reactions with every exchange open, so a reaction it returns is blocked by the network itself and not by the medium loaded.

4. Mass and charge

Element and charge balance are judged at the model's own reference charge states, and are independent of pH. A reaction that balances at its reference charges is not a defect at any pH; the fractional net charge you would get by titrating it is proton buffering, not an error.

The pH control is an explorer: it recomputes metabolite charge states at the chosen pH from Henderson-Hasselbalch over ModelSEED pKa sites. It raises no findings.

5. Thermodynamics

Reaction directionality is compared against a directionality call assembled from more than one source, each database casting one vote on the reversible/irreversible class. A bound is only proposed when the model's own equation could be matched to the reference orientation and a signed ΔrG is available for the reaction as the model writes it; a reaction that crosses a membrane never qualifies, because the available free energies are computed without compartments. Everything else is review-only. Cycles that generate ATP or another energy carrier from nothing are detected by closing every uptake and asking the solver whether an energy carrier can still be made. A forced-open internal reaction, such as a maintenance reaction with a non-zero lower bound, makes that problem infeasible, so those bounds are relaxed for the duration of the test and the ones relaxed are named on the panel.

6. Lab validation

Your organism is resolved from the model name or an accession, looked up in GrowthDB, and simulated on the medium that experiment used, pulled from MediaDB. Measured and predicted growth rates are shown side by side. An exchange rate taken from an experiment is labelled measured; every other rate, including one derived from a medium recipe, is labelled a preset with no experimental backing. Each record states whether it is for the exact strain named in the model or for another strain of the same species.

Reference data and releases

Release and coverage of every reference in this build.

Loading release stamps.

Limits

What leaves your browser

Your model does not. It is read from disk by this tab, held in memory, and written back to disk by this tab.

The single outbound request the application makes, beyond downloading its own code and reference files from this site, is organism resolution: if you paste a genome accession or a taxonomy identifier into the lab-validation search, that identifier string alone is sent to the NCBI Datasets API to look up the organism name. Nothing from your model is included in that request. A failed lookup is reported on the stage and falls back to the search box. If you never use accession lookup, no request is ever made.

The page loads no fonts, analytics, trackers or third-party scripts of any kind.

Licence and terms on the data

The code is MIT licensed. The page bundles GLPK, a GPL-3.0 linear programming solver compiled to WebAssembly, which is what solves every flux problem here. The reference data is derived from MetaNetX MNXref and the ModelSEED Biochemistry database, and is redistributed under their terms. The full statement, with the version, checksum and licence of every redistributed file, is in THIRD_PARTY.md, and the licence itself is in LICENSE. GLPK's own GPL-3.0 text is served beside the binary, at vendor/GLPK-LICENSE.

The page is set in IBM Plex Sans and IBM Plex Mono, copyright 2017 IBM Corp. with the reserved font name "Plex", under the SIL Open Font License 1.1. The latin subsets are served from this site at assets/fonts/ with the licence text beside them, at assets/fonts/OFL.txt. No font is fetched from a third-party origin.

If you use a curated model from this page in published work, cite the underlying resources as well: MetaNetX for the identifier reference, ModelSEED for the thermodynamic and pKa data, and BiGG for the identifier namespace. CITATION.cff has the machine-readable form.

If something looks wrong

The identifier reference is shared, so an incorrect cluster affects every model resolved against it. Report one as an issue on the repository, with the identifier and what you expected. Rejecting the proposal keeps it out of your own model.