Colonyzer: quantifying the size of microbial cultures
Colonyzer is an image analysis tool for quantifying the cell density of arrays of independent micro-organism cultures growing on solid agar. It specialises in being sensitive enough to detect the presence of cultures with extremely low cell density arising after dilute liquid inoculation onto agar from photographs of plates. Identifying cultures with few cells growing on an agar surface by photography or after scanning is difficult because culture opacity might not be high enough for colour differences between agar and cells to be apparent. In order to achieve its high levels of sensitivity, it relies on sophisticated algorithms for the identification and detection of lighting gradients in the photograph, and for the detection of thin, semi-translucent developing cultures in the corrected images.
Colonyzer is suitable for high-throughput screening of libraries of yeast mutants for example, and has proven extremely useful in the estimation of phenotypes such as exponential growth rate, appropriate for genome-wide investigations of genetic interaction. Colonyzer was used for cell density estimation in Addinall et al. 2011 and Chang et al. 2011 for example. A detailed description of Colonyzer, its algorithms, the motivation for its development, and some example analysis can be found in Lawless et al. 2010, and an example of how Colonyzer fits into the Quantitative Fitness Analysis workflow can be seen in Banks et al. 2012.
Colonyzer has been developed using Python 2.7 and several Python modules: numpy, scipy, pandas, pil, matplotlib & pygame. The Colonyzer GitHub pages contain the latest development code. The Colonyzer PyPI pages include a version which is easy to install using pip. The easiest way to get up and running with Colonyzer is to install Python 2.7, install the pip package manager for Python and then use pip to install the required modules and Colonyzer itself. To install Python 2.7 under Windows or OSX, download and run the installer appropriate for your machine here. Python is included with most versions of Linux by default. Instructions for installing the package manager pip can be found here though Windows users might find these instructions clearer.
Installation under Microsoft Windows
After installing python and pip, you will need to ensure that the python installation directory (e.g. "C:\Python27" and "C:\Python27\Scripts") are included in your path. See this FAQ for a description of how to set your path under Windows 7.
Once both Python 2.7 and pip are installed, the required packages (including Colonyzer itself) can be installed by typing the following at the command prompt. You can typically get a command terminal in Windows by searching for the
cmd program (e.g. Start -> Search -> Cmd). Note that Windows users will have to right click on the Cmd icon and Run As Administrator. Onece you have a command terminal window open, type or paste the following command and press enter at the end of the line:
pip install numpy scipy pandas pil matplotlib pygame Colonyzer2
Unfortunately, it is not possible to install 64-bit versions of several Python packages using Pip under windows. To install these packages manually, locate and install the following packages from the Unofficial Windows Binaries for Python Extension Packages website:
numpy scipy pandas pil matplotlib pygame
Note that Numpy-MKL requires installation of a Visual C++ compiler as well (instructions at the webpage above). Once the required packages, including pip are installed, Colonyzer can be installed by typing the following at the command prompt. You can typically get a command terminal in Windows by searching for the
cmd program (e.g. Start -> Search -> Cmd). Note that Windows Vista users will have to right click on the Cmd icon and Run As Administrator. Once you have a command terminal window open, type or paste the following command and press enter at the end of the line:
pip install Colonyzer2
Installation under Linux
Linux users might prefer to allow their OS package management system install the required python packages instead of pip. To do this under Debian (e.g. Ubuntu), first install pip and all required packages using the OS package management system. Then, use pip to install Colonyzer, as follows:
sudo apt-get install python-pip python-numpy python-scipy python-pandas python-matplotlib python-pygame
sudo pip install Colonyzer2
Installation under OSX
It is quite tricky to set up a scientific computing environment under OSX. However, it is possible to install Colonyzer and the required packages. Some tips and hints can be found on this page.
Upgrading to latest version
Colonyzer is continuously being improved. To upgrade an existing installation to the latest version, simply execute the following command in terminal (as administrator or using
sudo where appropriate):
pip install --upgrade Colonyzer2
Colonyzer can be used to analyse single timepoint plate images or image timecourses. Capturing a timecourse allows generation of microbial growth curves and allows us to infer strain fitnesses (using the QFA R package for example.
- Capture a timecourse series of photographs of microbial cultures spotted in onto a solid agar plate (some demo image files here) or equivalent single snapshots.
- Name the photographs using the first 15 characters as a plate identifier, with further characters for identifying particular images in a series. For timecourse images the chronological order of the image identifiers should correspond to their alphabetical order (e.g. a timestamp YYYY-MM-DD_HH-MM-SS would be appropriate). Image names following this patten are ideal: W000155_030_001_2009-06-30_14-36-26.jpg.
- Collect all image files to be analysed (can be multiple images of multiple plates) into one directory. To capture raw data for analysis with Colonyzer:
Briefly, the command-line tools available to you after installing Colonyzer2 are:
timecourse will automatically locate the cultures in a timeseries of images of the same plate (imaged repeatedly in place: ie cultures do not move relative to camera between images, must have multiple images of the same plate for timecourse to work). Images should be named according to the convention specified above. Open a terminal window in the directory containing the images (or navigate to that directory) and type this command (followed by enter) to analyse all of the images:
The default is to assume that plates are inoculated in 384-format. You can specify what format cultures are inoculated by specifying an extra argument:
timecourse 384 timecourse 96 timecourse 1536
You can disable lighting correction (e.g. to speed up analysis where lighting gradients are not strong, or where lighting correction interferes with thresholding or culture location) using the
fixedpos & parametryzer
If automatic location of arrayed cultures is proving difficult (e.g. there are so few strong growers on a plate that it is difficult to figure out unambiguously where the grid is), you can use fixedpos, together with a calibration file specifying initial guesses for corner locations on the plate. An example calibration file, including its own format instructions (and which must be named Colonyzer.txt) can be seen here.
Instead of writing a calibration file manually, parametryzer is a tool to help you generate one semi-automatically by clicking on images. Simply navigate to the directory containing your images, execute:
and follow the on-screen instructions. Once this program has run its course it writes a Colonyzer.txt file into the directory, ready for fixedpos to read. Once you have such a file in the same directory as the images to be analysed, you can now execute Colonyzer using the spot location calibrations as initial guesses like this:
As for timecourse, you can disable lighting correction (but note that plate format should be specified in Colonyzer.txt):
Finally, executing the following command:
will treat all images separately (will not treat them as a timecourse) very much like the original Colonyzer algorithm. This can be useful in several circumstances (e.g. when plates are positioned differently at each timepoint, or where lighting varies between images), but is slower and more noisy than the other alternatives. This also requires a Colonyzer.txt file, generated by parametryzer and also takes the optional --no-lc argument.
Colonyzer2 is under development on github. Feel free to fork the repo and to submit pull requests. Marcin Plech has contributed many useful bugfixes to the latest version of the software. Katja Luck and Adriana San Miguel have provided useful documentation for installation under OSX.
If you use Colonyzer in research leading to a publication, please cite our open access article:
Conor Lawless, Darren J Wilkinson, Alexander Young, Stephen G Addinall and David A Lydall Colonyzer: automated quantification of micro-organism growth characteristics on solid agar BMC Bioinformatics 2010, 11:287
The original source code, installation instructions, a library of example images, and some auxiliary scripts for analyzing batches of images as presented in Lawless et al. 2010 and used in Addinall et al. 2011 and Chang et al. 2011 and demonstrated in Banks et al. 2012 can be found on sourceforge. However, the current version is recommended for new users. In particular the current version is faster and easier to install and use.
The qfa R package has been developed to further analyse the data, construct growth curves and infer culture fitnesses, and is compatible with either version of Colonyzer.