Drawing Chromosome Ideograms With Data
11
109
Entering edit mode
14.8 years ago
Yuri ★ 1.7k

What software do you use to draw chromosomes with G-banding pattern and plot data alongside each chromosome? I'm interested in different kind of plots - lines, points, bars, etc - and high customization.

I have used coloredChromosomes.pl and chromosomeplot in MATLAB, but there are not enough features. What would you recommend to try?

UPDATE: I need something like this: [broken link]

ideogram visualization chromosome • 86k views
ADD COMMENT
0
Entering edit mode

Dear all, I would like to plot ideogram of zebrafish or stickleback. I tried some of your suggestions here. But they are mainly in human. Do you have any other suggestions? Regards, Nima

ADD REPLY
2
Entering edit mode

Nima - please post this as a new question.

ADD REPLY
0
Entering edit mode

there is a post here: (Creating chromosome karyotype plot with R and ggplot2) which might help get you started, it does not currently include the cytobands but you can add them with the file cytoBand.txt.gz from here

ADD REPLY
45
Entering edit mode
14.8 years ago
Jan Oosting ▴ 920

The quantsmooth Bioconductor package also has chromosome plotting functionality in the prepareGenomeplot() and paintCytobands() functions

Some Examples

Digital Karyogram:

image: Digital Karyogram

Copynumber plots:

image: Copynumber plots

EDIT:

The code for these plots is quite involved, and depends a lot on the genomic data.

The supplementary data for Genome Res. 2007 17: 368-376, doi:10.1101/gr.5686107 contains the data and script to produce the figures for the paper, which also contain some of these ideograms

A quick example leads to the following plot

# prepareGenomePlot example
library(quantsmooth)
# construct genomic positions
CHR<-sample(22,40,replace=TRUE)  # Chromosomes
MapInfo<-lengthChromosome(CHR,"bases")*runif(length(CHR)) # position on chromosome
chrompos<-prepareGenomePlot(data.frame(CHR,MapInfo),paintCytobands = TRUE, organism="hsa")
# Chrompos returns a matrix with the positions of the elements on the plot
# You can use all kinds of base graphics functions to annotate the chromosomes
points(chrompos[,2],chrompos[,1]+0.1,pch="x",col="red")
# Show connection between 3rd and 4th element
segments(chrompos[3,2],chrompos[3,1],chrompos[4,2],chrompos[4,1],col="blue",lwd=2)

PrepareGenomePlot Example:

image: PrepareGenomePlot Example

ADD COMMENT
1
Entering edit mode

Looks good. I will explore it further. Thanks a lot, Jan.

ADD REPLY
0
Entering edit mode

this looks very promising, can you give the source code for your plots, please?

ADD REPLY
0
Entering edit mode

Is it possible that I am missing something? When I use points() command from above, it does not seem to place the points to the correct locations.

ADD REPLY
0
Entering edit mode

The position of the points in the example is random, so they will change with any new execution of the script.

ADD REPLY
0
Entering edit mode

Just a quick note, quantsmooth seems to use ISCN coordinates (with human, at least) so if you are using UCSC or EnsEMBL coordinates you may have to remap to avoid telomeric overruns.

ADD REPLY
0
Entering edit mode

How to add X and Y chromosomes in the above ideogram?

ADD REPLY
23
Entering edit mode
14.8 years ago
Michael 55k

The GenomeGraphs package in Bioconductor allows to draw (human) chromosome ideograms with R. The package can be used to depict genome tracks of coverage, microarray measurements and genes together with the ideograms. See the user guide for an overview of different types of graphics. For the ideogram, the example looks like this (also in the GenomeGraphs paper):

Example

Here is the code that makes something like this (from the user guide):

library(GenomeGraphs)
library(biomaRt)
data("exampleData", package = "GenomeGraphs")
mart <- useMart("ensembl", dataset = "hsapiens_gene_ensembl")
minbase <- 180292097
maxbase <- 180492096
genesplus <- makeGeneRegion(start = minbase,
                            end = maxbase, strand = "+", chromosome = "3",
                            biomart = mart)
genesmin <- makeGeneRegion(start = minbase,
                           end = maxbase, strand = "-", chromosome = "3",
                           biomart = mart)
