[Biojava-l] BioJava <--> BSANE bridges

Thomas Down td2@sanger.ac.uk
Tue, 8 Jan 2002 10:36:54 +0000


Hi...

I've just checked in some code which provides both server
and client-side bridges between the BioJava sequence model
and BioCorba 0.3 (a.k.a. BSANE).  At the moment, the best
way to get hold of it is from CVS: check out the `biojava-bsane'
module.

The CORBA idl files were taken from the BioPython CVS
repository.  Are these the right ones to be using, or have
they been superceded by something else?

This is a new implementation which is significantly different
from the old (BioCorba 0.1) support code -- After looking at
the old code and the new interfaces, I decided it was probably
easier to start again.  I've taken the opportunity to write
thee serverbridge in the new style (Servant/POA).  This means
that it won't work with the builtin ORB in J2SE 1.2 or 1.3.
It does, however, work nicely in J2SE 1.4, and should also
work with most of the commercial ORBs.  So far, I've been testing
with J2SE 1.4, and I'd be interested to hear about experiences
with other ORBs.  The client-side code should work fine on
1.3.

It should build in the normal BioJava-ish way:

  - Copy over the dependancy .jar files.  With J2SE1.4, all you
    need it biojava.jar.  With other ORBs, you'll probably also
    need to copy a jar containing the org.omg.PortableServer package,
    and edit build.xml

  - Type `ant' to build biojava-bsane.jar

  - `ant javadocs' builds the API documentation.

  - If you've got a recent version of JUnit installed, try
    `ant runtests' to start the test suite.

There are the following known limitations:

  - BSANE iterators returned by some of the methods don't
    implement the reset() method.  I wasn't clear about the
    correct semantics for this.  All methods which return
    an iterator also return the first `block' of results as
    an array.  So the question is: does the reset method take
    you back to the iterator's original state (`least surprise'
    option), or right back to the start of the data set (seems
    potentially more useful).  I can't really see a sensible use
    case for this method -- can someone who's actually going to
    use it give an opinion on this?

  - NucleotideSequence isn't implemented.  Everything just gets
    returned as a BioSequence at the moment.

  - On the client side, custom alphabets aren't yet supported
    (but I plan to add these soon).  The serverbridge already
    exposes BioJava alphabets correctly as BSANE objects (where
    possible).

Other than these, it seems to work quite nicely.  There are
some (very) simple clients and servers in the demos/ directory.
You can do something like serving up an Ensembl database as
CORBA, then using one of the clients to dump features from a
region as GFF.

I'd be interested in doing some interoperability testing at
some point.  If anyone is curious, I can probably put some
test servers up to experiment (but I'll have to run them on
my home machine, so I don't want to put IORs out publically).

Hope people find this useful,

   Thomas.