monarch-initiative / monarch-phenote

stub for monarch phenote
4 stars 3 forks source link
monarchinitiative phenotypes

WebPhenote, aka PhenoTua is a Monarch adaptation of Noctua

The current instance can be used at http://create.monarchinitiative.org/

We envision WebPhenote as a series of domain-specific widgets and custom forms layered on top of the generic Noctua framework - similar to Plugins for Protege. The exact nature of the architecture and coupling of the projects is evolving.

Currently this repo only contains ultra-minimal files for making a mini test instance of Noctua, but with phenotypes. Some of the code was developed in the main Noctua repo on https://github.com/geneontology/noctua for convenience.

In the future this repo may go away and be subsumed into a plugins/contrib repo for Noctua.

In the interim, the issue tracker should still be useful.

User Interface Details

The user interface is best understood in terms of layers:

For example, the Disease-Phenotype form is currently accessible from the FORM button here. This form presents fields such as "disease" and "phenotype" and "onset" with implicit relationships between them. This allows for easier creation and curation of this common type of relationship, while still generating the same format of models viewable in the graph editor.

The underlying data model for WebPhenote is an OWL Abox - i.e. a set of individuals and assertions about those individuals. The individuals can be typed by any class or class expression, typically coming from monarch.owl.

An example of a simple OWL assertion would be:

:000-888-1234 rdf:type NCBITaxon:9606 .
:000-888-1234 ro:has-phenotype :987-231-090
:987-231-090 rdf:type HP:0000123

Here we are saying that some human has the phenotype Nephritis. The human is identified only by a URI (the system will generate UUID-like URIs for these).

This gets show in the graph-UI as an edge connecting the two classes:

[Human] --[has-phenotype]--> [Nephritis]

This should be read as "some human has nephritis"

Evidence can be added on a per-triple basis, refer to the Minerva OWL specs for more.

Because we use individuals, the model is infinitely extensible. For example, we can add age of onset:

:987-231-090 ro:during :555-555-5555
:555-555-5555 rdf:type HP:0003581

The graph UI is configured to "fold in" or "collapse" some relations such as 'during' to make a more compact display

[     ]                      [          ]
[Human] --[has-phenotype]--> [Nephritis ]
[     ]                      [AdultOnset]

In the "exploded" view each distinct individual is shown as a box:

[Human] --[has-phenotype]--> [Nephritis ] --[during]--> [AdultOnset]

In both cases, only OWL individuals are shown.

The graph UI can be considered the "base metal" layer of the Noctua system, akin to the individual view in Protege. It is possible to say anything possible within the RO and Monarch vocabularies here (provided the reasoner does not deem this inconsistent).

For most users this is too low level. WebPhenote will consist of forms and widgets that are "convenience layers" on top of this base system.

For instance the disease-phenotype form here (this link may break periodically as we improve our WebPhenote example models):

http://create.monarchinitiative.org/basic/gomodel:56d4f20300000033

is intended to emulate a simple phenote configuration describing the association of Parkinson's Disease with Vocal Tremor and Adult Onset. The underlying model is still OWL individuals and can be viewed via the graph editor here http://create.monarchinitiative.org/editor/graph/gomodel:56d4f20300000033