grl2df | R Documentation |
GRangesList to data.frame for ggplot2
grl2df(
grl,
keepGRvalues = TRUE,
keepGRLvalues = FALSE,
addGaps = TRUE,
width = 0.6,
widthV = c(exon = 0.6, cds = 0.6, noncds = 0.3, intron = 0.01, gap = 0.01, `NA` = 0.5),
width_colname = c("subclass", "feature_type"),
shape = c("rectangle", "junction"),
baseline = NULL,
scoreColname = "score",
sampleColname = "sample_id",
scoreArcMinimum = 200,
scoreFactor = 1,
scoreArcFactor = 0.5,
doStackJunctions = TRUE,
strandedScore = TRUE,
ref2c = NULL,
verbose = FALSE,
...
)
grl |
|
keepGRvalues , keepGRLvalues |
|
addGaps |
|
width |
|
widthV |
|
width_colname |
when |
shape |
|
scoreColname , scoreArcMinimum , scoreFactor , scoreArcFactor |
|
sampleColname |
|
doStackJunctions |
|
ref2c |
optional output from |
verbose |
|
... |
additional arguments are passsed to relevant downstream functions. |
This function central to other plotting functions for GRanges and GRangesList objects. It currently has two modes:
shape="rectangle"
is intended for
exons/peaks/regions, for example plotting exons in a gene structure,
or plotting ChIP-seq peaks.
shape="junction"
is intended for splice junctions, and
returns two polygons that join junction ends with a the middle
point raised above both baselines. The polygon height is determined
by the score, resulting in visual reinforcement of the number
of splice junction reads, usually compared to the sequence read
coverage at adjacent exons.
An interesting argument is baseline
which can be a named vector
of baseline y-axis values for each GRanges entry in the grl
GRangesList object. For example, it can be used to shift exons
up or down on the y-axis to make alternative exons more visibly
distinct. When used for Sashimi plots, it should also be
supplied to prepareSashimi()
or exoncov2polygon()
so
the coverages and splice junctions have consistent y-axis baselines.
When chromosome coordinates are compressed (to reduce the visible
width of introns) it affects the midpoint of splice junction arcs,
therefore ref2c
should be supplied so the arcs are defined
using compresssed coordinates.
data.frame
with x,y
coordinates, and id
which is used
to group polygon coordinates when used with ggplot2::geom_polygon()
or ggforce::geom_shape()
. When shape="rectangle"
the colnames
include grl_name
which are names of the input GRangesList
names(grl)
; gr_name
which are names of the GRanges entries; and
other columns from the input GRanges entries. When shape="junction"
the data includes two polygons per junction, intended to be used
with geom_diagonal_wide_arc()
for each side in order to
produce a ribbon arc. The data also includes sample_id
which is
helpful for keeping data distinct when derived from multiple
samples.
Other jam GRanges functions:
addGRLgaps()
,
addGRgaps()
,
annotateGRLfromGRL()
,
annotateGRfromGR()
,
assignGRLexonNames()
,
closestExonToJunctions()
,
combineGRcoverage()
,
exoncov2polygon()
,
findOverlapsGRL()
,
flattenExonsBy()
,
getFirstStrandedFromGRL()
,
getGRLgaps()
,
getGRcoverageFromBw()
,
getGRgaps()
,
jam_isDisjoint()
,
make_ref2compressed()
,
sortGRL()
,
spliceGR2junctionDF()
,
stackJunctions()
Other jam plot functions:
bgaPlotly3d()
,
factor2label()
,
gene2gg()
,
jitter_norm()
,
plotSashimi()
,
prepareSashimi()
,
stackJunctions()
Other splicejam core functions:
exoncov2polygon()
,
gene2gg()
,
make_ref2compressed()
,
plotSashimi()
,
prepareSashimi()
suppressPackageStartupMessages(library(GenomicRanges));
suppressPackageStartupMessages(library(jamba));
gr <- GenomicRanges::GRanges(seqnames=rep(c("chr1"), 7),
ranges=IRanges::IRanges(start=c(50, 100, 1300, 2500, 23750, 24900, 25000),
end=c(100, 150, 1450, 2600, 23800, 25000, 25200)),
strand=rep("+", 7),
feature_type=rep(c("noncds", "cds", "noncds"), c(1,5,1)));
names(gr) <- jamba::makeNames(rep("exon", 7));
grldf <- grl2df(gr, addGaps=TRUE);
gg1 <- ggplot2::ggplot(grldf, ggplot2::aes(x=x, y=y, group=id)) +
ggforce::geom_shape(ggplot2::aes(fill=feature_type)) +
colorjam::theme_jam()
print(gg1);
## For fun, compress the introns and plot again.
## This method uses x-axis breaks at the exon boundaries.
ref2c <- make_ref2compressed(gr);
gg2 <- gg1 +
ggplot2::scale_x_continuous(trans=ref2c$trans_grc) +
colorjam::theme_jam()
print(gg2);
## data can also be plotted using coord_trans()
## the main difference is that x-axis breaks are defined before the
## transformation, which can result in non-optimal placement
gg3 <- gg1 +
ggplot2::coord_trans(x=ref2c$trans_grc) + colorjam::theme_jam();
print(gg3);
## An example showing splice junction data
data(test_junc_wide_gr);
junc_wide_df <- grl2df(test_junc_wide_gr, shape="junction");
ggWide1 <- ggplot2::ggplot(junc_wide_df,
ggplot2::aes(x=x, y=y, group=gr_name, fill=gr_name, color=gr_name)) +
splicejam::geom_diagonal_wide_arc() +
colorjam::theme_jam() +
colorjam::scale_fill_jam(alpha=0.7) +
colorjam::scale_color_jam() +
ggplot2::xlab("chr1") +
ggplot2::ggtitle("junctions (full intron width)")
print(ggWide1);
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.