New paper! An enduring partnership between ciliates and bacteria

My latest paper has just been published in Proceedings of the Royal Society B! My colleagues and I describe how a partnership between a group of ciliates (a type of single-celled organism) called Kentrophoros and their bacterial symbionts had a single evolutionary origin. This is despite the fact that different species of Kentrophoros can look very different from each other and are found all over the world. The bacteria are also a lineage that is new to science, and that as far as we know is only associated with these ciliates. This means that after the first Kentrophoros and its bacterial partner got together tens or hundreds of millions of years ago, their descendants have diversified into different species and spread themselves throughout the globe, all the while remaining true to each other.


Kentrophoros sp. from the Mediterranean island of Elba. This ciliate carries a few hundred thousand bacterial symbionts (whitish mass) and is almost 2 mm long despite being a single cell.

Still have questions? Read more below…

Continue reading

Thioturbo danicus – The Sulfur Whirl of Denmark

Late last year, my colleague Silke W and I went to Denmark for a short field trip to collect ciliates, where we were hosted by Lasse Riemann of the University of Copenhagen. The site where we collected our material was Nivå Bay, which is famous among environmental microbiologists for the several decades of studies there on sulfur-cycling by microorganisms.


Nivå Bay (above, view from birdwatching tower on a sunny day) is a shallow, sheltered bay where the water is only knee- to waist-height at low tide. Scattered between the tufts of seaweed and seagrass were some off-white, slimy films on the surface of the sediment. These are actually bacterial “veils”, which are sheets of mucus produced by bacteria that embed themselves in them. Like a veil made of lace, each sheet is punctuated by many holes. Unlike a wedding veil, these veils are not meant to hide anything. Instead, you can think of them as a sort of natural-born environmental engineering – the holes allow water to flow through, and the bacteria actively circulate water by beating their flagella. By working together in these colonies, the bacteria can set up a continuous flow of water through the veil. This flow mixes sulfide-rich water coming from below with oxygenated water from above, bringing together the chemicals that they use to generate energy.

There are different species of bacteria that have such behavior. One of them has the wonderful name Thioturbo danicus – the sulfur whirl of Denmark. It has flagella on both poles of its rod-shaped cells. In this video you can see what happens when a single cell is detached from the mucus veil – it ends up tumbling like a propeller, which probably was the inspiration for its name!

Here is a somewhat degraded veil that had been sitting around in a Petri dish for too long. Taken from its natural environment, it soon becomes overgrown with grazing protists and small animals that methodically eat up the bacteria:

You can read more about the veil-forming bacteria from these publications from the microbiologists at Helsingør: Thar & Kühl 2002, Muyzer et al. 2005.

3D vision with the Pulfrich Effect

The Pulfrich Effect is an optical phenomenon where objects (or images) moving in a single plane can appear to be in 3D when the light reaching one eye is dimmed, e.g. with a filter. It also has a curious history – Carl Pulfrich (biography – pdf), who discovered the phenomenon, was blind in one eye and never observed it for himself, but nonetheless made many contributions to stereoscopy (the study of 3D vision) in both theory and the construction of apparatus.

Unlike other forms of stereoscopy, this only works with moving objects or animations; it does not work with still images! But what’s really cool is that you don’t need any special equipment to view it, beyond a piece of darkened glass or plastic to act as a filter. Videos exhibiting the Pulfrich effect can be viewed on a normal monitor or TV screen.

I’ve made my own Javascript animations as demos for the Pulfrich effect (posted as GitHub Gists and rendered by

Screen Shot 2017-01-10 at 00.57.42.png

Screenshot from my animated explanation of the Pulfrich Effect

Continue reading

Visualize metagenomes in a web browser

In my day job I work with metagenomes from animals and protists that have bacterial symbionts, and I’ve blogged here before about why visualizations are so useful to metagenomics (mostly to flog my own R package). However most existing tools, including my own, require that you install additional software and all the libraries that come with them, and also be familiar with the command line. That’s pretty standard these days for anyone who wants to do serious work with such data, but it can be a big hurdle for teaching. Time in the classroom is limited, and ideally we want to spend more time teaching biology than debugging package installation in R.

I’ve therefore written up a simple browser-based visualization for rendering coverage-GC% plots, called gbtlite. There’s no need to mess around with data structures in R, or worrying about how to install required packages for your operating system. The visualization uses the D3.js Javascript library, which is popular for web applications. If you’ve played with infographics on the New York Times website, then you’ve probably seen something built with D3.

Continue reading

Plotting data as ratios? Think again

We are often interested in ratios between two quantities. As an example, let’s use data from a study on the sugar content of soft drinks, where the the sugar content declared on the drink label was compared to the actual sugar content measured in the laboratory (Ventura et al. 2010, Obesitypdf). The paper includes a nice table summarizing their measurements, which I have adapted to produce the plots shown here.

How can we present this data to get the most insight? In my opinion, presenting such data as ratios can obscure useful information; showing scatterplots of the two quantites can make it easier to spot patterns.
Continue reading

New gbtools release (v2.5.2)

Instead of working I’m procrastinating by fixing bugs in my software. The new version of gbtools includes two new features that improve the plotting of taxonomic markers, and some fixes to long-standing bugs. You can now adjust how many taxa are colored and included in the plot legend (thereby avoiding cluttered plots with too many colors to interpret), and also highlight individual taxa.

Wondering what gbtools is? Read my previous blog post, or the paper published last December.

Are your trees drawn correctly?

[Edited on 10 Feb to fix some errors and ambiguous wording pointed out by Lucas. Added text in blue – thanks Lucas!]

Most software used by academic scientists is made by other scientists and available for use free of charge, but the phrase caveat emptor – buyer beware – still applies. As end users, we trust them to do more or less what they say on the box, but this doesn’t always happen.

The Exelixis lab, makers of the popular phylogenetic tool RAxML, have recently released a preprint (bioRxiv) looking at whether phylogenetic tree drawing software draws the support values properly. Short version: they don’t always do it right! And these errors can, and have, creeped into the published literature. (Dendroscope, one of the tools compared, released a bug fix soon after this article came out.) Coincidentally I had met the lead author of the preprint, Lucas Czech at a conference recently, but only came across this article when I was searching for something else online.

The main reason for the problem is, as with most problems in bioinformatics, different file formats. Support values can be written in a file either as properties of nodes or of branches. If a tree file is formatted one way but the drawing program assumes the other, then the support value can end up being placed on the wrong location, especially if the tree is rerooted for drawing.


Branch labels vs node labels. Which is correct?

Support values should properly be considered properties of branches, not nodes. In case it isn’t completely clear why this should be the case, I’ve written a short explanation below.

Continue reading