seg <- makeSegmentation(segStart, segEnd,
                        segments, dp = DisplayPars(color = "black",
                                    lwd = 2, lty = "solid"))
cop <- makeGenericArray(intensity = cn,
                        probeStart = probestart, segmentation = seg,
                        dp = DisplayPars(size = 3, color = "seagreen",
                          type = "dot"))
ideog <- makeIdeogram(chromosome = 3)
expres <- makeGenericArray(intensity = intensity,
                           probeStart = exonProbePos,
                           dp = DisplayPars(color = "darkred",
                             type = "point"))
genomeAxis <- makeGenomeAxis(add53 = TRUE,
                             add35 = TRUE)
gdPlot(list(a = ideog, b = expres, c = cop,
            d = genesplus, e = genomeAxis, f = genesmin),
       minBase = minbase, maxBase = maxbase,
       labelCex = 2)

Edit: It supports multiple ideograms in one plot like this:

ideog <- makeIdeogram(chromosome = 1)
ideog2 <- makeIdeogram(chromosome = 2)
ideog3 <- makeIdeogram(chromosome = 3)
ideog4 <- makeIdeogram(chromosome = 4)
gdPlot(list("1"= ideog, "2" = ideog2, "3" =ideog3, "4"=ideog4 ), 
minBase = minbase, maxBase = maxbase)

If you plot data below the chromosomes using a base track, take care of the minbase, maxbase parameters because the chromosomes have different length!

ADD COMMENT
1
Entering edit mode

Hi,

It wouldn't work for me initially, so I had to edit the following lines:

seg <- makeSegmentation(segStart[[1]], segEnd[[1]],
                        segments[[1]], dp = DisplayPars(color = "black",
                        lwd = 2, lty = "solid"))                                  
cop <- makeGenericArray(intensity = cn, trackOverlay=seg,
                        probeStart = probestart, 
                        dp = DisplayPars(size = 3, color = "seagreen",
                        type = "dot"))

/sean

ADD REPLY
0
Entering edit mode

Thanks. Do you know if it supports multiple chromosomes?

ADD REPLY
0
Entering edit mode

I second the use of GenomeGraphs. It should support as many chromosomes (and other features) as you like. The figure shown is composed of several "tracks", rendered in the order given by the code. All you would need to do is add more makeIdeogram() lines, with the code to plot the data under each one.

ADD REPLY
0
Entering edit mode

Although it can plot multiple chromosomes, you can specify only one genomic region with minBase/maxBase. So the same region is selected on all chromosomes. Also all chromosomes plotted with the same size and I didn't find a way to change it. So I don't think it's appropriate package. Anyway it will be useful for other cases, thank you.

ADD REPLY
0
Entering edit mode

I see the downside and I never used this option before, actually it came to my mind that the graphics you show in the Qu. is most likely made by putting together individual images in a graphics program. I don't want to recommend to do this manually but if you are e.g. writing an article or a book this might look much more professional than any automatic result.

ADD REPLY
0
Entering edit mode

One approach might be to generate a PNG for each chromosome, then stitch the PNGs together with e.g. imagemagick: "convert -append *.png all.png". But that won't solve the chromosome size problem.

ADD REPLY
0
Entering edit mode

Another way would be to hack a bit in the gdPlot code in GenomeGraphs. GenomeGraphs uses the Grid package for plotting, so it would be possible to change it a bit to support multiple gdPlots in one graphics window, but that would need some (of possibly my ) time ;)

ADD REPLY
0
Entering edit mode

what about non-model organisms? (not yet in ensembl)

ADD REPLY
0
Entering edit mode

they won't work. In GenomeGraphs that only works for human, in ggplot it works with genomes that have a cytogenic bands track, e.g. human, mouse. and not if there is no such information e.g. c. elegans.

ADD REPLY
0
Entering edit mode

arg thats a pity - thanks

ADD REPLY
0
Entering edit mode

Just a quick note, quantsmooth seems to use ISCN coordinates (with human, at least) so if you are using UCSC or EnsEMBL coordinates you may have to remap to avoid telomeric overruns. Thanks defensetax

ADD REPLY
11
Entering edit mode
10.2 years ago

New to me: (2014-10-09) via: @infoecho

