Skip to main content
Log in

Emulating cellular automata in chemical reaction–diffusion networks

  • Published:
Natural Computing Aims and scope Submit manuscript

Abstract

Chemical reactions and diffusion can produce a wide variety of static or transient spatial patterns in the concentrations of chemical species. Little is known, however, about what dynamical patterns of concentrations can be reliably programmed into such reaction–diffusion systems. Here we show that given simple, periodic inputs, chemical reactions and diffusion can reliably emulate the dynamics of a deterministic cellular automaton, and can therefore be programmed to produce a wide range of complex, discrete dynamics. We describe a modular reaction–diffusion program that orchestrates each of the fundamental operations of a cellular automaton: storage of cell state, communication between neighboring cells, and calculation of cells’ subsequent states. Starting from a pattern that encodes an automaton’s initial state, the concentration of a “state” species evolves in space and time according to the automaton’s specified rules. To show that the reaction–diffusion program we describe produces the target dynamics, we simulate the reaction–diffusion network for two simple one-dimensional cellular automata using coupled partial differential equations. Reaction–diffusion based cellular automata could potentially be built in vitro using networks of DNA molecules that interact via branch migration processes and could in principle perform universal computation, storing their state as a pattern of molecular concentrations, or deliver spatiotemporal instructions encoded in concentrations to direct the behavior of intelligent materials.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9

Similar content being viewed by others

Notes

  1. In practice, catalysts have a fixed turnover number. Reactions that cyclically produce and degrade catalysts could enable the periodic replacement of key catalysts (and other catalysts in the system) that are no longer functional.

References

  • Allen PB, Chen X, Ellington AD (2012) Spatial control of DNA reaction networks by DNA sequence. Molecules 17:13390–13402

    Article  Google Scholar 

  • Baker MD, Wolanin PM, Stock JB (2006) Signal transduction in bacterial chemotaxis. Bioessays 28(1):9–22

    Article  Google Scholar 

  • Bánsági T, Vanag VK, Epstein IR (2011) Tomography of reaction–diffusion microemulsions reveals three-dimensional Turing patterns. Science 331(6022):1309–1312

    Article  MathSciNet  MATH  Google Scholar 

  • Chen Y, Dalchau N, Srinivas N, Phillips A, Cardelli L, Soloveichik D, Seelig G (2013) Programmable chemical controllers made from DNA. Nat Nanotechnol 8(10):755–762

    Article  Google Scholar 

  • Chirieleison SM, Allen PB, Simpson ZB, Ellington AD, Chen X (2013) Pattern transformation with DNA circuits. Nat Chem 5:1000–1005

    Article  Google Scholar 

  • Codd EF (1968) Cellular automata. Academic Press Inc, San Diego

    MATH  Google Scholar 

  • Codon A, Kirkpatrick B, Maňuch J (2012) Reachability bounds for chemical reaction networks and strand displacement systems. DNA Computing and Molecular Programming. Springer, Heidelberg, Berlin

    Google Scholar 

  • Cook M (2004) Universality in elementary cellular automata. Complex Syst 15(1):1–40

    MathSciNet  MATH  Google Scholar 

  • Dalchau N, Seelig G, Phillips A (2014) Computational design of reaction–diffusion patterns using DNA-based chemical reaction networks. DNA computing and molecular programming. Springer, Heidelberg, Berlin

    MATH  Google Scholar 

  • Danino T, Mondragn-Palomino O, Tsimring L, Hasty J (2010) A synchronized quorum of genetic clocks. Nature 463(7279):326–330

    Article  Google Scholar 

  • Doty D (2014) Timing in chemical reaction networks. In: Proceedings of the 25th ACM-SIAM symposium on discrete algorithms, pp 772–784

  • Du Y, Lo E, Ali S, Khademhosseini A (2008) Directed assembly of cell-laden microgels for fabrication of 3D tissue constructs. In; Proceedings of the National Academy of Sciences 105(28):9522–9527

  • Fujibayashi K, Hariadi R, Park SH, Winfree E, Murata S (2007) Toward reliable algorithmic self-assembly of DNA tiles: a fixed-width cellular automaton pattern. Nano Lett 8(7):1791–1797

    Article  Google Scholar 

  • Gács P (2001) Reliable cellular automata with self-organization. J Stat Phys 103(1/2):45–267

    Article  MathSciNet  MATH  Google Scholar 

  • Gács P, Reif J (1988) A simple three-dimensional real-time reliable cellular array. J Comput Syst Sci 36(2):125–147

    Article  MathSciNet  MATH  Google Scholar 

  • Lakin M, Phillips A, Stefanovic D (2013) Modular verification of DNA strand displacement networks via serializability analysis. DNA computing and molecular programming. Springer, Heidelberg, Berlin

    MATH  Google Scholar 

  • Greenfield D, McEvoy AL, Shroff H, Crooks GE, Wingreen NS, Betzig E, Liphardt J (2009) Self-organization of the Escherichia coli chemotaxis network imaged with super-resolution light microscopy. PLoS Biol. 7(6)

  • Langton CG (1984) Self-reproduction in cellular automata. Phys D 10(1):135–144

    Article  MathSciNet  MATH  Google Scholar 

  • Lindenmayer A (1968) Mathematical models for cellular interactions in development I. filaments with one-sided inputs. J Theor Biol 18(3):280–299

    Article  Google Scholar 

  • Lukacs G, Haggie P, Seksek O, Lechardeur D, Verkman NFA (2000) Size-dependent DNA mobility in cytoplasm and nucleus. J Biol Chem 275(1625)

  • Montagne K, Plasson R, Sakai Y, Fujii T, Rondelez Y (2011) Programming an in vitro DNA oscillator using a molecular networking strategy. Mol Sys Biol 7(1)

  • Murray JD (2003) Mathematical biology II: spatial models and biomedical applications, 3rd edn. Springer, New York

    MATH  Google Scholar 

  • Neary T, Woods D (2006) P-completeness of cellular automaton rule 110. LNCS 4051(132–143)

  • Nehaniv CL (2004) Asynchronous automata networks can emulate any synchronous automata network. Int J Algebra Comput 14(05):719–739

    Article  MathSciNet  MATH  Google Scholar 

  • von Neumann J, Burks AW (1966) The theory of self-reproducing automata. University of Illinois Press, Urbana

    Google Scholar 

  • Qian L, Soloveichik D, Winfree E (2011) Efficient turing-universal computation with DNA polymers. DNA computing and molecular programming pp 123–140

  • Qian L, Winfree E (2011) Scaling up digital circuit computation with DNA strand displacement. Science 332(6034):1196–1201

    Article  Google Scholar 

  • Qian L, Winfree E (2011) A simple DNA gate motif for synthesizing large-scale circuits. J R Soc Interface 8(62):1281–1297

    Article  Google Scholar 

  • Qian L, Winfree E (2014) Parallel and scalable computation and spatial dynamics with DNA-based chemical reaction networks on a surface. DNA computing and molecular programming. Springer, Heidelberg, Berlin

    MATH  Google Scholar 

  • Rothemund PWK, Papadakis N, Winfree E (2004) Algorithmic self-assembly of DNA Sierpinski triangles. PLoS Biol 2(12):e424

    Article  Google Scholar 

  • Ruiza SA, Chen CS (2007) Microcontact printing: a tool to pattern. Soft Matter 3:168–177

    Article  Google Scholar 

  • Sayama H (1999) A new structurally dissolvable self-reproducing loop evolving in a simple cellular automata space. Artif Life 5(4):343–365

    Article  Google Scholar 

  • Scalise D, Schulman R (2014) Designing modular reaction–diffusion programs for complex pattern formation. Technology 2(01):55–66

    Article  Google Scholar 

  • Seelig G, Soloveichik D, Zhang DY, Winfree E (2006) Enzyme-free nucleic acid logic circuits. Science 314:1585–1588

    Article  Google Scholar 

  • Smith DE, Perkins TT, Chu S (1996) Dynamical scaling of DNA diffusion coefficients. Macromolecules 29(4):1372–1373

    Article  Google Scholar 

  • Soloveichik D, Cook M, Winfree E, Bruck J (2008) Computation with finite stochastic chemical reaction networks. Nat Comput 7(4):615–633

    Article  MathSciNet  MATH  Google Scholar 

  • Soloveichik D, Seelig G, Winfree E (2010) DNA as a universal substrate for chemical kinetics. In: Proceedings of the National Academy of Sciences 107(12):5393–5398

  • Steinbock O, Kettunen P, Showalter K (1996) Chemical wave logic gates. J Phys Chem 100(49):18970–18975

    Article  Google Scholar 

  • Stellwagen E, Lu Y, Stellwagen N (2003) Unified description of electrophoresis and diffusion for DNA and other polyions. Biochemistry 42:11745

    Article  Google Scholar 

  • Tomita K, Kurokawa H, Murata S (2002) Graph automata: natural expression of self-reproduction. Phys D: Nonlin Phenom 171(4):197–210

    Article  MathSciNet  MATH  Google Scholar 

  • Tóth Ágota, Showalter K (1995) Logic gates in excitable media. J Chem Phys 103(6):2058–2066

    Article  Google Scholar 

  • Turing AM (1952) The chemical basis of morphogenesis. Phil T R Soc B 237:37–72

    Article  Google Scholar 

  • Wu A, Rosenfeld A (1979) Cellular graph automata. I. basic concepts, graph property measurement, closure properties. Inf Control 42(3):305–329

    Article  MathSciNet  MATH  Google Scholar 

  • Zhang DY, Winfree E (2009) Control of DNA strand displacement kinetics using toehold exchange. J Am Chem Soc 131(47):17303–17314

    Article  Google Scholar 

