The ERATO Systems Biology Workbench Project: A Simplified Framework for Application Intercommunication Michael Hucka, Andrew Finney, Herbert Sauro, Hamid.

Slides:



Advertisements
Similar presentations
MicroKernel Pattern Presented by Sahibzada Sami ud din Kashif Khurshid.
Advertisements

Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit.
COM vs. CORBA.
Institute of Technology SBML: Systems Biology Markup Language Michael Hucka, Andrew Finney Herbert Sauro, Hamid Bolouri.
The ERATO Systems Biology Workbench Michael Hucka, Hamid Bolouri, Andrew Finney, Herbert Sauro ERATO Kitano Systems Biology Project California Institute.
Snejina Lazarova Senior QA Engineer, Team Lead CRMTeam Dimo Mitev Senior QA Engineer, Team Lead SystemIntegrationTeam Telerik QA Academy SOAP-based Web.
GridRPC Sources / Credits: IRISA/IFSIC IRISA/INRIA Thierry Priol et. al papers.
Latest techniques and Applications in Interprocess Communication and Coordination Xiaoou Zhang.
2 Object-Oriented Analysis and Design with the Unified Process Objectives  Explain how statecharts can be used to describe system behaviors  Use statecharts.
Middleware Fatemeh Hendijanifard 1 آزمايشگاه سيستم هاي هوشمند (
Remote Method Invocation Chin-Chih Chang. Java Remote Object Invocation In Java, the object is serialized before being passed as a parameter to an RMI.
CORBA Case Study By Jeffrey Oliver March March 17, 2003CORBA Case Study by J. T. Oliver2 History The CORBA (Common Object Request Broker Architecture)
Software Frameworks for Acquisition and Control European PhD – 2009 Horácio Fernandes.
Satzinger, Jackson, and Burd Object-Orieneted Analysis & Design
Component and Deployment Diagrams
Ch 12 Distributed Systems Architectures
Software Development for Systems Biology Herbert M Sauro Frank Bergmann Keck Graduate Institute 535 Watson Drive Claremont, CA,
Systems Architecture, Fourth Edition1 Internet and Distributed Application Services Chapter 13.
Web Services Michael Smith Alex Feldman. What is a Web Service? A Web service is a message-oriented software system designed to support inter-operable.
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 4 Web technologies: HTTP, CGI, PHP,Java applets)
1 8/29/05CS360 Windows Programming Professor Shereen Khoja.
Adapting Legacy Computational Software for XMSF 1 © 2003 White & Pullen, GMU03F-SIW-112 Adapting Legacy Computational Software for XMSF Elizabeth L. White.
DMSO Technical Exchange 3 Oct 03 1 Web Services Supporting Simulation to Global Information Grid Mark Pullen George Mason University with support from.
Lecture 3: Pathway Generation Tool I: CellDesigner: A modeling tool of biochemical networks Y.Z. Chen Department of Pharmacy National University of Singapore.
@2011 Mihail L. Sichitiu1 Android Introduction Platform Overview.
T Network Application Frameworks and XML Web Services and WSDL Sasu Tarkoma Based on slides by Pekka Nikander.
Understanding the CORBA Model. What is CORBA?  The Common Object Request Broker Architecture (CORBA) allows distributed applications to interoperate.
Chapter 4 System Models A description of the various models that can be used to specify software systems.
An intro to programming. The purpose of writing a program is to solve a problem or take advantage of an opportunity Consists of multiple steps:  Understanding.
The ERATO Systems Biology Workbench Michael Hucka, Andrew Finney, Herbert Sauro, Hamid Bolouri ERATO Kitano Systems Biology Project California Institute.
COM vs. CORBA Computer Science at Azusa Pacific University September 19, 2015 Azusa Pacific University, Azusa, CA 91702, Tel: (800) Department.
An Introduction to Software Architecture
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 4 Other Topics RPC & Middleware.
1 Chapter 38 RPC and Middleware. 2 Middleware  Tools to help programmers  Makes client-server programming  Easier  Faster  Makes resulting software.
CS 390- Unix Programming Environment CS 390 Unix Programming Environment Topics to be covered: Distributed Computing Fundamentals.
Lecture 15 Introduction to Web Services Web Service Applications.
Ch 1. A Python Q&A Session Spring Why do people use Python? Software quality Developer productivity Program portability Support libraries Component.
Chapter 7 System models.
1 Cisco Unified Application Environment Developers Conference 2008© 2008 Cisco Systems, Inc. All rights reserved.Cisco Public Introduction to Etch Scott.
Virtual Cell and CellML The Virtual Cell Group Center for Cell Analysis and Modeling University of Connecticut Health Center Farmington, CT – USA.
Abhishek Bachchan Vishal Patangia
By Garrett Kelly. 3 types or reasons for distributed applications Data Data used by the application is distributed Computation Computation is distributed.
The ERATO Systems Biology Workbench Hamid Bolouri ERATO Kitano Systems Biology Project California Institute of Technology & University of Hertfordshire,
RMI remote method invocation. Traditional network programming The client program sends data to the server in some intermediary format and the server has.
RMI Remote Method Invocation Distributed Object-based System and RPC Together 2-Jun-16.
©Kabira Technologies Inc, 2001 May 7-9, 2001 Westward Look Resort Tucson, Arizona SMUG 2001 Execution in UML.
The ERATO Systems Biology Workbench: Enabling Interaction and Exchange Between Tools for Computational Biology Michael Hucka, Andrew Finney, Herbert Sauro,
CORBA Common Object Request Broker Architecture. Basic Architecture A distributed objects architecture. Logically, an object client makes method calls.
Java Programming: Advanced Topics 1 Networking Programming Chapter 11.
Herbert Sauro, Michael Hucka, Andrew Finney,Hamid Bolouri Principal Investigators: John Doyle, Hiroaki Kitano JST/ERATO Kitano Systems Biology Project.
S imple O bject A ccess P rotocol Karthikeyan Chandrasekaran & Nandakumar Padmanabhan.
Core Java Introduction Byju Veedu Ness Technologies httpdownload.oracle.com/javase/tutorial/getStarted/intro/definition.html.
SOAP-based Web Services Telerik Software Academy Software Quality Assurance.
S O A P ‘the protocol formerly known as Simple Object Access Protocol’ Team Pluto Bonnie, Brandon, George, Hojun.
Comanche A GUI management tool for Apache Daniel López Ridruejo
1 Chapter 38 RPC and Middleware. 2 Middleware  Tools to help programmers  Makes client-server programming  Easier  Faster  Makes resulting software.
Overview of the Systems Biology Workbench Michael Hucka, Andrew Finney, Herbert Sauro, Hamid Bolouri ERATO Kitano Systems Biology Project California Institute.
Intro to Web Services Dr. John P. Abraham UTPA. What are Web Services? Applications execute across multiple computers on a network.  The machine on which.
1. 2 Purpose of This Presentation ◆ To explain how spacecraft can be virtualized by using a standard modeling method; ◆ To introduce the basic concept.
.NET Mobile Application Development XML Web Services.
1 Distributed Programming low level: sending data among distributed computations higher level: supporting invocations among distributed computations network.
Lesson 1 1 LESSON 1 l Background information l Introduction to Java Introduction and a Taste of Java.
Michael Hucka1 The Modeler’s Workspace Current Design Plans and Status Current project members: Michael Hucka Kavita Shankar Sara Emardson David Beeman.
CORBA Antonio Vasquez, John Shelton, Nidia, Ruben.
Java Distributed Computing
The ERATO Systems Biology Workbench
WEB SERVICES.
CORBA Alegria Baquero.
CORBA Alegria Baquero.
Presentation transcript:

The ERATO Systems Biology Workbench Project: A Simplified Framework for Application Intercommunication Michael Hucka, Andrew Finney, Herbert Sauro, Hamid Bolouri ERATO Kitano Systems Biology Project California Institute of Technology, Pasadena, CA, USA Principal Investigators: John Doyle, Hiroaki Kitano Collaborators: Adam Arkin (BioSpice), Dennis Bray (StochSim), Igor Goryanin (DBsolve), Andreas Kremling (ProMoT/DIVA), Les Loew (Virtual Cell), Eric Mjolsness (Cellerator), Pedro Mendes (Gepasi/Copasi), Masaru Tomita (E-CELL)

2 Motivations Observation: proliferation of software tools Researchers are likely to continue using multiple packages for the foreseeable future Problems with using multiple tools: –Simulations & results often cannot be shared or re-used –Duplication of software development effort No single tool is likely to do so in the near future – Range of capabilities needed is large – New techniques (  new tools) evolve all the time No single package answers all needs – Different packages have different niche strengths – Strengths are often complementary

3 Project Goals & Approach Develop software & standards that –Enable sharing of modeling & analysis software –Enable sharing of models Goal: make it easier to share tools than to reimplement Two-pronged approach –Develop a common model exchange language SBML: Systems Biology Markup Language –Develop an environment that enables tools to interact SBW: Systems Biology Workbench

4 Systems Biology Markup Language (SBML) Domain: biochemical network models XML with components that reflect the natural conceptual constructs used by modelers in the domain Reaction networks described by list of components: –Beginning of model definition »List of unit definitions (optional) »List of compartments »List of species »List of parameters (optional) »List of rules (optional) »List of reactions –End of model definition

