[Bioperl-l] bioperl and emboss on windows

Rohit Ghai Rohit.Ghai at mikrobio.med.uni-giessen.de
Mon Nov 5 06:36:16 EST 2007


Dear all, thanks for all the different inputs on this topic, I was able 
to run emboss applications on windows (vista), but with the following 
workaround.

Chris suggested to remove EMBOSSwin and get another version. This I did. 
Scott suggested setting all the variables within the program. This I 
also tried, but actually these were already available to the program so this was also 
not the problem. The following line...

my $fuzznuc = $f->program('fuzznuc')

doesn't return a Bio::Tools::Run::EMBOSSApplication object. but using 
Bio::Tools::Run::EMBOSSApplication directly seems to work. It doesn't 
have any path issues. What is also curious is that $f->version returns the 
correct version of emboss running (no path problems here), and it looks 
like it runs the command "embossversion -auto" to get this information. If it 
can get at this command, its a bit peculiar why it cannot get the other 
programs. Or am I missing something here ?


Please take a look at the code, I have commented within this...


-Rohit


use Bio::Factory::EMBOSS;
use Data::Dumper;
use Bio::Tools::Run::EMBOSSApplication;


my $infile = "test.fasta";
my $motif  = "AGGAGG";
my $outfile = "test.out";


     my $f = Bio::Factory::EMBOSS->new();
     # get an EMBOSS application  object from the factory
    print Dumper $f;  
   
    print "location=",$f->location,"\n";   #returns local
    print "version=", $f->version,"\n";    #  this returns the correct version 5.0 (uses embossversion -auto internally, and seems to know where it is)
    print "info=", $f->program_info('fuzznuc'),"\n"; #returns nothing
    print "list=",$f->_program_list,"\n";  #returns nothing
   
    #
    # however, my $fuzznuc = $f->program('fuzznuc'); or with path / or \\ or with exe suffix doesn't work
    # $fuzznuc->executable('C:/mEMBOSS/fuzznuc'); # doesnt work
    # the problem is that it does not return a Bio::Tools::Run::EMBOSSApplication object.
    #
    #
    #
    # however, creating a EMBOSSApplication object directly makes it possible to run the program
    #
    
    my $application = Bio::Tools::Run::EMBOSSApplication->new();
    $application->name('fuzznuc');   
    print Dumper $application;
    $application->run(
                   { -sequence  => $infile,
                     -pattern   => $motif,
                     -outfile   => $outfile                      
               });   
    print "Done\n";
   
    exit;



More information about the Bioperl-l mailing list