Last data update: 2014.03.03

R: Create a karyogram layout
layout_karyogramR Documentation

Create a karyogram layout

Description

Create a karyogram layout.

Usage

## S4 method for signature 'GRanges'
layout_karyogram(data, ..., xlab, ylab, main,
          facets = seqnames ~ ., cytoband = FALSE, geom = "rect",
          stat = NULL, ylim = NULL, rect.height = 10)

Arguments

data

a GRanges object, which could contain extra information about cytoband. If you want an accurate genome mapping, please provide seqlengths with this GRanges object,otherwise it will emit a warning and use data space to estimate the chromosome space which is very rough.

...

Extra parameters such as aes() or arbitrary color and size.

xlab

character vector or expression for x axis label.

ylab

character vector or expression for y axis label.

main

character vector or expression for plot title.

facets

faceting formula to use.

cytoband

logical value indicate to show the cytobands or not.

geom

The geometric object to use display the data.

stat

character vector specifying statistics to use.

ylim

limits for y axis, usually the chromosome spaces y limits are from 0 to rect.height, which 10, so if you wan to stack some data on top of it, you can set limits to like c(10, 20).

rect.height

numreic value indicate half of the rectangle ploting region, used for alignment of multiple layers.

Value

A 'Layer'.

Author(s)

Tengfei Yin

Examples

### R code from vignette source 'karyogram.Rnw'

###################################################
### code chunk number 1: loading
###################################################
library(ggbio)
data(hg19IdeogramCyto, package = "biovizBase")
head(hg19IdeogramCyto)
## default pre-set color stored in 
getOption("biovizBase")$cytobandColor


###################################################
### code chunk number 2: default
###################################################
autoplot(hg19IdeogramCyto, layout = "karyogram", cytoband = TRUE)



###################################################
### code chunk number 3: change-order
###################################################
library(GenomicRanges)
hg19 <- keepSeqlevels(hg19IdeogramCyto, paste0("chr", c(1:22, "X", "Y")))
head(hg19)
autoplot(hg19, layout = "karyogram", cytoband = TRUE)


###################################################
### code chunk number 4: cyto-normal
###################################################
library(GenomicRanges)
## it's a 'ideogram'
biovizBase::isIdeogram(hg19)
## set to FALSE
autoplot(hg19, layout = "karyogram", cytoband = FALSE, aes(fill = gieStain)) +
  scale_fill_giemsa()


###################################################
### code chunk number 5: load-RNAediting
###################################################
data(darned_hg19_subset500, package = "biovizBase")
dn <- darned_hg19_subset500
head(dn)
## add seqlengths
## we have seqlegnths information in another data set
data(hg19Ideogram, package = "biovizBase")
seqlengths(dn) <- seqlengths(hg19Ideogram)[names(seqlengths(dn))]
## now we have seqlengths
head(dn)
## then we change order
dn <- keepSeqlevels(dn, paste0("chr", c(1:22, "X")))
autoplot(dn, layout = "karyogram")
## this equivalent to 
## autoplot(seqinfo(dn))


###################################################
### code chunk number 6: load-RNAediting-color
###################################################
## since default is geom rectangle, even though it's looks like segment
## we still use both fill/color to map colors
autoplot(dn, layout = "karyogram", aes(color = exReg, fill = exReg))


###################################################
### code chunk number 7: load-RNAediting-color-NA
###################################################
## since default is geom rectangle, even though it's looks like segment
## we still use both fill/color to map colors
autoplot(dn, layout = "karyogram", aes(color = exReg, fill = exReg)) +
  scale_color_discrete(na.value = "brown")


###################################################
### code chunk number 8: load-RNAediting-color-fake
###################################################
dn2 <- dn
seqlengths(dn2) <- rep(max(seqlengths(dn2)), length(seqlengths(dn2)) )
autoplot(dn2, layout = "karyogram", aes(color = exReg, fill = exReg)) 


###################################################
### code chunk number 9: plotKaryogram (eval = FALSE)
###################################################
## plotKaryogram(dn)
## plotKaryogram(dn, aes(color = exReg, fill = exReg))