5 Example S1S1 X2X2 X1X1 K 1 · X 0 k 2 · S 1 k 3 · S 1 X0X0

6 Example (cont.) <specie name="X0" compartment="c1" boundaryCondition="true" initialAmount="1"/> <specie name="S1" compartment="c1" boundaryCondition="false" initialAmount="0"/> <specie name="X1" compartment="c1" boundaryCondition="true" initialAmount="0"/> <specie name="X2" compartment="c1" boundaryCondition="true" initialAmount="0.23"/>

7 Example (cont.) <specie name="X0" compartment="c1" boundaryCondition="true" initialAmount="1"/> <specie name="S1" compartment="c1" boundaryCondition="false" initialAmount="0"/> <specie name="X1" compartment="c1" boundaryCondition="true" initialAmount="0"/> <specie name="X2" compartment="c1" boundaryCondition="true" initialAmount="0.23"/>

8 Example (cont.) <specie name="X0" compartment="c1" boundaryCondition="true" initialAmount="1"/> <specie name="S1" compartment="c1" boundaryCondition="false" initialAmount="0"/> <specie name="X1" compartment="c1" boundaryCondition="true" initialAmount="0"/> <specie name="X2" compartment="c1" boundaryCondition="true" initialAmount="0.23"/>

9 Example (cont.)...

10 Some Points about SBML Users do not write in XML — software tools do! SBML is being defined incrementally –SBML Level 1 covers non-spatial biochemical models Kept simple for maximal compatibility –SBML Level 2 will extend Level 1 with more facilities Defined in abstract form (UML) + textual descriptions –Used to define XML encoding + XML Schema Level 2 Level 3? Level 1 E.g.: Composition Geometry Arrays … others

11 Related Efforts Similar in purpose to CellML –CellML uses MathML, FieldML, etc. SBML is simpler, easier for software developers to use Both SBML and CellML teams are working together –Striving to keep translatability between SBML and CellML

12 Systems Biology Workbench (SBW) Simple framework for enabling application interaction –Free, open-source (LGPL) –Portable to popular platforms and languages –Small, simple, understandable SBW Visual Editor Stochastic Simulator ODE-based Simulator Script Interpreter Database Interface

13 SBW from the User’s Perspective

14 SBW from the User’s Perspective SBW is almost invisible from the user’s perspective Interaction & sequence is under user’s control – Each application takes center stage in turn SBW is never in the forefront – Minimal disruption of normal tool interfaces SBW has no interface of its own

15 From the Programmer’s Perspective Simple, lightweight, message-passing architecture –Cross-platform compatible & language-neutral –Remote procedure call semantics But can do message-passing semantics too Uses well-known, proven technologies –Communications via message-passing over plain sockets –Modular, distributed, broker-based architecture

16 SBW Design API provides two styles: –"Low-level": fundamental call/send operations –"High-level": object-oriented interface layered on top Native data types supported in messages: –Byte Boolean String Integer Double –Array (homogeneous) List (heterogeneous) –You can send XML, but are not limited to XML –You can send arbitrary binary data, or structured data

17 Features of SBW Modules are separately-compiled executables –A module defines services which have methods –SBW native-language libraries provide APIs C, C++, Java, Delphi, Python available now … but can be implemented for any language –APIs hide protocol, wire transfer format, etc. Programmer usually doesn’t care about this level SBW Broker acts as coordinator –Remembers services & modules that implement them –Provides directory –Starts modules on demand Broker itself is started automatically –Notifies modules of events (startup, shutdown, etc.)

18 Registry records information about modules –Module name –How to start module –What services the module provides –The categorization of those services The SBW Broker’s Registry Service Categories Services (Interfaces) (Interface Hierarchy) Hierarchy of service categories

19 Example of Service Categories Simulation void loadModel(string SBML) void setStartTime(double time) void setEndTime(double time) void run() ServiceMethods ODESimulation void setIntegrator(int method) void setNumPoints(int num) +

20 Service Categories Group Applications Clients can be written to interact with classes of modules in a generic way User menus can be grouped by categories Need help from community to define common categories of interfaces interface ODESimulation { void loadModel(string SBML) void setStartTime(double time) void setEndTime(double time) void run() void setIntegrator(int method) void setNumPoints(int num) } (Java)

