[Bioperl-l] RE: Integrating caBIOperl with BIOperl

Covitz, Peter (NIH/NCI) covitzp at mail.nih.gov
Tue Nov 2 15:13:51 EST 2004


I thought jump in and pick up this thread.  I understand and agree with your
point about needing a 'bridge' between caBIO classes and equivalent existing
bioperl classes.  Your suggestion on how to go about implementing such a
bridge was helpful, thanks.  

Beyond that, I had been thinking that it might be useful to contribute the
entire caBIOperl module to bioperl and make it part of the bioperl core
package.  caBIOperl is really just an object-oriented query interface to
caBIO data servers, so I naively thought it might fit nicely under
Bio::DB::Query, perhaps Bio::DB::Query::caBIO ??

Of course people can use caBIOperl without it being part of bioperl.
However, there are a some classes and subject areas in caBIO that are not in
bioperl, so we thought it might be a useful extension to bioperl itself.  In
the next major caBIOperl release (~March 2005) we are going to include a
full implementation of the MAGE-OM microarray data standard as part of the
caBIOperl API, so that might be among the subject areas of interest to the
bioperl community. 

I'd be interested to hear whether you and others think there might be value
in incorporating caBIOperl itself into bioperl, or if you'd rather just
consider incorporating the 'bridge' module.


Peter Covitz

-----Original Message-----
From: Ewan Birney [mailto:birney at ebi.ac.uk]
Sent: Tuesday, October 12, 2004 4:07 AM
To: Jiang, Shan (NIH/NCI)
Cc: bioperl-l at bioperl.org
Subject: Re: Integrating caBIOperl with BIOperl

On Mon, 11 Oct 2004, Jiang, Shan (NIH/NCI) wrote:

> Hi Ewan,
> I would like to introduce myself. I am a colleage of Gene Levinson at the
> National Cancer Institue in the US. I am the original developer of
> caBIOperl, which Gene presented at BOSC '04. I believe Gene talked to you
> quite extensively during the meeting as well. (Gene asked me to say hi!)
> Currently, I am undertaking the task of integrating caBIOperl with
> BIOperl.Gene indicated that you would be a great source to talk to. I am
> the process of learning BIOperl before deciding how to proceed. So I would
> much appreciate your help in learning BIOperl as well as looking into
> possible ways of integrating caBIOperl with BIOperl.

Great - I'm cc'ing this message to the main bioperl list to check I give
you the best advice!

> Let me start asking some questions to start the ball rolling.
> 1. Has similar kinds of integration work been done before? If so is there
> general recommended approach?

The recommendation is definitely to have an caBIOperl "bridge" to Bioperl
objects. The main ones you want to have are Bio::SeqI,
Bio::DB::RandomAccessI and Bio::AnnotationCollectionI and Bio::SeqFeatureI

The "I" means interface (a bit like Java)

In each case you would have wrapper classes that has-a caBIOPerl object
and is-a Bioperl object, for example, imagining the caBIOPerl sequence
object has methods "human_readable_name" and "sequence_as_string" (of
course, they might have something completely different...)

  package Bio::caBIOBridge::Seq;

  @ISA = qw( Bio::SeqI );


  # Bio::SeqI isa Bio::PrimarySeqI, and needs to implement
  # display_id. this should give back the human readable name
  sub display_id {
    my $obj = shift;

    # the caBIOPerl method is "human_readable_name"
    return $obj->{'_cabioperl_object'}->human_readable_name()

  # Bio::SeqI needs to implement seq
  sub seq {
    return $obj->{'_cabioperl_object'}->sequence_as_string()

etc etc

This is, BTW, something I am planning to do with Ensembl as - make an
Ensembl-Bioperl bridge.

> 2. Do you have a repository where people can just "donate" their code

I would suggest that the caBIO-Bioperl bridge was its own cvs module and
donated into CPAN. You could run the cvs module at Bioperl.org or do it in
your own shop - entirely up to you.

> 3. caBIOperl has its own object model, if the end vision is to integrate
> this model with BIOperl, how should I proceed?

see above

> 4. Can I get access to the CVS repository?

You shouldn't need access to the bioperl cvs repository to come up with
some working code - if you want to have the caBio-Bioperl bridge
repository hosted at bioperl.org that's feasible, but probably building
some proof-of-concept classes first off would be great.

A great first step would be if someone could write a script like:

use Bio::caBIOBridge::DBAccess;
use Bio::SeqIO;

# default to well known caBio server
$db = Bio::caBIOBridge::DBAccess->new();

$ca_wrapped_seq = $db->get_Seq_by_id('some_id');

# $ca_wrapped_seq is Bio::SeqI object but is actually a thin wrapper over
# caBIO objects

# Bio::SeqIO is a Bioperl object writer that works with Bio::SeqI
# compliant objects
$seqout = Bio::SeqIO->new( -format => 'EMBL');

# Here we see the bridge in action!

> I am not sure how familiar you are with caBIOperl. So if you have any
> question, please do not hesistate to ask me.
> Regards,
> Shan Jiang
> (Contractor)

More information about the Bioperl-l mailing list