Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Overhauling “taxon subsets” #3362

Open
gouttegd opened this issue Sep 16, 2024 · 0 comments · May be fixed by #3363
Open

Overhauling “taxon subsets” #3362

gouttegd opened this issue Sep 16, 2024 · 0 comments · May be fixed by #3363
Assignees
Labels

Comments

@gouttegd
Copy link
Collaborator

gouttegd commented Sep 16, 2024

Currently, each Uberon release comes with a handful of “taxon subsets”:

  • amniote-basic,
  • euarchontoglires-basic,
  • human-view,
  • mouse-view,
  • xenopus-view.

Those subsets are generated in two different ways.

a) For the -basic subsets, the key part of their generation is OWLTools’ --make-species-subset command. Briefly, what this command does, when generating a subset for a taxon T, is to assert owl:Thing in_taxon some T, and then to exclude all classes that are unsatisfiable because of that assertion, so that the resulting ontology only contains classes that are not known to be invalid for taxon T. (After that step, this is merely standard, ROBOT-mediated reasoning and filtering of external terms.)

b) For the -view subsets, the approach is quite similar, only the implementation is different. To create a subset for a taxon T, instead of using the dedicated --make-species-subset command, we merge into Uberon a small ontology (found in src/ontology/contexts/context-T.owl) containing an axiom asserting that Uberon’s anatomical structure is part of the taxon T (UBERON:0000061 SubClassOf: part_of some T), then we run OWLTools’ reasoning command over the merge product and instruct it to ignore all unsatisfiable classes (we have to use OWLTools here because ROBOT’s reason command does not allow, as far as I know, to simply ignore unsatisfiable classes – robot reason always errors out if the ontology it is trying to reason over is found to contain unsatisfiable classes). Basically it’s a “manual” way of doing more or less the same thing than --make-species-subset does.

I don’t know why we have those two methods to generate taxon subsets. Possibly OWLTools’ --make-species-subsets did not exist at the time the -view subsets were first created, or whoever created them did not know that command existed. In any case, I think it’s needlessly confusing to have two types of taxon subsets (the “-view” subsets and the “-basic” subsets), so those two methods should be consolidated into a single one – ideally one that does not require OWLTools, which we are trying to phase out of our pipelines.

@dosumis suggested at some point that instead of creating the subsets directly, we could have a command (implemented as a ROBOT plugin) that merely tags classes as belonging to a given subset (by adding an annotation like oboInOwl:inSubset <http://purl.obolibrary.org/obo/uberon/core#human_subset>), after which the subsets themselves could be created by simply extracting the classes carrying the tag.

@gouttegd gouttegd self-assigned this Sep 16, 2024
@gouttegd gouttegd added the tech label Sep 16, 2024
@gouttegd gouttegd linked a pull request Sep 18, 2024 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant