So after giving a couple of exploratory talks in the lunch meetings, I wrote up the ideas in this paper in the first spatial computing workshop, and then went ahead and and actually built the thing a couple years later. We've been refining it ever since, and the lovely thing about the BioCompiler is that it takes all of the guesswork out of designing biological computations. Most of the really effective genetic regulations that we can engineer with right now are repression, which means that designs are typically implemented in negative logic. For example, "A and B" might be implemented as "not either not A or not B", which is just much harder for us poor humans to think about, and means that, for me at least, anything over a few regulatory elements is almost certain to contain mistakes in the first design. When you're dealing with biological experiments, where it can be weeks from design to the very first test, you really don't want to get it wrong the first time.
So the BioCompiler lets us just sidestep that whole mess: you write the program in normal red-blooded American positive logic, and it turns all inside out on its own and then optimizes. Won't work for every program, but for the range that it knows how to work in, it's beautiful. In an instant, out of the BioCompiler comes the new design and also a simulation file for testing it in silico.
The only problem is that the output of the BioCompiler looks like this:
|Just the top bit of the machine-readable XML generated by BioCompiler for an SR-latch circuit|
Bleah. Sure, there's a genetic regulatory network buried in there, but to actually communicate it to another human we need to turn that soup into a diagram, and that's not only a pain but another really good way to introduce errors into the works.
No more. I just recently sat down with the manual for GraphViz and figured out how to do build complicated custom nodes, with which a diagram can be created. Then I hacked a new output option into the biocompiler, for creating GraphViz diagrams. The result is still a bit rough on the artistic front, but intelligible and can turn into an SVG file for editing. Booyah!
|Diagram of a circuit for computing ordering relations|