DNA Computation Simulator in Python

Here is a fairly simple DNA Computation Simulator, that I wrote for Molecular and Quantum Computation.

It is not much to look at when running, so really it is only useful if you actually examine the code to see what is happening.

The crux of my approach in writing the simulator is generating all valid paths (below a maximum size) within a directed graph, and turning those paths into "DNA" strands that can be filtered for various things (such as length, start pattern, end pattern etc). This therefore lets us simulate the "computation by carving" aspect of DNA Computers, rather than the random/statistical/non-deterministic aspect.

DNASim module.
The main utility functions for filtering test tubes. Also contains functions for generating test tubes full of "DNA" that represent paths in a directed graph.
Adelman module.
Uses the DNASim module to find hamiltonion paths in a graph. Provides a function "run" that can be used to search a graph.
SAT module.
Uses the DNASim module to solve boolean satisfiability problems.