dismech metabolic alignment: audit self-check

Species: human

DISMECH metabolic alignment: audit self-check

Back to the project page

This page reconciles two runs of the same audit over different trees. It is a check on the generator - that the flags which should not depend on which gene reviews exist do not - and not a finding about how dismech and ai-gene-review agree. It names individual rows and review statuses for that reason.

The second run records no answer for whether align_audit.py was modified when it ran, though git answered for the audited tree itself: clean. Both runs record the same script (906bd065421d), in which the two answers come from one command in one directory differing only in the pathspec that names the script - which is why audit_revision is unrecorded for that run as well. The primary run answers it: clean.

The audit also runs over a second tree, and comparing the two runs shows which flags
are artifacts of the missing slices rather than findings. That tree is this branch (claude/cool-edison-o9wvf0-alignment-project at 132532cf6) alone, before main was merged in, so the gene reviews and modules added by the ten themed slice PRs of #4690 are absent.
Both cover the same
183 gene rows. Flags that fall: ALIGNED_NONCORE 0 against 1, ALIGNED_ON_SHARED_NODE_ONLY 25 against 48, NO_MODULE_MEMBERSHIP 28 against 38, PARTIAL_ALIGNMENT 46 against 56. Flags that rise: AIGR_NOT_COMPLETE 85 against 8, MODULE_NOT_COVERING 7 against 4, NO_AIGR_REVIEW 61 against 5, NO_CORE_FUNCTION_TERMS 2 against 0.
That second run read a tree recorded at 132532cf6, an ancestor of the branch tip, with 6416 of the audit's input files changed between the two, so the figures below describe the recorded commit rather than the tip - e.g. genes/AGKCO/fibrolase/fibrolase-ai-review.yaml.

Every movement below is accounted for row by row rather than from the net counts: a flag's total can fall while rows arrive at it, and each row's cause is read from that row's own record on both trees, not from the flag's group. Where a flag moves in one direction only the net count is exact, and the line says so rather than implying the count was misleading.

The rises, on the same basis:

The groups below say where in the audit each flag is computed, which is why those causes are the ones available to it - not why any particular row moved.

ALIGNED_CONTRIBUTES_ONLY, PARTIAL_COVERAGE are identical in total in both runs while depending on a review, so they appear in neither list above. An equal total is not an equal set of rows, and the difference matters here, so each is compared row by row below rather than read off the count.

ALIGNED_CONTRIBUTES_ONLY is identical row for row as well: the same rows, keyed by entry, gene and occurrence, carry the flag on each tree.
ALIGNED_CONTRIBUTES_ONLY is review-sourced, so a stable count there cannot be a property of the dismech side either. The reviews are not even the same: NDUFA1 is COMPLETE here and INITIALIZED on the second tree. What is stable is the contributes-to term the row aligns on, GO:0008137 for NDUFA1, which both reports record identically - so the flag survives a change in the review around it.

PARTIAL_COVERAGE 14 against 14 moves in both directions, so the net is not the movement: 9 rows carry it on both trees, 5 left - 2 because the modules containing the gene differ (COX4I2, ABHD5); 2 because the row has no review on the other tree (MC4R, LIPA); 1 because the review on the other tree is a stub or has no core-function terms (PEX5); 5 arrived - 4 because the modules containing the gene differ (HADH (3-hydroxyacyl-CoA_Dehydrogenase_Deficiency), GLB1 (GM1_Gangliosidosis_Type_1), GLB1 (GM1_Gangliosidosis_Type_3), COQ8A); 1 because the same modules carry different terms (HAO1) - HAO1: glyoxylate_oxalate_metabolism covers GO:0003973, GO:0046296 here and GO:0003973 there. So the equal total is a coincidence of two populations, and nothing about stability follows from it.

The flags decided before any review is read are identical in both runs
(GENE_ON_NO_NODE 18, NO_GO_ON_GENE_NODES 19, NO_ORIGIN 3, UNTYPED 0), which is what separates
missing inputs from the script behaving differently - and that identity is enforced
rather than stated: the generator exits if one of those counts moves, or if the two runs
do not cover the same rows. So a second run tests that the audit works; the figures
on the project page come from the tree holding every reviewed gene, which with all
ten slices merged is this branch itself.