BioPerl с clustalw — выходной файл

У меня есть 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); и как вывести выровненные последовательности в файл. Мой следующий шаг — оценка дерева или сетевой анализ.

Спасибо, Бен.


person Ward9250    schedule 23.05.2013    source источник


Ответы (1)


$out->write_aln($outaln); Была ли единственная строка, необходимая для записи объекта, возвращаемого строкой clustalw, для вывода объекта в этот поток.

person Ward9250    schedule 24.05.2013
comment
Я предполагаю, что это должно быть $out->write_aln($aln); вместо цикла while. - person zubenel; 14.03.2020