Package Structure for OmniGene
$Date: 2002/11/26 21:25:07 $
$Revision: 1.2 $
The package structure for
medical and population genetics department will be changes to the following
structure as of October 15, 2002:
Top Level Directory
Omnigene2
Build.xml
LicenseFiles.txt
/languages
/build
/resources
/docs
/lib
The src directory will
contain the following subdirectories to accommodate different languages;
/languages/src
/java
/perl
/python
/csharp
/c
The /java directory shall
consist of the following structure:
/java
/edu
/mit
/wi
/omnigene
/omniview
The will be three sub
packages under omnigene:
/omnigene
/service
/framework
/util
The framework package
contains code that is modified in order to build services for a particular organization.
In our case we are building webservices for the Whitehead Institute. These
services shall import framework code to provide specific functionality
specified by the OmniGene teams customers: Lab heads, lab staff, or scientific
counterparts.
The framework module shall
consist of the following generic packages:
/framework
OmniGeneException.java
/request
/response
/dbsieve
/omnidas
/jaxb
/webservice
/bio
/analysis
Description of each package:
Request:
The request package
consists of classes that handle server side requests to the OmniGene middleware
system. They are responsible for routing requests to the appropriate EJB for
query.
Response:
This package consists
of modules that contain the response of the middleware after user query. They
are passed to the web service to inspect and produce SOAP responses.
DBSieve:
The DBSieve package
consists of modules to query a mutli-star schema. This module reads the fat
table of a relational database (currently Oracle) and then produced SQL to
query the attributed of this table dynamically.
OmniDas:
The omnidas package
contains generic code to call a DAS 1.0 server. Some of these objects are used
to form an OmniGeneResponse. These are typically segment objects.
Jaxb:
The
jaxb package contains application code that build objects from DTDs that are
being considered for standardization in the bioinformatics community. They are
no longer used in the middleware application architecture but, are used in the
client side for presentation and transformation.
Webservice:
The webservice
module consists of abstract classes that all other omnigene webservices extend
from. They provide convenience methods to generate SOAP messages and
attachments.
Bio:
The bio package
contains objects that represent biological objects that are easily serializable
into XML. In the short term this package represents objects needed by the
medical and population genetics department at the Whitehead Institute.
Eventually, these objects will be represented in DAML+OIL and instantiated from
these documents to produce biological objects.
Analysis:
This is a framework
that allow java to execute any analysis program written in any language. It
utilizes a relational database (postgresql) as a queuing system for jobs that
are sent to it. These jobs are managed through an Enterprise Java Bean layer
and supporting classes.
The analysis service
can be broken down into further sub packages such as;
/service
/analysis
/webservice
/ejb
/request
/response
The service package
contains code that extends the framework package to build applications specific
to your organization. The service structure is shown below:
/service
/analysis
/projped
/snp
/sso
Each service must follow
the template package structure as defined below:
/service
/module_name
/request
/response
/ejb
/webservice
Service specific
requests shall reside in the request directory. Typically a developer extends
from the request objects found in framework to produce these objects.
Service specific
responses (XML, cursors etc) will reside in the response package of its parent.
These classes typically extend from the response framework package.
Ejbs associated
with this service must be placed in the ejb package.
Webservice specific
code will be contained in the webservice directory of the service and will
extend the webservice classes found in the framework code listed above.
Analysis service:
The analysis package
is based off of the analysis framework to execute common bioinformatics tools
such as:
Blast
Blat
HaploType
analytics
Others
as needed
ProjPed Service:
This service
contains information about projects, groups within a project, membership to a
project, and entities (objects) that may be used in a project (SNP lists, gene lists etc.)
SNP Service:
The SNP Service is a
webservice which provides information about public and private polymorphism
data. This includes attributes such as: allele frequency, population information,
chromosomal position, coding/non-coding changes etc.
SSO:
SSO stands for
single sign on and allows users to authenticate against all web services that
are installed in you institution a single time only. This service acts as a faade over the webservices that are
registered with it.
Util:
The util package
contains code that is not specific to any module but can be used by all. It is
shared code and will be very closely monitored so as to not allow it to become
a dust bin.
Perl modules will reflect the same structure as the
java package structure which will allow developers to have a consistent naming
structure across modules. Developers will adhere to the following module naming
scheme:
/src
/perl
/EDU
/MIT
/WI
/OMNIGENE
/FRAMEWORK
/SERVICE
TBD