INCATools / INCATools/ontology-access-kit
Provide a global option to dynamically create a base/baseplus view
- Dominant language
- Python
- Stars
- 198
- Forks
- 35
- Avg merge
- 3d 4h
- Merged PRs (30d)
- 1
Description
Currently there are different variants of ontologies available:
- https://oboacademy.github.io/obook/explanation/owl-format-variants/
Depending on the use case, a user may wish to use different variants or different subsets
- for visualizing locations of cell types in uberon, the full cl module should be used
- for getting a report of logical definitions in mondo, we want to include only mondo in the report (but allow logical definitions to point to dangling classes) - ie baseplus
- for doing a lexical match between two ontologies then we don't want to include merged terms from other ontologies (ie baseplus or simple or basic)
In theory the user can download the relevant variant for their scenario but this is hard, and if there is not something ready-made, then it is even harder, as they will need to use robot or similar tools to build/extract.
In order to account for this variability, OAK makes as few assumptions as possible about variants, and many commands provide options to restrict operations to specified prefixes (which is not always ideal, due to the counter-intuitive practice of "adopting" ID spaces in OBO, but is usually a good enough proxy).
For example, the `mappings` command provides `--maps-to-source` which allows filtering by ID space.
We should make all of this as consistent and simple for the users as possible
Longer term strategy:
baseplus modules should be available for all ontologies, these compose together without introducing duplications or superimpositions of stale edges. So for example, composing mp+cl+uberon would allow traversal from a cellular phenotype to cell type up to anatomy (but if there was a link to a chemical, this would be dangling until chebi was added)
Shorter term strategy:
Provide an option like `--base/--no-base` for all commands (or introduce at the `runoak` level) that creates a dynamic base view that is operated over.
This may be harder to implement for some backends than others
Contributor guide
Research direction
Start by reading the runoak command entry point and the mappings command, especially its --maps-to-source option, to understand how command-level filtering is currently exposed. Define the scope of a global --base/--no-base option across commands and backends, then verify that it creates the intended dynamic base view without requiring prebuilt ontology variants.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- cli
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100