21 Java Code Example: Implementing a Module package math; import java.lang.Math; class Trig { public double sin(double x) { return Math.sin(x); } public double cos(double x) { return Math.cos(x); } (Note absense of any SBW-specific code) Suppose you have an existing package:

22 Java Code Example: Implementing a Module package math; import edu.caltech.sbw; class TrigApplication { public static void main(String[] args) { try { ModuleImpl moduleImp = new ModuleImpl(“Math"); moduleImp.addService("Trig", “trig functions", “Math", Trig.class); moduleImp.run(args); } catch (SBWException e) { e.handleWithException(); }

23 Java Code Example: Implementing a Module package math; import edu.caltech.sbw; class TrigApplication { public static void main(String[] args) { try { ModuleImpl moduleImp = new ModuleImpl(“Math"); moduleImp.addService("Trig", “trig functions", “Math", Trig.class); moduleImp.run(args); } catch (SBWException e) { e.handleWithException(); } Name for human display Name of module

24 Java Code Example: Implementing a Module package math; import edu.caltech.sbw; class TrigApplication { public static void main(String[] args) { try { ModuleImpl moduleImp = new ModuleImpl(“Math"); moduleImp.addService("Trig", “trig functions", “Math", Trig.class); moduleImp.run(args); } catch (SBWException e) { e.handleWithException(); } Service name Name for human display Service category Class for implementation

25 Java Code Example: Implementing a Module package math; import edu.caltech.sbw; class TrigApplication { public static void main(String[] args) { try { ModuleImpl moduleImp = new ModuleImpl(“Math"); moduleImp.addService("Trig", “trig functions", “Math", Trig.class); moduleImp.run(args); } catch (SBWException e) { e.handleWithException(); }

26 Java Code Example: Calling a Known Module interface Trig { double sin(double x) throws SBWException; double cos(double x) throws SBWException; }... try { Module module = SBW.getModuleInstance(“math"); Service service = module.findServiceByName("Trig"); Trig trig = (Trig)service.getServiceObject(Trig.class); double result = trig.sin(0.5);... } catch (SBWException e) { e.handleWithDialog(); }

27 Java Code Example: Calling a Known Module interface Trig { double sin(double x) throws SBWException; double cos(double x) throws SBWException; }... try { Module module = SBW.getModuleInstance(“math"); Service service = module.findServiceByName("Trig"); Trig trig = (Trig)service.getServiceObject(Trig.class); double result = trig.sin(0.5);... } catch (SBWException e) { e.handleWithDialog(); }

28 Java Code Example: Calling a Known Module interface Trig { double sin(double x) throws SBWException; double cos(double x) throws SBWException; }... try { Module module = SBW.getModuleInstance(“math"); Service service = module.findServiceByName("Trig"); Trig trig = (Trig)service.getServiceObject(Trig.class); double result = trig.sin(0.5);... } catch (SBWException e) { e.handleWithDialog(); }

29 Java Code Example: Calling a Known Module interface Trig { double sin(double x) throws SBWException; double cos(double x) throws SBWException; }... try { Module module = SBW.getModuleInstance(“math"); Service service = module.findServiceByName("Trig"); Trig trig = (Trig)service.getServiceObject(Trig.class); double result = trig.sin(0.5);... } catch (SBWException e) { e.handleWithDialog(); }

30 Java Code Example: Calling a Known Module interface Trig { double sin(double x) throws SBWException; double cos(double x) throws SBWException; }... try { Module module = SBW.getModuleInstance(“math"); Service service = module.findServiceByName("Trig"); Trig trig = (Trig)service.getServiceObject(Trig.class); double result = trig.sin(0.5);... } catch (SBWException e) { e.handleWithDialog(); }

31 Java Code Example: Calling a Known Module interface Trig { double sin(double x) throws SBWException; double cos(double x) throws SBWException; }... try { Module module = SBW.getModuleInstance(“math"); Service service = module.findServiceByName("Trig"); Trig trig = (Trig)service.getServiceObject(Trig.class); double result = trig.sin(0.5);... } catch (SBWException e) { e.handleWithDialog(); }

32 Why? Why not use CORBA as the underlying mechanism? –Complexity, size, compatibility –Could not find fully-compliant open-source CORBA ORB that supports all required programming languages  Would have to deal with multiple ORBs –SBW scheme does not require a separately compiled IDL –But: want to have CORBA gateway Why not use SOAP or XML-RPC? –Performance, data type issues, protocol issues –But: want to have SOAP interface Why not Java RMI? –Java-specific Why not COM? –Microsoft-specific, low portability

33 SBW Status & Future Beta release : –Java, C, C++, Delphi, Python libraries –Windows 2000 & Linux –Developer’s manuals & tutorials, examples –Modules: SBML Network Object Model Optimization module MATLAB model generator Stochastic simulator Plotting module Jarnac ODE simulator JDesigner visual editor Spring 2002: production release 1.0 –Perl and (hopefully) C# libraries –Secure distributed operation –CORBA gateway