200 likes | 346 Views
Molecular Model (aka lego ) Editing Environment Architecture. MolecularModelManager. http://owltools.googlecode.com/svn/trunk/docs/api/owltools/gaf/lego/MolecularModelManager.html. CRUD – create/read/update/delete : DONE ModelGenerator – seeding models : TESTING REQUIRED Visualization
E N D
MolecularModelManager http://owltools.googlecode.com/svn/trunk/docs/api/owltools/gaf/lego/MolecularModelManager.html • CRUD – create/read/update/delete : DONE • ModelGenerator – seeding models : TESTING REQUIRED • Visualization • LegoViz: Lego-Protégégraphviz • Bbop-graph: ultimately rendered on client • CORE VIZ. FUNCTIONALITY TO BE MOVED TO CLIENT
Create/Read/Update/Delete • CRUD operations delegate to OWLAPI • Reasoner operates on each operation • Consistency • Filling in missing data • Manager stores model in memory as OWLAPI facts • Can be exported to any RDF/OWL concrete form or store
Example CRUD operation /** * Adds a ClassAssertion to the model, connecting an activity instance to the class of molecule * that enables the activity. * * Example: FGFR receptor activity enabledBy some UniProtKB:FGF * * The reasoner may detect an inconsistency under different scenarios: * - i may be an instance of a class that is disjoint with a bfo process * - the enabled may be an instance of a class that is disjoint with molecular entity * * Under these circumstances, no error is thrown, but the response code indicates that no operation * was performed on the kb, and the response object indicates the operation caused an inconsistency * * @param modelId * @param i * @param enabler * @return response info */ public OWLOperationResponseaddEnabledBy(String modelId, OWLIndividuali, OWLClassExpressionenabler) http://owltools.googlecode.com/svn/trunk/docs/api/owltools/gaf/lego/MolecularModelManager.html
Persistence • Phase 1: • Use OWL files in VCS • Location: • http://viewvc.geneontology.org/viewvc/GO-SVN/trunk/experimental/lego/server/ • Phase 2: • RDF triplestore
VCS based persistence Use OWLAPI Renderer Module to Export to rdf/owl Use SVN as backing store (same as TG) People can use Protégé on the files If they really want to
Triplestore (next phase) • A dedicated backend may be more robust • No need to partition data into files • But: VCS should be sufficient for rollout • Triplestore has advantages over RDBMS • No additional modeling or complex ORM architecture required • Underlying model is already triples • Part of overall GO (and EBI) software strategy • Added bonuses • SPARQL queries • Status: PLANNING
MolecularModelGenerator • Given: • A biological process P • An OWL axiomatization of P • E.g. has_parts, starts_withs, … • Can be partial but the more complete the better • A set of annotations for a species S • All genes involved in P and their MF annotations • Generate • An instance model of <P,S> • Aka a “seed LEGO diagram” • Documentation: • High level: https://docs.google.com/document/d/1TV8Eb9sSvFY-weVZaIfzCxF1qbnmkUaiUhTm9Bs3gRE/edit#heading=h.r7ezra5s63k • Javadoc: http://owltools.googlecode.com/svn/trunk/docs/api/index.html?owltools/util/MinimalModelGenerator.html
Services Layer • Java services layer • Current implementation is simple servlets • Same as rest of owltools – e.g. taxon server, owlsim server • STATUS: IN PROGRESS • Refactor: • REST / JAX-RS • Comet/WebSockets? • STATUS: PLANNING
Service Calls Simple wrapper to java methods such as addEnabledBy /mm/generate/model/:proc/:species modelId /mm/createActivity/ instanceId /mm/createProcess/ instanceId /mm/{assert,delete}/modelId/ /type/:id/:cls /fact/:id/:prop/:filler /location/:id/:cls[/:cls…] /enabledBy/:id/:molCls[/:cls…] response /mm/graph/:modelId bbopGraphObj … Note: existing calls are not As ‘REST’y as this, but are Being refactored All calls return JSON
Running services • Checkout legodir • http://viewvc.geneontology.org/viewvc/GO-SVN/trunk/experimental/lego/server/ cd go/experimental/lego/server ./start-mm-server.sh Connect on http://localhost:3000
JSON payload • Payload is RDF/OWL transmitted via JSON-LD • TODO: examples here • See: lego-json.md in go/experimental/lego/docs on svn • TBD: RDF blank nodes vs OWL SomeValuesFrom restrictions • STATUS: IN PROGRESS
Client • Relatively stateless and dumb? • All CRUD operations immediately synced with server • Uses jsPlumb for manipulation • jQuery for tables etc • Full capabilities TBD • STATUS: IN PROGRESS
Client demos • Demos: • http://go-genkisugi.rhcloud.com/ • Source: • https://github.com/kltm/go-mme
External Services • Golr • Autocomplete. STATUS: DONE • Future: Retrieval of existing annotations • ?TermGenie • Use case: curator adds a new MF using TG, needs to create an instance immediately • For compositional terms, MME will allow any class expression, so naming the class not strictly required • Persona • Authentication. STATUS: PLANNING • Future: • Pathway database APIs (to seed models)
Integration with AmiGO 2 • Reuse same client side framework for displaying graphs
Integration with protein2go • Phase 1: • Loosely coupled • P2go for classic GO annotation, MME for full expressivity • Phase 2: • Larger CAF framework • Investigate tighter coupling as driven by curator requirements • E.g. seamlessly switch between two
TODO/Open Questions • Persist jsPlumb layout between sessions? • REST vs COMET vsWebSockets? • Get quick prototype out for curators vs finalize certain aspects of architecture
Availability • http://owltools.googlecode.com - server • (includes other components not required for lego) • https://github.com/kltm/go-mme - client