SigPath System.


edu.mssm.crover.cli Provides for the parsing of parameters for Command Line Interface tools.
org.sigpath.action Controller classes for the Struts model-view-controller (MVC) pattern.
org.sigpath.action.biowizard Controller classes for BioWizard.
org.sigpath.action.edit Controller classes for Modifying SigPath Entities.
org.sigpath.action.model Action classes used to export models. Controller classes for Review Process.
org.sigpath.adapter Adapter classes for interfacing with the DataModel package.
org.sigpath.admin SigPath Administrator GUI Tool.
org.sigpath.bioimport Imports Background Biological Data into the SigPath System.
org.sigpath.bioimport.geneways Classes used to import interactions in the SBML Geneways format.
org.sigpath.bioimport.sbml Classes used to SBML.
org.sigpath.bioimport.sbml.types Classes used to SBML.
org.sigpath.database Core Database Managers.
org.sigpath.datamodel Core Data Model for representing SigPath Entities.
org.sigpath.datamodel.keywords Core Data Model for representing SigPath keywords.
org.sigpath.datamodel.lset Core Data Model for Representing "Large Sets of Objects".
org.sigpath.datamodel.models Core Data Model for representing SigPath models.
org.sigpath.datamodel.modifications Core Data Model for representing Modified SigPath Entities.
org.sigpath.datamodel.naming Offers a data structure to bind various persistent objects to a name. Core Data Model for representing Review Process Items.
org.sigpath.form Web Form Beans for submitting user data.
org.sigpath.form.edit Web Form Beans for editing SigPath Entities. Web Form Beans for submitting review process data.
org.sigpath.fulltext Classes that support fast queries in full text.
org.sigpath.model Model classes for the model-view-controller pattern.
org.sigpath.reference Classes for accesssing External Reference Data
org.sigpath.taglib Custom JSP tag classes.
org.sigpath.tapestry Base package for web pages implemented using Tapestry.
org.sigpath.tapestry.components Shared Tapestry components used within SigPath.
org.sigpath.tapestry.model Tapestry pages for manipulating models within SigPath.
org.sigpath.tapestry.util General utility classes for use with Tapestry pages.
org.sigpath.task Database Tasks.
org.sigpath.task.edit Edit Tasks.
org.sigpath.task.navigator.export Review Process Tasks.
org.sigpath.task.xml XML Import/Export Tasks.
org.sigpath.user SigPath User Classes
org.sigpath.util Core Utility Classes.


SigPath System.

SigPath Architecture in a Nutshell

The SigPath system is architected as a traditional three-tier application. A bird's eye view of the SigPath architecture is provided in the figure below:

Most regular users will interact with SigPath via a web browser. Specifically, the web browser issues a request, which is received by the Apache Web Server. Apache then forwards the request onto the Apache Tomcat Servlet container. Once the request reaches Tomcat, most requests are processed by the following subcomponents (see figure above):

  1. The SigPathServlet receives all browser requests (HTTP GET and POST), and routes the request to the appropriate Action class. The Servlet and the Action class are part of the Struts Framework, and routing of requests is determined by the struts-config.xml file.
  2. The Action class processes the specific request. Within SigPath, all Action classes extend ActionRoot.
  3. The Task class interfaces with the FastObjects database. Within SigPath, all Task classes extend DBTask.
  4. The FastObjects database stores all persistent data.
  5. The presentation layer is handled by Java Server Pages (JSPs), and a small set of custom JSP Tags, specifically created for Sigpath.

Creating New Functionality

To create new SigPath functionality, it is best to divide the work between back end functionality and front end functionality. Back end functionality generally refers to all database interaction. Front end functionality generally refers to all browser request functionality and generation of HTML. In general, we have found it much easier to create back end functionality first, followed by front end functionality.

Creating New Back End Functionality

To create a new interface to the database, you simply create a new database task. Complete details are provided in the Database Task package. Once you have completed the task, it's a good idea to create a JUnit tester (details follow at the end of this document.)

Creating New Front End Functionality

To create new front end functionality, you need to:

Building SigPath

SigPath currently has two Ant build files: To build SigPath from scratch and verify that all unit tests are functioning properly, run: To deploy SigPath, perform the same steps above, and then run: Note: In order to deploy, you must set a TOMCAT_DEPLOY environment variable. For example, in Windows, my startup batch file contains the following line:
set TOMCAT_DEPLOY=C:\j2ee\Apache Tomcat 4.0\webapps\sigpath

Configuration Files

SigPath uses the following set of configuration files:


SigPath uses the open source Log4J API. You can use the Log4J package directly, but it is preferable to use it via the XDebug API. If you log via XDebug, the message is logged to two places: first, messages are logged to the XDebug live debugger, which can be displayed immediately within the web browser; second, messages are logged to the regular Log4J log file. To turn on XDebug from the SigPath home page, simply select the link for "Turn on Live Debugging."

When using XDebug, the first parameter must specify the current class. The second parameter specifies the log message. For example:

xdebug.logMsg(this, "Starting Action:  Create External Reference");
You can also specify color coded log messages. For example:
xdebug.logMsg(this, "Starting Action:  Create External Reference", "GREEN");
When you turn XDebug on, the bottom of the page will display the log messages. For example:

SigPath Tue Feb 11 16:00:08 EST 2003
Performance Stats
Total Time to Generate Page 0 ms
Class Name Message
org.sigpath.action.TurnXDebugOn_Off: Action is Global, Does Not Require Database Write Access --> Database Access Granted
org.sigpath.action.TurnXDebugOn_Off: Action Does Not Require Database Write Access --> Database Access Granted
org.sigpath.action.TurnXDebugOn_Off: Action is Not Secure --> Does not Require Authentication
org.sigpath.action.TurnXDebugOn_Off: Action is Not SecureAdmin --> Does not Require Authentication
org.sigpath.action.TurnXDebugOn_Off: Entering TurnXDebugOn_Off
org.sigpath.action.TurnXDebugOn_Off: Extracting HTTP Session Object
org.sigpath.action.TurnXDebugOn_Off: Session Created: Tue Feb 11 15:53:56 EST 2003
org.sigpath.action.TurnXDebugOn_Off: Session XDebug Flag currently set to: off
org.sigpath.action.TurnXDebugOn_Off: Changing Session XDebug Flag to: on
org.sigpath.action.TurnXDebugOn_Off: User Message: XDebug has now been turned on.

Unit Testing

SigPath uses the open source JUnit API for all unit testing. In general, every new task should have its own JUnit tester. Once you have created a new JUnit class, make sure to add it to the MasterTest class. Most JUnit tests rely on the existence of sample SigPath data. This sample data file (data/bootstrap_data.xml) consists of sample proteins, small molecules, reactions, etc. To create a clean database and load the sample data, run the ant "boot" target. To run all JUnit tests, you can then run the ant "test" target. For example:
C:\icb\sigpath\build>ant boot
[... ant output here....]

C:\icb\sigpath\build>ant test
Buildfile: C:\icb\sigpath\build\build.xml

     [java] .........................................
     [java] ..
     [java] Time: 35.911
     [java] OK (43 tests)



Copyright © 2002-2006 Institute for Computational Biomedicine, All Rights Reserved.