Download references

Acknowledgments

The authors would like to thank Paul Rothemund, Damien Woods, Josh Fern, John Zenk, and the anonymous referees for insightful reading and comments. This work was supported by NSF-CCF-1161941 and a grant to the Turing Centenary Project by the John Templeton Foundation.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Rebecca Schulman.

Appendices

Rule 110 chemical reactions (synonymous with Sect. 8)

This section describes the complete set of abstract chemical reactions that govern our Rule 110 chemical automaton. These chemical reactions can be converted into a set of coupled partial differential equations and solved to observe how the system behaves over time (see Section 8). Figure 10 shows a detail of the circuit from Fig. 7 for a Rule 110 automaton, with each chemical species labeled.

Fig. 10
figure 10

Chemical reaction–diffusion circuit for Rule 110. This is a detailed version of the circuit outlined in Fig. 7, using the modules defined in Fig. 2. Species are labelled in red by their equation numbers from Section 8., with species names and abbreviations to the right

  1. 1.

    Communication stage

    1. a.

      Broadcasting:

      $$SrcA+keyA+Last\mathop {\rightarrow {}}\limits ^{k_{B}}SrcA+SigA+keyA+Last$$
      (7.1)
      $$SigA\mathop {\rightarrow {}}\limits ^{k_{Bd}}waste $$
      (7.2)
      $$SrcB+keyB+Last\mathop {\rightarrow {}}\limits ^{k_{B}}SrcB+SigB+keyB+Last $$
      (7.3)
      $$SigB\mathop {\rightarrow {}}\limits ^{k_{Bd}}waste $$
      (7.4)
      $$SrcC+keyC+Last\mathop {\rightarrow {}}\limits ^{k_{B}}SrcC+SigC+keyC+Last $$
      (7.5)
      $$SigC\mathop {\rightarrow {}}\limits ^{k_{Bd}}waste $$
      (7.6)
      $$SrcD+keyD+Last\mathop {\rightarrow {}}\limits ^{k_{B}}SrcD+SigD+keyD+Last $$
      (7.7)
      $$SigD\mathop {\rightarrow {}}\limits ^{k_{Bd}}waste $$
      (7.8)
    1. a.

      Receiving and processing left-hand signal:

      $$SigD+keyA\mathop {\rightarrow {}}\limits ^{k_{x}}SigD+Lraw+keyA $$
      (7.9)
      $$SigA+keyB\mathop {\rightarrow {}}\limits ^{k_{x}}SigA+Lraw+keyB $$
      (7.10)
      $$SigB+keyC\mathop {\rightarrow {}}\limits ^{k_{x}}SigB+Lraw+keyC $$
      (7.11)
      $$SigC+keyD\mathop {\rightarrow {}}\limits ^{k_{x}}SigC+Lraw+keyD $$
      (7.12)
      $$Lraw\mathop {\longrightarrow {}}\limits ^{4*k_{x}}waste $$
      (7.13)
      $$source\mathop {\longrightarrow {}}\limits ^{c_{recTh}*k_{p}}ThL\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.14)
      $$source\mathop {\rightarrow {}}\limits ^{k_{p}}AmpL\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.15)
      $$Lraw+ThL\mathop {\rightarrow {}}\limits ^{k_{T}}waste $$
      (7.16)
      $$Lraw+AmpL\mathop {\rightarrow {}}\limits ^{k_{L}}Lraw+Lft $$
      (7.17)
      $$Lft\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.18)
    1. a.

      Receiving and processing right-hand signal:

      $$SigB+keyA\mathop {\rightarrow {}}\limits ^{k_{x}}SigB+Rraw+keyA $$
      (7.19)
      $$SigC+keyB\mathop {\rightarrow {}}\limits ^{k_{x}}SigC+Rraw+keyB $$
      (7.20)
      $$SigD+keyC\mathop {\rightarrow {}}\limits ^{k_{x}}SigD+Rraw+keyC $$
      (7.21)
      $$SigA+keyD\mathop {\rightarrow {}}\limits ^{k_{x}}SigA+Rraw+keyD $$
      (7.22)
      $$Rraw\mathop {\longrightarrow {}}\limits ^{4*k_{x}}waste $$
      (7.23)
      $$source\mathop {\longrightarrow {}}\limits ^{c_{recTh}*k_{p}}Thr\mathop {\longrightarrow {}}\limits ^{k_{x}}waste $$
      (7.24)
      $$source\mathop {\longrightarrow {}}\limits ^{k_{p}}Ampr\mathop {\longrightarrow {}}\limits ^{k_{x}}waste $$
      (7.25)
      $$Rraw+Thr\mathop {\longrightarrow {}}\limits ^{k_{T}}waste $$
      (7.26)
      $$Rraw+Ampr\mathop {\longrightarrow {}}\limits ^{k_{L}}Rraw+Rght $$
      (7.27)
      $$Rght\mathop {\longrightarrow {}}\limits ^{k_{x}}waste $$
      (7.28)
  2. 2.

    Calculation Stage

    1. a.

      Copy left, right and previous time step (pr) signals (multiple gates operate on each):

      $$Last\mathop {\longrightarrow {}}\limits ^{k_{x}}Last+BrPr $$
      (7.29)
      $$BrPr\mathop {\longrightarrow {}}\limits ^{k_{x}}waste $$
      (7.30)
      $$Rght\mathop {\longrightarrow {}}\limits ^{k_{x}}Rght+RBr $$
      (7.31)
      $$RBr\mathop {\longrightarrow {}}\limits ^{k_{x}}waste $$
      (7.32)
      $$Last\mathop {\longrightarrow {}}\limits ^{k_{x}}Last+OnPr $$
      (7.33)
      $$OnPr\mathop {\longrightarrow {}}\limits ^{k_{x}}waste $$
      (7.34)
      $$Rght\mathop {\longrightarrow {}}\limits ^{k_{x}}Rght+RCr $$
      (7.35)
      $$RCr\mathop {\longrightarrow {}}\limits ^{k_{x}}waste $$
      (7.36)
      $$Lft\mathop {\longrightarrow {}}\limits ^{k_{x}}Lft+LCr $$
      (7.37)
      $$LCr\mathop {\longrightarrow {}}\limits ^{k_{x}}waste $$
      (7.38)
      $$source\mathop {\longrightarrow {}}\limits ^{k_{p}}OffPr $$
      (7.39)
      $$OffPr\mathop {\longrightarrow {}}\limits ^{k_{x}}waste $$
      (7.40)
      $$BrPr+OffPr\mathop {\longrightarrow {}}\limits ^{k_{T}}waste $$
      (7.41)
    1. a.

      Boolean logic for Br (birth) condition: off to on transition:

      $$source\mathop {\longrightarrow {}}\limits ^{2*k_{p}}SgBr\mathop {\longrightarrow {}}\limits ^{k_{x}}waste $$
      (7.42)
      $$OffPr+SgBr\mathop {\longrightarrow {}}\limits ^{k_{L}}SumBr\mathop {\longrightarrow {}}\limits ^{k_{x}}waste $$
      (7.43)
      $$RBr+SgBr\mathop {\longrightarrow {}}\limits ^{k_{L}}SumBr $$
      (7.44)
      $$source\mathop {\longrightarrow {}}\limits ^{1.35*k_{p}}ThBr\mathop {\longrightarrow {}}\limits ^{k_{x}}waste $$
      (7.45)
      $$source\mathop {\longrightarrow {}}\limits ^{k_{p}}AmpBr\mathop {\longrightarrow {}}\limits ^{k_{x}}waste $$
      (7.46)
      $$SumBr+ThBr\mathop {\longrightarrow {}}\limits ^{k_{T}}waste $$
      (7.47)
      $$SumBr+AmpBr\mathop {\longrightarrow {}}\limits ^{k_{L}}SumBr+Br $$
      (7.48)
      $$Br\mathop {\longrightarrow {}}\limits ^{k_{x}}waste $$
      (7.49)
    1. a.

      Boolean logic for no death condition (on and at least one neighbor off): stay on:

      $$source\mathop {\longrightarrow {}}\limits ^{2*k_{p}}SgnbOff\mathop {\longrightarrow {}}\limits ^{k_{x}}waste $$
      (7.50)
      $$RCr+SgnbOff\mathop {\longrightarrow {}}\limits ^{k_{L}}SumnbOff\mathop {\longrightarrow {}}\limits ^{k_{x}}waste $$
      (7.51)
      $$LCr+SgnbOff\mathop {\longrightarrow {}}\limits ^{k_{L}}SumnbOff $$
      (7.52)
      $$source\mathop {\longrightarrow {}}\limits ^{1.35*k_{p}}ThnbOff\mathop {\longrightarrow {}}\limits ^{k_{x}}waste $$
      (7.53)
      $$source\mathop {\longrightarrow {}}\limits ^{k_{p}}AmpnbOff\mathop {\longrightarrow {}}\limits ^{k_{x}}waste $$
      (7.54)
      $$SumnbOff+ThnbOff\mathop {\longrightarrow {}}\limits ^{k_{T}}waste $$
      (7.55)
      $$ThnbOff+AmpnbOff\mathop {\longrightarrow {}}\limits ^{k_{L}}ThnbOff+nbrOff $$
      (7.56)
      $$nbrOff\mathop {\longrightarrow {}}\limits ^{k_{x}}waste $$
      (7.57)
      $$source\mathop {\longrightarrow {}}\limits ^{2*k_{p}}SgCr\mathop {\longrightarrow {}}\limits ^{k_{x}}waste $$
      (7.58)
      $$OnPr+SgCr\mathop {\longrightarrow {}}\limits ^{k_{L}}SumCr\mathop {\longrightarrow {}}\limits ^{k_{x}}waste $$
      (7.59)
      $$nbrOff+SgCr\mathop {\longrightarrow {}}\limits ^{k_{L}}SumCr $$
      (7.60)
      $$source\mathop {\longrightarrow {}}\limits ^{1.35*k_{p}}ThCr\mathop {\longrightarrow {}}\limits ^{k_{x}}waste $$
      (7.61)
      $$source\mathop {\longrightarrow {}}\limits ^{k_{p}}AmpCr\mathop {\longrightarrow {}}\limits ^{k_{x}}waste $$
      (7.62)
      $$SumCr+ThCr\mathop {\longrightarrow {}}\limits ^{k_{T}}waste $$
      (7.63)
      $$SumCr+AmpCr\mathop {\longrightarrow {}}\limits ^{k_{L}}SumCr+Live $$
      (7.64)
      $$Live\mathop {\longrightarrow {}}\limits ^{k_{x}}waste $$
      (7.65)
    1. a.

      Boolean logic to determine if next state is on:

      $$source\mathop {\longrightarrow {}}\limits ^{2*k_{p}}SgNx\mathop {\longrightarrow {}}\limits ^{k_{x}}waste $$
      (7.66)
      $$Live+SgNx\mathop {\rightarrow {}}\limits ^{k_{L}}SumNx\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.67)
      $$Br+SgNx\mathop {\rightarrow {}}\limits ^{k_{L}}SumNx $$
      (7.68)
      $$source\mathop {\longrightarrow {}}\limits ^{0.65*k_{p}}ThNx\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.69)
      $$source\mathop {\rightarrow {}}\limits ^{k_{p}}AmpNx\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.70)
      $$SumNx+ThNx\mathop {\rightarrow {}}\limits ^{k_{T}}waste $$
      (7.71)
      $$SumNx+AmpNx\mathop {\rightarrow {}}\limits ^{k_{L}}SumNx+Nx $$
      (7.72)
      $$Nx\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.73)
      $$Nx\mathop {\rightarrow {}}\limits ^{k_{x}}Nx+OnNx $$
      (7.74)
      $$OnNx\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.75)
    1. a.

      Boolean logic to determine if next state is off:

      $$Nx\mathop {\rightarrow {}}\limits ^{k_{x}}Nx+NtNx $$
      (7.76)
      $$NtNx\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.77)
      $$source\mathop {\rightarrow {}}\limits ^{k_{p}}OffNx\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.78)
      $$NtNx+OffNx\mathop {\rightarrow {}}\limits ^{k_{T}}waste $$
      (7.79)
    1. a.

      Clocked synchronization gates:

      $$clk\mathop {\rightarrow {}}\limits ^{k_{x}}clk+clkOn $$
      (7.80)
      $$clkOn\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.81)
      $$clk\mathop {\rightarrow {}}\limits ^{k_{x}}clk+clkOff $$
      (7.82)
      $$clkOff\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.83)
      $$source\mathop {\longrightarrow {}}\limits ^{2*k_{p}}SgNxOn\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.84)
      $$OnNx+SgNxOn\mathop {\rightarrow {}}\limits ^{k_{L}}OnNxSum\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.85)
      $$clkOn+SgNxOn\mathop {\rightarrow {}}\limits ^{k_{L}}OnNxSum $$
      (7.86)
      $$source\mathop {\longrightarrow {}}\limits ^{1.35*k_{p}}OnNxTh\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.87)
      $$source\mathop {\rightarrow {}}\limits ^{k_{p}}OnNxAmp\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.88)
      $$OnNxSum+OnNxTh\mathop {\rightarrow {}}\limits ^{k_{T}}waste $$
      (7.89)
      $$OnNxSum+OnNxAmp\mathop {\rightarrow {}}\limits ^{k_{L}}OnNxSum+SetBfr $$
      (7.90)
      $$SetBfr\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.91)
      $$source\mathop {\longrightarrow {}}\limits ^{2*k_{p}}SgOffNx\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.92)
      $$OffNx+SgOffNx\mathop {\rightarrow {}}\limits ^{k_{L}}SumOffNx\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.93)
      $$clkOff+SgOffNx\mathop {\rightarrow {}}\limits ^{k_{L}}SumOffNx $$
      (7.94)
      $$source\mathop {\longrightarrow {}}\limits ^{1.35*k_{p}}ThOffNx\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.95)
      $$source\mathop {\rightarrow {}}\limits ^{k_{p}}AmpOffNx\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.96)
      $$SumOffNx+ThOffNx\mathop {\rightarrow {}}\limits ^{k_{T}}waste $$
      (7.97)
      $$SumOffNx+AmpOffNx\mathop {\rightarrow {}}\limits ^{k_{L}}SumOffNx+ResBfr $$
      (7.98)
      $$ResBfr\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.99)
  3. 3.

    Storage Stage

    1. a.

      Copies of Set/Res signals:

      $$SetBfr\mathop {\rightarrow {}}\limits ^{k_{x}}SetBfr+Set $$
      (7.100)
      $$Set\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.101)
      $$ResBfr\mathop {\rightarrow {}}\limits ^{k_{x}}ResBfr+Res $$
      (7.102)
      $$Res\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.103)
    1. a.

      Flip-flop module:

      $$ffBfrd\mathop {\rightarrow {}}\limits ^{k_{x}}ffBfrd+ffFback $$
      (7.104)
      $$ffFback\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.105)
      $$source\mathop {\longrightarrow {}}\limits ^{2*k_{p}}N1Sg\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.106)
      $$Set+N1Sg\mathop {\rightarrow {}}\limits ^{k_{L}}N1Sum\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.107)
      $$ffFback+N1Sg\mathop {\rightarrow {}}\limits ^{k_{L}}N1Sum $$
      (7.108)
      $$source\mathop {\longrightarrow {}}\limits ^{0.65*k_{p}}N1Th\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.109)
      $$source\mathop {\rightarrow {}}\limits ^{k_{p}}N1\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.110)
      $$N1Sum+N1Th\mathop {\rightarrow {}}\limits ^{k_{T}}waste $$
      (7.111)
      $$N1Th+N1\mathop {\rightarrow {}}\limits ^{k_{L}}N1Th+ffFbackNot $$
      (7.112)
      $$ffFbackNot\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.113)
      $$source\mathop {\longrightarrow {}}\limits ^{2*k_{p}}N2Sg\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.114)
      $$Res+N2Sg\mathop {\rightarrow {}}\limits ^{k_{L}}N2Sum\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.115)
      $$ffFbackNot+N2Sg\mathop {\rightarrow {}}\limits ^{k_{L}}N2Sum $$
      (7.116)
      $$source\mathop {\longrightarrow {}}\limits ^{0.65*k_{p}}N2Th\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.117)
      $$source\mathop {\rightarrow {}}\limits ^{k_{p}}N2\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.118)
      $$N2Sum+N2Th\mathop {\rightarrow {}}\limits ^{k_{T}}waste $$
      (7.119)
      $$N2Th+N2\mathop {\rightarrow {}}\limits ^{k_{L}}N2Th+ffBfrd $$
      (7.120)
      $$ffBfrd\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.121)
      $$ffBfrd\mathop {\rightarrow {}}\limits ^{k_{x}}ffBfrd+Last $$
      (7.122)
      $$Last\mathop {\rightarrow {}}\limits ^{k_{x}}waste $$
      (7.123)

