Software for labwork: repurposing qPCR machines and making complex mixes
qslib: software that adapts the Applied Biosystems QuantStudio 5 qPCR machine for use as a general-purpose programmable temperature control and fluorescence measurement device.
alhambra-mixes: a tool for designing complex, hierarchical mixes of many different combinations of many components, and many different concentrations.
DNA sequence designer: SST-sequence-design
SST-sequence-design is a DNA sequence design and analysis tool for designing single-stranded DNA tiles.
Written in python by Damien Woods, David Doty and Erik Winfree, it was used to design DNA sequences for the following paper:
- Damien Woods*, David Doty*, Cameron Myhrvold, Joy Hui, Felix Zhou, Peng Yin, Erik Winfree. (*Joint first co-authors.) Diverse and robust molecular algorithms using reprogrammable DNA self-assembly.
Nature 567:366–372. 2019. [pdf].
Since then, things have moved on! See Dave Doty's
nuad software below that uses much of the same thermodynaamic principles as
SST-sequence-design but allows specification of much more general DNA systems and has an easier to program interface.
Simulators for abstract models of computation
When proving theorems about theoretical models of computation we sometimes use simulators that help guide our intuition and prove our results.
bbsim: Turing machine simulator that runs in the browser and includes code for several busy beaver Turing machines, as well as busy beaver candidates, such as those in our paper On the hardness of knowing busy beaver values BB(15) and BB(5,4), and other Collatz-problem-related small Turing machines (see our blog post). Source code: https://github.com/tcosmo/bbsim. By Tristan Stérin.
mawatam: a simulator for the Maze-Walking Tile Assembly Model that we introduced in https://arxiv.org/abs/2106.12341 (see our blog post). Source code: https://github.com/tcosmo/mawatam. By Tristan Stérin.
simcqca: a simulator for the Collatz Quasi Cellular Automaton, a model that we introduced in https://arxiv.org/abs/2007.06979 (see our blog post). Source code: https://github.com/tcosmo/simcqca. By Tristan Stérin.
Software that we contribute to and use
DNA sequence designer: nuad
nuad, or NUcleic Acid Designer, and named after Maigh Nuad, the Irish-language word for Maynooth, is a Python library that we use to design DNA sequences. A user writes a python program that specifies thermodynamic-based energy constraints on a DNA nanostructure design, and invokes the library to find suitable DNA sequences. Developement is led by Dave Doty (UC Davis Molecular Computing group), with occasional contributions, and extensive wet-lab testing, by members of our group.
GUI-based design of DNA nanostructures: scadnano
scadnano.org is a browser-based GUI for design of DNA nanostructures.
Developed and maintained by the UC Davis Molecular Computing group, with extensive wet-lab testing by our group. There is also an associated python scripting library.
scadnano has a similar look and feel to
cadnano (https://cadnano.org/), by the Douglas lab at UCSF. See the following publication for details:
- David Doty, Benjamin L Lee, Tristan Stérin. scadnano: A Browser-Based, Scriptable Tool for Designing DNA Nanostructures. DNA26: The 26th International Conference on DNA Computing and Molecular Programming, LIPIcs 174:9:1--9:17, 2020
Software by group members, but no longer actively maintained by us
codenano is a tool for designing DNA nanostructures: the user writes some code to specify DNA helices, DNA strands and hybridization/binding between strands, and the result is viewable in 3D in the browser.
Our blog post gives an overview of codenano's features. The source is on github and crates.io. You're welcome to try it, but code is no longer actively maintained so caveat emptor.
Built by group members Pierre-Étienne Meunier and Nicolas Levy.
pijul is a version control system by former group member Pierre-Étienne Meunier, along with Florent Becker.
A patch-based version control system based on a new datastructure for asynchronous computing, itself suggested by a result from category theory.
Pijul is theoretically correct (i.e. provably satisfies a number of axioms), and fast. The project required us to write other libraries to achieve the theoretical complexity in actual programs:
Sanakirja, a fully transactional key-value store where tables can be forked in O(log n), where n is the number of bindings in the store.
Thrussh, an SSH library handling both the client side and server side of the SSH 2 protocol.
The Nest, a hosting platform for Pijul repositories.
The whole project is written in Rust.
Pijul was featured in the following software conferences: