molecular model (aka lego) editing environment architecture
TRANSCRIPT
Molecular Model (aka lego) Editing Environment Architecture
MolecularModelManager
• 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
http://owltools.googlecode.com/svn/trunk/docs/api/owltools/gaf/lego/MolecularModelManager.html
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 OWLOperationResponse addEnabledBy(String modelId,
OWLIndividual i, OWLClassExpression enabler)
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 OWLAPIRendererModule toExport to rdf/owl
Use SVN as backing store(same as TG)
People can use Protégé on the filesIf 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
/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…
All calls return JSONNote: existing calls are notAs ‘REST’y as this, but areBeing refactored
Simple wrapper to java methods such as addEnabledBy
Running services
• Checkout lego dir– 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 vs WebSockets?• 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