Piperine is a software tool for the automated design of DNA molecules that mimic abstract chemical reaction networks (CRNs) in a test tube. It combines sequence design tools created by the DNA and Natural Algorithms Group with heuristic sequence quality measures. These heuristic functions detect sequence motifs that are detrimental to DNA strand displacement reactions; avoiding these motifs promotes fidelity of the in vitro DNA reaction to the target CRN.
Major Contributors :
Thanks to :
Basic use of Piperine involves providing CRNs specified in text files and receiving a set of candidate DNA implementations. From this list of implementations, Piperine will select one as the optimal candidate relative to the set. Users can use command line utilities to adjust the design constraints and number of candidate implementations generated. Advance use may involve writing custom packages that define additional approaches to emulating CRNs with DNA strand displacement cascades.
Piperine has only been tested on Ubuntu and MacOSX Sierra. Windows is unsupported for now.
Piperine works with Python >= 2.7
Piperine depends on
NUPACK (version 3.0.x)
Make sure these are installed before installing Piperine.
Numpy and Scipy can both be installed easily through pip or conda. Install these packages before installing stickydesign.
pip install numpy scipy
NUPACK can be downloaded here. Stickydesign and peppercompiler can both be found on the DNA and Natural Algorithms Group Github page. These two packages should be installed using the following commands:
pip install git+https://github.com/DNA-and-Natural-Algorithms-Group/peppercompiler.git pip install git+https://github.com/DNA-and-Natural-Algorithms-Group/stickydesign.git
This is described below for installing Piperine.
Be sure to install NUPACK version 3.0.x, Piperine is only compatible with this legacy version for now.
Once NUPACK is installed, make a terminal variable NUPACKHOME that points to installation destination (might be
~/Downloads/nupack3.0.6). Do this with the command
export NUPACKHOME=the path to nupack.
For now, you can only install Piperine from the Github repository.
pip install git+https://github.com/DNA-and-Natural-Algorithms-Group/piperine.git
It will be necessary to manually install updates.
Piperine reads in plaintext files that specify an abstract CRN, converts the CRN into a domain-level DNA specification, then designs sequences implementing the domain-level constraints. Multiple sets of sequences are produced during each execution.
Command line utilities
Sequence design and selection
The command line utility
piperine-design requires one argument, a file specifying an abstract CRN.
An example CRN might be the following, saved in a file called
-> B B -> A A + A -> A
This CRN can then be compiled into DNA sequences using the following call in a terminal session:
piperine-design my.crn -n 3
-n 3 argument tells Piperine to generate three candidate sets of sequences.
This execution will generate a number of intermediate files suffixed by .sys, .pil, .fixed, and .mfe.
Most users will only be interested in the candidate comparison report suffixed by score_report.txt and the files suffixed by .seqs which contain the sequence identities of the strands.
At the end of the process, the winning candidate will be announced.
Sequence sets are indexed starting at 0 and saved to filenames
.crn, for index i.
Users may also adjust toehold generation parameters through command line arguments. These optional arguments define the target binding energy, allowable deviation from the target energy, and maximum relative energy of unintended toehold interactions. To override the default values, apply arguments as in :
piperine-design my.crn --energy 7.5 --deviation 0.5 --maxspurious 0.5
This may be necessary when generating sequences for CRNs including more than 10 toeholds. If the default or user-specified toehold energetics parameters cannot be satisfied by the sequence designer, Piperine will suggest values that will generate a sufficient number of toeholds.
More complete information on the
piperine-design utility may be found in its documentation:
A translation scheme is a set of rules that define how a general CRN may be translated into a DNA implementation. For Piperine, translation schemes are Python packages that provide the information and functions required for Piperine to design and score DNA sequences. Two translation schemes are included with Piperine: Chen2013 and Srinivas2017. For more information on these schemes, review the publications listed in the references below.
By default Piperine will use the Srinivas2017 scheme when designing sequences.
To use the Chen2013 scheme, use the
piperine-design my.crn --translation_scheme Chen2013
- Chen, Y. J. et al. Programmable chemical controllers made from DNA. Nat. Nanotechnol. 8, 755–762 (2013).
- Srinivas, N., Parkin, J., Seelig, G., Winfree, E. & Soloveichik, D. Enzyme-free nucleic acid dynamical systems. Science (80-. ). 358, (2017).