[Bioperl-l] (TreeFunctionsI) merge_lineage method very slow on large trees

Sendu Bala bix at sendu.me.uk
Thu Aug 7 18:20:29 EDT 2008

Tristan Lefebure wrote:
> I'm using a script very similar to bp_taxonomy2tree.pl distributed with 
> BioPerl (with the only difference that I'm using taxids instead of taxon 
> names). Basically, the script generates a taxonomic tree given a list of 
> taxids using the NCBI taxonomy db. For each taxon, it generates a taxon 
> object, and then merge this object to a tree object that keeps growing. It 
> runs very well with a small number of taxa, but with many taxa (>1000), it is 
> very very very slow (about a week for 3000 taxa).
> The slowness is due to the  function merge_lineage (line 65), which merges the 
> existing tree object with a new taxon object. I guess that the difficulty 
> with a big tree (i.e. more than 1000 leaf) is to find the nodes in common 
> between the tree and the new taxon object...
> Would you have any idea of how to get around the problem? Should I look under 
> the hood of merge_lineage to try to improve it for large trees?

Yes, please do. It might have been me that wrote that, in which case I 
didn't do anything fancy or consider the above problem.

More information about the Bioperl-l mailing list