Skip to content

chore: move Human-GEM.yml to the RAVEN 3 YAML format, and accept it in the checks - #1124

Merged
edkerk merged 6 commits into
developfrom
chore/raven3-yaml-format
Sep 29, 2026
Merged

edkerk merged 6 commits into
developfrom
chore/raven3-yaml-format

Conversation

@edkerk

@edkerk edkerk commented Sep 29, 2026

Copy link
Copy Markdown
Member

Moves develop to the RAVEN 3 YAML format that the release build writes, and makes the checks and the release accept it. Found in the release checks on #1123.

Why. Human-GEM up to 2.0.0 used RAVEN 2's writeYAMLmodel format: quoted strings, lists indented four spaces, integer charges. RAVEN 3 and raven-toolbox write a different format: quotes only where YAML needs them, two-space lists, every number as a float (charge: -1.0), and a subsystem as a list. v2.0.1 was already released in it, and the 2.1.0 build writes it again. Develop stayed in the RAVEN 2 format, and the checks only knew that one, so on the release branch:

Changes

  • model/Human-GEM.yml rewritten with raven-toolbox's write_yaml_model, as the release build writes it. No model content changes. Reading the file before and after gives identical metabolites, reactions, genes and compartments. The only differences are representation: a reaction's subsystem becomes a one-element list, and the metaData defaultLB/defaultUB become numbers.
  • YAML lint: indentation: {spaces: consistent, indent-sequences: whatever}, accepting list items at their key's indentation.
  • structureConsistencyTest: reads charges written as floats.
  • qcModelChecks split-compartment check: accepts a subsystem written as a list. Without this, the artificial reactions were no longer skipped (37 instead of 26).
  • increaseHumanGEMVersion.py build: stamps the release date. RAVEN 2 stamped the current date on every write, but the RAVEN 3 writer keeps the stored one, which is why v2.0.1 still carried 2026-03-26.
  • release.yml: the sync-back keeps develop's Human-GEM.yml, since the build stamps the version into the release copy.

Tested on Vera, with the converted YAML:

  • yamllint: 0 errors.
  • cobra and raven-toolbox round-trips: lossless.
  • SBML round-trip: models semantically equal, with raven-toolbox#164.
  • Structure consistency: 57, as before.
  • qcModelChecks: unchanged from develop (split compartments 26, growth 1.90).
  • Metabolic tasks: all 57 essential and 21 verification tasks pass.

Needs CompMetEng/raven-toolbox#164 merged first, since CI installs raven-toolbox from its default branch; until then the SBML round-trip here will fail.

Also found: the RAVEN 3 writer does not quote YAML 1.1 booleans, so formula: NO (nitric oxide, MAM02609) is read as False by YAML 1.1 parsers such as PyYAML. cobra and RAVEN are not affected; yamllint reports it as a truthy warning. To be raised in raven-toolbox.

- YAML lint: allow list items at their key's indentation, as writeYAMLmodel.m
  (RAVEN 3) and raven-toolbox write them.
- structureConsistencyTest: read charges written as floats (-1.0).
- increaseHumanGEMVersion build: stamp the release date, which the writer
  otherwise keeps from the stored model.
- release: keep develop's Human-GEM.yml in the sync-back, as the build stamps
  the version into the release copy.
Rewritten by raven-toolbox's write_yaml_model, as the release build writes it
(and as v2.0.1 was released), so develop and main use one format. No model
content changes: reading the file before and after gives the same metabolites,
reactions, genes and compartments; only a reaction's subsystem is now a
one-element list and the metaData bounds are numbers.

qcModelChecks' split-compartment check accepts a subsystem written as a list.
@github-actions

github-actions Bot commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

Model quality report

⚠️ 6 pre-existing finding(s), no regressions vs develop. Non-blocking. Gates: duplicate keys 0 ✅, growth 1.9 ✅.

Section Status
Model & network checks (20) ⚠️ 6 pre-existing
Model file & metabolic tasks (6) ✅ all pass
MEMOTE ✅ 63.8% (core subset)
Full report model_qc_summary.md

Pre-existing:

  • Reactions split across compartments: 26
  • Reactions flagged by MACAW dead-end test: 1111
  • Reactions flagged as MACAW duplicates: 340
  • Mass-imbalanced reactions: 69
  • Charge-imbalanced reactions: 172
  • Structure vs formula/charge inconsistencies: 57

✅ unchanged · ✨ improved vs develop · ⚠️ pre-existing, non-blocking · ❌ regression

Full workflow run · this comment is edited as results come in

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