###################################################
### code chunk number 10: low-default
###################################################
## plot ideogram
p <- ggplot(hg19) + layout_karyogram(cytoband = TRUE)
p
## eqevelant autoplot(hg19, layout = "karyogram", cytoband = TRUE)


###################################################
### code chunk number 11: low-default-addon
###################################################
p <- p + layout_karyogram(dn, geom = "rect", ylim = c(11, 21), color = "red")
## commented line below won't work
## the cytoband fill color has been used already.
## p <- p + layout_karyogram(dn, aes(fill = exReg, color = exReg), geom = "rect")
p


###################################################
### code chunk number 12: edit-space
###################################################
## plot chromosome space
p <- autoplot(seqinfo(dn))
## make sure you pass rect as geom
## otherwise you just get background
p <- p + layout_karyogram(dn, aes(fill = exReg, color = exReg), geom = "rect")
values(dn)$pvalue <- rnorm(length(dn))
p + layout_karyogram(dn, aes(x = start, y = pvalue), ylim = c(10, 30), geom = "line", color = "red")
p


###################################################
### code chunk number 13: sessionInfo
###################################################
sessionInfo()

Results


R version 3.3.1 (2016-06-21) -- "Bug in Your Hair"
Copyright (C) 2016 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

> library(ggbio)
Loading required package: BiocGenerics
Loading required package: parallel

Attaching package: 'BiocGenerics'

The following objects are masked from 'package:parallel':

    clusterApply, clusterApplyLB, clusterCall, clusterEvalQ,
    clusterExport, clusterMap, parApply, parCapply, parLapply,
    parLapplyLB, parRapply, parSapply, parSapplyLB

The following objects are masked from 'package:stats':

    IQR, mad, xtabs

The following objects are masked from 'package:base':

    Filter, Find, Map, Position, Reduce, anyDuplicated, append,
    as.data.frame, cbind, colnames, do.call, duplicated, eval, evalq,
    get, grep, grepl, intersect, is.unsorted, lapply, lengths, mapply,
    match, mget, order, paste, pmax, pmax.int, pmin, pmin.int, rank,
    rbind, rownames, sapply, setdiff, sort, table, tapply, union,
    unique, unsplit

Loading required package: ggplot2
Need specific help about ggbio? try mailing 
 the maintainer or visit http://tengfei.github.com/ggbio/

Attaching package: 'ggbio'

The following objects are masked from 'package:ggplot2':

    geom_bar, geom_rect, geom_segment, ggsave, stat_bin, stat_identity,
    xlim

Warning message:
replacing previous import 'ggplot2::Position' by 'BiocGenerics::Position' when loading 'ggbio' 
> png(filename="/home/ddbj/snapshot/RGM3/R_BC/result/ggbio/layout_karyogram-method.Rd_%03d_medium.png", width=480, height=480)
> ### Name: layout_karyogram
> ### Title: Create a karyogram layout
> ### Aliases: layout_karyogram layout_karyogram,GRanges-method
> 
> ### ** Examples
> 
> ### R code from vignette source 'karyogram.Rnw'
> 
> ###################################################
> ### code chunk number 1: loading
> ###################################################
> library(ggbio)
> data(hg19IdeogramCyto, package = "biovizBase")
> head(hg19IdeogramCyto)
GRanges object with 6 ranges and 2 metadata columns:
      seqnames               ranges strand |     name gieStain
         <Rle>            <IRanges>  <Rle> | <factor> <factor>
  [1]     chr1 [       0,  2300000]      * |   p36.33     gneg
  [2]     chr1 [ 2300000,  5400000]      * |   p36.32   gpos25
  [3]     chr1 [ 5400000,  7200000]      * |   p36.31     gneg
  [4]     chr1 [ 7200000,  9200000]      * |   p36.23   gpos25
  [5]     chr1 [ 9200000, 12700000]      * |   p36.22     gneg
  [6]     chr1 [12700000, 16200000]      * |   p36.21   gpos50
  -------
  seqinfo: 24 sequences from an unspecified genome; no seqlengths
