[Bioperl-l] GI to taxonomy
Alexey Morozov
alexeymorozov1991 at gmail.com
Fri Sep 13 08:06:09 UTC 2013
Dear colleagues,
I have a bunch of fasta genomes annotated only by their GI numbers, and
need to get a taxonomy for all of them. So I rewrote get_tree method from
Bio::DB::Taxonomy:
12 open GIS, GI_FILE;
13 my $tax_db=Bio::DB::Taxonomy->new(source=>'entrez');
14 my $tree;
15 while (<GIS>)
16 {
17 print "Requesting data for GI $_\n";
18 my $taxon=$tax_db->get_taxon(-gi=>"$_",-db=>'nucleotide');
19 if ($@){die $@;}#Catch exception and die, just in case
20 # or die "Cannot get taxonomy data for GI$_:$!\n";
21 if ($tree)
22 {
23 $tree->merge_lineage($taxon);
24 }else
25 {
26 $tree=Bio::Tree::Tree->new(-node=>$taxon);
27 }
28 }
This (line 18) way to invoke Bio::DB::Taxonomy->get_taxon is documented and
I expect to get taxon objects. Yet all I get is
--------------------- WARNING ---------------------
MSG: Must have provided a valid HASHref for -params
---------------------------------------------------
Requesting data for GI 15604717
------------- EXCEPTION: Bio::Root::Exception -------------
MSG: Can't query website: 400 URL must be absolute
STACK: Error::throw
STACK: Bio::Root::Root::throw /usr/share/perl5/Bio/Root/Root.pm:472
STACK: Bio::DB::Taxonomy::entrez::get_taxon
/usr/share/perl5/Bio/DB/Taxonomy/entrez.pm:247
STACK: ./get_tax:18
-----------------------------------------------------------
Directly using Bio::DB::Taxonomy::entrez doesn't help, GI numbers load OK,
so I have no clue what happened.
Need help.
--
Alexey Morozov,
LIN SB RAS, bioinformatics group.
Irkutsk, Russia.
More information about the Bioperl-l
mailing list