Easily construct and normalize base substitution spectra including the classic 96 trinucleotide base substitution spectra as made famous by Alexandrov _et. al._ (2013).
python
import numpy
from snv_spectrum import plot_spectrum
spectrum = Spectrum(k=3, reference_notation='pyrimidine')
for snv, count in zip(spectrum.substitutions, range(96)):
spectrum[snv] = numpy.random.randint(20)
fig, axes = plot_spectrum(spectrum, kind='density')
![demo-plot-random](https://user-images.githubusercontent.com/4634699/36347003-b17c4d86-1400-11e8-911f-dd64bbafc541.png)