> ## default pre-set color stored in 
> getOption("biovizBase")$cytobandColor
     gneg     stalk      acen      gpos      gvar     gpos1     gpos2     gpos3 
"grey100"  "brown3"  "brown4"   "grey0"   "grey0" "#FFFFFF" "#FCFCFC" "#F9F9F9" 
    gpos4     gpos5     gpos6     gpos7     gpos8     gpos9    gpos10    gpos11 
"#F7F7F7" "#F4F4F4" "#F2F2F2" "#EFEFEF" "#ECECEC" "#EAEAEA" "#E7E7E7" "#E5E5E5" 
   gpos12    gpos13    gpos14    gpos15    gpos16    gpos17    gpos18    gpos19 
"#E2E2E2" "#E0E0E0" "#DDDDDD" "#DADADA" "#D8D8D8" "#D5D5D5" "#D3D3D3" "#D0D0D0" 
   gpos20    gpos21    gpos22    gpos23    gpos24    gpos25    gpos26    gpos27 
"#CECECE" "#CBCBCB" "#C8C8C8" "#C6C6C6" "#C3C3C3" "#C1C1C1" "#BEBEBE" "#BCBCBC" 
   gpos28    gpos29    gpos30    gpos31    gpos32    gpos33    gpos34    gpos35 
"#B9B9B9" "#B6B6B6" "#B4B4B4" "#B1B1B1" "#AFAFAF" "#ACACAC" "#AAAAAA" "#A7A7A7" 
   gpos36    gpos37    gpos38    gpos39    gpos40    gpos41    gpos42    gpos43 
"#A4A4A4" "#A2A2A2" "#9F9F9F" "#9D9D9D" "#9A9A9A" "#979797" "#959595" "#929292" 
   gpos44    gpos45    gpos46    gpos47    gpos48    gpos49    gpos50    gpos51 
"#909090" "#8D8D8D" "#8B8B8B" "#888888" "#858585" "#838383" "#808080" "#7E7E7E" 
   gpos52    gpos53    gpos54    gpos55    gpos56    gpos57    gpos58    gpos59 
"#7B7B7B" "#797979" "#767676" "#737373" "#717171" "#6E6E6E" "#6C6C6C" "#696969" 
   gpos60    gpos61    gpos62    gpos63    gpos64    gpos65    gpos66    gpos67 
"#676767" "#646464" "#616161" "#5F5F5F" "#5C5C5C" "#5A5A5A" "#575757" "#545454" 
   gpos68    gpos69    gpos70    gpos71    gpos72    gpos73    gpos74    gpos75 
"#525252" "#4F4F4F" "#4D4D4D" "#4A4A4A" "#484848" "#454545" "#424242" "#404040" 
   gpos76    gpos77    gpos78    gpos79    gpos80    gpos81    gpos82    gpos83 
"#3D3D3D" "#3B3B3B" "#383838" "#363636" "#333333" "#303030" "#2E2E2E" "#2B2B2B" 
   gpos84    gpos85    gpos86    gpos87    gpos88    gpos89    gpos90    gpos91 
"#292929" "#262626" "#242424" "#212121" "#1E1E1E" "#1C1C1C" "#191919" "#171717" 
   gpos92    gpos93    gpos94    gpos95    gpos96    gpos97    gpos98    gpos99 
"#141414" "#121212" "#0F0F0F" "#0C0C0C" "#0A0A0A" "#070707" "#050505" "#020202" 
  gpos100 
"#000000" 
> 
> 
> ###################################################
> ### code chunk number 2: default
> ###################################################
> autoplot(hg19IdeogramCyto, layout = "karyogram", cytoband = TRUE)
Scale for 'x' is already present. Adding another scale for 'x', which will
replace the existing scale.
> 
> 
> 
> ###################################################
> ### code chunk number 3: change-order
> ###################################################
> library(GenomicRanges)
Loading required package: S4Vectors
Loading required package: stats4

Attaching package: 'S4Vectors'

