Пакет bioperl Bio::Tree::Tree не может найти метод объекта as_text

Я пытаюсь использовать as_text метод из Bio::Tree::Tree Я получаю это сообщение: can't locate object method as_text via package Bio::Tree::TreeЯ использую пример здесь

Обратите внимание, что я попробовал другие методы в том же пакете, и они работали нормально.

my $input = new Bio::TreeIO(-file   => "bintree.nw",
                            -format => "newick");
my $tree = $input->next_tree;
my $tree_as_string = $tree->as_text($format);
print $tree_as_string;

print Dumper($input) дать этот результат:

$VAR1 = bless( {
                 '_bootstrap_style' => 'traditional',
                 '_handler' => bless( {
                                        '_treelevel' => 0,
                                        '_currentnodes' => [],
                                        '_lastitem' => {
                                                         'tree' => 0,
                                                         'current' => [],
                                                         'id' => 0,
                                                         'node' => 0,
                                                         'leaf' => 0
                                                       },
                                        'nodetype' => 'Bio::Tree::Node',
                                        '_root_verbose' => 0,
                                        'treetype' => 'Bio::Tree::Tree',
                                        '_currentitems' => [],
                                        '_nodect' => [
                                                       undef,
                                                       2,
                                                       0,
                                                       0,
                                                       0,
                                                       0,
                                                       0,
                                                       0,
                                                       0
                                                     ]
                                      }, 'Bio::TreeIO::TreeEventBuilder' ),
                 '_file' => 'bintree.nw',
                 'newline_each_node' => undef,
                 'internal_node_id' => 'id',
                 '_root_cleanup_methods' => [
                                              sub { "DUMMY" }
                                            ],
                 '_flush_on_write' => 1,
                 '_filehandle' => \*Symbol::GEN0,
                 '_root_verbose' => 0,
                 '_print_tree_count' => 0
               }, 'Bio::TreeIO::newick' );

Вот Print Dumper ($tree)

есть ошибка? или это ошибка? заранее спасибо

1 ответ

Решение

Ваш код не работает, потому что вы не установили переменную $format к чему-либо, поэтому класс Bio::TreeIO не может найти класс для загрузки в формате. Попробуйте этот код (он работает для меня):

#!/usr/bin/env perl                                                                                                                                                          

use strict;
use warnings;
use Bio::TreeIO;

my $usage  = "$0 treefile\n";
my $infile = shift or die $usage;
my $treeio = Bio::TreeIO->new(-file => $infile, -format => 'newick');
print $treeio->next_tree->as_text('newick');

РЕДАКТИРОВАТЬ: Вот версия, использующая ваше дерево в качестве входных данных:

#!/usr/bin/env perl                                                                                                                                                          

use strict;
use warnings;
use Bio::TreeIO;

my $treeio = Bio::TreeIO->new(-fh => \*DATA, -format => 'newick');
print $treeio->next_tree->as_text('newick');

__DATA__
(((A:5,B:5)90:2,C:4)25:3,D:10);

Если мы запустим этот код, он напечатает дерево, как и ожидалось.

$ perl so18645089.pl                                                                                    
(((A:5,B:5)90:2,C:4)25:3,D:10);

Я использую BioPerl 1.6.901, последнюю версию (и версию, описанную в документации по CPAN). Версия 1.6.0 очень старая (>5 лет) и даже не используется на CPAN. Бьюсь об заклад, если вы обновитесь, ваши проблемы исчезнут.

Другие вопросы по тегам