David Doty

The GitHub page for our group has all of our publicly available source code.


scadnano (scriptable cadnano, documentation and source code) is a computational tool for designing synthetic DNA structures, such as DNA origami. It reproduces many features of cadnano, which is an independent project developed by the Douglas lab at UCSF. scadnano runs entirely in the browser, with no software installation required. scadnano designs, while they can be edited manually, can also be created and edited by a well-documented Python scripting library, to help automate tedious tasks.

If you find scadnano useful in a scientific project, please cite its associated paper:

scadnano: A browser-based, scriptable tool for designing DNA nanostructures.
David Doty, Benjamin L Lee, and Tristan Stérin.
DNA 2020: Proceedings of the 26th International Conference on DNA Computing and Molecular Programming.
[ paper | BibTeX ]

Below are some relevant links.

The scadnano stable version matches what is on the main branch of the web interface code repository. The scadnano dev version matches what is on the dev branch of the web interface code repository. Its releases are explained on the releases page. When issues are handled in a release, they are closed when the changes make their way to the main branch. If an issue is handled in the dev branch, the issue remains open, but you will see a comment that looks something like this: "dave-doty added a commit that referenced this issue 17 hours ago @dave-doty make width of File menu just enough to fit all entries on one line; fixes #339". These comments can help you decide if you want to use the latest version of scadnano (https://scadnano.org/dev), which has fixed an issue, before it makes its way to the stable version (https://scadnano.org).


nuad (nucleic acid designer) is a computational tool for designing DNA sequences for use in DNA nanotechnology experiments. It is not a standalone program, unlike other DNA sequence designers such as NUPACK. Instead, it attempts to be more expressive than existing DNA sequence designers, at the cost of being less simple to use. The dsd library helps you to write your own DNA sequence designer in Python, in case existing designers cannot capture the particular constraints of your project. The API documentation is on readthedocs: https://nuad.readthedocs.io/

nuad has no associated paper yet, but we will write one eventually. If you use it for a scientific project, please check back here or at the GitHub site to see if there is a paper to cite.


ppsim (population protocol simulator) is a simulation and visualization tool for population protocols, a subset of chemical reaction networks with all reactions having 2 reactants and 2 products. It implements a very fast simulation algorithm discovered by Berenbrink, Hammer, Kaaser, Meyer, Penschuck, and Tran [ESA 2020], which in a population of n agents can simulate √n interactions in constant time. With an optimized Cython implementation of this algorithm, ppsim is able to simulate hundreds of billions of interactions in a few seconds. Protocols can be specified in several ways, including CRN-like notation and as Python functions computing the population protocol transition function (useful for protocols with complex states).

If you find ppsim useful in a scientific project, please cite its associated paper:

ppsim: A software package for efficiently simulating and visualizing population protocols.
David Doty and Eric Severson.
CMSB 2021: Proceedings of the 19th International Conference on Computational Methods in Systems Biology.
[ paper | BibTeX ]

automaton simulator

The automaton simulator (help documentation here) is an application used in my undergraduate Theory of Computation course. It can be used to visualize and simulator deterministic and nondeterministic finite automata, regular expressions, context-free grammars, and Turing machines. The source code for this is not currently publicly available, but email doty@ucdavis.edu if you would like to access it.