Plotting of Genomic Data

Share:

Description

Function for plotting genomic data along with corresponding cytogenetic banding information

Usage

1
2
3
4
5
6
idiogram(data, genome, chr=NULL, organism=NULL,
method=c("plot","matplot","image"), margin=c("ticks","idiogram"),
grid.col=c("red","grey"), grid.lty=c(1,2), widths=c(1,2),
relative=FALSE, dlim=NULL, main=NA, xlab=NA,
ylab=NA,cex.axis=.7,na.color = par("bg"),cen.color="red", mb=FALSE,
...)

Arguments

data

a vector or matrix of numeric data to plot. The names/rownames attribute needs to contain corresponding gene identifiers

genome

a chromLocation object associated with the specified data set. See below for details.

chr

which chromosome to plot

organism

if NULL, determination of the host organism will be retrieved from the organism slot of the chromLocation object. Otherwise "h", "r", or "m" can be used to specify human, rat, or mouse chromosome information

method

plotting method

margin

type of banding information to display in the plot margin

grid.col

a two element vector specifying the centromere and band grid colors.

grid.lty

a two element vector specifying the centromere and band grid line type.

widths

a two element vector specifying the relative width of the margin idiogram two the adjacent graph. This option is currently ignored.

relative

If relative is TRUE, the vertical height of the plot is scaled relative to the size of largest chromosome.

dlim

a two element vector specifying the minimum and maximum values for x. Data in x that exceed the min and max limits will be set to the min/max limit values before plotting.

main

an overall title for the plot. Defaults to the chromosome name.

xlab

a title for the x axis.

ylab

a title for the y axis.

cex.axis

the magnification to be used for axis annotation relative to the current.

na.color

color to be used for NA values, defaults to: par("bg")

cen.color

color to be used for the centromere when margin="idiogram", defaults to: "red"

mb

if TRUE, subset data to include just those row names starting with the value of the argument chr. Otherwise, use chromLoc as outlined below.

...

additional graphical parameters can be given as arguments.

Details

This function displays cytogenetic banding information in the plot margin and calls a secondary plotting function to display associated data at the same relative position. Cytogenetic data for human, mouse, and rat genomes are currently included.

The data is arranged by associating gene identifiers to genomic location using a chromLoc annotation object built using the buildChromLocation function from the annotation package. As such, a vector of data is to be plotted, the names attribute of the vector needs to contain the gene identifiers. Likewise if a matrix of data is to be plotted, the rownames attribute of the matrix needs to contain the gene identifiers.

To date, plot can be called for vector data, while matplot and image can be called for matrix data. Most additional plotting arguments can be passed down via .... However, the idiogram function plots the axis independently. Currently, only the cex.axis,col.axis, and font.axis parameters are intercepted from ... and redirected to the specialized axis call. Other parameters that effect the axis should be set via par.

The function midiogram is a simple wrapper around idiogram to plot all the chromosomes from a particular organism using sensible default values. The "m" refers to plotting multiple idiograms.

Author(s)

Kyle Furge <kyle.furge@vai.org> and Karl Dykema <karl.dykema@vai.org>

See Also

buildChromLocation, Hs.cytoband, idiograb

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
library(idiogram)

## 
## NOTE:This requires an annotation package to work.
##      In this example packages "hu6800.db" and "golubEsets" are used.
##      They can be downloaded from http://www.bioconductor.org
##      "hu6800.db" is under MetaData, "golubEsets" is under Experimental
##      Data.


if(require(hu6800.db) && require(golubEsets)) {
   library(golubEsets)
   data(Golub_Train)

   hu.chr <- buildChromLocation("hu6800")
   ex <- assayData(Golub_Train)$exprs[,1]

   ## make sure the names() attribute is set correctly
   gN <- names(ex)
   gN[1:10]   

   idiogram(ex,hu.chr,chr="1")

   colors <- rep("black",times=length(ex))
   colors[ex > 10000] <- "red"
   pts <- rep(1,times=length(ex))
   pts[ex > 10000] <- 2
   idiogram(ex,hu.chr,chr="1",col=colors,pch=pts,font.axis=2,cex.axis=1)
   abline(v=0,col="darkgreen")

   ## An example of the dlim option. It is most useful for making
   ## consistant multi-panel plots
   colors <- rep("black",times=length(ex))
   colors[ex > 10000] <- "red"
   colors[ex < 0] <- "blue"

   idiogram(ex,hu.chr,chr="1",col=colors,xlim=c(-3000,21000))
   idiogram(ex,hu.chr,chr="1",col=colors,dlim=c(-100,7500),xlim=c(-3000,21000))
   idiogram(ex,hu.chr,chr="1",col=colors,dlim=c(-100,7500),xlim=c(-3000,10000))

   ## Using the identify function
   ip <- idiogram(ex,hu.chr,chr="1",col=colors,pch=19)
   #identify(ip$x,ip$y,labels=ip$labels)
   
} else print("This example requires the hu6800.db and golubEsets data packages.")

## The example data is BAC array CGH data from J. Fridlyand's
## aCGH package

data(idiogramExample)

idiogram(colo.eset[,1],ucsf.chr,chr="1")

idiogram(colo.eset,ucsf.chr,chr="1",method="image")

idiogram(colo.eset,ucsf.chr,chr="1",method="image",col=topo.colors(50),grid.lty=c(1,NA))

idiogram(colo.eset,ucsf.chr,chr="1",method="mat",type="l")

## for a consistant multi-panel plot it can be helpful to force the data
## range within each panel to a defined range using 'dlim'
## This is similar to calling the 'midiogram' function

op <- par(no.readonly=TRUE)
par(mai=par("mai")*c(0.1,0.5,0.5,0.5))
layout(rbind(c(1:8),c(0,9:14,0),c(15:22)))

for(i in c(1:22)) {
  idiogram(colo.eset,ucsf.chr,chr=i,method="i",dlim=c(-1,1),margin="i",relative=TRUE)
}

par(op)