NCBI Genome Decoration Page (gdp) http://www.ncbi.nlm.nih.gov/genome/tools/gdp/

ADD COMMENT
1
Entering edit mode

I use this one quite a bit when all I want to do is plot some regions or a bed file across the genome. Simple to use, decent output.

ADD REPLY
0
Entering edit mode
ADD REPLY
10
Entering edit mode
14.8 years ago

Circos is very popular these days http://mkweb.bcgsc.ca/circos/

ADD COMMENT
0
Entering edit mode

I heard about Circos, it's very interesting. Thanks. Had some trouble with GD library while installing it on Mac, but will try again. Anyway, I need a classical plot for now.

ADD REPLY
0
Entering edit mode

My Vote goes to Circos as well. Quite painless to install on Ubuntu / Redhat. Will try to install on Mac / XP next. I do find the tutorials a little hard to catch BUT they are extensive!

ADD REPLY
8
Entering edit mode
14.8 years ago

I found this bookmark in my del.icio.us

Idiographica: a general-purpose web application to build idiograms on-demand for human, mouse and rat

doi:10.1093/bioinformatics/btm455

http://www.ncrna.org/idiographica/

idiographica

There is also gff2ps

Or you can use the custom tracks in the UCSC genome Browser.

ADD COMMENT
1
Entering edit mode

Pierre, Yuri : have you tried Ideographica ? I have submitted input files a couple of times over the last week. But I didn't get any reply from the server #fail. Thanks Pierre for the gff2ps and UCSC suggestion.

ADD REPLY
0
Entering edit mode

Thanks, Pierre. But none of these will work for me. I need all (or several) chromosomes, so cannot use GB style. Ideographica is the closest, but you can only annotate some genomic locations (cannot show variable data).

ADD REPLY
0
Entering edit mode

This link is unavailable now!!

ADD REPLY
7
Entering edit mode
12.2 years ago
Irsan ★ 7.8k

One more for people comfortable with R/BioC and looking for ways to plot various kinds of genomic data is ggbio. It extends the popular and powerful ggplot2 package from Hadley Wickham. It is highly flexible, integrates well with common Bioconductor objects like Granges, GenomicFeaures and has a great tutorial to get you started

enter image description here

enter image description here

enter image description here

ADD COMMENT
0
Entering edit mode

Image links are broken :-(

ADD REPLY
7
Entering edit mode
7.1 years ago
bernatgel ★ 3.4k

This is an old question, but since it's referenced multiple times as a list of tools to create karyotype plots, I'll add karyoploteR too.

karyoploteR is an R/Bioconductor package to create plots of genomes (or parts of them) and add data positioned along the genome. For more information you can head to a Biostars post with an introduction to the package or to the tutorial and examples page for a longer read.

enter image description here

ADD COMMENT
5
Entering edit mode
13.1 years ago

This is exactly what UCSC genome graphs does.

ADD COMMENT
0
Entering edit mode

@maximilianh: Thanks! Sounds interesting. But i couldn't find any examples of the graphs. Do you know any?

ADD REPLY
0
Entering edit mode

Click import, select "known genes". Click OK. Select "known genes" from drop down menu and play around with the settings.

ADD REPLY
2
Entering edit mode
14.8 years ago

You can try Flash GViewer.

[?]I found it so nice that I tried to do a SVG version of it but not enough spare time to finish it.[?]

ADD COMMENT
0
Entering edit mode

Thank you, I didn't know about it. Still it does not do what I need and I think Flash will have memory problems with a lot of points.

ADD REPLY
1
Entering edit mode
ADD COMMENT
0
Entering edit mode
13.1 years ago
Fabian Bull ★ 1.3k

I am currently working on a project to visualize chromosomes. Features:

  1. annotate features with a very high resolution (up to nucleotide sized)
  2. features are near in the sequence are near in the plot
  3. exchangeable colormappings

I wonder if anyone sees an application?

Chromosome 12

ADD COMMENT
0
Entering edit mode

it's interesting, but can you explain more what's going on?

ADD REPLY
0
Entering edit mode

I think there is not enough space here but in short: We draw genomic features mapped to a hilbert curve.

ADD REPLY

Login before adding your answer.

Traffic: 1901 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6