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


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.