supersigs
Workflows
Standard Workflow
Preprocess mutation data, build a trinucleotide feature matrix, and train a supervised mutational signature (SuperSig).
library(supersigs)
library(VariantAnnotation)
library(BSgenome.Hsapiens.UCSC.hg19)
library(dplyr)
# 1. Read VCF and add patient age to colData
fl <- system.file("extdata", "chr22.vcf.gz", package="VariantAnnotation")
vcf <- VariantAnnotation::readVcf(fl, "hg19")
vcf <- vcf[, 1]
positions <- geno(vcf)$GT != "0|0"
vcf <- vcf[positions[, 1],]
colData(vcf)$age <- 50
# 2. Process VCF to a simplified data frame
dt <- process_vcf(vcf)
# 3. Transform mutations into a trinucleotide matrix
input_dt <- make_matrix(dt)
# 4. Add the indicator variable (IndVar)
input_dt <- input_dt %>%
mutate(IndVar = c(1, 1, 1, 0, 0)) %>%
relocate(IndVar)
# 5. Train the supervised signature
set.seed(1)
supersig <- get_signature(data = input_dt, factor = "Smoking")
# 6. Simplify the signature for visualization
features <- simplify_signature(object = supersig, iupac = FALSE)
Note: Input is a VCF object or a data frame of mutations with sample IDs, ages, and genomic coordinates; output is a trained SuperSig S4 object and simplified signature features.
Partial Signature Adjustment
Remove the contribution of a supervised signature from a mutation data frame to adjust for a confounding factor.
library(supersigs)
# Adjust the mutation matrix by removing the signature's contribution
adjusted_dt <- partial_signature(data = input_dt, object = supersig)
Note: Input is a feature count data frame and a trained SuperSig object; output is an adjusted mutation feature data frame.
Predict Supersig
Apply a trained or pre-trained SuperSig to a new dataset to predict classification scores.
library(supersigs)
library(dplyr)
# Apply a trained SuperSig to a new dataset
newdata <- predict_signature(supersig, newdata = input_dt, factor = "Smoking")
# Or use a pre-trained signature from supersig_ls
newdata_pretrained <- predict_signature(supersig_ls[["SMOKING (LUAD)"]], newdata = input_dt, factor = "Smoking")
Note: Input is a trained SuperSig object (or pre-trained from supersig_ls) and a new feature count data frame; output is a data frame containing predicted classification scores and feature counts.
When to Use
- Supervised Signature Generation: Generating supervised mutational signatures ("SuperSigs") from single nucleotide variants (SNVs) in cancer genomes (
get_signature). - Exposure Classification: Predicting exposure classification scores on new datasets using custom or pre-trained TCGA signatures (
predict_signature,supersig_ls). - Confounder Adjustment: Adjusting mutation datasets to remove confounding factors (e.g., aging) before downstream signature analysis (
partial_signature).
When NOT to Use
- Unsupervised Deconvolution: For unsupervised mutational signature deconvolution (e.g., standard NMF-based signature extraction).
- Missing Clinical Metadata: When patient age or clinical exposure indicators are completely unavailable.
Data Requirements
- Input mutation data containing
sample_id,age,chromosome,position,ref, andaltcolumns. - A supported reference genome package installed (e.g.,
BSgenome.Hsapiens.UCSC.hg19orBSgenome.Hsapiens.UCSC.hg38) for trinucleotide context extraction.
Key Parameters
- data: Input data frame containing
IndVar,sample_id,age, and 96 trinucleotide mutation count columns inget_signature. - factor: The clinical factor or exposure of interest (e.g., "Smoking", "Age") in
get_signatureandpredict_signature. - object: A trained
SuperSigS4 object insimplify_signatureandpartial_signature. - iupac (FALSE): Logical indicating whether to use IUPAC labels when simplifying signatures in
simplify_signature. - newdata: New dataset to predict on in
predict_signature.
Best Practices
- Ensure the VCF object contains patient age in
colData(vcf)$agebefore callingprocess_vcf. - Set a random seed (
set.seed) before runningget_signatureto ensure reproducibility of cross-validation folds. - Use
simplify_signature(..., iupac = TRUE)to group trinucleotide features into more interpretable IUPAC representations for plotting. - Adjust for confounding factors like aging using
partial_signaturebefore learning other signatures.
Common Pitfalls
- Missing IndVar column:
get_signaturerequires a logical/numeric indicator variable namedIndVarin the input data frame. Fix: Add and relocate theIndVarcolumn usingdplyr::mutateanddplyr::relocate. - Reference genome mismatch: Using the wrong reference genome version (e.g., hg19 vs hg38) during
make_matrix. Fix: Ensure the correctBSgenomepackage is loaded and matches the coordinates in your mutation data.
Alternatives
- SomaticSignatures: For unsupervised mutational signature analysis.
- MutationalPatterns: For comprehensive mutational signature extraction and visualization.
Citations
- Afsari, B. et al. (2021). Supervised mutational signatures for cancer genomics. eLife.
References
- Homepage: bioconductor.org/packages/supersigs
- Vignette: https://bioconductor.org/packages/release/bioc/vignettes/supersigs/inst/doc/supersigs.html