[Bioperl-l] bioperl: cannot run emboss programs using bioperlon windows

Rohit Ghai Rohit.Ghai at mikrobio.med.uni-giessen.de
Sat Nov 3 10:07:52 EDT 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;










Chris Fields wrote:
> I did a little investigating using my old PC and was able to get 
> fuzznuc to run using BioPerl and EMBOSS v5.  I had to jump through a 
> hoop or two but I managed to get it working.
>
> First, realize that EMBOSSWin is NOT the latest EMBOSS for Windows.  
> You need to remove EMBOSSWin and install the one I linked to 
> previously (this is an actual EMBOSS beta release).  It's possible 
> older EMBOSSWin can be configured, but I don't plan on checking it out 
> myself.
>
> Next, you need to ensure the binaries are in your PATH env. variable 
> (test by running 'wossname' on the command line), then set EMBOSS_DATA 
> to point at the EMBOSS data directory using a UNIX-like path (i.e. 
> 'C:/mEMBOSS/data'); regular Win32 paths didn't work for me and WinXP 
> recognizes the UNIX'y form as a valid path.  If you don't know how to 
> set env. variables go here:
>
> http://vlaurie.com/computers2/Articles/environment.htm
>
> Once that is set up you should be able to run the script using the 
> latest (greatest?) EMBOSS.
>
> chris
>
> On Nov 1, 2007, at 1:41 PM, Rohit Ghai wrote:
>
>> Hi Jason
>>
>> I tried this as well. This also gives the same error message.
>>
>> -Rohit
>>
>> Jason Stajich wrote:
>>> You could try this - can't test it though so not sure.
>>> my $fuzznuc = $f->program('fuzznuc');
>>> $fuzznuc->executable('C:\EMBOSSwin\fuzznuc');
>>>
>>> -jason
>>> On Nov 1, 2007, at 2:06 PM, Rohit Ghai wrote:
>>>
>>>>
>>>>
>>>> Thanks for all the suggestions... but I unfortunately still cannot run
>>>> emboss. I am running the latest version of embosswin  
>>>> (2.10.0-Win-0.8),
>>>> and the
>>>> path is set correctly. I printed $ENV{$PATH} and this contains
>>>> C:\EMBOSSwin which is the correct location.
>>>> I also tried setting the path directly but I'm not sure how to do 
>>>> this,
>>>> so I tried this...
>>>>
>>>> my $fuzznuc = $f->program('C:\\EMBOSSwin\\fuzznuc');
>>>>
>>>> this also did not work.
>>>>
>>>> Also tried printing...
>>>> $fuzznuc->executable()
>>>>
>>>> gave the following error again
>>>> -------------------- WARNING ---------------------
>>>> MSG: Application [C:\EMBOSSwin\fuzznuc] is not available!
>>>> ---------------------------------------------------
>>>>
>>>> Any more ideas ?
>>>>
>>>> thanks !
>>>> Rohit
>>>>
>>>>
>>>> here's the code...
>>>>
>>>> use strict;
>>>> use Bio::Factory::EMBOSS;
>>>> use Data::Dumper;
>>>>
>>>> #
>>>> # print "PATH=$ENV{PATH}\n";
>>>> # path contains C:\EMBOSSwin which is the correct location
>>>> # embossversion is 2.10.0-Win-0.8
>>>>
>>>>  my $f = Bio::Factory::EMBOSS->new();
>>>>  # get an EMBOSS application  object from the factory
>>>>  print Dumper ($f);
>>>>  my $fuzznuc = $f->program('C:\\EMBOSSwin\\fuzznuc'); #tried 
>>>> fuzznuc.exe
>>>> as well,
>>>>  print Dump ($fuzznuc);
>>>>
>>>>  #dump of fuzznuc
>>>>  #$VAR1 = bless( {
>>>>  #                '_programgroup' => {},
>>>>  #                '_programs' => {},
>>>>  #                '_groups' => {}
>>>>  #              }, 'Bio::Factory::EMBOSS' );
>>>>
>>>>  #print "executing -- >", $fuzznuc->executable, "\n" ; # doesn't work
>>>>
>>>>  my $infile = "temp.fasta";
>>>>  my $motif  = "ATGTCGATC";
>>>>  my $outfile = "test.out";
>>>>
>>>>
>>>>  $fuzznuc->run(
>>>>                   { -sequence  => $infile,
>>>>                     -pattern   => $motif,
>>>>                     -outfile   => $outfile
>>>>               });
>>>>
>>>> Here's the error again....
>>>>
>>>> #-------------------- WARNING ---------------------
>>>> #MSG: Application [C:\EMBOSSwin\fuzznuc] is not available!
>>>> #---------------------------------------------------
>>>>
>>>>
>>>>
>>>>
>>>> Jason Stajich wrote:
>>>>> Presumably the PATH is not getting set properly - you should play
>>>>> around printing the $ENV{PATH} variable in a perl script to see if
>>>>> actually contains the directory where the emboss programs are
>>>>> installed.  Bioperl can only guess so much as to where to find an
>>>>> application.  It is also possible that we aren't creating the proper
>>>>> path to the executable - you can print the executable path with
>>>>> print $fuzznuc->executable
>>>>> I believe unless it is throwing an error at the program() line.
>>>>>
>>>>> It looks like the code in the Factory object is a little fragile
>>>>> assuming that the programs HAVE to be in your $PATH.  I don't know if
>>>>> windows+perl is special in any way that it run things so I can't
>>>>> really tell if there is specific things you have to do here. You may
>>>>> have to run this through cygwin in case PATH and such are just not
>>>>> available properly to windowsPerl.
>>>>>
>>>>> -jason
>>>>> On Nov 1, 2007, at 5:45 AM, Rohit Ghai wrote:
>>>>>
>>>>>> Dear all,
>>>>>>
>>>>>> I have emboss installed on a windows machine. (Embosswin). I can run
>>>>>> this from the dos command line and the path is present. However,
>>>>>> when I
>>>>>> try to call
>>>>>> an emboss application from bioperl I get a "Application not found
>>>>>> error"
>>>>>>
>>>>>>
>>>>>>   my $f = Bio::Factory::EMBOSS->new();
>>>>>>   # get an EMBOSS application  object from the factory
>>>>>>   my $fuzznuc = $f->program('fuzznuc');
>>>>>>     $fuzznuc->run(
>>>>>>                   { -sequence  => $infile,
>>>>>>                         -pattern   => $motif,
>>>>>>                        -outfile   => $outfile
>>>>>>               });
>>>>>>  gives the following error
>>>>>>
>>>>>> -------------------- WARNING ---------------------
>>>>>> MSG: Application [fuzznuc] is not available!
>>>>>> ---------------------------------------------------
>>>>>> Can't call method "run" on an undefined value at searchPatterns.pl
>>>>>> line
>>>>>> 102.
>>>>>>
>>>>>> Can somebody help me fix this ?
>>>>>>
>>>>>> best regards
>>>>>> Rohit
>>>>>>
>>>>>> -- 
>>>>>>
>
>



More information about the Bioperl-l mailing list