Skip to main content
Dryad

Leak-resilient enzyme-free nucleic acid dynamical systems through shadow cancellation

Cite this dataset

Nagipogu, Rajiv Teja (2024). Leak-resilient enzyme-free nucleic acid dynamical systems through shadow cancellation [Dataset]. Dryad. https://doi.org/10.5061/dryad.g4f4qrfz7

Abstract

DNA strand displacement (DSD) emerged as a prominent reaction motif for engineering nucleic acid-based computational devices with programmable behaviors. However, strand displacement circuits are susceptible to background noise that disrupts the circuit behavior, commonly known as leaks. The side effects of leaks are particularly severe in circuits with complex dynamical elements (e.g., feedback loops), as their leaks amplify nonlinearly, disrupting the circuit function. Shadow cancellation is a dynamic leak-elimination strategy originally proposed to control the leak growth in such circuits. However, the kinetic restrictions of the proposed method introduce a significant design overhead, making it less accessible. In this work, we use domain-level DSD simulations to examine the method's capabilities, the inner workings of its components, and, most importantly, robustness to practical deviations in its design requirements. First, we show that the method could stabilize the dynamics of several leak-affected catalytic and autocatalytic dynamical systems of practical importance. Then, through several probing experiments, we show that its design restrictions could be significantly relaxed without impacting the circuit function through simple adjustments to the circuit parameters. Finally, we discuss several ideas to tackle the practical challenges in applying the method to arbitrary DSD circuits, paving the way for future experimental work.

README: Leak-resilient enzyme-free nucleic acid dynamical systems through shadow cancellation

Abbreviations

  1. RPS: Rock-Paper-Scissors oscillator
  2. UNIAMP: Unimolecular autocatalytic amplifier
  3. BIAMP: Bimolecular autocatalytic amplifier

Basic commands

To run the peppercorn command to generate the *_enum.pil file and the corresponding plotting data

  • $FOLDER - The folder containing the .pil file
  • $NAME - The name of the .pil file without the file extension
  • $INTERMEDIATE_PREFIX - Prefix of the intermediates generated
  • $LABELS - Space separated list of the chemical species that need to be tracked
  • $TIME  - Time to run the simulation for 

./sim.sh $FOLDER $TIME $NAME $LABELS $INTERMEDIATE_PREFIX 

To run the *_enum.pil file in the folder $FOLDER

  • $NAME - The name of the .*_enum_pil file without the _enum.pil

./pil.sh $FOLDER $TIME $NAME $LABELS $NAME 

Produce-Helper Leak mechanism

sLeakWaste = hcjr( fcr mcr scr + fcr( hckr( fcr( + ) ) ) ) sbr* @initial 0 nM

LeakWaste = sc mc fc hcj( + sb* ) fc*( hck*( fc*( + ) ) ) @initial 0 nM

This leak rate constant corresponds to 20 /M/s and is extrapolated from the experimental data in Reynaldo et al.,

reaction [condensed = 2e-8 /nM/s ] ProduceBCjCk + HelperCCk -> LeakWaste + Ck

reaction [condensed = 2e-8 /nM/s ] sProduceBCjCk + sHelperCCk -> sLeakWaste + sCk

Jupyter notebooks

  1. For generating files for rate perturbation: Rate_Perturbation.ipynb
  2. For generating files for leak perturbation: Leak_Perturbation.ipynb
  3. For generating the plots: GenerateInterfacePlots.ipynb

To replicate rate_perturbed experiments

  • $ROOT - The root folder (e.g., <rps/uniamp/biamp>_1em5)
  • $OUT - The output folder
  • $LIST_OF_PERTURBATIONS - The list of rate perturbations considered (e.g., 0, 1, 9, 30, 100)
  • $CONC_FACT - The scale factor by which the concentrations of the shadow circuit are scaled down
Primary command

./<rps/uniamp/biamp>_1em5_pert_run.sh

This runs the following script multiple times for different perturbations

  • $LABELS - Space-separated list of the chemical species that need to be tracked

./run.sh $ROOT $OUT $TIME $LIST_OF_PERTURBATIONS $LABELS $CONC_FACT 

run.sh internally runs the following two scripts

./rate_pert.sh $LIST_OF_PERTURBATIONS $ROOT $OUT $CONC_FACT

./pil_all.sh $TIME $LIST_OF_PERTURBATIONS $LABELS $OUT

rate_pert.sh internally runs rate_pert.py

frac is the perturbation factor (e.g., 0, 10, 30, etc.) 

python3 rate_pert.py $frac $ROOT $OUT $CONC_FACT

To replicate leak_perturbed experiments

Most variables are similar to those of the rate_perturbed experiments. We will disambiguate the ones that are different here.

  • $LIST_OF_PERTURBATIONS - The list of leak perturbations considered (e.g., 0, 100, 200, ...)
  • $FOLDERS - Each element of the $LIST_OF_PERTURBATIONS

./leak_pert_run.sh $ROOT $OUT $TIME $LIST_OF_PERTURBATIONS $LABELS $CONC_FACT

./leak_pert.sh $FOLDERS $ROOT $OUT $CONC_FACT
cd $ROOT
./leak_pert_pil_all.sh $TIME $FOLDERS $LABELS

Funding

National Science Foundation, Award: 1909848

National Science Foundation, Award: 2113941