Drawing Chromosome Ideograms With Data
11
109
Entering edit mode
12.3 years ago
Yuri ★ 1.6k

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]

chromosome visualization ideogram • 76k views
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

2
Entering edit mode

Nima - please post this as a new question.

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

45
Entering edit mode
12.3 years ago
Jan Oosting ▴ 920

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

Some Examples

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)


1
Entering edit mode

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

0
Entering edit mode

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

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.

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.

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.

0
Entering edit mode

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

23
Entering edit mode
12.3 years ago

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

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"))
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!

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

0
Entering edit mode

Thanks. Do you know if it supports multiple chromosomes?

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.

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.

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.

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.

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

0
Entering edit mode

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

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.

0
Entering edit mode

arg thats a pity - thanks

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

11
Entering edit mode
7.7 years ago

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

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

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.

10
Entering edit mode
12.3 years ago

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

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.

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!

8
Entering edit mode
12.3 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/

There is also gff2ps

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

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.

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

0
Entering edit mode

7
Entering edit mode
9.7 years ago
Irsan ★ 7.5k

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

0
Entering edit mode

7
Entering edit mode
4.6 years ago
bernatgel ★ 3.3k

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.

5
Entering edit mode
10.6 years ago

This is exactly what UCSC genome graphs does.

0
Entering edit mode

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

0
Entering edit mode

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

2
Entering edit mode
12.3 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.[?]

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.

1
Entering edit mode
6.1 years ago
zhanxw ▴ 20
0
Entering edit mode
10.6 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

0
Entering edit mode

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

0
Entering edit mode

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