以下のスクリプトを実行しようとしています。しかし、私はエラーが発生します:
------------- 例外 ------------- MSG: clustalw の実行可能ファイルが見つかりません。path="clustalw.exe" STACK Bio::Tools::Run::WrapperBase::executable C:/Perl64/site/lib/Bio/Tools/Run/ WrapperBase.pm:340 STACK Bio::Tools::Run: :Alignment::Clustalw::_run C:/Perl64/site/lib/Bio/Tools/Run n/Alignment/Clustalw.pm:752 STACK Bio::Tools::Run::Alignment::Clustalw::align C: /Perl64/site/lib/Bio/Tools/R un/Alignment/Clustalw.pm:515 STACK トップレベル a.pl:29
perl に私の を見つけさせる方法はclustalw.exe
?
最初に環境変数を設定することで、すでにそれを行っていると思います$ENV{CLUSTALDIR}
。
#!/usr/bin/perl
$ENV{CLUSTALDIR} = 'C:\Program Files (x86)\ClustalW2';
use warnings;
use strict;
use Bio::AlignIO;
use Bio::SeqIO;
use Bio::Tools::Run::Alignment::Clustalw;
my $file = <>; # Get file name from command prompt.
my $factory = Bio::Tools::Run::Alignment::Clustalw->new(-matrix => 'BLOSUM');
my $ktuple = 3;
$factory->ktuple($ktuple);
my $inseq = Bio::SeqIO->new(
-file => "<$file",
-format => "fasta"
);
my $seq;
my @seq_array;
while ($seq = $inseq->next_seq) {
push(@seq_array, $seq);
}
# Now we do the actual alignment.
my $seq_array_ref = \@seq_array;
my $aln = $factory->align($seq_array_ref);