"""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)
