Leak-resilient enzyme-free nucleic acid dynamical systems through shadow cancellation
Data files
Apr 24, 2024 version files 4.48 KB
-
rajiv-readme.txt
-
README.md
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
- RPS: Rock-Paper-Scissors oscillator
- UNIAMP: Unimolecular autocatalytic amplifier
- 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
- For generating files for rate perturbation:
Rate_Perturbation.ipynb
- For generating files for leak perturbation:
Leak_Perturbation.ipynb
- 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