INCATools / INCATools/PandaSaurus

Ubergraph filters

Open
#28 7 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
2
Forks
0
PR merge metrics
No merged PRs in 30d

Description

STATUS: DRAFT

## Problem

The results of direct queries of ubergraph redundant and non-redundant graphs often give suboptimal results for biologist-facing use cases. The redundant

### Case 1: Most precise object term needed.

Query of object graph => object terms that are too abstract. Query of non-redundant graph fails to => any object term in cases where redundancy stripping assumes users will be able to infer from the properties of a more general class.

Examples:

- Querying for all GO processes from some set of CL terms (e.g. via `capable of`)
- Querying the redundant graph => uselessly abstract GO terms. https://api.triplydb.com/s/EYZJ7_buH

|cell_ontology|GO|
|---|---|
|sensory epithelial cell|biological_process|
|interneuron|biological_process|
|motor neuron|biological_process|
|sensory neuron|biological_process|
|polymodal neuron|biological_process|

* Querying the non-redundant graph gives too little, e.g.,GABAergic only links to GO BP on the most general grouping class.

https://api.triplydb.com/s/166HwhWEo
cell_ontology | GO
-- | --
GABAergic neuron | gamma-aminobutyric acid secretion, neurotransmission

The redundant graph => 67 cell types

cell_ontology | GO
-- | --
basket cell | gamma-aminobutyric acid secretion, neurotransmission
cerebellar Golgi cell | gamma-aminobutyric acid secretion, neurotransmission
GABAergic neuron | gamma-aminobutyric acid secretion, neurotransmission
Kolmer-Agduhr neuron | gamma-aminobutyric acid secretion, neurotransmission
rosehip neuron | gamma-aminobutyric acid secretion, neurotransmission
cerebral cortex GABAergic interneuron | gamma-aminobutyric acid secretion, neurotransmission
GABAergic interneuron | gamma-aminobutyric acid secretion, neurotransmission
...

* What we want:

cell_ontololgy | GO
-- | --
fan Martinotti neuron | biological_process
fan Martinotti neuron | transmission of nerve impulse
fan Martinotti neuron | secretion by cell
fan Martinotti neuron | acid secretion
fan Martinotti neuron | gamma-aminobutyric acid secretion, neurotransmission
fan Martinotti neuron | secretion
fan Martinotti neuron | transport
fan Martinotti neuron | cellular process
fan Martinotti neuron | biological regulation
fan Martinotti neuron | regulation of neurotransmitter levels
fan Martinotti neuron | system process
fan Martinotti neuron | neurotransmitter transport
fan Martinotti neuron | neurotransmitter secretion
fan Martinotti neuron | signal release
fan Martinotti neuron | multicellular organismal process
fan Martinotti neuron | nervous system process
fan Martinotti neuron | gamma-aminobutyric acid secretion
fan Martinotti neuron | gamma-aminobutyric acid transport
fan Martinotti neuron | localization
fan Martinotti neuron | establishment of localization
fan Martinotti neuron | regulation of biological quality
fan Martinotti neuron | organic substance transport
fan Martinotti neuron | export from cell
fan Martinotti neuron | establishment of localization in cell
fan Martinotti neuron | signal release from synapse

-->

cell_ontololgy | GO
-- | --
fan Martinotti neuron | transmission of nerve impulse
f
fan Martinotti neuron | gamma-aminobutyric acid secretion, neurotransmission

* Proposed Solution
For each subject: query for all subClassOf relationships between object terms. Filter out all triples from the original query where the term has subclasses according to this second query. However, this would require many secondary queries and so would be inefficient. Is there some clever way to do this in SPARQL with subqueries?

- [x] #29

### CASE2: Graph-view generation

Aim: simple redundancy stripping that does not assume users can deal with inheritance of properties down the class heirarchy.

{details and examples TBA}

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No files or tests are named. Start by reviewing the linked UberGraph redundant and non-redundant query examples, then locate the project entry point that generates those queries. Compare the proposed subclass filtering with the checked-off #29; the Case 2 scope is still marked as forthcoming, so the completion criteria are not yet defined.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
data
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.