[Bioperl-l] I can't access clustalw from my cgi perl program...

Chris Fields cjfields at uiuc.edu
Wed May 21 21:49:15 UTC 2008


Bio::Tools::Run::Align::ClustalW is not in bioperl-live, it is in  
bioperl-run (separate distribution).  You'll need to install that as  
well (after bioperl-live is installed).

Use 'perldoc -l' to find the location for the module/script it finds  
in @INC (which is the one used by the system most of the time):

cjfields$ perldoc -l Bio::Root::Root
/Users/cjfields/bioperl/bioperl-live/Bio/Root/Root.pm

Don't think this will help for CGI, though, if you have PERL5LIB set  
up for your local env (as Mauricio indicates).  You'll need to 'use  
lib'.

-chris

On May 21, 2008, at 3:34 PM, vdar at yorku.ca wrote:

> How can I find where bioperl is installed?
>
>
>
> Quoting Mauricio Herrera Cuadra <arareko at campus.iztacala.unam.mx>:
>
>> Hi Nisa,
>>
>> CGI scripts are generally run by a different user than you, and which
>> user (e.g. apache, nobody) will depend on the platform you're running
>> the script on, thus the environment variables you currently have for
>> your login shell are not being inherited to the web interface. The  
>> best
>> workaround for this is to add a 'use lib' pragma at the top of your  
>> CGI
>> script:
>>
>> use lib '/path/to/your/bioperl/installation/';
>>
>> Also, it's a good practice to use taint mode for CGI scripts:
>>
>> #!/usr/bin/perl -wT
>>
>> Hope this helps.
>>
>> Regards,
>> Mauricio.
>>
>> vdar at yorku.ca wrote:
>>> Hi,
>>>
>>> This is my .bashrc file and perl can see bioperl because my  
>>> commandline
>> programs
>>> work fine, the problem is with web-based programs
>>>
>>> ##############################################
>>> # .bashrc
>>>
>>> # User specific aliases and functions
>>>
>>> # Source global definitions
>>> if [ -f /etc/bashrc ]; then
>>>        . /etc/bashrc
>>>
>>> fi
>>> export PERL5LIB="/opt/rocks/lib/perl5/site_perl/5.8.8"
>>>
>>>
>>> ################################################
>>>
>>> Please let me know if I need to change it now...
>>>
>>> Thanks
>>> Nisa
>>>
>>>
>>> Quoting Thomas Sharpton <sharpton at berkeley.edu>:
>>>
>>>> Hi Nisa,
>>>>
>>>> Looks to me like you need to add BioPerl to your PERL5LIB  
>>>> environmental
>>>> variable.  Until you set this up, Perl doesn't know where on your
>>>> machine to find the Bioperl code.  On a UNIX/Linux/Mac OSX based  
>>>> system,
>>>> the fix is as follows:
>>>>
>>>> From http://www.bioperl.org/wiki/Using_Subversion :
>>>>
>>>> Tell perl where to find BioPerl (assuming you checked out the  
>>>> code in
>>>> $HOME/src; set this in your .bash_profile, .profile, or .cshrc):
>>>>
>>>> bash: $ export PERL5LIB="$HOME/src/bioperl-live:$PERL5LIB"
>>>> tcsh: $ setenv PERL5LIB "$HOME/src/bioperl-live:$PERL5LIB"
>>>>
>>>> On a windows machine, you can either environmental variables  
>>>> through
>>>> autoexec.bat or via the Control Panel.
>>>>
>>>> Feel free to back channel me if you need help.
>>>>
>>>> Cheers,
>>>> Tom
>>>>
>>>>
>>>> nisa_dar wrote:
>>>>> Hi,
>>>>>
>>>>> My multiple alignment program works fine from command line but  
>>>>> when i put
>>>>> the
>>>>> same piece of code in my cgi perl program, it gives me the same  
>>>>> error,
>>>> which
>>>>> is,
>>>>>
>>>>> Can't locate Bio/Tools/Run/Alignment/Clustalw.pm in @INC (@INC  
>>>>> contains:
>>>>> /export/share/iNquiry/perl/lib/5.8.5/x86_64-linux-thread-multi
>>>>> /export/share/iNquiry/perl/lib/5.8.5
>>>>> /export/share/iNquiry/perl/lib/x86_64-linux-thread-multi
>>>>> /export/share/iNquiry/perl/lib/5.8.4 /export/share/iNquiry/perl/ 
>>>>> lib/5.8.3
>>>>> /export/share/iNquiry/perl/lib/5.8.2 /export/share/iNquiry/perl/ 
>>>>> lib/5.8.1
>>>>> /export/share/iNquiry/perl/lib/5.8.0 /export/share/iNquiry/perl/ 
>>>>> lib
>>>>> /usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi /usr/lib/ 
>>>>> perl5/5.8.5
>>>>> /usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi
>>>>> /usr/lib64/perl5/site_perl/5.8.4/x86_64-linux-thread-multi
>>>>> /usr/lib64/perl5/site_perl/5.8.3/x86_64-linux-thread-multi
>>>>> /usr/lib64/perl5/site_perl/5.8.2/x86_64-linux-thread-multi
>>>>> /usr/lib64/perl5/site_perl/5.8.1/x86_64-linux-thread-multi
>>>>> /usr/lib64/perl5/site_perl/5.8.0/x86_64-linux-thread-multi
>>>>> /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl/5.8.4
>>>>> /usr/lib/perl5/site_perl/5.8.3 /usr/lib/perl5/site_perl/5.8.2
>>>>> /usr/lib/perl5/site_perl/5.8.1 /usr/lib/perl5/site_perl/5.8.0
>>>>> /usr/lib/perl5/site_perl
>>>>> /usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi
>>>>> /usr/lib64/perl5/vendor_perl/5.8.4/x86_64-linux-thread-multi
>>>>> /usr/lib64/perl5/vendor_perl/5.8.3/x86_64-linux-thread-multi
>>>>> /usr/lib64/perl5/vendor_perl/5.8.2/x86_64-linux-thread-multi
>>>>> /usr/lib64/perl5/vendor_perl/5.8.1/x86_64-linux-thread-multi
>>>>> /usr/lib64/perl5/vendor_perl/5.8.0/x86_64-linux-thread-multi
>>>>> /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl/5.8.4
>>>>> /usr/lib/perl5/vendor_perl/5.8.3 /usr/lib/perl5/vendor_perl/5.8.2
>>>>> /usr/lib/perl5/vendor_perl/5.8.1 /usr/lib/perl5/vendor_perl/5.8.0
>>>>> /usr/lib/perl5/vendor_perl .) at
>>>>> /export/share/iNquiry/www/cgi-bin/bipod/nisa/snpfinder.cgi line  
>>>>> 14.
>>>>> BEGIN failed--compilation aborted at
>>>>> /export/share/iNquiry/www/cgi-bin/bipod/nisa/snpfinder.cgi line  
>>>>> 14.
>>>>>
>>>>>
>>>>>
>>>>> Here is my cgi perl program
>>>>>
>>>>> #!/usr/bin/perl -w
>>>>>
>>>>> use strict;
>>>>> use CGI qw(:standard);
>>>>> use CGI::Carp qw/fatalsToBrowser/;
>>>>> use Bio::SeqIO;
>>>>> use Bio::Align::AlignI;
>>>>> use Bio::AlignIO;
>>>>> use Bio::AlignIO::msf;
>>>>> use Bio::SimpleAlign;
>>>>> use Bio::PrimarySeq;
>>>>> use Bio::Tools::Run::Alignment::Clustalw;
>>>>> use Bio::PrimarySeqI;
>>>>> use Bio::Root::IO;
>>>>> use Bio::Seq;
>>>>> use Bio::TreeIO;
>>>>> use Bio::Root::Root Bio::Tools::Run::WrapperBase;
>>>>> use Bio::LocatableSeq;
>>>>>
>>>>>
>>>>> BEGIN {
>>>>> 	$ENV{CLUSTALDIR} = '/opt/Bio/bin/clustalw';
>>>>> }
>>>>> print"Content-type: text/html\n\n";
>>>>>
>>>>>
>>>>> if (param()){ #condition if user supplied some data
>>>>> 	my $new_seq=param("sequence"); #to store sequence from text box  
>>>>> of form
>>>>> 	my $selection=param("size");#to store drop down menu selection  
>>>>> for
>>>>> translation type
>>>>> 	my $file1=param("uploadfile");#variable for name of the file
>>>>> 	my $address=param("email");#variable to hold e.mail address
>>>>>
>>>>> 	if ($file1=~/.+/) {#test condition, if user supplied a file
>>>>>
>>>>> 		my $R_FH = upload("uploadfile");#get file handle
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> 		my  $in  = Bio::AlignIO->new(-file   => $file1 ,
>>>>> 					-format => 'fasta');
>>>>> 		my $out = Bio::AlignIO->new(-file   => ">out.aln.pfam" ,
>>>>> 					-format => 'pfam');
>>>>>
>>>>> 		while ( my $aln1 = $in->next_aln() ) {
>>>>> 			$out->write_aln($aln1);
>>>>> 		}
>>>>>
>>>>> 		close $R_FH;
>>>>> 		open FH, "out.aln.pfam" || die "Alignment file doesn't exist\n";
>>>>> 		while(<FH>){
>>>>>
>>>>> 		print $_,"\n";
>>>>> 		}
>>>>> 		close FH;
>>>>>
>>>>> 		#To send results through e.mail
>>>>> 			$report=~s/<br \/>/\n/g;#change new line character
>>>>> 			$report=~s/(<.+?>)//g;#remove html tags
>>>>> 			$report=~s/(&nbsp;)/ /g;#change space character
>>>>> 			open(MAIL, "|/usr/sbin/sendmail -t") or die"can't compose an  
>>>>> e.mail";
>>>>> 			print MAIL "To:$address\n";
>>>>> 			print MAIL "From: nisa\n";
>>>>> 			print MAIL "Subject: results of $file1\n";
>>>>> 			print MAIL  "\n$report\n";
>>>>> 			close(MAIL);#close mail
>>>>>
>>>>>
>>>>> 	}else{#error message if no file name is entered
>>>>> 		print "<html><head><h3>Error: </h3></head><body>You did not  
>>>>> enter a
>> file
>>>>> name,please upload a file<br /></body></html>";
>>>>>
>>>>> 	}
>>>>>
>>>>> }
>>>>>
>>>>> Please let me know what should I do, because clustalw is there  
>>>>> and my
>> other
>>>>> programs (non web-based) are working.
>>>>>
>>>>> Thanks
>>>>> Nisa
>>>>>
>>>>
>>>> --
>>>> Thomas Sharpton
>>>> PhD Candidate - UC Berkeley
>>>> Search smarter: www.siphs.com
>>>>
>>>>
>>>
>>>
>>> _______________________________________________
>>> Bioperl-l mailing list
>>> Bioperl-l at lists.open-bio.org
>>> http://lists.open-bio.org/mailman/listinfo/bioperl-l
>>>
>>
>> --
>> MAURICIO HERRERA CUADRA
>> arareko at campus.iztacala.unam.mx
>> Laboratorio de Genética
>> Unidad de Morfofisiologà a y Función
>> Facultad de Estudios Superiores Iztacala, UNAM
>>
>
>
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/bioperl-l

Christopher Fields
Postdoctoral Researcher
Lab of Dr. Marie-Claude Hofmann
College of Veterinary Medicine
University of Illinois Urbana-Champaign








More information about the Bioperl-l mailing list