1

多くの複数のアラインメントを自動化するためのperlスクリプトがあります(最初に1つのファイルと1つの複数のアラインメントのみでスクリプトを作成していますが、大きなものです。その後、複数のファイル用に変更できます)結果のファイルを出力したいのですが、 AlignIO の使用方法が不明です: これまでのところ:

use warnings;
use strict;
use Bio::AlignIO;
use Bio::SeqIO;
use Bio::Tools::Run::Alignment::Clustalw;

my $file = shift or die; # Get filename 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 => $format
                   );

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);

アラインメントが完了すると、プロセスから取得したいアラインメントである $aln が fasta ファイルとして作成されます。次のようなことを試しました。

my $out = Bio::AlignIO->new(-file => ">outputalignmentfile",
                         -format => 'fasta');
while( my $outaln = $aln->next_aln() ){
    $out->write_aln($outaln);
}

おそらく、メソッド next_aln() は AlignIO のものにのみ適用され、$aln はおそらく適用されないため、機能しませんでした。したがって、行によって生成されるものとmy $aln = $factory->align($seq_array_ref);、整列されたシーケンス出力をファイルに取得する方法を知る必要があります。私の次のステップは、ツリー推定またはネットワーク分析です。

ありがとう、ベン。

4

1 に答える 1