mSigSDK

Every cancer carries fingerprints of what damaged its DNA. mSigSDK reads those fingerprints.

Try it: read a fingerprint, then blend two causes

The charts below are drawn in this page by mSigSDK’s own COSMIC SBS96 renderer, the same component the tutorial site uses, from the real COSMIC Mutational Signatures v3.6 profiles. Pick a cause to read its 96-channel fingerprint, then blend two causes and watch the fingerprint change.

Data source shipped on this page: the COSMIC Mutational Signatures v3.6 catalog (GRCh37 SBS96 file, downloaded from cancer.sanger.ac.uk), profiles SBS1, SBS4, and SBS7a, values exactly as published. The SDK’s bundled demo data ships only small teaching spectra, so this page uses the catalog file directly. COSMIC signature profiles are © COSMIC, Wellcome Sanger Institute: free for research and academic use with attribution; commercial use requires a separate license from COSMIC. Renderer and SDK code: mSigSDK, MIT license, copied from episphere.github.io/msig.

Explore: 96-channel signatures

Aging — clock-like C>T changes that accumulate in stem cells over a lifetime; found in nearly every cancer.

Both charts share one fixed vertical scale: percent of mutations, 0% to 36.5% (36.5% is the tallest bar in these profiles, SBS1 at A[C>T]G). The scale never changes when you switch causes or blend, so bar heights can be compared across both charts. Each chart is wide so all 96 trinucleotide contexts stay labeled; scroll it sideways on a narrow screen.

Mixture: blend two causes

Real cancers are mixtures. Choose both causes, then set the share. The blend redraws live.

First cause
Second cause

Aging 60% · Smoking 40%

Blend shown: 60% Aging (SBS1) and 40% Smoking (SBS4). The two shares always add to 100%.

Client
National Cancer Institute, NIH (Division of Cancer Epidemiology and Genetics)
Years
2021 to 2026
Role
First and corresponding author; lead developer
Part of
Episphere research software, NCI

Browser-native computation of mutational signatures: four cancer-signature tools, one browser tab, zero installs, and a clear view of where they disagree.

Mutational signatures are how we read a tumor's history: the pattern of DNA typos a cancer carries points back to what caused them, from tobacco smoke to a broken repair pathway. The catch is that the field reads those patterns with several different software tools, and the tools do not always agree. At the National Cancer Institute I built mSigSDK, a JavaScript library that runs four of those tools side by side in a web browser, with no installation and no data leaving the machine, so a researcher can see the agreement and the disagreement in one place. It was published in BMC Bioinformatics in 2026.

Evidence

Paper: Ge A, Zhang T, Martins YC, et al., “mSigSDK: browser-native computation of mutational signatures,” BMC Bioinformatics 2026, DOI 10.1186/s12859-026-06681-z. Project site: episphere.github.io/msig. Code (MIT): github.com/episphere/msig. Documentation: episphere.github.io/msig/docs.

The setup

A tumor's DNA keeps a record of what damaged it. Sunlight, tobacco smoke, and the cell's own copying errors each leave a different pattern of typos, called a mutational signature. A spectrum is a tumor's pattern, an exposure is how much of a known signature it contains, and the COSMIC catalog is the reference shelf of known patterns that a tumor's pattern gets matched against.

Presenting problem

Mature tools exist, but each needs a local install and its own input format, so triangulation across tools is expensive and rare. There was also no standard machine-readable format recording an analysis's parameters, review evidence, and provenance, so results were hard to audit or carry between tools. Most researchers ran one tool and trusted it, and the paper shows the choice of tool changes the answer.

What I built

A modular JavaScript SDK loaded by a single dynamic import, with spectra and MAF rows staying on the device and a strict-local mode that blocks even public-data lookups. It runs four established tools through one adapter layer: SigProfilerAssignment, MuSiCal, deconstructSigs, and sigminer. It adds its own NNLS fitting, NMF-based exploratory extraction, a MAF-to-spectrum converter, rule-based review evidence, and schema-validated portable reports. Page load to a rendered local report takes about 1.82 seconds.

The disagreement is the finding

On 2,700 synthetic spectra with known truth, every tool's exposure estimates stayed close (mean cosine above 0.96), but at 10% noise the tools' calls for which signatures are active ranged from F1 0.532 to 0.924. On the real PCAWG cohort the four tools called between 4.13 and 17.39 active signatures per sample, while all of them rebuilt the spectra well (cosine 0.982 to 0.994). Same data, four different answers to “what caused this cancer,” all numerically tidy.

In the 38 lung spectra, SBS4, the tobacco-linked signature, was the largest single fitted signature, and raising the reporting cutoff from 0 to 5% cut the mean number of reported signatures more than six-fold while costing less than 0.04 of reconstruction cosine.

Validation

Each adapter reproduced its package's own local results on 38 public PCAWG lung adenocarcinoma SBS96 spectra (exact for three tools, floating-point precision for the fourth). The MAF converter matched SigProfilerMatrixGenerator exactly on the tested SBS96, SBS1536, DBS78, and ID83 fixtures.

Discharge summary

Published in BMC Bioinformatics (2026), MIT-licensed and public at episphere.github.io/msig, with documented API and worked notebooks. The demo at the top of this page runs the tutorial’s own chart component in this page: the SDK’s SBS96 renderer drawing the real COSMIC v3.6 profiles. mSigPortal (analysistools.cancer.gov) is related work only: a separate NCI portal and a separate manuscript, under review at Cancer Research; here it appears only as a public data source the SDK reads from.

What I would do differently

The adapter fidelity checks rest on one tumor type, one profile type, and one catalog, so I would widen the benchmark before claiming the browser paths match everywhere. The tested browsers are desktop Chrome, Edge, and Firefox (Safari itself was not tested, only a WebKit-family engine), so mobile and Safari support is still an open job. And I would ship the disagreement demo first, because it teaches the point faster than any methods text.