Interactive, zoomable GISTIC copy-number landscapes in R
Source:vignettes/gistic-plots.Rmd
gistic-plots.RmdgisticChromPlot() is an interactive counterpart to
maftools::gisticChromPlot(). Amplifications grow upward,
deletions grow downward, and a compact chromosome strip keeps the two
profiles aligned while the shared genomic scale is zoomed or panned.
This makes it possible to move from the genome-wide copy-number
landscape into a narrow amplification or deletion peak without redrawing
the plot.
Read standard GISTIC output
MutGlyph accepts the same GISTIC object produced by
maftools::readGistic(). This example uses the small TCGA
acute myeloid leukemia GISTIC result bundled with maftools.
library(MutGlyph)
gistic <- maftools::readGistic(
gisticDir = system.file("extdata", package = "maftools"),
isTCGA = TRUE,
verbose = FALSE
)
gisticChromPlot(gistic, height = 300)Try the plot: Scroll or pinch to zoom into a GISTIC peak, drag to pan, and hover over intervals for genomic coordinates, G-scores, q-values, and alteration frequencies.
The two profiles use the same G-score domain, making amplification
and deletion magnitudes directly comparable. Intervals passing
fdrCutOff are drawn with the amplification or deletion
color; other intervals use an opaque context color. Drawing every
interval exactly once avoids alpha-blending artifacts where narrow
rectangles overlap. By default, the five significant cytobands with the
lowest q-values are labelled.
Choose bands and styling
Use markBands = "all" to label every significant
cytoband, or supply selected names. The familiar maftools arguments
retain their usual meaning where they fit the interactive
composition.
Custom genomic annotations are supplied as a regular data frame. Here the narrowest high-scoring intervals overlap KMT2A and ERG. The coordinates below are the corresponding NCBI RefSeq gene ranges on GRCh37/hg19 (KMT2A, ERG). Labels are placed at the highest G-score interval overlapping each range.
gene_annotations <- data.frame(
chromosome = c("chr11", "chr21"),
start = c(118307207, 39739183),
end = c(118397547, 40033707),
label = c("KMT2A", "ERG"),
event_type = c("Amp", "Amp")
)
gisticChromPlot(
gistic,
fdrCutOff = 0.05,
markBands = c("5q31.2", "7q32.3", "17q11.2"),
annotations = gene_annotations,
color = c(Amp = "#E45756", Del = "#4C78A8"),
nonSignificantColor = "lightgray",
height = 300
)Hovering over a score interval reports its genomic coordinates, G-score, q-value, mean amplitude, and alteration frequency. Cytoband labels provide peak-level q-values and sample and gene counts. Only these compact score and summary fields are embedded; the large sample-level lesion matrix is omitted from the HTML widget.
Use a genomic axis at close zoom levels
The chromosome strip gives useful whole-genome context but becomes
less useful when zooming into a small interval. Set
chromosomeTrack = "axis" to omit the strip and place a
regular zoom-aware genomic axis below the deletion profile.
gisticChromPlot(
gistic,
chromosomeTrack = "axis",
region = "chr21:5,000,000-48,000,000",
height = 300
)