fix: install raven-toolbox for the full MEMOTE run, and stop hiding crashes - #1066
Conversation
…rashes
A dispatched full-MEMOTE run (29537354961) reported success in 65 seconds having
produced nothing. It died 1.4s in:
from raven_toolbox.annotation import add_sbo_terms
ModuleNotFoundError: No module named 'raven_toolbox'
memoteSnapshot began importing annotateGEM, and so raven_toolbox, in #1062.
model-qc.yml installs raven-toolbox in a step of its own before MEMOTE, but
memote-full.yml installed only cobra, memote and gurobipy, so the script and one of
its two callers went out of sync. Install from requirements.txt there too.
The run looked green because `timeout ... || echo "::warning::MEMOTE did not finish
within the time limit"` swallows every non-zero exit, so an instant crash was
reported as a slow run, and with continue-on-error and nothing to commit the job
passed. Branch on the exit code instead: 124 stays a tolerated timeout warning,
anything else is an error.
In memote-full the score is the entire deliverable, so a crash now fails the run
(continue-on-error dropped; the publish steps are !cancelled(), so results are still
salvaged). In model-qc MEMOTE is one report among many and must not block the other
results being committed, so it keeps continue-on-error but now annotates honestly.
Model quality report
Each check name links to its explanation in the testResults README. Model checksDuplicate keys (model unloadable) and no growth block the merge; every other row is a non-blocking report.
MACAW and mass/charge balance
Model file and metabolic tasks
MEMOTETotal score: 63.2% (core subset)
Per-test scores
Full suite not run for this commit; comment The score above is the fast core subset. Comment Gene essentiality (Hart 2015)Not run automatically (it takes hours). Comment ❌ = a count rose vs the target branch (regression) · Full workflow run · this comment is edited as results come in |
The bug
The dispatched full-MEMOTE run (29537354961) reported success in 65 seconds and produced nothing. It died 1.4s in:
memoteSnapshotstarted importingannotateGEM, and thereforeraven_toolbox, in #1062.model-qc.ymlinstalls raven-toolbox in a step of its own before MEMOTE, butmemote-full.ymlinstalled onlycobra memote gurobipy. The script and one of its two callers went out of sync. Regression from #1062.Why it passed, which is the worse half
||swallows every non-zero exit, so a 1.4-second crash was annotated as "did not finish within the time limit". Withcontinue-on-error: trueand an auto-commit that had nothing to commit and so succeeded, the whole run went green. A full MEMOTE suite "passing" in 65 seconds is not a thing, but nothing in the run said so.Changes
Install raven-toolbox in
memote-full.ymlviarequirements.txt, the same sourcemodel-qc.ymluses.Branch on the exit code instead of
|| echo, in both workflows.124stays a tolerated timeout warning; anything else is an error annotation.The two workflows then diverge deliberately:
memote-full.yml: the score is the entire deliverable, so a crash now fails the run.continue-on-errordropped. The publish steps are!cancelled()(from ci: let results reach a protected branch, and never lose a long run #1065), so a failure still salvages whatever exists.model-qc.yml: MEMOTE is one report among many and must not block the other checks' results being committed, so it keepscontinue-on-errorbut now annotates honestly. Previously a silent crash meant the comment kept showing the last committed score with no indication it was stale.Verifying
Re-dispatch after merge; the run should take hours rather than a minute: