[Bioperl-l] Q: contributing a UniVec module to BioPerl

Tobias Thierer bioperl-l@computational-biology.net
Tue, 1 Oct 2002 11:00:24 +0200


Hi,

many of you probably know VecScreen:

http://www.ncbi.nlm.nih.gov/VecScreen/VecScreen.html

VecScreen is a specialised version of blastn that blasts a sequence 
against the UniVec vector database with special adjusted default 
parameters

    -q -5 -G 3 -E 3 -F "m D" -e 700 -Y 1.75e12 

It then classifies the hits into four categories: "none", "weak", 
"moderate", "strong" as described on:

http://www.ncbi.nlm.nih.gov/VecScreen/VecScreen_docs.html

The results are presented in a nice graphical manner.

Unfortunately, no offline (standalone) version of VecScreen is available. 
Therefore, using BioPerl, I've developed a small script that performs the 
VecScreen search, classifies the hits and merges the results.

The script is not very large and most people could probably have made it 
better, but there is no other script available (at least not to my 
knowledge). I would like to turn the relevant parts of my script into a 
Module and contribute it to BioPerl. Unfortunately, I am quite new to 
BioPerl (I started using it last week) and have very little knowledge on 
how to contribute a module. 

On http://www.bioperl.org/UserInfo/  I have not found any guidelines on 
how BioPerl classes should be built (wouldn't a style guide be very 
helpful?). I have looked at a couple of randomly chosen modules from the 
BioPerl source, and found quite different modules. For instance, some 
modules inherit from Bio::Root::Root via @ISA, some don't.

I should probably let my new module inherit from Bio::Tools::Run only, 
shouldn't I? I was also thinking that it would be nice to use Exporter for 
exporting only the crucial functions through @EXPORT, and some others 
through @EXPORT_OK, but I've found that no other BioPerl modules seem to 
utilize that functionality.

Currently my function gets a sequence and returns the sequence without the 
moderate and strong hits. I thought that the constructor of the module 
could already execute the blast call and then the module might provide a 
couple of functions for querying the result in different formats.

So, to put a long story short, I have two questions/problems:

  1. Are there any guidelines on from where a BioPerl module should 
     inherit, and what names it should export into the importing 
     namespace?
 
  2. I am a bit unsure about a number of other design decisions for the 
     module, probably because I'm rather new to BioPerl. Should I rather 
     ask the questions here on the list, or should I just go on and let 
     you have a look at a first version of the module, or should I RTFBS 
     (read the f*cking bioperl sources) and learn more myself, first?

Regards,

	Tobias