INCATools / INCATools/ontology-access-kit

Provide a global option to dynamically create a base/baseplus view

Open
#393 2 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.