The following objects are masked from 'package:base':

    colMeans, colSums, expand.grid, rowMeans, rowSums

Loading required package: IRanges
Loading required package: GenomeInfoDb
> hg19 <- keepSeqlevels(hg19IdeogramCyto, paste0("chr", c(1:22, "X", "Y")))
> head(hg19)
GRanges object with 6 ranges and 2 metadata columns:
      seqnames               ranges strand |     name gieStain
         <Rle>            <IRanges>  <Rle> | <factor> <factor>
  [1]     chr1 [       0,  2300000]      * |   p36.33     gneg
  [2]     chr1 [ 2300000,  5400000]      * |   p36.32   gpos25
  [3]     chr1 [ 5400000,  7200000]      * |   p36.31     gneg
  [4]     chr1 [ 7200000,  9200000]      * |   p36.23   gpos25
  [5]     chr1 [ 9200000, 12700000]      * |   p36.22     gneg
  [6]     chr1 [12700000, 16200000]      * |   p36.21   gpos50
  -------
  seqinfo: 24 sequences from an unspecified genome; no seqlengths
> autoplot(hg19, layout = "karyogram", cytoband = TRUE)
Scale for 'x' is already present. Adding another scale for 'x', which will
replace the existing scale.
> 
> 
> ###################################################
> ### code chunk number 4: cyto-normal
> ###################################################
> library(GenomicRanges)
> ## it's a 'ideogram'
> biovizBase::isIdeogram(hg19)
[1] TRUE
> ## set to FALSE
> autoplot(hg19, layout = "karyogram", cytoband = FALSE, aes(fill = gieStain)) +
+   scale_fill_giemsa()
Scale for 'x' is already present. Adding another scale for 'x', which will
replace the existing scale.
Scale for 'x' is already present. Adding another scale for 'x', which will
replace the existing scale.
Warning messages:
1: In getIdeoGR(data) :
  geom(ideogram) need valid seqlengths information for accurate mapping,
                 now use reduced information as ideogram... 
2: In getIdeoGR(data) :
  geom(ideogram) need valid seqlengths information for accurate mapping,
                 now use reduced information as ideogram... 
> 
> 
> ###################################################
> ### code chunk number 5: load-RNAediting
> ###################################################
> data(darned_hg19_subset500, package = "biovizBase")
> dn <- darned_hg19_subset500
> head(dn)
GRanges object with 6 ranges and 10 metadata columns:
      seqnames                 ranges strand |       inchr       inrna
         <Rle>              <IRanges>  <Rle> | <character> <character>
  [1]     chr5 [ 86618225,  86618225]      - |           A           I
  [2]     chr7 [ 99792382,  99792382]      - |           A           I
  [3]    chr12 [110929076, 110929076]      - |           A           I
  [4]    chr20 [ 25818128,  25818128]      - |           A           I
  [5]     chr3 [132397992, 132397992]      + |           A           I
  [6]    chr19 [ 59078471,  59078471]      - |           A           I
              snp        gene      seqReg       exReg             source
      <character> <character> <character> <character>        <character>
  [1]        <NA>        <NA>           O        <NA>           amygdala
  [2]        <NA>        <NA>           O        <NA>               <NA>
  [3]        <NA>        <NA>           O        <NA>     salivary gland
  [4]        <NA>        <NA>           O        <NA> brain, hippocampus
  [5]        <NA>        <NA>           O        <NA>    small intestine
  [6]        <NA>        MZF1           I        <NA>               <NA>
           ests      esta      author
      <integer> <integer> <character>
  [1]         0         0    15342557
  [2]         0         0    15342557
  [3]         0         0    15342557
  [4]         0         0    15342557
  [5]         0         0    15342557
  [6]         0         0    15258596
  -------
  seqinfo: 23 sequences from an unspecified genome; no seqlengths
