21 May 22:34
Re: I can't access clustalw from my cgi perl program...
From: <vdar <at> yorku.ca>
Subject: Re: I can't access clustalw from my cgi perl program...
Newsgroups: gmane.comp.lang.perl.bio.general
Date: 2008-05-21 20:34:05 GMT
Subject: Re: I can't access clustalw from my cgi perl program...
Newsgroups: gmane.comp.lang.perl.bio.general
Date: 2008-05-21 20:34:05 GMT
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/( )/ /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 >
RSS Feed