with one click
term-obsoletion
// For handling the process around obsoleting GO terms. This is a complex process involving substantial analysis of impact, both on existing terms that reference to the to-be-obsoleted term, and on annotations
// For handling the process around obsoleting GO terms. This is a complex process involving substantial analysis of impact, both on existing terms that reference to the to-be-obsoleted term, and on annotations
Use the /research skill when performing background research from the literature or the web to create a RESEARCH.md file; also covers use of `deep-research-client`
For working with any terms referencing chemical entities (CHEBI). CHEBI has some unusual properties that are counter-intuitive, so always use this skill to plan or check work that involves a chemical entity or CHEBI IDs, whether a new term, or significant alteration of existing terms
Use this skill when planning to create new ontology terms or modify existing ones to ensure proper design pattern compliance. This skill should be used proactively during issue planning to identify appropriate design patterns before term creation begins. No intersection_of tags should be added without using this skill.
Use this to search for relevant terms in external ontologies. NEVER guess ontology terms or term IDs, always confirm using this skill. The general methodology is to use `obo-grep.pl`
For working with mappings (dbxrefs) in GO.
For working with any terms in the catalytic activity branch; these often correspond to RHEA or EC terms
| name | term-obsoletion |
| description | For handling the process around obsoleting GO terms. This is a complex process involving substantial analysis of impact, both on existing terms that reference to the to-be-obsoleted term, and on annotations |
Obsoletions can fall into these categories:
The first category is easiest. If you are asked to do an obsoletion and are given a direct equivalent replacement, and the replacement looks reasonable, you don't need to do a detailed impact assessment. But you do need to do the "rewiring" yourself.
For the other two categories, you need to think hard about impacts. If the course of action is unclear, don't make changes, instead communicate questions in your issue comments.
We never do complete merges now, so there should be no alt_ids or
disappearing obo format stanzas. If a user asks for a merge, they usually mean
obsoletion with direct replacement
An obsolete term should have
name: obsolete <original name>def: "OBSOLETE. <original def>" [<original dbxrefs>]Here is an exemplar obsoleted term:
[Term]
id: GO:0000170
name: obsolete sphingosine hydroxylase activity
namespace: molecular_function
def: "OBSOLETE. Catalysis of the hydroxylation of sphingolipid long chain bases." [PMID:9556590]
comment: The reason for obsoletion is that this term is equivalent to sphingolipid C4-monooxygenase activity.
property_value: term_tracker_item "https://github.com/geneontology/go-ontology/issues/29717" xsd:anyURI
is_obsolete: true
replaced_by: GO:0102772
Note that the only information that remains is criticial provenance about either the history of the term (name, definition, placement via namespace), or obsoletion metadata. There are no relationships or synonym
Usually when a term is obsoleted, any "good" information is typically transferred to other terms. For obsoletions with direct replacement, this is a straightforward transfer. For more complex cases (e.g. splits or merges, cases where the original term was ambiguous), then judgment should be applied, and in general we want to preserve where things go.
For example consider a poor ontology term that is ambiguous:
[Term]
id: GO:ORIGINAL1
name: leg development
def: "Development of a leg. A leg is an appendage on which an organism walks" [Wikipedia:Leg]
synonym: "limb development" EXACT []
synonym: "appendage development" EXACT []
synonym: "development of limb" EXACT []
is_a: ...
This may be obsoleted with two potential replacements:
[Term]
id: GO:ORIGINAL1
name: obsolete leg development
def: "OBSOLETE. Development of a leg. A leg is an appendage on which an organism walks" [Wikipedia:Leg]
[Term]
id: GO:NEW1
name: limb development
def: "Development of a limb. A limb is a tetrapod appendange evolved from a fin." [PMID:<...>]
synonym: "appendage development" RELATED []
synonym: "development of limb" EXACT []
is_a: ...
[Term]
id: GO:NEW1
name: insect leg development
def: "Development of an insect limb." [PMID:<...>]
is_a: ...
Note the obsoleted term retains no synonyms, as these have either been transferred OR the synonym has become the primary label ("limb development"). The provenance for the original (poor) definition remains, as a matter of history.
If you are obsoleting GO:1234567, you can find usages:
obo-grep.pl GO:1234567 src/ontology/go-edit.obo
You must remove these usages. Do not just delete edges without thinking. You must think hard about replacement terms. If you deem the impact of obsoletion to be too high or you need feedback on how to handle cascading effects, you should stop short of obsoleting the term, and instead provide an impact analysis and open questions in your gh issue summary.
Many of the core biological ontologies that use GO are in Ubergraph:
runoak -i ubergraph: usages GO:1234567
For example, if we use this with GO:0051321 (meiotic cell cycle), we see something like:
used_id used_by_id predicate source dataset context axiom description
GO:0051321 GO:0019953 BFO:0000050 UbergraphImplementation None UsageContext.RELATIONSHIP_SUBJECT None None
GO:0051321 NCBITaxon:2759 RO:0002162 UbergraphImplementation None UsageContext.RELATIONSHIP_SUBJECT None None
GO:0051321 FYPO:0000052 UPHENO:0000001 UbergraphImplementation None UsageContext.RELATIONSHIP_OBJECT None None
GO:0051321 CL:0000657 RO:0002216 UbergraphImplementation None UsageContext.RELATIONSHIP_OBJECT None None
GO:0051321 Wikipedia:Meiosis oio:hasDbXref UbergraphImplementation None UsageContext.MAPPING_SUBJECT None None
...
The first row is a GO-internal axiom (a part_of relationship between two GO terms). The second row arises from GO axioms we add for taxon constraints: it is still a GO-internal axiom, but it references an external identifier from NCBITaxon rather than indicating that NCBITaxon depends on GO. The FYPO and CL rows are important because they show that these two ontologies
have axioms that directly reference GO terms; for these kinds of external ontologies, sufficient warning should be given to the ontology maintainers when making impactful changes. The final row shows a GO dbxref mapping to an external resource (Wikipedia) that is maintained within GO and does not, by itself, imply an external ontology that needs to be notified.
For all obsoletions, analyze the impact on gene annotations. You will want to maintain a specific TODO list here, and report back your analysis when you report back on the issue
Use OAK (Ontology Access Kit) to find all direct usages of the term in gene product annotations:
runoak -i amigo: associations GO:nnnnnnn
Important notes:
amigo: as the adapter (connects to GO annotation database)Parse the results to identify:
Update the todo list with one item per unique PMID for detailed analysis.
Use the /research skill to explore publications. This should give you a clue for potential replacement terms.
For each annotation from this PMID, determine:
Question 1: Is the annotation still valid?
Question 2: What action should be taken?
Option A: Replace with specific term
obo-grep.pl to verify proposed replacement terms existOption B: Remove annotation
Option C: Migrate to parent/broader term
obo-grep.pl -r 'id: GO:nnnnnnn' src/ontology/go-edit.oboFor each PMID analyzed, provide:
Example format:
"<Title of the paper>"
SUPPORT: <PMID:localId> "<Exact excerpt from the paper>
- finding 1
- finding 2
- ...
Recommendations:
* Replace <GO:nnnnnnn> with <GO:nnnnnn> "<term label>" ## Justification
Watch for cases where:
Mark the corresponding todo as completed after analyzing each PMID.
After analyzing all PMIDs (or after analyzing significant subsets), update the GitHub issue:
Include a detailed analysis in the issue comments.
Include in updates:
Statistics:
Action items for curators:
If uncertain about the correct replacement term:
obo-grep.plFor terms with 50+ annotations:
Find annotations:
runoak -i amigo: associations GO:nnnnnnn
Fetch publication full text:
Use WebTools
Search ontology for terms:
obo-grep.pl -r 'id: GO:nnnnnnn' src/ontology/go-edit.obo
Update GitHub issue:
gh issue comment ISSUE_NUMBER --body "Your comment here"
gh issue view ISSUE_NUMBER # To read the issue
Obsolete term has exact replacement - verify all annotations can migrate cleanly.
Obsolete term was too broad, split into multiple specific terms - each annotation needs individual assessment.
Term was incorrectly defined - annotations may need removal or migration to very different terms.
Term removed from GO scope - determine if annotations should move to related ontology or be removed.