Repository navigation
chore: version 2.1.1 - #1146
chore: version 2.1.1#1146
Conversation
chore: sync main into develop after 2.1.0
* ci: report the full MEMOTE run in its /run memote comment /run memote now edits its own comment, like /run gene-essentiality, with a link to the workflow in the Actions tab. The run replaces that notice with a link to itself when it starts, and with a short result when it finishes: whether it finished, the full-suite score and its change against the base branch, a link to the full report, the per-test scores in a collapsed table, and a note that the Model QC comment was updated too (code/test/memoteComment.py). * ci: report the MEMOTE run's own result and scored model version - The MEMOTE step records how it ended (finished, timeout, failed) and the model version it scored, before the branch is reset to its remote tip. The comment uses these, so a timed-out run is not reported with an earlier score for the same model, and a push during the run does not turn a finished run into "did not finish" (it is noted instead). A skipped step reads "did not start". - /run memote edits its comment before dispatching, so it cannot overwrite the run's own link, and falls back to dispatching without the comment input on a branch whose memote-full.yml does not have it. - The whole command comment is kept (up to a marker), without carriage returns. * chore: update model QC results [skip ci] * chore: full MEMOTE result [skip ci] * chore: update model QC results [skip ci] --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* fix: add the missing empty fields to the FDX1 row in genes.tsv The ENSG00000137714 row had 7 of the 10 columns; geneAliases, compartments and compDataSource are now empty, as for the other recently added genes. Closes #1136 * chore: update model QC results [skip ci] * chore: update model QC results [skip ci]
…med gene identifiers in the QC (#1139) * fix: remove Ensembl version suffixes from transcript and protein ids 125 geneENSTID/geneENSPID values of 16 genes carried a version suffix (e.g. ENST00000375991.9); they are now unversioned, as for all other genes. Closes #1138 * chore: update model QC results [skip ci] * feat: report malformed gene identifiers and rows with the wrong number of fields annotationTest.py now also checks genes.tsv: Ensembl transcript and protein ids must be unversioned, and UniProt and NCBI Gene ids must match their formats. In all three annotation tables, a row with a different number of fields than the header is reported. Both count under 'Malformed cross-references' in the model QC report. Refs #1138, #1136 * chore: update model QC results [skip ci] * Document qc_split_compartments.csv in the test results README * chore: update model QC results [skip ci]
* feat: generate the animal GEMs from Human-GEM in Python (#421) generateAnimalGEM.py replaces the five masterScript<Species>GEM.m scripts. The species is an argument and everything species-specific is read from the Animal-GEM repository, so a developer and a CI job run the same command. It rewrites the GPRs through the Alliance orthologs, adds the species-specific network, gap-fills the essential tasks, stamps the version and date into the model metadata, and writes the model and annotation files. For Human-GEM 2.0.0-2.1.0 the cofactor pool of MAR00021 is switched from lipoyl-lysine to lipoic acid in memory, because MAR00021 cannot carry flux otherwise (#1140). * chore: update model QC results [skip ci] * feat: build the animal GEM drafts with raven-toolbox's homology functions get_model_from_homology (keep_gene_free, preserve_notes) and set_model_metadata replace the local GPR rewriting and metadata code. Gene symbols that a GPR cannot hold, such as E(spl)m3-HLH, dib[m] or the Drosophila gene "or", get a valid gene id and keep the symbol as the gene name; the species-specific metabolites that Human-GEM no longer knows by name are reported together. The lipoyl-lysine fix also applies to the unversioned develop model. * feat: build the animal GEMs on a stable Human-GEM release The template, orthology, annotation tables and task list now come from a Human-GEM checkout (--human-repo, normally a release tag). A model without a version (develop) is refused unless --allow-unreleased is given. * fix: drop bookkeeping notes, record the MAR00022 swap in the model, warn on unbalanced species reactions The raven homology call left homology_source on every reaction and kept rxnFrom/metFrom, which the previous scripts removed. The lipoic acid swap in MAR00022 is now noted on the reaction, a template without a model id (older releases) no longer fails, and species-specific reactions that are not balanced against the template are reported. * fix: leave sinks and demands out of the unbalanced-reaction warning * feat: animal GEM versions follow Human-GEM's major.minor Without --version an animal GEM keeps its version when its major.minor matches the Human-GEM release it is built on, and becomes <major>.<minor>.0 of that release otherwise. A requested version with another major.minor is refused. * feat: MATLAB generateAnimalGEM, the same pipeline as the Python generator generateAnimalGEM.m replaces the previous MATLAB animal GEM functions (updateAnimalGEM, getModelFromOrthology, addMetabolicNetwork, gapfill4EssentialTasks, updateAnimalAnnotations, extractAllianceGenomeOrthologs, countFrequency). It uses RAVEN 3's getModelFromHomology with complexPolicy, keepGeneFree and preserveNotes, and gives the same model and annotation tables as generateAnimalGEM.py for all five species. cleanGrRules, replaceGrRules and translateGrRules, which other code uses, move to code/GPRs. Both generators resolve gap-filling ties, so the gap-filled set does not depend on the solver, and keep the Human-GEM notes of gap-filled reactions.
…tated model (#1145) * Use minimal quoting in genes.tsv genes.tsv enclosed every field in double quotes, while reactions.tsv, metabolites.tsv and both deprecated identifier lists carry none. No field in any of them contains a tab, a double quote or a newline, so none of them needs quoting. The parsed content is unchanged: all 2870 rows, all 588 empty cells and the all-digit geneEntrezID column read back exactly as before. * Read every TSV column as text and stop quoting on export importTsvFile took its column types from the quotes on the file's second line: a quoted field became char, an unquoted one became double, and a file with no quotes at all fell back to char throughout. Fully quoted and fully unquoted tables therefore both worked, but a table quoted only where necessary would have had its unquoted columns read as numbers, and one gene alias containing a quote would have been enough to cause it. Column types no longer depend on quoting; numeric_cols names the columns that are numbers, and no caller passes it. exportTsvFile quoted every string entry by default, which returned the quotes to any table written from MATLAB. The comments in prepHumanModelForftINIT and estimateEssentialGenes gave the absence of quotes as the reason the spontaneous column arrives as text, which is no longer what decides it. * chore: update model QC results [skip ci] * fix: export the .mat from the annotated model The .mat was written from the plain model, so it carried none of the TSV annotation -- and each metabolite's InChI lives in metabolites.tsv (metInChI), not in the YAML. Human-GEM 2.0.0 shipped 1063 InChIs in its .mat; 2.0.1 and 2.1.0 ship none, along with no cross-references. Only the YAML has a reason to stay annotation-light: it is the file git tracks, and a diff of it should show curation rather than merged annotation. A .mat is a binary artefact that nobody diffs, so there is nothing to gain by keeping it lean and a model to lose by it. Against the 2.1.0 model the regenerated .mat now has 36 fields to 2.0.0's 33, with nothing missing: 6350 InChIs (2.0.0 had 1063, the tsv having grown since), and rxnMiriams, metMiriams and geneMiriams that no release has carried before.
#1145 exported the .mat from the annotated model to pick up each metabolite's InChI, which lives in metabolites.tsv rather than the yml. That also pulled in the whole annotation set, so the .mat gained rxnMiriams, metMiriams and geneMiriams -- fields no release has carried, and more than was wanted. An InChI is a structure rather than a cross-reference, so add_inchis merges that one column and nothing else, and the .mat goes back to being exported from the plain model. Its field set now matches 2.0.0's exactly: 33 fields, none missing and none added, with 6350 InChIs. The xml, xlsx and txt exports are unchanged and still carry the full annotation.
|
/run memote |
|
Gene essentiality was run on this pull request via GH Actions. Gene essentiality: effect of this changeChecked 0 gene(s) directly affected plus 0 more that share a metabolite with one of them. A gene counts as changed below only if the flip agrees in direction across at least 3 of the 5 cell-line models; fewer than that is grouped as likely noise from ftINIT's run-to-run variability instead.
Full detail: gene-essential_summary.md. ✅ unchanged · ✨ correct vs Hart 2015 · ❌ wrong vs Hart 2015 · ℹ️ not comparable to Hart 2015 The unscoped, every-gene matrix behind the table above is committed to gene-essential.csv.
|
|
🔬 Started the full MEMOTE suite on |
Model quality report
Pre-existing:
✅ unchanged · ✨ improved vs Full workflow run · this comment is edited as results come in |
No structural model content changes in this release.
Human-GEM.xmlagain holds subsystems.Human-GEM.matis restored as RAVEN model structure, carrying fields missing from 2.1.0.genes.tsv,reactions.tsvandmetabolites.tsvshare one unquoted format.genes.tsvcarried Ensembl version suffixes.genes.tsvhad a faulty entry for FDX1.generateAnimalGEMfunctions are now kept incode/animalGEMand are refactored to make use of Raven3 functions.