The DNA and Natural Algorithms Group:

DNA Design Toolbox
beta beta beta version... use at your own risk!!!!

In our laboratory, when we wish to implement some scheme for biomolecular computing -- be it self-assembly or transcriptional networks -- we must design DNA molecules that can be expected to carry out the task reliably.  Many factors can come into play for specific projects, so we have not found any uniformly satisfying approach to the design problem.  The purpose of this page, therefore, is give examples of our experience with DNA design ,and to make our code available to those who may wish to use it or to compare it to their own approaches.  Therefore, everything on this page is offered "as is", with no guarantee that it is useful, or even correct.  It is certainly not stable: the code is evolving all the time.

Please see our Supplementary Material page for examples of DNA design code particular to specific papers.

(Note:  Many researchers are interested in designing DNA sequences, for uses such as effective PCR primers, specific probes for DNA arrays, construction of plasmids, re-coding protein sequences, and other biological applications.  We do not do such things in this laboratory, and consequently, you should not expect our software to be useful for those applications -- although you may find something of interest for DNA arrays.)

We have two related collections of routines.  "DNAdesign" is a suite of MATLAB procedures for manipulating and analyzing DNA sequences, including calculations of extinction coefficients, nearest-neighbor binding energy predictions, dot plots, searches for Watson-Crick complementary subsequences, and the like.  It includes a Monte-Carlo optimizer, allowing user-defined scoring functions.  "SpuriousDesign" developed from the realization that MATLAB is too slow for optimizing DNA sequences; consequently, key routines were translated into efficient C.  Both of these programs make use of (or require) the Vienna RNA package, by Ivo Hofacker et al.

Often, however, we wish to include other factors in our design that are specific to some particular experiments -- and it is easier to code up special purpose design routines, or do the design by hand, alas.

You may also wish to compare to our published work on DNA design (in collaboration with Niles Pierce's group), which appears on our publications page. That work used software developed in Pierce's group for obtaining sequence designs to meet single-strand secondary structure requirements, and is less general (but more thorough) than what we offer here. However, they are actively developing the software.

Also, John Reif's group at Duke has used our code as the design engine for their GUI interface, which they call TileSoft.

Highlights of the DNAdesign MATLAB toolbox and SpuriousDesign C code