> ## add seqlengths
> ## we have seqlegnths information in another data set
> data(hg19Ideogram, package = "biovizBase")
> seqlengths(dn) <- seqlengths(hg19Ideogram)[names(seqlengths(dn))]
> ## now we have seqlengths
> head(dn)
GRanges object with 6 ranges and 10 metadata columns:
      seqnames                 ranges strand |       inchr       inrna
         <Rle>              <IRanges>  <Rle> | <character> <character>
  [1]     chr5 [ 86618225,  86618225]      - |           A           I
  [2]     chr7 [ 99792382,  99792382]      - |           A           I
  [3]    chr12 [110929076, 110929076]      - |           A           I
  [4]    chr20 [ 25818128,  25818128]      - |           A           I
  [5]     chr3 [132397992, 132397992]      + |           A           I
  [6]    chr19 [ 59078471,  59078471]      - |           A           I
              snp        gene      seqReg       exReg             source
      <character> <character> <character> <character>        <character>
  [1]        <NA>        <NA>           O        <NA>           amygdala
  [2]        <NA>        <NA>           O        <NA>               <NA>
  [3]        <NA>        <NA>           O        <NA>     salivary gland
  [4]        <NA>        <NA>           O        <NA> brain, hippocampus
  [5]        <NA>        <NA>           O        <NA>    small intestine
  [6]        <NA>        MZF1           I        <NA>               <NA>
           ests      esta      author
      <integer> <integer> <character>
  [1]         0         0    15342557
  [2]         0         0    15342557
  [3]         0         0    15342557
  [4]         0         0    15342557
  [5]         0         0    15342557
  [6]         0         0    15258596
  -------
  seqinfo: 23 sequences from an unspecified genome
> ## then we change order
> dn <- keepSeqlevels(dn, paste0("chr", c(1:22, "X")))
> autoplot(dn, layout = "karyogram")
Scale for 'x' is already present. Adding another scale for 'x', which will
replace the existing scale.
Scale for 'x' is already present. Adding another scale for 'x', which will
replace the existing scale.
> ## this equivalent to 
> ## autoplot(seqinfo(dn))
> 
> 
> ###################################################
> ### code chunk number 6: load-RNAediting-color
> ###################################################
> ## since default is geom rectangle, even though it's looks like segment
> ## we still use both fill/color to map colors
> autoplot(dn, layout = "karyogram", aes(color = exReg, fill = exReg))
Scale for 'x' is already present. Adding another scale for 'x', which will
replace the existing scale.
Scale for 'x' is already present. Adding another scale for 'x', which will
replace the existing scale.
> 
> 
> ###################################################
> ### code chunk number 7: load-RNAediting-color-NA
> ###################################################
> ## since default is geom rectangle, even though it's looks like segment
> ## we still use both fill/color to map colors
> autoplot(dn, layout = "karyogram", aes(color = exReg, fill = exReg)) +
+   scale_color_discrete(na.value = "brown")
Scale for 'x' is already present. Adding another scale for 'x', which will
replace the existing scale.
Scale for 'x' is already present. Adding another scale for 'x', which will
replace the existing scale.
> 
> 
> ###################################################
> ### code chunk number 8: load-RNAediting-color-fake
> ###################################################
> dn2 <- dn
> seqlengths(dn2) <- rep(max(seqlengths(dn2)), length(seqlengths(dn2)) )
> autoplot(dn2, layout = "karyogram", aes(color = exReg, fill = exReg)) 
Scale for 'x' is already present. Adding another scale for 'x', which will
replace the existing scale.
Scale for 'x' is already present. Adding another scale for 'x', which will
replace the existing scale.
> 
> 
> ###################################################
> ### code chunk number 9: plotKaryogram (eval = FALSE)
> ###################################################
> ## plotKaryogram(dn)
> ## plotKaryogram(dn, aes(color = exReg, fill = exReg))
> 
> 
> ###################################################
> ### code chunk number 10: low-default
> ###################################################
> ## plot ideogram
> p <- ggplot(hg19) + layout_karyogram(cytoband = TRUE)
> p
> ## eqevelant autoplot(hg19, layout = "karyogram", cytoband = TRUE)
> 
> 
> ###################################################
> ### code chunk number 11: low-default-addon
> ###################################################
> p <- p + layout_karyogram(dn, geom = "rect", ylim = c(11, 21), color = "red")
Scale for 'x' is already present. Adding another scale for 'x', which will
replace the existing scale.
> ## commented line below won't work
> ## the cytoband fill color has been used already.
> ## p <- p + layout_karyogram(dn, aes(fill = exReg, color = exReg), geom = "rect")
> p
> 
> 
> ###################################################
> ### code chunk number 12: edit-space
> ###################################################
> ## plot chromosome space
> p <- autoplot(seqinfo(dn))
> ## make sure you pass rect as geom
> ## otherwise you just get background
> p <- p + layout_karyogram(dn, aes(fill = exReg, color = exReg), geom = "rect")
Scale for 'x' is already present. Adding another scale for 'x', which will
replace the existing scale.
> values(dn)$pvalue <- rnorm(length(dn))
> p + layout_karyogram(dn, aes(x = start, y = pvalue), ylim = c(10, 30), geom = "line", color = "red")
Scale for 'x' is already present. Adding another scale for 'x', which will
replace the existing scale.
> p
> 
> 
> ###################################################
> ### code chunk number 13: sessionInfo
> ###################################################
> sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 16.04 LTS

