I have a list of species. I want to put those names into a tool and get back a visualized tree that includes names of shared order, suborder, family and genus. Is there an existing tool that does this job for me or do I need to program my own solution?

(The solutuion in the other thread only shows the name of the species but not order/suborder/family/genus)


3 Answers 3


Biopython may have a module for this. I know it can parses phyloxml files and render a tree. You can query the ncbi database for the xml files. Here is some sample code that will render an ascii tree given a phyloxml file...

from Bio import Phylo
tree = Phylo.read("examplephylo.xml", "phyloxml")

There is also support for drawing more graphically rich trees using matplotlib. There is a .pdf book for Biopython that you can download from this url http://biopython.org/DIST/docs/tutorial/Tutorial.pdf

Hope that helps

  • $\begingroup$ There is support for other file types besides phyloxml, but I can only speak for the phyloxml files, because I have used them personally. $\endgroup$
    – DonJulian
    Dec 26, 2015 at 14:21

As far as I am aware, there isn't an easy one-stop-shop solution for what you'd like to do.

My own solution for doing something similar (with the caveat that the NCBI taxonomies are not always up-to-date with the latest data) is to a) use NCBI's Common Tree page to build out the lineages you'd like to include and download it as a text tree (e.g. in Phylip format, which includes internal nodes), b) visualize the tree on a local computer using something like TreeView X or FigTree

It's a bit of a pain, but if you'd like to add additional metadata to the tree before visualizing it, you can edit the Phylip-formatted text file directly before opening it in one of the viewers.


This is easily doable in the R package 'rotl' with only three simple commands.


taxa<-tnrs_match_names(names= c("Danaus plexippus",
                       "Sylvia atricapilla",
                       "Acrocephalus arundinaceus",
                       "Anas platyrhynchos",
                       "Oncorhynchus nerka",
                       "Hirundo pyrrhonota",
                       "Progne subis"))

tree <- tol_induced_subtree(ott_ids = ott_id(taxa))

plot(tree, cex = .8, label.offset = .1, no.margin = TRUE)

Full details outlined here: http://onlinelibrary.wiley.com/doi/10.1111/2041-210X.12593/full


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .