我有一个perl脚本可以自动执行多个多重对齐(我首先只使用一个文件和一个多重对齐制作脚本 - 虽然很大。我可以修改多个文件)并且我想输出生成的文件,但我不确定如何处理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);
生成的是什么以及如何将对齐的序列输出到文件中。我的下一步是树估计或网络分析。
谢谢, 本。
答案 0 :(得分:0)
$out->write_aln($outaln);
是否需要编写clustalw行返回的对象以将对象输出到该流。