[Bioperl-l] Bio::DB::Taxonomy root not present

Bernd Web bernd.web at gmail.com
Thu Jul 7 15:03:25 UTC 2011


I noticed Bio::DB::Taxonomy does not contain the root of the tree,
while the NCBI node file does.
For example, the lineage "root; cellular organisms; Bacteria" stops at
"cellular organisms", which means there is no parent node of
"cellular organisms". (see code below).  Also
$taxdb->get_Taxonomy_Node(1) would not return the Bio::Taxon object
for root  (using BioPerl 1.6.9).

Was there a reason not to include the node "root" in the index files
for Bio::DB::Taxonomy?

Kind regards,

use strict;
use File::Spec;
use Bio::DB::Taxonomy;

my $prefix = '/scratch/taxonomy/';
my $taxdb = Bio::DB::Taxonomy->new
    (-source => 'flatfile',
     -directory => File::Spec->catfile($prefix,'idx'),
     -nodesfile => File::Spec->catfile($prefix,'nodes.dmp'),
     -namesfile => File::Spec->catfile($prefix,'names.dmp')

my $taxid = '2';
my $node = $taxdb->get_Taxonomy_Node($taxid);
$node = $taxdb->ancestor($node);
print $node->node_name, "\n"; #prints: cellular organisms
$node = $taxdb->ancestor($node);
print $node->node_name, "\n"; #error :Can't call method "node_name" on
an undefined value at taxdb.pl line...

More information about the Bioperl-l mailing list