[Bioperl-l] call for help and comments on module

Dan Kortschak dan.kortschak at adelaide.edu.au
Mon Dec 21 22:24:04 EST 2009


I've been working on a Bio::Tools::Run module to handle the bowtie rapid
alignment tool (and associated tools): Bio::Tools::Run::Bowtie (in
bioperl-run tree).

I have 90% of what I want included in the module and would like some
advice from more experienced bioperlers. Feedback on approach is also
welcomed (this is my first significant wrapper, and after a long gap
from writing module, so I am rusty). The module has ended up being
significantly more complicated than I had hoped.

There are a few issues I'm having, so I apologise for the list:

     1. Informal tests run correctly (outside the t/ tree and Test
        harness), but formal Test harness tests fail for reasons I
        cannot understand. (The module is still lacking a lot of tests,
        but since things were failing in the harness I have placed them
        as a lower priority and have been working to my micro-script
        tests - yes, bad form.
     2. I am having a big problem with IPC::Run for one of the
        executables (the module can call 5 different excutables for 7
        commands), bowtie-maptool (module command 'map'). All the other
        commands tested (this excludes bowtie-maqconvert [convert
        command]) work fine, but maptool fails with an illegal seek -
        presumably due to the redirection handling? I have no idea how
        to resolve this, so help would be greatly appreciated (a small
        script that demonstrates the use that results in the failure is

There will be provision for returning a Bio::Assembly::IO object through
samtools in the finished module, but currently the
Bio::Assembly::IO::sam builder doesn't like what bowtie can provide.

Thanks for any help.


use strict;
use warnings;

use Bio::Tools::Run::Bowtie;

# These files are in the bioperl-run t/data/ tree
my $rdq = '/usr/local/src/bioperl-run/t/data/bowtie/reads/e_coli_1000.fq';
my $refseq = '/usr/local/src/bioperl-run/t/data/bowtie/indexes/e_coli';

my $bowtiefac = Bio::Tools::Run::Bowtie->new(
	-command             => 'single',
	-max_seed_mismatches => 2,
	-seed_length         => 28,
	-max_qual_mismatch   => 70,
	-sam_format          => 0

my $align = $bowtiefac->run($rdq,$refseq); # this runs fine

my $bowtiemap = Bio::Tools::Run::Bowtie->new(
	-command             => 'map'

my $map = $bowtiemap->run($align); # throws Illegal seek

print "$map\n";

open (IN,$map);
	my $lines =(my @lines)= <IN>;
	print @lines;
	print "\n\n$lines\n";
close IN;

More information about the Bioperl-l mailing list