Traffic: 258 ip/hr
Question: Drawing chromosome ideogams with data
 
27
 
 

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: chromosome plot example

log in to commentrevisions • 44 bookmarks • permalink similar posts • request help via email

9 answers

 
29
 
 
 

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

Some Examples Digital Karyogram

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

 

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

log in to reply • written 3.2 years ago by Michael Dondrup ♦♦ 20,06011130
 

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

log in to reply • written 3.2 years ago by Yuri  1,1001614
 

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.

log in to reply • written 3.0 years ago by Barjaron  403
 

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

log in to reply • written 3.0 years ago by Jan Oosting  61035
 

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.

log in to reply • written 13 months ago by hurfdurf  40015
 
 
17
 
 
 

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!

 

Thanks. Do you know if it supports multiple chromosomes?

log in to reply • written 3.2 years ago by Yuri  1,1001614
 

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.

log in to reply • written 3.2 years ago by Neilfws ♦♦ 35,25012051
 

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.

log in to reply • written 3.2 years ago by Yuri  1,1001614
 

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.

log in to reply • written 3.2 years ago by Michael Dondrup ♦♦ 20,06011130
 

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.

log in to reply • written 3.2 years ago by Neilfws ♦♦ 35,25012051
 

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 ;)

log in to reply • written 3.2 years ago by Michael Dondrup ♦♦ 20,06011130
 

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

log in to reply • written 20 months ago by Yannick Wurm  1,630414
 

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.

log in to reply • written 6 months ago by Michael Dondrup ♦♦ 20,06011130
 

arg thats a pity - thanks

log in to reply • written 6 months ago by Yannick Wurm  1,630414
 

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

log in to reply • written 6 months ago by sean.d.hooper  01
 
 
10
 
 

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

 

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.

log in to reply • written 3.2 years ago by Yuri  1,1001614
 

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!

log in to reply • written 15 months ago by Kevin  41015
 
 
5
 
 

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.

 

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).

log in to reply • written 3.2 years ago by Yuri  1,1001614
 

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.

log in to reply • written 3.1 years ago by Khader Shameer  13,41011140
 
 
5
 
 

This is exactly what UCSC genome graphs does: http://genome.ucsc.edu/cgi-bin/hgGenome

 

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

log in to reply • written 17 months ago by Yuri  1,1001614
 

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

log in to reply • written 17 months ago by Maximilian Haeussler  6702
 
 
4
 
 

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

 
 
2
 
 

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.[?]

 

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.

log in to reply • written 3.2 years ago by Yuri  1,1001614
 
 
0
 
 

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

 

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

log in to reply • written 15 months ago by brentp  14,93011437
 

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

log in to reply • written 15 months ago by Peri4N  1,07029
 
 
0
 
 

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

 
1

Nima - please post this as a new question.

log in to reply • written 13 months ago by Casey Bergman  13,92021337
 
Log in to add a post