If you are using Circos, please cite as

Krzywinski, M. et al. Circos: an Information Aesthetic for Comparative Genomics. Genome Res (2009) 19:1639-1645. (download XML Endnote citation)

Use Circos to create concise, explanatory, unique and print-ready visualizations of your data.

Current version is 0.52.

Try the online version.


Google Groups

Email:

Visit this group



Current version is 0.52.
This is a bug release. Issues with ideogram ordering and axis breaks have been addressed.
Current tools version is v0.13.
New is categoryviewer, used to visualize categorical data and a significantly updated tableviewer. Read about the theory and practise of visualizing tabular data.


Circos Online An online version of Circos is now available to visualize tabular data. Turn your tables into informative images!


3x3 table

4x4 table

6x6 table

8x8 table


Circos in Conde Nast Portfolio

Conde Nast Porfolio features an article on personalized genome sequencing. An image by Circos appears in a double-page spread. The art direction called for something primarily artistic and visually appealing, but also connected to the content of the article.


Circos in American Scientist

An image created by Circos appears on the cover of the Sept/Oct issue of American Scientist.

The image accompanies an article by Elaine Ostrander about dog genetics and illustrates the deep sequence similarity between the human and dog genomes. Read about the figure.


Circos in New York Times

Circos is used to generate a visualization of the 2007 Democratic and Republican Debates. The image was created by Jonathan Corum and Farhana Hossain, who discuss how the image was conceptualized.

Circos is featured in the Science section of the New York Times (22 Jan 2007).


Circos Presentations

Circos - a data viewer with comparative genomics in mind Circos presentation - Martin Krzywinski

Visualizing quantitative information - featuring work of Tufte Circos presentation - Martin Krzywinski


Circos Posters

A variety of Circos posters are available.

Tutorials

The tutorials illustrate different features of circos and take the place of documentation. Tutorials are divided into sections, with each section covering a particular feature set. The tutorials build on each other, so it is a good idea to go through them in order. Each tutorial has includes images and configuration files. These tutorials are for Circos v0.3x. The syntax of the configuration files is not compatible with v0.2x branch.

tutorial 1 Circos directory structure and configuration

Description of Circos distribution directories and files. Introduction to configuration files. Debugging Circos and common errors.

tutorial 1 : Circos directory structure and configuration description sections 12345678
1.2 : Configuration files - syntax, colors, fonts, units descriptionimage

Circos generates static images. The image generation process is driven by a central configuration file. This file usually imports other configuration files, such as global color and font settings.

configuration syntax

Settings are defined in configuration files using the format

 variable = value

Some settings are grouped in blocks,

 <ideogram>
  thickness = 30p
  fill      = yes
  ...
 </ideogram>

Some blocks are named to all for multiple instances of the same kind of element in the image (such as a data track).

 <link dataset1>
  file      = data/set2.txt
  color     = black
  ...
 </link>

 <link dataset2>
  file      = data/set2.txt
  color     = red
  ...
 </link>

external imports

Some settings never or rarely change, such as colors and fonts. To centralize these values, two configuration files, colors.conf and fonts.conf, are typically imported into a Circos configuration file using the following syntax.

 <colors>
 <<include etc/colors.conf>>
 </colors>

 <fonts>
 <<include etc/fonts.conf>>
 </fonts>

Conventionally, I store configuration for ideograms in an external file (ideogram.conf) and for tick mark formatting (ticks.conf). The reason for this is that these settings are fairly verbose, but are not related to a data set. By importing ideogram and tick mark settings from an external file

 <<include ideogram.conf>>
 <<include ticks.conf>>

the main configuration file is kept more succinct. Moreover, if you are creating multiple images with different data sets, you are likely to use the same settings for ideogram and tick mark formats. Storing these settings separately just makes sense.

If you have parameters that rarely change, consider creating external configuration files for these.

colors

It is easiest to package all color definitions in a single file. You'll find these in etc/colors.conf. Each color is given a name and corresponding RGB value.

 orange = 255,136,0

Typically for a given color name (e.g. orange), there are corresponding shades of the color with prefixed d (dark), l (light), each of which may be prefixed one or more v (very). For example,

 vlorange = 255,228,193
 lorange  = 255,187,110
 orange   = 255,136,0
 dorange  = 221,143,55

A set of colors named after chromosomes is also defined and corresponds to the chromosome color scheme used by UCSC Genome Browser and other online resources. This is a standardized palette.

 chr1 = 153,102,0
 chr2 = 102,102,0
 chr3 = 153,153,30
 ...
 chrX = 153,153,153
 chrY = 204,204,204

Another set of colors is named after cytogenetic band colors, typically reported in karyotype files. These colors define the G-staining shades seen in ideograms.

 gpos100 = 0,0,0
 gpos    = 0,0,0
 gpos75  = 130,130,130
 gpos66  = 160,160,160
 gpos50  = 200,200,200
 gpos33  = 210,210,210
 gpos25  = 200,200,200
 gvar    = 220,220,220
 gneg    = 255,255,255
 acen    = 217,47,39
 stalk   = 100,127,164

transparent colors

Transparent colors are supported, and should be defined in this format

 colorname = r,g,b,a

where "a" is an alpha value in the range 0-127. When a=0 the color is fully opaque, and when a=127 it is fully transparent.

To use transparent colors you must toggle the 24bit flag on

<image>
...
24bit=yes
...
</image>

Please see tutorial 8.9 for discussion about automating definition of transparent colors.

fonts

Circos ships with just a few TTF fonts, which are assigned to labels in etc/fonts.conf.

 default       = fonts/LTe50046.ttf
 normal        = fonts/LTe50046.ttf
 bold          = fonts/LTe50048.ttf
 ...

To use a specific font for an element, specify its label (e.g. normal, bold) in the configuration file. The LTe500NN.ttf fonts are Helvetica Neue, a readable and modern sans serif type face appropriate for a wide use.

To add your own fonts, copy the TTF file to fonts/ and add a new label to the font in the fonts.conf configuration.

To render very small labels, you should consider using bitmapped fonts. These fonts are designed to be used at a specific size and without anti-aliasing. One such family is the Mini Font set from minifonts.com.

gddiag

If you susspect there may be a problem with drawing images, please run

# no debug
bin/gddiag
# with debug
bin/gddiag

and look at the output gddiag.png. It should look like the image in this tutorial.

units

Many quantities defined in the configuration files require units, which are one of

  • b (bases) - used to indicate distance along the ideogram
  • p (pixels) - used for quantities defined in absolute pixel size, such as track radius, label size, glyph size, and others.
  • r (relative) - quantifies a parameter relative to another value, which is sometimes more intuitive than using absolute pixel values. For example, label radial padding is relative to label width and label angular padding is relative to label height
  • u (chromosome units) - special relative unit which expresses distance long ideogram in terms of the chromosomes_unit value
  • n (no unit) - explicit suffix for unitless values

Unit designations are suffixed to the value and may be mixed

# 1 pixel padding
padding = 1p 
# relative padding (e.g. relative to label width)
padding = -0.25r

# radius of track (relative to inner ideogram radius)
r0 = 0.5r
# combination of relative and pixel values
r1 = 0.5r+200p

The reason why Circos insists on units is to reduce the strain of interpreting the configuration file parameters - a large number of custom values can quickly become opaque.