SpliceWiz is a graphical interface for differential alternative splicing and visualization in R. It differs from other alternative splicing tools as it is designed for users with basic bioinformatic skills to analyze datasets containing up to hundreds of samples! SpliceWiz contains a number of innovations including:

  • Super-fast handling of alignment BAM files using ompBAM, our developer resource for multi-threaded BAM processing,
  • Alternative splicing event filters, designed to remove unreliable measurements prior to differential analysis, which improves accuracy of reported results.
  • Group-averaged coverage plots: publication-ready figures to clearly visualize differential alternative splicing between biological / experimental conditions
  • Seamless storage and recall of sequencing coverage, using the COV format that stores strand-specific coverage typical of current RNA-seq protocols
  • Interactive figures, including scatter and volcano plots, heatmaps, and scrollable coverage plots, powered using the shinyDashboard interface

This vignette is a runnable working example of the SpliceWiz workflow. The purpose is to quickly demonstrate the basic functionalities of SpliceWiz.

We provide here a brief outline of the workflow for users to get started as quickly as possible. However, we also provide more details for those wishing to know more. Many sections will contain extra information that can be displayed when clicked on, such as these:

Click on me for more details
In most sections, we offer more details about each step of the workflow, that can be revealed in text segments like this one. Be sure to click on buttons like these, where available.

What’s New?

What’s New: edgeR-based differential alternative splicing event analysis (version 1.1.3+)
edgeR-based differential alternative splicing event analysis is now available! We find that edgeR deals better with events zero or near-zero junction counts, whereas other methods under-estimate variance at low counts. This leads to lower false positives with low-expressing events or with PSI close to 0 or 1.

edgeR-based wrappers ASE_edgeR() and ASE_edgeR_timeseries() work identically to limma (syntax-wise)

We have also implemented GLM-based edgeR-wrapper functions. Please refer to the relevant documentation to view a worked example:


What’s New: Visualising junction reads in coverage plots (version 0.99.5+)
In version 0.99.5, SpliceWiz visualises split/junction reads in individual samples and in sample groups

For individual sample coverage plots (i.e. when condition is not set), junction counts for each sample are plotted. Samples with low junction counts (less than 0.01x of the track height) are omitted to reduce clutter.

For group-normalized coverage plots (where coverage of multiple samples in a condition group are combined), junctions are instead labeled by their “provisional PSIs”. These PSIs are calculated per junction (instead of per ASE). This is done by determining the ratio of junction counts as a proportion of all junction reads that share a common exon cluster as the junction being assessed.

TL/DR - how to enable junction plotting

  • To enable plotting of junctions, set plotJunctions = TRUE from within plotCoverage()

# Retrieve example NxtSE object
se <- SpliceWiz_example_NxtSE()

# Assign annotation of the experimental conditions
colData(se)$treatment <- rep(c("A", "B"), each = 3)

# Return a list of ggplot and plotly objects, also plotting junction counts
p <- plotCoverage(
    se = se,
    Event = "SE:SRSF3-203-exon4;SRSF3-202-int3",
    tracks = colnames(se)[1:4], 
        ## NEW ##
    plotJunctions = TRUE
#> Warning in geom_line(data = dfJn, aes_string(x = "x", y = "yarc", group = "junction", : Ignoring unknown aesthetics: label
#> Ignoring unknown aesthetics: label
#> Ignoring unknown aesthetics: label
#> Ignoring unknown aesthetics: label
if(interactive()) {
    # Display as plotly object
} else {
    # Display as ggplot