[BioC] ggbio: Separating lines between chromosomes with plotGrandLinear

Julian Gehring julian.gehring at embl.de
Wed Mar 26 15:50:45 CET 2014


Hi Tengfei,

Separating by color works nicely, but becomes problematic here because I
want to encode another entity by color.

Is it possible to add 'vlines' on top of the existing plot?  I have
tried it with

  p + autoplot(x, aes(xintercept = start), geom = "vline", coord = "genome")

but without success.

Best wishes
Julian


On 26/03/14 15:30, Tengfei Yin wrote:
> first existing 'official' solution to separate group easily is to use
> 'color' parameters in "plotGrandLinear" function, you can assign a
> vector of color (2, or 3 or length of chromosome) and this will be
> cycled and assigned to each group
> 
> plotGrandLinear(gr.snp, aes(y = pvalue), color = c("#7fc97f", "#fdc086"))
> 
> I forget to document this color parameters in plotGrandLinear, I do have
> them in the example of manual, but autoplot() doesn't support this
> special color assignment  yet. 
> 
> Inline image 1
> I need to work on a theme() solution if you still want to put line
> between chromosome. 
> 
> cheers
> 
> Tengfei
> 
> 
> 
> On Wed, Mar 26, 2014 at 10:15 AM, Tengfei Yin
> <tengfei.yin at sbgenomics.com <mailto:tengfei.yin at sbgenomics.com>> wrote:
> 
>     oh wait, sorry, you are talking about plotGranlinear, not layout
>     karyogram... I guess I need a coffee in the morning first :) let me
>     check to see if there is any quick workaround. 
> 
>     cheers
> 
>     Tengfei
> 
> 
>     On Wed, Mar 26, 2014 at 10:08 AM, Tengfei Yin
>     <tengfei.yin at sbgenomics.com <mailto:tengfei.yin at sbgenomics.com>> wrote:
> 
>         Hi Julian, 
> 
>         yes, you could use ylim parameter in layout_karyogram() to
>         control this and to layout different group at different height
>         layer by layer, because by default the chromosome height limits
>         are [0, 10], if you set ylim outside the region like [10, 15],
>         it will plot them outside, an example to plot different group at
>         different height is shown below, I know it's just a workaround,
>         I probably need to provide a simpler way
> 
>         ########
>         library(ggbio)
>         data(hg19IdeogramCyto, package = "biovizBase")
>         data(hg19Ideogram, package = "biovizBase")
>         library(GenomicRanges)
>         ##  simul_snp
>         chrs <- as.character(levels(seqnames(hg19IdeogramCyto)))
>         seqlths <- seqlengths(hg19Ideogram)[chrs]
>         set.seed(1)
>         nchr <- length(chrs)
>         nsnps <- 100
>         gr.snp <- GRanges(rep(chrs,each=nsnps),
>                           IRanges(start =
>                                     do.call(c, lapply(chrs, function(chr){
>                                       N <- seqlths[chr]
>                                       runif(nsnps,1,N)
>                                     })), width = 1),
>                           SNP=sapply(1:(nchr*nsnps), function(x)
>         paste("rs",x,sep='')),
>                           pvalue =  -log10(runif(nchr*nsnps)),
>                           group = sample(c("Normal", "Tumor"), size =
>         nchr*nsnps,
>                                          replace = TRUE)
>         )
>         gr.snp
>         ##names(seqlths) <- gsub("chr", "", names(seqlths))
>         seqlths
>         seqlengths(gr.snp) <- seqlths[names(seqlengths(gr.snp))]
>         gr.snp.bac <- gr.snp
>         seqinfo(gr.snp)
>         gr.snp <- keepSeqlevels(gr.snp, c("chr1", "chr2", "chr3", "chr4"))
> 
>         ## above this line is just creating simulated data
>         ## suppose you have your snp data store in gr.snp
>         ## you have to split the group for now, sorry
>         grl.snp <- split(gr.snp, gr.snp$group)
>         grl.snp
> 
>         autoplot(seqinfo(grl.snp)) + layout_karyogram(data =
>         grl.snp[[1]], color = "red", ylim = c(0, 10) ) +
>           layout_karyogram(data = grl.snp[[2]], color = "blue", ylim =
>         c(10, 20) )
> 
>         #########
> 
>         HTH
> 
>         Tengfei
> 
> 
>         On Wed, Mar 26, 2014 at 8:49 AM, Julian Gehring
>         <julian.gehring at embl.de <mailto:julian.gehring at embl.de>> wrote:
> 
>             Hi,
> 
>             The 'plotGrandLinear' or the respective 'autoplot' function
>             of the
>             'ggbio' package make it easy to visualize all the
>             chromosomes of a
>             genomes together.  For example:
> 
>             autoplot(gr.snp, coord = "genome", geom = "point", aes(y =
>             pvalue),
>             space.skip = 0.01) ## taken from 'example(plotGrandLinear'
> 
>             produces a plot for all human chromosomes with vertical
>             lines in the
>             middle of each chromosome.  Can one easily adapt this, in
>             the way that
>             the vertical lines fall between the chromosomes?  This would
>             be helpful
>             for distinguishing/separating them.
> 
>             Best wishes
>             Julian
> 
>             _______________________________________________
>             Bioconductor mailing list
>             Bioconductor at r-project.org <mailto:Bioconductor at r-project.org>
>             https://stat.ethz.ch/mailman/listinfo/bioconductor
>             Search the archives:
>             http://news.gmane.org/gmane.science.biology.informatics.conductor
> 
> 
> 
> 
>         -- 
>         Tengfei Yin, PhD
>         Seven Bridges Genomics
>         sbgenomics.com <http://sbgenomics.com/>
>         625 Mt. Auburn St. Suite #208
>         Cambridge, MA 02138
>         (617) 866-0446
> 
> 
> 
> 
>     -- 
>     Tengfei Yin, PhD
>     Seven Bridges Genomics
>     sbgenomics.com <http://sbgenomics.com/>
>     625 Mt. Auburn St. Suite #208
>     Cambridge, MA 02138
>     (617) 866-0446
> 
> 
> 
> 
> -- 
> Tengfei Yin, PhD
> Seven Bridges Genomics
> sbgenomics.com <http://sbgenomics.com/>
> 625 Mt. Auburn St. Suite #208
> Cambridge, MA 02138
> (617) 866-0446



More information about the Bioconductor mailing list