Experimental Prototype Herbert Sauro, Michael Hucka, Andrew Finney,Hamid Bolouri

advertisement
Intro
Experimental Prototype
Herbert Sauro, Michael Hucka,
Andrew Finney,Hamid Bolouri
Principal Investigators: John Doyle, Hiroaki Kitano
JST/ERATO Kitano Systems Biology Project
California Institute of Technology
Pasadena, California, USA
http://www.cds.caltech.edu/erato
This talk will illustrate a prototype version
of SBW together with a variety of SBW
compliant modules.
Prototype
Features Omitted from Prototype
Implementation:
1. No Auto-Startup of Modules
2. No Registry Facilities
3. No Cross-Internet Hooks
SBW
Broker
SBW Interface
Main
Application
SBW Interface
Overview
Main
Application
SBW Interface
Next Slide
Listening
Socket
Dispatcher
SBW Broker
SBW/Module Interface
Levels of Operation
Raw Messaging Logic
Low Level API
Message
Crackers
Low Level API +
High Level OOP API
Call/Send Messages
1.
2.
3.
4.
5.
6.
7.
Destination Handle
Message Type (Call, Send, etc)
Source Handle
Service Id
Method Id
UID – Unique identifier
Payload
UID is used to match a reply to the original sender
Description of the Prototype
SBW Broker
• Less than 1500 lines of Delphi source code
• 450K exe footprint, could be made much smaller
• Thread use is optimized via a Thread pool
• Runs in the background, accessible via the Windows Tool-tray
• Uses no detectable CPU resources when Idle
• Can be run under Win32 or Linux OS
Module Bindings
•
•
•
•
Less than 2000 lines of source code
Implemented as a Delphi Component (cf. Java
Bean) for ease of use.
These bindings are compatible with C++ Builder as
well as Delphi.
Can be used to implement Modules for Windows or
Linux
Delphi Prototype Code
(Service Provider)
Implementing a Simple Math Service Provider
function TMathClass.MySin (Data : PDataStream) : TComType;
begin
result := PackComType (sin (ExtractDouble (Data)));
end;
TComType is a variant record which can hold any of the allowable SBW data types
PDataStream is a pointer to a byte array containing the message payload
ExtractDouble is a helper routine to assist in extracting data items from the byte array
PackComType is a routine to pack a data type into the TComType variant
sbw.RegisterService ('trig');
sbw.RegisterMethod ('trig', 'sin', MySin, dtDouble, [dtDouble],
'Compute sin of radian angle');
Delphi Prototype Code
(Service User)
Implementing a Simple Math Service User
MySin := sbw.GetMethodObj ('TrigModule', ‘trig’, 'sin');
Answer := UnPackDouble (MySin.Call ([3.1415])));
x.Call() returns data as a TComType, therefore it is necessary to use
UnPackDouble to unpack the double value.
x.Call() takes a variable number of arguments of any allowable SBW
data type, eg MyMeth.Call ([1.2, True, ‘Hello’])
Prototype Test Modules
Non-visual:
•
•
Trig - Math Service provider
NOM – Network Object Model (SBML Module)
Visual:
•
•
•
•
•
Graph2D - Simple 2D Display
Inspector - Module inspector
JDesigner - Visual designer
Jarnac - Simulator
Gillespsie – Simulator (Baltazar Aguda)
Script Based Modules
Object Construction
Scripting Modules can automatically wrap up a
message interface into a scripting object.
Request Interface
Signature
Interface signature
Object
Constructor
User:
>>Obj.doit
Interface
Object
SBW
Message
Constructor
NOM
(Network Object Model)
Deconstructor Interface {
Constructor Interface
{
GetSBML
NOM
LoadSBML
Conclusion
From our own experience with using SBW, the benefits of
SBW in order of preference include:
1.
Ease of programming
2.
Language independence
3.
Small, Network friendly, Extensible
Demonstrations (Private Slide)
1. Startup Broker, show popup menu
2. Basic Access to a simple service provider
3. Example illustrating exception handling (ln(-2))
4. Demonstrate Inspector Tool
5. Demonstrate performance using Graph2D
6. Demonstrate JDesigner and Inspector tool
7. Demonstrate Jarnac proxy facility using JDesigner
8. Introduce NOM
9. Demonstrate JDesigner, Jarnac, NOM, Gillespise
working together (Close J/JD before carrying out
simulation)
Download