Drop the vacuous GO annotations, upgrade the ones that meant something (#182) - #599
Open
realmarcin wants to merge 1 commit into
Open
Drop the vacuous GO annotations, upgrade the ones that meant something (#182)#599realmarcin wants to merge 1 commit into
realmarcin wants to merge 1 commit into
Conversation
#182) Decision on #182: drop the generic GO remaps. The #180 cleanup remapped obsolete GO ids to the nearest VALID term, which for a handful meant climbing to a near-root process. The result was 16 annotations of `GO:0008152 metabolic process` on records in a knowledge base about microbial communities, every one of which does metabolism. They were not all the same thing, so they are not all treated the same: 9 read `preferred_term: metabolic process` against `GO:0008152 metabolic process` — the annotation restates the term and the term restates the domain. Dropped; nothing is lost. 7 carried a real concept flattened onto the generic parent, and are re-grounded rather than deleted: organic substance catabolic process -> GO:0009056 catabolic process (5) nitrogen compound metabolic process -> GO:0071941 nitrogen cycle metabolic process (2) Deleting those seven would have thrown away curated claims about catabolism and nitrogen cycling to satisfy the letter of "drop the remaps". The precise terms a curator would want — GO:0006807 and GO:1901575 — are OBSOLETE in GO, checked with OAK, which is exactly why they were flattened in the first place. GO:0071941 was already used twice elsewhere in the KB, so this follows an existing convention rather than inventing one. `term` is `required: true` on BiologicalProcessDescriptor, so there is no option to keep an ungrounded `preferred_term`: dropping the annotation necessarily means dropping the whole descriptor. That is why upgrading beats deleting wherever a current term exists. GO:0044419 (interspecies interaction, 152 occurrences) is deliberately NOT touched. It came from the same obsolete-remap list but it is genuinely informative for this KB, and the replacement is better than the original. Gate added, mutation-checked by restoring a vacuous annotation to a real record. It keys on the identifier, never on `preferred_term == label` — a correctly grounded specific term also matches its own label, and that is good curation rather than a defect; a second test pins that. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Network integrity findingsWarnings only — a member with no interaction yet, or a participant matched by ontology id rather than by name, or one on a community-level interaction that resolves to no member. Reported, but does not fail the build. The full report is attached to the workflow run as an artifact. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #182. Implements the decision: drop the generic GO remaps.
What was there
The #180 id↔label cleanup remapped obsolete GO ids to the nearest valid term. For a handful that meant climbing to a near-root process, leaving 16 annotations like:
on records in a knowledge base about microbial communities, every one of which does metabolism. The annotation restates the term and the term restates the domain.
They were not all the same thing
preferred_term: metabolic process→GO:0008152organic substance catabolic process→GO:0008152GO:0009056catabolic processnitrogen compound metabolic process→GO:0008152GO:0071941nitrogen cycle metabolic processDeleting the seven would have thrown away curated claims about catabolism and nitrogen cycling to satisfy the letter of "drop the remaps". Flagging the judgement call explicitly since it goes slightly beyond the decision as worded.
Why they were generic in the first place: the precise terms a curator would want —
GO:0006807"nitrogen compound metabolic process" andGO:1901575"organic substance catabolic process" — are obsolete in GO. Checked with OAK:GO:0071941was already used twice elsewhere in the KB, so this adopts an existing convention rather than inventing one.Why upgrade rather than strip the id
termisrequired: trueonBiologicalProcessDescriptor. There is no way to keep an ungroundedpreferred_term— dropping the annotation necessarily drops the whole descriptor. So wherever a current term exists, upgrading is strictly better than deleting.Deliberately not touched
GO:0044419"biological process involved in interspecies interaction between organisms" — 152 occurrences across 72 files. It came from the same obsolete-remap list in #182 (GO:0051704multi-organism process →GO:0044419), but for a knowledge base about microbial communities it is genuinely informative, and the replacement is better than the original rather than worse. Dropping it would have been the largest change in the issue and the wrong one.Bucket A (CHEBI/ENVO/NCBITaxon) is untouched per the decision —
preferred_termretains the specificity there.Gate
test_no_vacuous_go_annotations.py, mutation-checked by restoring a vacuous annotation to a real record (goes red).It keys on the identifier, never on
preferred_term == label. A correctly grounded specific term also matches its own label — that is what good curation looks like, not a defect — andtest_a_specific_process_is_not_flaggedpins that so the gate cannot drift into over-broad.The blocklist requires a written reason per entry, so adding one is a decision rather than a reflex.
Gates
lint0,validate-all0,validate-strict0,check-docs-current0 (regenerated HTML for the 8 edited records is included), 2471 passed.