Title: Software Development for Systems Biology
1Software Development for Systems Biology
- Herbert M Sauro
- Frank Bergmann
- University of Washington
- Bioengineering
- Seattle
2BioSPICE/SBW Systems Biology Workbench
SBW is a lightweight framework that allows
different applications written in different
languages and on different platforms to
communicate.
Basic Simulation Capability
Model Editors
Broker
SBML Support
?
3Message Passing Architecture
4Programmers Perspective
- Small application programming interface (API)
- Minimize the amount of work necessary to
implement - - Libraries implement inter-program
communications - - A registry of services for applications to
query - - XML-based model representation (SBML)
- Modular, distributed, broker-based architecture
Uses a simple lightweight binary TCP/IP
communication protocal
5Programmers Perspective
- Language Independent
- C/C, Java, Delphi, .NET (C etc.),
Matlab, Perl, Python. - Broker is Platform Independent
- Windows, Linux and Mac OSX
6Message Structure
- - Messages are passed as binary streams via
TCP/IP - - Blocking and non-blocking calls
- - Exception handling built-in
Supported types in the payload Byte, Boolean,
int, double, string, complex, arrays,
lists Language Independent C/C, Java, Delphi,
.NET (C etc.), Matlab, Perl, Python.
7Resource Structure
mathModule
Module Level
log
trig
Service Level
log10
sin
ln
cos
Method Level
exp
tan
Demo Inspector
8Exposing methods
public class sbwInterface Help("Returns
the Sine of a value") public double Sin(double
value) return Math.Sin (value)
9Using Other Modules
Module Lib File
10Example - Matlab
Building Matlab Services
function y myAdd (a, b) SBW module
SBWMath SBW service myService SBW
method myAdd service myService sigdouble
myAdd(double,double) y a b
Calling SBW from Matlab CLI
sbwconnect getSBML sbwGetMethod (JDesigner,
model, string getSBML()) sbwStr sbwCall
(getSBML)
11Web Services from SBW/BioSPICE
A Web Application is provided that allows every
SBW Module to be wrapped up in a Web Service
Web Service Generator web page available
at http//134.173.97.95/sbwwebservicecreatorinterf
ace/webform1.aspx
12Web Interface Example
http//134.173.97.95/simulation/webform1.aspx
13Categories
Dynamically locate services in a given category
- Categories permit SBW applications to recognize
standard interfaces - in other SBW applications. We currently have
three defined categories - Translation
- Analysis
- Simulation
14Categories
Translation
SBW applications that define the translation
category are capable of translating SBML into
some other format (eg Matlab, XPP) and
returning the translation to the caller.
Analysis
SBW applications that define the analysis
category are capable of accepting an SBML model
and by implication are capable of doing
something with the model.
Simulation
SBW applications that define the simulation
category mean they support the simulation API.
15User Experience
Categories permit users to move seamlessly from
one application to another taking with them the
model under study
16Examples Model Editors
JDesigner
cellDesigner
http//www.sys-bio.org/
http//celldesigner.org/
17Examples SBML
libSBML
http//www.sbml.org
18Examples Simulators
Oscill8
Klaus Meier
Java (Linux,Win.Mac), Good Gillespie,Langevin, ODE
C (Linux,Win,Mac), ODEs, Events, Emery Conrad/
Stuttgart
Gillespie.NET
Jarnac
c (Linux, Win, Mac),
Delphi (Win), ODE, Well tested
www.sys-bio.org
www.sys-bio.org
roadRunner
Dizzy
Java (Linux, Win, Mac), stochastic
C (Linux,Win.Mac), designed for SBML compliance
(local and global) www,sys-bio.org
www.isb.org/
19Specialist Modules Bifurcation Analysis Tool
Implements the analysis category. The tool is
used to discover whether a particular model has
the potential to display oscillatory or
bistability.
20Specialist ModulesEmery Conrads Oscill8
Interface
Bifurcation tool begin developed here at VT can
interface to SBW. Implements the Analysis
category so that models can be accessed from SBW.
21Specialist Modules Structural Analysis Tool
Implements the analysis category.
22Specialist Modules Frequency Analysis Tool
Implements the Analysis category and permits
the frequency response of a model to be
determined.
23Specialist Modules Stochastic Simulators
Implements the Analysis category and permits
models to be simulated using a stochastic
solver. Support additional analysis such as PDF
generation, Power Spectra, autocorrelation, popula
tion metrics
24Generic Simulation Interface
Any simulator that implements the Sim API (even
level 1) will automatically be able to use the
interface via this generic simulation interface.
Those API methods that are not supported are
disabled in the interface.
25Non-GUI Modules
- LAPACK
- CVODE
- NLEQ
- Structural Analysis Algorithms
- Metabolic Control Analysis including Frequency
Analysis - libSBML
- Translators
- Autolayout
- Basic Optimizers of time series data to models
26Auto layout of SBML models
We use this tool to take raw SBML and generate
SBML containing the layout standard that is being
developed by the SBML community. Uses a spring
and mass model to determine layout. Has specific
rules for determining Bezier orientation and
Includes a gravity field to main cohesion of
disconnected sub-graphs. Anastasia Deckard
Download from http//public.kgi.edu/fbergman
273D Visualization of Simulation Runs
Based on OpenGL, currently an installer is
available for Windows but the source is portable
to the Mac and Linux. Requires a decent graphics
card for maximum gratification! (
http//public.kgi.edu/fbergman )
283D Visualization of Simulation Runs
Based on OpenGL, currently an installer is
available for Windows but the source is portable
to the Mac and Linux. Requires a decent graphics
card for maximum gratification!
(http//public.kgi.edu/fbergman )
29Acknowledgments
Frank Bergmann (SBW) Ravi Rao (Structural
Analysis) Vijay Chickarmane (Bif Discovery
Tool) Sri Paladugu (libSBML intregration) Mike
Hucka and Ben Bornstein (libSBML) Alan Hindmarsh
(CVODE) Nowak and Weimann (NLEQ) LAPACK
(NSF/DOE) Availability
www.sys-bio.org http//public.kgi.edu/fbergman
GTL
30Layout Tool
31Exposing methods
// create a new service sbwInterface oService
new sbwInterface() // create SBW
module ModuleImplementation oModule new
ModuleImplementation( "edu.kgi.trig", Tri
g Module", LowLevel.ModuleManagementType.Uniqu
eModule, "Provides Trig Functions") // add
the service to it oModule.addService( trig",
Trig Module", "plugin/math/trig", Provides
Trig Functions", ref oService)
oModule.run(args)