Drawing sequence logos

A very simple script to do a simple but tedious task.

Sequence logos are a common way of representing SNPs and diversity in groups of sequences. This script automates the task. It's a bit rough around the edges and serves mainly as a base for further hacking.

Usage is:

drawlogo.rb [options] FILE1 [FILE2 ...]

where options are:

-h, --help Display this screen
--columns INT How many sites to draw in every row
--relative-cell-height FLOAT
 How high to make a site relative to its width
--palette STR Which palette to use
--add-to-palette STR
 Add these colors to the palette
--format STR Save output in this format
--save STR Name output files according this template
-o, --overwrite
 Overwrite pre-existing files

The input is a CSV file with one row for each different residue at each site, of the form:

<site index>, <residue>, <proportion>

The output is an image file, by default a PNG, although any format supported by RMagick is possible. Caveat: SVG output is pathological, due to Rmagick's poor support of the format.


  • Ruby v1.8.x. 1.9.x will work but require a simple change in the CSV reading code, thanks to Ruby changing the way the CSV standard library works. (Thanks guys!)
  • The RMagick library.


  • {attach}