Create interactive visualisations that summarise mutational signature analyses
You can install the development version of sigvis like so:
if (!require("pak", quietly = TRUE))
install.packages("pak")
pak::pak("selkamand/sigverse")library(sigvis)
library(sigstash)
# Load Signature
signatures <- sig_load("COSMIC_v3.3.1_SBS_GRCh38")
# Select just SBS2
SBS2 <- signatures[["SBS2"]]
# Plot
sig_visualise(signature = SBS2, title = "SBS2")
#> ✔ All channels matched perfectly to set [sbs_96]. Using this set for sort order
#> ✔ All types matched perfectly to set [sbs_type]. Using this set for sort order
#> ✔ Types matched perfectly to palette [snv_type]# Load library containing results of TCGA mutational signature analysis
library(TCGAcatalogues)
# Load a catalogue
tally <- catalogues_load("BRCA", type = "SBS_96")
# Select a single sample of interest
sample = "TCGA-5L-AAT1-01A-12D-A41F-09"
tally_single_sample <- tally[[sample]]
tally_single_sample
#> # A tibble: 96 × 4
#> channel type fraction count
#> <chr> <chr> <dbl> <int>
#> 1 A[C>A]A C>A 0.00151 3
#> 2 A[C>A]C C>A 0.00151 3
#> 3 A[C>A]G C>A 0.000503 1
#> 4 A[C>A]T C>A 0 0
#> 5 A[C>G]A C>G 0.00151 3
#> 6 A[C>G]C C>G 0.00151 3
#> 7 A[C>G]G C>G 0 0
#> 8 A[C>G]T C>G 0.00201 4
#> 9 A[C>T]A C>T 0.00402 8
#> 10 A[C>T]C C>T 0.00151 3
#> # ℹ 86 more rows
# Visualise Observed Mutational Profile
sig_visualise(tally_single_sample, class = "catalogue", title = sample)
#> ✔ All channels matched perfectly to set [sbs_96]. Using this set for sort order
#> ✔ All types matched perfectly to set [sbs_type]. Using this set for sort order
#> ✔ Types matched perfectly to palette [snv_type]Visualise the catalogue expected from a signature model, where signature ‘SBS2’ explains 60% of the mutations in a sample, and ‘SBS13’ explains the remaining 40%
# Load sigstats library for combining signature models
library(sigverse)
#> ── Attaching core sigverse packages ───────────────────── sigverse 0.0.0.9000 ──
#> ✔ sigshared 0.0.0.9000 ✔ sigstats 0.0.0.9000
#> ✔ sigsim 0.0.0.9000 ✔ sigstory 0.0.0.9000
# Visualise a model (combination of signatures)
model = sig_combine(signatures, model = c('SBS2' = 0.6, 'SBS13' = 0.4), format = "combined")
sig_visualise(model, class = 'model', title = "Model", subtitle = "Combination of SBS2 (60%) and SBS13 (40%)")
#> ✔ All channels matched perfectly to set [sbs_96]. Using this set for sort order
#> ✔ All types matched perfectly to set [sbs_type]. Using this set for sort order
#> ✔ Types matched perfectly to palette [snv_type]Visualise the catalogue expected from a signature model, where signature ‘SBS2’ explains 60% of the mutations in a sample, and ‘SBS13’ explains the remaining 40%, but overlay on top of the observed mutational process
library(TCGAcatalogues) # For pulling example TCGA catalogue data
# Load Signature
signatures <- sig_load("COSMIC_v3.3.1_SBS_GRCh38")
# Create a model (combination of signatures)
model <- sig_combine(signatures, model = c('SBS2' = 0.6, 'SBS13' = 0.4), format = "signature")
# Load a catalogue (Tally of variant types)
tally <- catalogues_load("BRCA", type = "SBS_96")
# Get tally of a single sample
sample = "TCGA-5L-AAT1-01A-12D-A41F-09"
tally_single_sample <- tally[[sample]]
# Visualise the overlay
sig_visualise_compare_reconstructed_to_observed(
catalogue = tally_single_sample,
signature = model
)
#> ✔ All channels matched perfectly to set [sbs_96]. Using this set for sort order
#> ✔ All types matched perfectly to set [sbs_type]. Using this set for sort order
#> ✔ Types matched perfectly to palette [snv_type]# Small Example
bootstraps <- example_bootstraps()
sig_visualise_bootstraps(bootstraps)# Larger (Horizontal) Example
colo829_bootstraps <- example_bootstraps_colo829()
sig_visualise_bootstraps(colo829_bootstraps, min_contribution_threshold = 0.05, pvalue = 0.05, horizontal = TRUE)Visualise the contributions of a signature across an entire cohort (or a collection of bootstrap experiments)
dotplot_data <- example_dotplot_data()
sig_visualise_dotplot(
dotplot_data,
col_sample = "sample",
col_contribution = "contribution",
col_fill = "sample_info",
palette_fill = c(sample_of_interest = "#D55E00", "cancer_type"="#009E73", "other" = "#000000"),
sort_by = "palette_fill",
xlab = "SBS2"
)Rendering a minimal version of a signature or catalogue with an accompanying proportion bar can be highly informative. This visualization technique allows you to display a signature from your model alongside the proportion of all mutations that the signature explains. Additionally, if you’ve conducted a similarity analysis on mutation catalogues, you can use these plots to visualize both the most similar sample’s catalogue and its cosine similarity to your reference sample.
For practical examples of how these plots are utilized, see sigstory
# Visualize Signature SBS2 that explains 60% of a sample
sig_visualise_minified(signature = SBS2, proportion = 0.6)
#> ✔ All channels matched perfectly to set [sbs_96]. Using this set for sort order
#> ✔ All types matched perfectly to set [sbs_type]. Using this set for sort order
#> ✔ Types matched perfectly to palette [snv_type]# Visualize a sample catalogue with a cosine similarity of 0.3 to a sample of interest,
sig_visualise_minified(
tally_single_sample,
proportion = 0.3,
format = fmt_round(digits = 2)
)
#> ✔ All channels matched perfectly to set [sbs_96]. Using this set for sort order
#> ✔ All types matched perfectly to set [sbs_type]. Using this set for sort order
#> ✔ Types matched perfectly to palette [snv_type]model = c('SBS2' = 0.6, 'SBS13' = 0.2)
sig_visualise_donut(model, palette = c(SBS2="#E72826", SBS13="black", "Unexplained" = "grey90"))