locale:
[1] C

attached base packages:
[1] stats4    parallel  stats     graphics  grDevices utils     datasets 
[8] methods   base     

other attached packages:
[1] GenomicRanges_1.24.2 GenomeInfoDb_1.8.1   IRanges_2.6.1       
[4] S4Vectors_0.10.1     ggbio_1.20.1         ggplot2_2.1.0       
[7] BiocGenerics_0.18.0 

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.5                   biovizBase_1.20.0            
 [3] lattice_0.20-33               Rsamtools_1.24.0             
 [5] Biostrings_2.40.2             digest_0.6.9                 
 [7] mime_0.4                      R6_2.1.2                     
 [9] plyr_1.8.4                    chron_2.3-47                 
[11] acepack_1.3-3.3               RSQLite_1.0.0                
[13] httr_1.2.0                    BiocInstaller_1.22.3         
[15] zlibbioc_1.18.0               GenomicFeatures_1.24.3       
[17] data.table_1.9.6              rpart_4.1-10                 
[19] Matrix_1.2-6                  labeling_0.3                 
[21] splines_3.3.1                 BiocParallel_1.6.2           
[23] AnnotationHub_2.4.2           stringr_1.0.0                
[25] foreign_0.8-66                RCurl_1.95-4.8               
[27] biomaRt_2.28.0                munsell_0.4.3                
[29] shiny_0.13.2                  httpuv_1.3.3                 
[31] rtracklayer_1.32.1            htmltools_0.3.5              
[33] nnet_7.3-12                   SummarizedExperiment_1.2.3   
[35] gridExtra_2.2.1               interactiveDisplayBase_1.10.3
[37] Hmisc_3.17-4                  XML_3.98-1.4                 
[39] reshape_0.8.5                 GenomicAlignments_1.8.3      
[41] bitops_1.0-6                  RBGL_1.48.1                  
[43] grid_3.3.1                    xtable_1.8-2                 
[45] GGally_1.1.0                  gtable_0.2.0                 
[47] DBI_0.4-1                     magrittr_1.5                 
[49] scales_0.4.0                  graph_1.50.0                 
[51] stringi_1.1.1                 XVector_0.12.0               
[53] reshape2_1.4.1                latticeExtra_0.6-28          
[55] Formula_1.2-1                 RColorBrewer_1.1-2           
[57] ensembldb_1.4.6               tools_3.3.1                  
[59] dichromat_2.0-0               OrganismDbi_1.14.1           
[61] BSgenome_1.40.1               Biobase_2.32.0               
[63] survival_2.39-5               AnnotationDbi_1.34.3         
[65] colorspace_1.2-6              cluster_2.0.4                
[67] VariantAnnotation_1.18.1     
> 
> 
> 
> 
> 
> dev.off()
null device 
          1 
>