Пакет 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. Бьюсь об заклад, если вы обновитесь, ваши проблемы исчезнут.