Rule 110 partial differential equations

“I hope to say something about a ‘continuous’ rather than ‘crystalline’ model [of automata]. There, as far as I can now see, a system of nonlinear partial differential equations, essentially of the diffusion type, will be used.” John von Neumann (Oct. 28th, 1952) discussing unfinished Theory of Automata.

von Neumann papers, Library of Congress, Box 28 “Theory of Automata”.

This section describes the set of coupled partial differential equations that govern our Rule 110 chemical automaton, derived from the reactions in this section. These equations use standard mass-action equations and the diffusion equation. Figure 9b contains a plot of the solution to these equations. One equation is devoted to each of the 76 species in our network. Figure 10 shows a detail of the circuit from Fig. 7 for a Rule 110 automaton, with each species labeled.

Unless otherwise specified, all species start with zero initial concentration. Absorbing boundary conditions apply to all species whose concentrations change over time. Our reaction rate constants and diffusion coefficients are selected to be realistically attainable values for DNA-based reaction–diffusion networks, on the same order of magnitude as experimentally derived data in the literature (Zhang and Winfree 2009; Lukacs et al. 2000; Stellwagen et al. 2003). The Mathematica code we used to numerically solve these equations is available upon request. Constants:

$$\begin{aligned} \begin{array}{lll} xMax=64 &{} \qquad \qquad k_{p}=0.002\;\upmu {}\text {M}\,\text{s}^{-1} &{} \qquad \qquad k_{Bd}=0.00002\,\text{s}^{-1}\\ D=0.00015\;\text {mm}^{2}\,\text{s}^{-1} &{} \qquad \qquad k_{d}=0.002\;\upmu {}\,\text {s}^{-1} &{} \qquad \qquad c_{recTh}=0.5\;\upmu {}\text {M}\\ k_{T}=20\;\upmu {}\text {M}^{-1}\,\text {s}^{-1} &{} \qquad \qquad k_{x}=0.002\;\upmu {}\text {M}^{-1}\,\text {s}^{-1} &{} \qquad \qquad clkPeriod = 2*24*3600\;\text {s}\\ k_{L}=0.2\;\upmu {}\text {M}^{-1}\,\text {s}^{-1} &{} \qquad \qquad k_{B}=0.0002\;\upmu {}\text {M}^{-2}\,\text{s}^{-1} &{} \qquad \qquad clkDuty = .5*3600\;\text {s} \end{array} \end{aligned}$$
  1. 1.

    External signals:

    1. a.

      Keys (in \(\upmu \)M):

      $$\begin{aligned} Key_A(t,x)=\,\left\{ \begin{array}{ll}1/(1 + Exp[-25*(Mod(x,16) - 1)]) &{} : Mod(x,16) \le 2\\ 1 - 1/(1 + Exp[-25*(Mod(x,16) - 3)]) &{} : otherwise.\end{array}\right. \end{aligned}$$
      (8.1)
      $$\begin{aligned} Key_B(t,x)=\,\left\{ \begin{array}{ll}1/(1 + Exp[-25*(Mod(x,16) - 5)]) &{} : Mod(x,16) \le 6\\ 1 - 1/(1 + Exp[-25*(Mod(x,16) - 7)]) &{} : otherwise.\end{array}\right. \end{aligned}$$
      (8.2)
      $$\begin{aligned} Key_C(t,x)=\,\left\{ \begin{array}{ll}1/(1 + Exp[-25(Mod(x,16) - 9)]) &{} : mod(x,16) \le 10\\ 1 - 1/(1 + Exp[-25(Mod(x,16) - 11)]) &{} : otherwise.\end{array}\right. \end{aligned}$$
      (8.3)
      $$\begin{aligned} Key_D(t,x)=\,\left\{ \begin{array}{ll}1/(1 + Exp[-25(Mod(x,16) - 13)]) &{} : mod(x,16) \le 14\\ 1 - 1/(1 + Exp[-25(Mod(x,16) - 15)]) &{} : otherwise.\end{array}\right. \end{aligned}$$
      (8.4)
    2. b.

      Clock:

      $$\begin{aligned} clk(t,x)= & {} \left\{ \begin{array}{ll}1 \;\upmu {}\text {M} &{} : t < 4000\\ 1 \;\upmu {}\text {M} &{} : Mod(t, clkPeriod) < clkDuty\\ 0 &{} : otherwise. \end{array}\right. \end{aligned}$$
      (8.5)
      $$\begin{aligned} \frac{\partial {}clk_{On}(t,x)}{\partial {}t}=\, & {} D \nabla {}^2clk_{On}(t,x)-k_{d}*clk_{On}(t,x)+k_{d}*clk(t,x) -k_{L}*clk_{On}(t,x)*Sg_{nxOn}(t,x) \end{aligned}$$
      (8.6)
      $$\begin{aligned} \frac{\partial {}clk_{Off}(t,x)}{\partial {}t}= & {} D\nabla {}^2clk_{Off}(t,x) -k_{d}*clk_{Off}(t,x)+k_{d}*clk(t,x)-k_{L}*clk_{Off} (t,x)*Sg_{OffNx}(t,x) \end{aligned}$$
      (8.7)
  2. 2.

    Communication Stage:

    1. a.

      Broadcast Modules (in \(\mu \)M):

      $$\begin{aligned} Src_A(t,x)= 1 \end{aligned}$$
      (8.8)
      $$\begin{aligned} Src_B(t,x)= 1 \end{aligned}$$
      (8.9)
      $$\begin{aligned} Src_C(t,x)= 1 \end{aligned}$$
      (8.10)
      $$\begin{aligned} Src_D(t,x)= 1 \end{aligned}$$
      (8.11)
    2. b.

      Broadcast signals, note initial concentration of \(Sig_A\) triggers initial on cell:

      $$\begin{aligned} \frac{\partial {}Sig_A(t,x)}{\partial {}t}=\, & {} D\nabla {}^2Sig_A(t,x) +k_{B}Src_A(t,x)Key_A(t,x)Last(t,x)-k_{Bd}Sig_A(t,x)\nonumber \\ Sig_A(t=0,x)= & {} \left\{ \begin{array}{ll}2 \;\upmu {}\text {M} &{} : x_{max}-8<x<x_{max}-0.1\\ 0 &{} \quad: otherwise.\end{array}\right. \end{aligned}$$
      (8.12)
      $$\begin{aligned} \frac{\partial {}Sig_B(t,x)}{\partial {}t}= & {} D\nabla {}^2Sig_B(t,x) +k_{B}Src_B(t,x)Key_B(t,x)Last(t,x)-k_{Bd}Sig_B(t,x) \end{aligned}$$
      (8.13)
      $$\begin{aligned} \frac{\partial {}Sig_C(t,x)}{\partial {}t}=\, & {} D\nabla {}^2Sig_C(t,x) +k_{B}Src_C(t,x)Key_C(t,x)Last(t,x)-k_{Bd}Sig_C(t,x) \end{aligned}$$
      (8.14)
      $$\begin{aligned} \frac{\partial {}Sig_D(t,x)}{\partial {}t}= & {} D\nabla {}^2Sig_D(t,x) +k_{B}Src_D(t,x)Key_D(t,x)Last(t,x)-k_{Bd}Sig_D(t,x) \end{aligned}$$
      (8.15)
    3. c.

      Receiving and processing left-hand neighbor signal:

      $$\begin{aligned} \frac{\partial {}L_{raw}(t,x)}{\partial {}t}= & {} D\nabla {}^2L_{raw}(t,x) -4k_{d}L_{raw}(t,x)-k_{T}L_{raw}(t,x)Th_l(t,x) +k_{x}Sig_D(t,x)Key_A(t,x)\nonumber \\&+k_{x}Sig_A(t,x)Key_B(t,x) +k_{x}Sig_B(t,x)Key_C(t,x)+k_{x}Sig_C(t,x)Key_D(t,x) \end{aligned}$$
      (8.16)
      $$\begin{aligned} \frac{\partial {}Th_l(t,x)}{\partial {}t}= & {} D\nabla {}^2Th_l(t,x)+c_{recTh}k_{p}-k_{d}Th_l(t,x)-k_{T}L_{raw}(t,x)Th_l(t,x) \end{aligned}$$
      (8.17)
      $$\begin{aligned} \frac{\partial {}Amp_l(t,x)}{\partial {}t}= & {} D\nabla {}^2Amp_l(t,x)+k_{p}-k_{d}Amp_l(t,x)-k_{L}L_{raw}(t,x)Amp_l(t,x) \end{aligned}$$
      (8.18)
      $$\begin{aligned} \frac{\partial {}Lft(t,x)}{\partial {}t}= & {} D\nabla {}^2Lft(t,x)-k_{d}Lft(t,x)+k_{L}L_{raw}(t,x)Amp_l(t,x) \end{aligned}$$
      (8.19)
    4. d.

      Receiving and processing right-hand neighbor signal:

      $$\begin{aligned} \frac{\partial {}R_{raw}(t,x)}{\partial {}t}= & {} D\nabla {}^2R_{raw}(t,x) -4k_{d}R_{raw}(t,x)-k_{T}R_{raw}(t,x)Th_r(t,x)+k_{x}Sig_(t,x)Key_A(t,x)\nonumber \\&+k_{x}Sig_C(t,x)Key_B(t,x) +k_{x}Sig_D(t,x)Key_C(t,x)+k_{x}Sig_A(t,x)Key_D(t,x) \end{aligned}$$
      (8.20)
      $$\begin{aligned} \frac{\partial {}Th_r(t,x)}{\partial {}t}= & {} D\nabla {}^2Th_r(t,x)+c_{recTh}k_{p}-k_{d}Th_r(t,x)-k_{T}R_{raw}(t,x)Th_r(t,x) \end{aligned}$$
      (8.21)
      $$\begin{aligned} \frac{\partial {}Amp_{rt}(t,x)}{\partial {}t}= & {} D\nabla {}^2Amp_{rt}(t,x)+k_{p}-k_{d}Amp_{rt}(t,x)-k_{L}R_{raw}(t,x)Amp_{rt}(t,x) \end{aligned}$$
      (8.22)
      $$\begin{aligned} \frac{\partial {}Rght(t,x)}{\partial {}t}= & {} D\nabla {}^2Rght(t,x)-k_{d}Rght(t,x)+k_{L}R_{raw}(t,x)Amp_{rt}(t,x) \end{aligned}$$
      (8.23)
  3. 3.

    Calculation Stage:

    1. a.

      Copy left, right and previous time step (pr) signals (multiple gates operate on each)

      $$\frac{\partial {}Br_{pr}(t,x)}{\partial {}t}=\,D\nabla {}^2Br_{pr}(t,x)-k_{d}Br_{pr}(t,x)+k_{d}Last(t,x)-k_{T}Br_{pr}(t,x)Off_{pr}(t,x) $$
      (8.24)
      $$\frac{\partial {}R_{br}(t,x)}{\partial {}t}=\,D\nabla {}^2R_{br}(t,x)-k_{d}R_{br}(t,x)+k_{d}Rght(t,x)-k_{L}R_{br}(t,x)Sg_{br}(t,x) $$
      (8.25)
      $$\frac{\partial {}On_{pr}(t,x)}{\partial {}t}=\,D\nabla {}^2On_{pr}(t,x)-k_{d}On_{pr}(t,x)+k_{d}Last(t,x)-k_{L}On_{pr}(t,x)Sg_{cr}(t,x) $$
      (8.26)
      $$\frac{\partial {}R_{cr}(t,x)}{\partial {}t}=\,D\nabla {}^2R_{cr}(t,x)-k_{d}R_{cr}(t,x)+k_{d}Rght(t,x)-k_{L}R_{cr}(t,x)Sg_{nbOff}(t,x) $$
      (8.27)
      $$\frac{\partial {}L_{cr}(t,x)}{\partial {}t}=\,D\nabla {}^2L_{cr}(t,x)-k_{d}L_{cr}(t,x)+k_{d}Lft(t,x)-k_{L}L_{cr}(t,x)Sg_{nbOff}(t,x) $$
      (8.28)
      $$\frac{\partial {}Off_{pr}(t,x)}{\partial {}t}=\,D\nabla {}^2Off_{pr}(t,x)+k_{p}-k_{d}Off_{pr}(t,x)-_{T}Br_{pr}(t,x)Off_{pr}(t,x)-k_{L}Off_{pr}(t,x)Sg_{br}(t,x) $$
      (8.29)
    2. b.

      Boolean logic for Br (birth) condition: off to on transition

      $$\frac{\partial {}Sg_{br}(t,x)}{\partial {}t}=\,D\nabla {}^2Sg_{br}(t,x)+2k_{p}-k_{d}Sg_{br}(t,x)-k_{L}Off_{pr}(t,x)Sg_{br}(t,x)-k_{L}R_{br}(t,x)Sg_{br}(t,x) $$
      (8.30)
      $$\begin{aligned}&\frac{\partial {}Sum_{br}(t,x)}{\partial {}t}=\,D\nabla {}^2Sum_{br}(t,x)-k_{d}Sum_{br}(t,x)+k_{L}Off_{pr}(t,x)Sg_{br}(t,x) +k_{L}R_{br}(t,x)Sg_{br}(t,x)-k_{T}Sum_{br}(t,x)Th_{br}(t,x) \end{aligned}$$
      (8.31)
      $$\begin{aligned}&\frac{\partial {}Th_{br}(t,x)}{\partial {}t}=\,D\nabla {}^2Th_{br}(t,x)+1.35k_{p}-k_{d}Th_{br}(t,x)-k_{T}Sum_{br}(t,x)Th_{br}(t,x) \end{aligned}$$
      (8.32)
      $$\begin{aligned}&\frac{\partial {}Amp_{br}(t,x)}{\partial {}t}=\,D\nabla {}^2Amp_{br}(t,x)+k_{p}-k_{d}Amp_{br}(t,x)-k_{L}Sum_{br}(t,x)Amp_{br}(t,x) \end{aligned}$$
      (8.33)
      $$\begin{aligned}&\frac{\partial {}Br(t,x)}{\partial {}t}=\,D\nabla {}^2Br(t,x)-k_{d}Br(t,x)+k_{L}Sum_{br}(t,x)Amp_{br}(t,x)-k_{L}Br(t,x)Sg_{nx}(t,x) \end{aligned}$$
      (8.34)
    3. c.

      Boolean logic for no death condition (on and at least one neighbor off): stay on

      $$\begin{aligned}&\frac{\partial {}Sg_{nbOff}(t,x)}{\partial {}t}=\,D\nabla {}^2Sg_{nbOff}(t,x)+2k_{p}-k_{d}Sg_{nbOff}(t,x)-k_{L}R_{cr}(t,x)Sg_{nbOff}(t,x)-k_{L}L_{cr}(t,x)Sg_{nbOff}(t,x) \end{aligned}$$
      (8.35)
      $$\begin{aligned}&\frac{\partial {}Sum_{nbOff}(t,x)}{\partial {}t}=\,D\nabla {}^2Sum_{nbOff}(t,x)-k_{d}Sum_{nbOff}(t,x)+k_{L}R_{cr}(t,x)Sg_{nbOff}(t,x)+k_{L}L_{cr}(t,x)Sg_{nbOff}(t,x)-k_{T}Sum_{nbOff}(t,x)Th_{nbOff}(t,x) \end{aligned}$$
      (8.36)
      $$\begin{aligned}&\frac{\partial {}Th_{nbOff}(t,x)}{\partial {}t}=\,D\nabla {}^2Th_{nbOff}(t,x)+1.35k_{p}-k_{d}Th_{nbOff}(t,x)-k_{T}Sum_{nbOff}(t,x)Th_{nbOff}(t,x) \end{aligned}$$
      (8.37)
      $$\begin{aligned}&\frac{\partial {}Amp_{nbOff}(t,x)}{\partial {}t}=\,D\nabla {}^2Amp_{nbOff}(t,x)+k_{p}-k_{d}Amp_{nbOff}(t,x)-k_{L}Th_{nbOff}(t,x)Amp_{nbOff}(t,x) \end{aligned}$$
      (8.38)
      $$\begin{aligned}&\frac{\partial {}nbrOff(t,x)}{\partial {}t}=\,D\nabla {}^2nbrOff(t,x)-k_{d}nbrOff(t,x)+k_{L}Th_{nbOff}(t,x)Amp_{nbOff}y(t,x)-k_{L}nbrOff(t,x)Sg_{cr}(t,x) \end{aligned}$$
      (8.39)
      $$\begin{aligned}&\frac{\partial {}Sg_{cr}(t,x)}{\partial {}t}=\,D\nabla {}^2Sg_{cr}(t,x)+2k_{p}-k_{d}Sg_{cr}(t,x)-k_{L}On_{pr}(t,x)Sg_{cr}(t,x)-k_{L}nbrOff(t,x)Sg_{cr}(t,x) \end{aligned}$$
      (8.40)
      $$\begin{aligned}&\frac{\partial {}Sum_{cr}(t,x)}{\partial {}t}=\,D\nabla {}^2Sum_{cr}(t,x)-k_{d}Sum_{cr}(t,x)+k_{L}On_{pr}(t,x)Sg_{cr}(t,x)+k_{L}nbrOff(t,x)Sg_{cr}(t,x)-k_{T}Sum_{cr}(t,x)Th_{cr}(t,x) \end{aligned}$$
      (8.41)
      $$\begin{aligned}&\frac{\partial {}Th_{cr}(t,x)}{\partial {}t}=\,D\nabla {}^2Th_{cr}(t,x)+1.35k_{p}-k_{d}Th_{cr}(t,x)-k_{T}Sum_{cr}(t,x)Th_{cr}(t,x) \end{aligned}$$
      (8.42)
      $$\begin{aligned}&\frac{\partial {}Amp_{cr}(t,x)}{\partial {}t}=\,D\nabla {}^2Amp_{cr}(t,x)+k_{p}-k_{d}Amp_{cr}(t,x)-k_{L}Sum_{cr}(t,x)Amp_{cr}(t,x) \end{aligned}$$
      (8.43)
      $$\begin{aligned}&\frac{\partial {}Live(t,x)}{\partial {}t}=\,D\nabla {}^2Live(t,x)-k_{d}Live(t,x)+k_{L}Sum_{cr}(t,x)Amp_{cr}(t,x)-k_{L}Live(t,x)Sg_{nx}(t,x) \end{aligned}$$
      (8.44)
    4. d.

      Boolean logic to determine if next state is on

      $$\begin{aligned}&\frac{\partial {}Sg_{nx}(t,x)}{\partial {}t}=\,D\nabla {}^2Sg_{nx}(t,x)+2k_{p}-k_{d}Sg_{nx}(t,x)-k_{L}Live(t,x)Sg_{nx}(t,x)-k_{L}Br(t,x)Sg_{nx}(t,x) \end{aligned}$$
      (8.45)
      $$\begin{aligned}&\frac{\partial {}Sum_{nx}(t,x)}{\partial {}t}=\,D\nabla {}^2Sum_{nx}(t,x)-k_{d}Sum_{nx}(t,x)+k_{L}Live(t,x)Sg_{nx}(t,x)+k_{L}Br(t,x)Sg_{nx}(t,x)-k_{T}Sum_{nx}(t,x)Th_{nx}(t,x) \end{aligned}$$
      (8.46)
      $$\begin{aligned}&\frac{\partial {}Th_{nx}(t,x)}{\partial {}t}=\,D\nabla {}^2Th_{nx}(t,x)+0.65k_{p}-k_{d}Th_{nx}(t,x)-k_{T}Sum_{nx}(t,x)Th_{nx}(t,x) \end{aligned}$$
      (8.47)
      $$\begin{aligned}&\frac{\partial {}Amp_{nx}(t,x)}{\partial {}t}=\,D\nabla {}^2Amp_{nx}(t,x)+k_{p}-k_{d}Amp_{nx}(t,x)-k_{L}Sum_{nx}(t,x)Amp_{nx}(t,x) \end{aligned}$$
      (8.48)
      $$\begin{aligned}&\frac{\partial {}Nx(t,x)}{\partial {}t}=\,D\nabla {}^2Nx(t,x)-k_{d}Nx(t,x)+k_{L}Sum_{nx}(t,x)Amp_{nx}(t,x) \end{aligned}$$
      (8.49)
      $$\begin{aligned}&\frac{\partial {}On_{nx}(t,x)}{\partial {}t}=\,D\nabla {}^2On_{nx}(t,x)-k_{d}On_{nx}(t,x)+k_{d}Nx(t,x)-k_{L}On_{nx}(t,x)Sg_{nxOn}(t,x) \end{aligned}$$
      (8.50)
    5. e.

      Boolean logic to determine if next state is off

      $$\begin{aligned}&\frac{\partial {}Nt_{nx}(t,x)}{\partial {}t}=\,D\nabla {}^2Nt_{nx}(t,x)-k_{d}Nt_{nx}(t,x)+k_{d}Nx(t,x)-k_{T}Nt_{nx}(t,x)Off_{nx}(t,x) \end{aligned}$$
      (8.51)
      $$\begin{aligned}&\frac{\partial {}Off_{nx}(t,x)}{\partial {}t}=\,D\nabla {}^2Off_{nx}(t,x)+k_{p}-k_{d}Off_{nx}(t,x)-k_{T}Nt_{nx}(t,x)Off_{nx}(t,x)-k_{L}Off_{nx}(t,x)Sg_{OffNx}(t,x) \end{aligned}$$
      (8.52)
    6. f.

      Clocked synchronization gates

      $$\begin{aligned}&\frac{\partial {}Sg_{nxOn}(t,x)}{\partial {}t}=\,D\nabla {}^2Sg_{nxOn}(t,x)+2k_{p}-k_{d}Sg_{nxOn}(t,x)-k_{L}On_{nx}(t,x)Sg_{nxOn}(t,x)-k_{L}clk_{On}(t,x)Sg_{nxOn}(t,x) \end{aligned}$$
      (8.53)
      $$\begin{aligned}&\frac{\partial {}On_{nx}Sum(t,x)}{\partial {}t}=\,D\nabla {}^2On_{nx}Sum(t,x)-k_{d}On_{nx}Sum(t,x)+k_{L}On_{nx}(t,x)Sg_{nxOn}(t,x)+k_{L}clk_{On}(t,x)Sg_{nxOn}(t,x)-k_{T}On_{nx}Sum(t,x)On_{nx}Th(t,x) \end{aligned}$$
      (8.54)
      $$\begin{aligned}&\frac{\partial {}On_{nx}Th(t,x)}{\partial {}t}=\,D\nabla {}^2On_{nx}Th(t,x)+1.35k_{p}-k_{d}On_{nx}Th(t,x)-k_{T}On_{nx}Sum(t,x)On_{nx}Th(t,x) \end{aligned}$$
      (8.55)
      $$\begin{aligned}&\frac{\partial {}On_{nx}Amp(t,x)}{\partial {}t}=\,D\nabla {}^2On_{nx}Amp(t,x)+k_{p}-k_{d}On_{nx}Amp(t,x)-k_{L}On_{nx}Sum(t,x)On_{nx}Amp(t,x) \end{aligned}$$
      (8.56)
      $$\begin{aligned}&\frac{\partial {}Set_{Bfr}(t,x)}{\partial {}t}=\,D\nabla {}^2Set_{Bfr}(t,x)-k_{d}Set_{Bfr}(t,x)+k_{L}On_{nx}Sum(t,x)On_{nx}Amp(t,x) \end{aligned}$$
      (8.57)
      $$\begin{aligned}&\frac{\partial {}Sg_{OffNx}(t,x)}{\partial {}t}=\,D\nabla {}^2Sg_{OffNx}(t,x)+2k_{p}-k_{d}Sg_{OffNx}(t,x)-k_{L}Off_{nx}(t,x)Sg_{OffNx}(t,x)-k_{L}clk_{Off}(t,x)Sg_{OffNx}(t,x) \end{aligned}$$
      (8.58)
      $$\begin{aligned}&\frac{\partial {}Sum_{OffNx}(t,x)}{\partial {}t}=\,D\nabla {}^2Sum_{OffNx}(t,x)-k_{d}Sum_{OffNx}(t,x)+k_{L}Off_{nx}(t,x)Sg_{OffNx}(t,x)+k_{L}clk_{Off}(t,x)Sg_{OffNx}(t,x)-k_{T}Sum_{OffNx}(t,x)Th_{OffNx}(t,x) \end{aligned}$$
      (8.59)
      $$\begin{aligned}&\frac{\partial {}Th_{OffNx}(t,x)}{\partial {}t}=\,D\nabla {}^2Th_{OffNx}(t,x)+1.35k_{p}-k_{d}Th_{OffNx}(t,x)-k_{T}Sum_{OffNx}(t,x)Th_{OffNx}(t,x) \end{aligned}$$
      (8.60)
      $$\begin{aligned}&\frac{\partial {}Amp_{OffNx}(t,x)}{\partial {}t}=\,D\nabla {}^2Amp_{OffNx}(t,x)+k_{p}-k_{d}Amp_{OffNx}(t,x)-k_{L}Sum_{OffNx}(t,x)Amp_{OffNx}(t,x) \end{aligned}$$
      (8.61)
      $$\begin{aligned}&\frac{\partial {}Res_{Bfr}(t,x)}{\partial {}t}=\,D\nabla {}^2Res_{Bfr}(t,x)-k_{d}Res_{Bfr}(t,x)+k_{L}Sum_{OffNx}(t,x)Amp_{OffNx}(t,x) \end{aligned}$$
      (8.62)
  4. 4.

    Storage stage

    1. a.

      Copies of Set/Res signals

      $$\begin{aligned}&\frac{\partial {}Set(t,x)}{\partial {}t}=\,D\nabla {}^2Set(t,x)-k_{d}Set(t,x)+k_{d}Set_{Bfr}(t,x)-k_{L}Set(t,x)N1Sg(t,x) \end{aligned}$$
      (8.63)
      $$\begin{aligned}&\frac{\partial {}Res(t,x)}{\partial {}t}=\,D\nabla {}^2Res(t,x)-k_{d}Res(t,x)+k_{d}Res_{Bfr}(t,x)-k_{L}Res(t,x)N2Sg(t,x) \end{aligned}$$
      (8.64)
    2. b.

      Flip-flop module

      $$\begin{aligned}&\frac{\partial {}ffBfrd(t,x)}{\partial {}t}=\,D\nabla {}^2ffBfrd(t,x)-k_{d}ffBfrd(t,x)+k_{L}N2Th(t,x)N2(t,x) \end{aligned}$$
      (8.65)
      $$\begin{aligned}&\frac{\partial {}ffFbackNot(t,x)}{\partial {}t}=\,D\nabla {}^2ffFbackNot(t,x)-k_{d}ffFbackNot(t,x)+k_{L}N1Th(t,x)N1(t,x)-k_{L}ffFbackNot(t,x)N2Sg(t,x) \end{aligned}$$
      (8.66)
      $$\begin{aligned}&\frac{\partial {}N1Th(t,x)}{\partial {}t}=\,D\nabla {}^2N1Th(t,x)+0.65k_{p}-k_{d}N1Th(t,x)-k_{T}N1Sum(t,x)N1Th(t,x) \end{aligned}$$
      (8.67)
      $$\begin{aligned}&\frac{\partial {}N2Sum(t,x)}{\partial {}t}=\,D\nabla {}^2N2Sum(t,x)-k_{d}N2Sum(t,x)+k_{L}Res(t,x)N2Sg(t,x)+k_{L}ffFbackNot(t,x)N2Sg(t,x)-k_{T}N2Sum(t,x)N2Th(t,x) \end{aligned}$$
      (8.68)
      $$\begin{aligned}&\frac{\partial {}ffFback(t,x)}{\partial {}t}=\,D\nabla {}^2ffFback(t,x)-k_{d}ffFback(t,x)+k_{d}ffBfrd(t,x)-k_{L}ffFback(t,x)N1Sg(t,x) \end{aligned}$$
      (8.69)
      $$\begin{aligned}&\frac{\partial {}N1Sg(t,x)}{\partial {}t}=\,D\nabla {}^2N1Sg(t,x)+2k_{p}-k_{d}N1Sg(t,x)-k_{L}Set(t,x)N1Sg(t,x)-k_{L}ffFback(t,x)N1Sg(t,x) \end{aligned}$$
      (8.70)
      $$\begin{aligned}&\frac{\partial {}N1Sum(t,x)}{\partial {}t}=\,D\nabla {}^2N1Sum(t,x)-k_{d}N1Sum(t,x)+k_{L}Set(t,x)N1Sg(t,x)+k_{L}ffFback(t,x)N1Sg(t,x)-k_{T}N1Sum(t,x)N1Th(t,x) \end{aligned}$$
      (8.71)
      $$\begin{aligned}&\frac{\partial {}N1(t,x)}{\partial {}t}=\,D\nabla {}^2N1(t,x)+k_{p}-k_{d}N1(t,x)-k_{L}N1Th(t,x)N1(t,x) \end{aligned}$$
      (8.72)
      $$\begin{aligned}&\frac{\partial {}N2Sg(t,x)}{\partial {}t}=\,D\nabla {}^2N2Sg(t,x)+2k_{p}-k_{d}N2Sg(t,x)-k_{L}Res(t,x)N2Sg(t,x)-k_{L}ffFbackNot(t,x)N2Sg(t,x) \end{aligned}$$
      (8.73)
      $$\begin{aligned}&\frac{\partial {}N2Th(t,x)}{\partial {}t}=\,D\nabla {}^2N2Th(t,x)+0.65k_{p}-k_{d}N2Th(t,x)-k_{T}N2Sum(t,x)N2Th(t,x) \end{aligned}$$
      (8.74)
      $$\begin{aligned}&\frac{\partial {}N2(t,x)}{\partial {}t}=\,D\nabla {}^2N2(t,x)+k_{p}-k_{d}N2(t,x)-k_{L}N2Th(t,x)N2(t,x) \end{aligned}$$
      (8.75)
    3. c.

      Stored state

      $$\begin{aligned} \frac{\partial {}Last(t,x)}{\partial {}t}=\,D\nabla {}^2Last(t,x)-k_{d}Last(t,x)+k_{d}ffBfrd(t,x) \end{aligned}$$
      (8.76)

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Scalise, D., Schulman, R. Emulating cellular automata in chemical reaction–diffusion networks. Nat Comput 15, 197–214 (2016). https://doi.org/10.1007/s11047-015-9503-8

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s11047-015-9503-8

Keywords

Navigation