"""Simple gel simulation with gelsimulation.py.
This example shows how to plot the the digestion patterns produced by different
restriction enzymes on a same DNA sequence.
"""
import itertools
from bandwagon import (
BandsPattern,
BandsPatternsSet,
LADDER_100_to_4k,
compute_digestion_bands,
)
with open("example_sequence.txt", "r") as f:
sequence = f.read()
enzymes = "EcoRI", "EcoRV", "BamHI", "XhoI"
mixes = [[e] for e in enzymes] + list(itertools.combinations(enzymes, 2))
patterns = [
BandsPattern(
compute_digestion_bands(sequence, mix, linear=True),
ladder=LADDER_100_to_4k,
label=" + ".join(mix),
label_fontdict={"rotation": 40, "size": 9},
)
for mix in mixes
]
patterns_set = BandsPatternsSet(
patterns=[LADDER_100_to_4k] + patterns,
ladder=LADDER_100_to_4k,
label="Digestion results",
ladder_ticks=3,
)
ax = patterns_set.plot()
ax.figure.savefig("mixed_digestions.png", bbox_inches="tight", dpi=120)