<?xml version='1.0'?>
<!DOCTYPE art SYSTEM 'http://www.biomedcentral.com/xml/article.dtd'>
<art>
   <ui>1471-2105-5-24</ui>
   <ji>1471-2105</ji>
   <fm>
      <dochead>Software</dochead>
      <bibl>
         <title>
            <p>Biochemical Network Stochastic Simulator (BioNetS): software for stochastic modeling of biochemical networks</p>
         </title>
         <aug>
            <au id="A1" ca="yes">
               <snm>Adalsteinsson</snm>
               <fnm>David</fnm>
               <insr iid="I1"/>
               <email>david@amath.unc.edu</email>
            </au>
            <au id="A2">
               <snm>McMillen</snm>
               <fnm>David</fnm>
               <insr iid="I2"/>
               <email>mcmillen@utm.utoronto.ca</email>
            </au>
            <au id="A3">
               <snm>Elston</snm>
               <mi>C</mi>
               <fnm>Timothy</fnm>
               <insr iid="I1"/>
               <email>telston@amath.unc.edu</email>
            </au>
         </aug>
         <insg>
            <ins id="I1">
               <p>Department of Mathematics, University of North Carolina at Chapel Hill, Chapel Hill, NC 27599-3250, USA</p>
            </ins>
            <ins id="I2">
               <p>Department of Chemical and Physical Sciences, University of Toronto at Mississauga, Mississauga, ON L5L 1C6, Canada</p>
            </ins>
         </insg>
         <source>BMC Bioinformatics</source>
         <issn>1471-2105</issn>
         <pubdate>2004</pubdate>
         <volume>5</volume>
         <issue>1</issue>
         <fpage>24</fpage>
         <url>http://www.biomedcentral.com/1471-2105/5/24</url>
         <xrefbib>
            <pubidlist>
               <pubid idtype="pmpid">15113411</pubid>
               <pubid idtype="doi">10.1186/1471-2105-5-24</pubid>
            </pubidlist>
         </xrefbib>
      </bibl>
      <history>
         <rec>
            <date>
               <day>07</day>
               <month>11</month>
               <year>2003</year>
            </date>
         </rec>
         <acc>
            <date>
               <day>08</day>
               <month>3</month>
               <year>2004</year>
            </date>
         </acc>
         <pub>
            <date>
               <day>08</day>
               <month>3</month>
               <year>2004</year>
            </date>
         </pub>
      </history>
      <cpyrt>
         <year>2004</year>
         <collab>Adalsteinsson et al; licensee BioMed Central Ltd. This is an Open Access article: verbatim copying and redistribution of this article are permitted in all media for any purpose, provided this notice is preserved along with the article's original URL.</collab>
      </cpyrt>
      <abs>
         <sec>
            <st>
               <p>Abstract</p>
            </st>
            <sec>
               <st>
                  <p>Background</p>
               </st>
               <p>Intrinsic fluctuations due to the stochastic nature of biochemical reactions can have large effects on the response of biochemical networks. This is particularly true for pathways that involve transcriptional regulation, where generally there are two copies of each gene and the number of messenger RNA (mRNA) molecules can be small. Therefore, there is a need for computational tools for developing and investigating stochastic models of biochemical networks.</p>
            </sec>
            <sec>
               <st>
                  <p>Results</p>
               </st>
               <p>We have developed the software package Biochemical Network Stochastic Simulator (BioNetS) for efficiently
and accurately simulating stochastic models of biochemical networks. BioNetS has a graphical user interface that allows models to be entered in a straightforward manner, and allows the user to specify the type of random variable (discrete or continuous) for each chemical species in the network. The discrete variables are simulated using an efficient implementation of the Gillespie algorithm. For the continuous random variables, BioNetS constructs and numerically solves
the appropriate chemical Langevin equations. The software package has been developed to scale efficiently with network size, thereby allowing large systems to be studied. BioNetS runs as a BioSpice agent and can be downloaded from <url>http://www.biospice.org</url>. BioNetS also can be run as a stand alone package. All the required files are accessible from <url>http://x.amath.unc.edu/BioNetS</url>.</p>
            </sec>
            <sec>
               <st>
                  <p>Conclusions</p>
               </st>
               <p>We have developed BioNetS to be a reliable tool for studying the stochastic dynamics of large biochemical networks. Important features of BioNetS are its ability to handle hybrid models that consist of both continuous and discrete random variables and its ability to model cell growth and division. We have verified the accuracy and efficiency of the numerical methods by considering several test systems.</p>
            </sec>
         </sec>
      </abs>
   </fm>
   <bdy>
      <sec>
         <st>
            <p>Background</p>
         </st>
         <p>Mathematical modeling of complex biological networks has a lengthy history <abbrgrp><abbr bid="B1">1</abbr><abbr bid="B2">2</abbr><abbr bid="B3">3</abbr><abbr bid="B4">4</abbr><abbr bid="B5">5</abbr></abbrgrp>. In the past, the standard approach for modeling these systems has been to derive ordinary differential equations (ODEs) based on the law of mass action for the concentrations of the biochemical species involved in the network <abbrgrp><abbr bid="B6">6</abbr><abbr bid="B7">7</abbr><abbr bid="B8">8</abbr><abbr bid="B9">9</abbr><abbr bid="B10">10</abbr><abbr bid="B11">11</abbr><abbr bid="B12">12</abbr><abbr bid="B13">13</abbr><abbr bid="B14">14</abbr><abbr bid="B15">15</abbr><abbr bid="B16">16</abbr></abbrgrp>. Experimental studies <abbrgrp><abbr bid="B17">17</abbr><abbr bid="B18">18</abbr><abbr bid="B19">19</abbr></abbrgrp> have demonstrated, however, that stochastic effects can be significant in cellular reactions, particularly in the case of transcriptional regulation, where generally there are two copies of each gene and the number of messenger RNA (mRNA) molecules can be small. A number of recent experimental and modeling studies have addressed the role of fluctuations in gene expression <abbrgrp><abbr bid="B20">20</abbr><abbr bid="B21">21</abbr><abbr bid="B22">22</abbr><abbr bid="B23">23</abbr><abbr bid="B24">24</abbr><abbr bid="B25">25</abbr><abbr bid="B26">26</abbr><abbr bid="B27">27</abbr><abbr bid="B28">28</abbr><abbr bid="B29">29</abbr><abbr bid="B30">30</abbr><abbr bid="B31">31</abbr></abbrgrp>. Many modeling studies have employed the well-established Gillespie Monte Carlo algorithm <abbrgrp><abbr bid="B32">32</abbr></abbrgrp> or one of its more recent variants <abbrgrp><abbr bid="B33">33</abbr><abbr bid="B34">34</abbr></abbrgrp>. These algorithms offer an exact solution to the stochastic evolution of chemical systems, but they are computationally very expensive. A much more efficient approach is to approximate the species as continuous variables and formulate the problem in terms of stochastic differential equations (SDEs), often referred to as chemical Langevin equations <abbrgrp><abbr bid="B24">24</abbr><abbr bid="B28">28</abbr><abbr bid="B35">35</abbr></abbrgrp>. This approximation works remarkably well for many cases, even when the number of particles involved is as small as ten, and the resulting simulations can run orders of magnitude more quickly than the discrete Monte Carlo approach. In other cases, when some or all of the particle numbers are very small, the system may need to be modeled using the discrete approach, or a hybrid method in which some species are treated discretely while others are evolved using the continuum approximation. With the increasing interest in formulating accurate models of large biochemical networks, there is a need for reliable software packages that correctly incorporate stochastic effects, yet are fast enough to simulate large interconnected sets of reacting species (as found, for example, in signaling cascades or genetic regulatory networks). We have developed the BIOchemical NETwork Stochastic Simulator, "BioNetS," to meet this need. BioNetS is capable of performing full discrete simulations using an efficient implementation of the Gillespie algorithm. It is also able to set up and solve the chemical Langevin equations, which are a good approximation to the discrete dynamics in the limit of large abundances. Finally, BioNetS can handle hybrid models in which chemical species that are present in low abundances are treated discretely, whereas those present at high abundances are handled continuously. Thus, the user can pick the simulation method that is best suited to their needs. All aspects of the software are highly optimized for efficiency.</p>
         <p>The remainder of this manuscript is arranged in the following way. In the Implementation section, the mathematical background for the Gillespie method, chemical Langevin equations and hybrid models is presented, along with a discussion of the numerical algorithms used in BioNetS. Under Results and Discussion we provide a brief introduction to BioNetS along with several examples. The examples serve two purposes: 1) to illustrate how to use the software and 2) to verify its efficiency and accuracy. More complete documentation can be found at <url>http://x.amath.unc.edu/BioNetS</url>, and in the documentation included with the package.</p>
      </sec>
      <sec>
         <st>
            <p>Implementation</p>
         </st>
         <p>We first develop the mathematical methodology on which BioNetS is built. Readers interested in using BioNetS without going into its underlying structure can proceed directly to the Results and discussion section.</p>
         <sec>
            <st>
               <p>Discrete reactions and the gillespie algorithm</p>
            </st>
            <p>BioNetS makes use of elementary reactions (zeroth, first and second order). The following examples illustrates each type of reaction:</p>
            <p>
               <graphic file="1471-2105-5-24-i1.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i2.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i3.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i4.gif"/>
            </p>
            <p>In the above reactions, the calligraphic letters denote a single molecule of a chemical species. The number of molecules of a particular species in the system at time <it>t </it>is denoted with uppercase letters (e.g., <it>A</it>(<it>t</it>), <it>B</it>(<it>t</it>), <it>A_B</it>(<it>t</it>), and <it>V</it>(<it>t</it>)). All the rate constants, &#947;, &#948;, and <it>k</it><sub>1</sub><it>-k</it><sub>6</sub>, have units of per time. Eq. 1 represents a process in which a molecule <it>A </it>is produced when the reaction proceeds in the forward direction and is degraded in the reverse direction. In the forward direction the reaction is zeroth order and proceeds with an average rate of &#947;. In the backward direction, the reaction is first order, and the average rate of degradation is &#948;<it>A</it>(<it>t</it>). The forward reaction in Eq. 2 represents a process in which chemical species <it>A </it>is converted to species <it>B</it>. In this case <it>A </it>and <it>B </it>might represent two different conformations of the same molecule. In Eq. 2 both the forward and backward reactions are first order because the reaction rates are proportional to the respective concentrations. The forward reaction given in Eq. 3 is a second order reaction in which an <it>A </it>molecule and a <it>B </it>molecule come together to form the complex <it>A_B</it>. The average rate for the reaction is <it>k</it><sub>1</sub><it>A</it>(<it>t</it>)<it>B</it>(<it>t</it>). The backward reaction is a first order reaction in which <it>A_B </it>dissociates at an average rate of <it>k</it><sub>2</sub><it>A_B</it>(<it>t</it>). In Eq. 4 the forward reaction produces a molecule <it>V</it>. The difference between this reaction and the forward reaction in Eq. 1 is that the average rate is <it>k</it><sub>3</sub><it>V</it>(<it>t</it>). This leads to exponential growth of <it>V(t)</it>. This reaction is particularly useful if <it>V</it>(<it>t</it>) is interpreted as the cell volume. In the backward reaction, two <it>V </it>molecules come together and degrade one of the <it>V </it>molecules. The average rate for this reaction is <it>k</it><sub>4</sub><it>V</it>(<it>t</it>)(<it>V</it>(<it>t</it>) - 1). The <it>V</it>(<it>t</it>) - 1 term arises because two of <it>V</it>(<it>t</it>) molecules must be chosen to react. This type of term also arises in reactions that produce homodimers. This reaction eventually stops the exponential growth of <it>V</it>. The net effect of these two reactions is to produce logistic growth. The total average reaction rate for the set of reactions given in Eqs. 1&#8211;4 is</p>
            <p>
               <graphic file="1471-2105-5-24-i5.gif"/>
            </p>
            <p>where <it>F</it><sub><it>i </it></sub>and <it>B</it><sub><it>i </it></sub>are the average forward and backward rates, respectively, for the <it>i</it>th reaction.</p>
            <p>For the rest of this section, we assume that the volume of the cell is not changing and only consider Eqs. 1&#8211;3. In the Examples we consider a case in which the volume is changing. If <it>A</it>(<it>t</it>), <it>B</it>(<it>t</it>) and <it>A_B</it>(<it>t</it>) are present in large numbers, then the law of mass action can be applied to derive equations that govern the concentrations [<it>A</it>]= <it>A</it>(<it>t</it>)/<it>V</it>, [<it>B</it>]= <it>B</it>(<it>t</it>)/<it>V </it>and [<it>AB</it>]= <it>A_B</it>(<it>t</it>)/<it>V</it>, where <it>V </it>is the cell volume. These equations are</p>
            <p>
               <graphic file="1471-2105-5-24-i6.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i7.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i8.gif"/>
            </p>
            <p>The primed rate constants indicate that they have been appropriately scaled by the volume (i.e, <it>k'</it><sub>3</sub>= <it>k</it><sub>3</sub><it>V </it>and &#947;' = &#947;/<it>V</it>), and, therefore, have units of either per time per concentration or concentration per time. Note that to convert to units of molar, we also have to appropriately scale the rate constants by Avagadro's number. Eqs. 6&#8211;8 represent a macroscopic description of the process, because they ignore fluctuations in the concentration that arise from the stochastic nature of chemical reactions.</p>
            <p>In general, <it>A</it>(<it>t</it>), <it>B</it>(<it>t</it>) and <it>A_B</it>(<it>t</it>) are random variables that take on any nonnegative integer value. The Gillespie algorithm <abbrgrp><abbr bid="B32">32</abbr></abbrgrp> can be used to generate sample paths of the process. This algorithm assumes that the random time &#916;<it>T</it><sub><it>i</it></sub>, between the <it>i</it>th and <it>i </it>+ 1 reaction, is exponentially distributed. For the simple example given by Eqs. 1&#8211;3, the mean waiting time between reactions, which characterizes the exponential distribution, is &#956;<sub>&#916;<it>Ti </it></sub>= &#947; + &#948; <it>A</it>(<it>t</it><sub><it>i</it></sub>) + <it>k</it><sub>1</sub><it>A</it>(<it>t</it><sub><it>i</it></sub>) + <it>k</it><sub>2</sub><it>B</it>(<it>t</it><sub><it>i</it></sub>) + <it>k</it><sub>3</sub><it>A</it>(<it>t</it><sub><it>i</it></sub>)<it>B</it>(<it>t</it><sub><it>i</it></sub>) + <it>k</it><sub>4</sub><it>A_B</it>(<it>t</it><sub><it>i</it></sub>), where <it>t</it><sub><it>i </it></sub>is the time at which the ith reaction occurred. Therefore, <it>t</it><sub><it>i</it></sub><sup>+1</sup> = <it>t</it><sub><it>i </it></sub>+ &#916;<it>T</it><sub><it>i</it></sub>. Once the time at which the next reaction occurs has been determined, the following probabilities are used to determine which reaction occurred:</p>
            <p>
               <graphic file="1471-2105-5-24-i9.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i10.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i11.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i12.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i13.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i14.gif"/>
            </p>
            <p>Once the reaction has been determined, the chemical species are updated accordingly. As discussed in the Numerical methods section, BioNetS uses an efficient implementation of the Gillespie algorithm <abbrgrp><abbr bid="B33">33</abbr></abbrgrp>.</p>
            <p>Another description of discrete stochastic processes is achieved through use of the master equation that governs how the probabilities of the various random variables in the process evolve in time. Let <it>p</it><sub><it>a</it>, <it>b</it>,<it>a_b</it></sub>(<it>t</it>) = Pr [<it>A</it>(<it>t</it>) = <it>a</it>, <it>B</it>(<it>t</it>) = <it>b</it>, <it>A_B</it>(<it>t</it>) = <it>a_b</it>], then <it>P</it><sub><it>a,b,a_b</it></sub>(<it>t</it>) satisfies the master equation</p>
            <p>
               <graphic file="1471-2105-5-24-i15.gif"/>
            </p>
            <p>The master equation is the starting point for deriving various approximate schemes for describing the system <abbrgrp><abbr bid="B28">28</abbr></abbrgrp>. In the next section, we discuss an approximate scheme that is valid in the limit of large, but finite molecule numbers. The simplest approximation scheme is achieved by considering the first moments of the process. We will use over bars to denote averaging. For example, <graphic file="1471-2105-5-24-i16.gif"/>. Eq. 15 can be used to derive equations that govern the time evolution of all the first moments. Because of the second order reaction in Eq. 3, the equations for the means are coupled to the second moments. In fact, the <it>n</it>th moment equations contain terms that involve the <it>n</it>+ l moments. Thus, there is no closure to the system. The simplest closure scheme is to assume that all moments factorize (e.g., <graphic file="1471-2105-5-24-i17.gif"/>). This represents the macroscopic limit in which fluctuations are ignored. In this limit, we recover Eqs. 6&#8211;8 from the master equation.</p>
         </sec>
         <sec>
            <st>
               <p>The diffusion limit and the chemical langevin equations</p>
            </st>
            <p>The general form of the master equation for a system consisting of <it>N </it>chemical species and <it>M </it>reactions is</p>
            <p>
               <graphic file="1471-2105-5-24-i18.gif"/>
            </p>
            <p>where <b>n </b>is a N-dimensional vector of species numbers, <it>F</it><sub><it>i </it></sub>and <it>B</it><sub><it>i </it></sub>are the backward and forward rates for the <it>i</it>th reaction, and the vectors &#948;<sub><it>i </it></sub>contain the stoichiometric constants for the ith reaction. For the simple model given by Eqs. 1&#8211;3, <it>N </it>= 3, <it>M </it>= 3, and <it>p</it><sub><b>n</b></sub>(<it>t</it>) = Pr[<it>A</it>(<it>t</it>) = <it>n</it><sub>1</sub>, <it>B</it>(<it>t</it>) = <it>n</it><sub>2</sub>, and <it>A_B</it>(<it>t</it>) = <it>n</it><sub>3</sub>]. The forward and backward rates are <it>F</it><sub>1 </sub>= &#947;, <it>B</it><sub>1 </sub>= &#948;<it>n</it><sub>1</sub>, <it>F</it><sub>2 </sub>= <it>k</it><sub>1</sub><it>n</it><sub>1</sub>, <it>B</it><sub>2 </sub>= <it>k</it><sub>2</sub><it>n</it><sub>2</sub>, <it>F</it><sub>3 </sub>= <it>k</it><sub>3</sub><it>n</it><sub>1</sub><it>n</it><sub>2</sub>, and <it>B</it><sub>3 </sub>= <it>k</it><sub>4</sub><it>n</it><sub>3</sub>. The &#948;<sub><it>i </it></sub>vectors are the rows of the stoichiometric matrix</p>
            <p>
               <graphic file="1471-2105-5-24-i19.gif"/>
            </p>
            <p>The (<it>i,j</it>) element in the above matrix represents the change in the <it>j</it>th chemical species when the <it>i</it>th reaction proceeds in the forward direction.</p>
            <p>If the molecule numbers are large as compared to 1, then the master equation Eq. 16 can be approximated by the continuous process <abbrgrp><abbr bid="B28">28</abbr><abbr bid="B35">35</abbr></abbrgrp></p>
            <p>
               <graphic file="1471-2105-5-24-i20.gif"/>
            </p>
            <p>where</p>
            <p>
               <graphic file="1471-2105-5-24-i21.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i22.gif"/>
            </p>
            <p>This result can be derived in several ways. One method is to note that Eq. 15 represents a second order finite differencing of Eq. 18, with a grid size of 1. Another method is to make use of the shift operator</p>
            <p>
               <graphic file="1471-2105-5-24-i23.gif"/>
            </p>
            <p>where <it>f</it>(<it>n</it>) is an arbitrary smooth function and for our purposes <it>k </it>is an integer. If the shift operator is used in Eq. 15, the diffusion limit is achieved when the Taylor series expansion given in Eq. 21 is truncated at <it>j </it>= 2.</p>
            <p>Sample paths consistent with Eq. 18 can be generated using the following set of SDEs</p>
            <p>
               <graphic file="1471-2105-5-24-i24.gif"/>
            </p>
            <p>where the <it>w</it><sub><it>k</it></sub>(<it>t</it>) are independent Gaussian white noise processes. These equations are often referred to as the chemical Langevin equations. For Eqs. 1 &#8211; 3, the explicit form of the SDEs are</p>
            <p>
               <graphic file="1471-2105-5-24-i25.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i26.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i27.gif"/>
            </p>
            <p>BioNetS generates numerical solutions to the SDEs given by Eq. 22 using either an explicit or semi-implicit Euler method. The form of these methods is</p>
            <p>
               <graphic file="1471-2105-5-24-i28.gif"/>
            </p>
            <p>where &#949; = 0 for the explicit method and &#949; = 1 for the semi-implicit method and the <it>Z</it><sub><it>k</it></sub>(<it>t</it>) are independent standard normal random variables. The advantage of using the chemical Langevin equations is that in the appropriate parameter regime, numerical solutions to the set of SDEs given by Eq. 22 can be generated much more efficiently than using the Gillespie algorithm. We expand upon this point in the Examples section. Higher order numerical algorithms for SDEs are available <abbrgrp><abbr bid="B36">36</abbr></abbrgrp>, but the noise structure of the chemical Langevin equations makes these schemes very cumbersome to implement. In the Examples, we verify that the Euler methods given by Eq. 26 are sufficient to produce reliable results. We note that the &#916; matrix is generally sparse, and BioNetS takes advantage of this sparseness to optimize the efficiency of the two Euler methods (see Numerical Methods, below).</p>
         </sec>
         <sec>
            <st>
               <p>Hybrid schemes</p>
            </st>
            <p>It is often desirable to allow some of the chemical species to be treated as continuous random variables and some to be treated discretely. This is particularly true for the case of transcriptional regulation by transcription factors. In this situation there can be as few as one DNA/transcription factor binding site and mRNA abundances can be as small as 10 or fewer. In contrast, protein abundances can be in the thousands. The technical difficulty with implementing hybrid schemes that include both discrete and continuous random variables is that the Gillespie method requires constant transition rates between reactions. This may not be the case, if some of the chemical species are evolving continuously in time. BioNetS overcomes this problem in one of two ways.</p>
            <p>Let <it>N</it><sub><it>d </it></sub>&lt;<it>N </it>be the number of discrete chemical species and <it>M</it><sub><it>d </it></sub>&#8804; <it>M </it>the number of reactions that produce a change in one of the <it>N</it><sub><it>d </it></sub>chemical species. The overall reaction rate at time <it>t</it><sub><it>j </it></sub>for the discrete set of chemical species is</p>
            <p>
               <graphic file="1471-2105-5-24-i29.gif"/>
            </p>
            <p>If the time step &#916;<it>t </it>for the SDEs is small enough such that</p>
            <p>
               <graphic file="1471-2105-5-24-i30.gif"/>
            </p>
            <p>then <it>p</it><sub><it>t </it></sub>is approximately the probability of a transition in &#916;<it>t</it>. In the above equation &#949; is a user specified tolerance. The probability of two discrete transitions in &#916;<it>t </it>is proportional to (&#916;<it>t</it>)<sup>2</sup>. Choosing &#949; &lt; 0.1, which means the probability of two reactions in &#916;<it>t </it>is less than 0.01, generally produces good results. However, this should be verified on a case by case basis. At each time step, BioNetS checks to verify that Ineq. 28 is satisfied for the specified &#949;. If so, a uniform random number <it>R </it>is generated and compared against <it>p</it><sub><it>t</it></sub>. If <it>R &lt; p</it><sub><it>t</it></sub>, then a transition occurred and the conditional probability <it>R/p</it><sub><it>t </it></sub>is used to determine which of the discrete transitions occurred. If <it>p</it><sub><it>t </it></sub>> &#949;, then the discrete reactions determine the fastest time scale in the system. In this case the Gillespie algorithm is used to update the discrete reactions, and the random time step 
&#916;<it>t</it><sub><it>j </it></sub>is used to update the SDEs.</p>
            <p>A pseudo-code description of the above algorithm is displayed in Table <tblr tid="T3">3</tblr>:</p>
         </sec>
      </sec>
      <sec>
         <st>
            <p>Numerical methods</p>
         </st>
         <p>BioNetS generates code that is tailored to efficiently simulate biochemical reactions. The optimization techniques used by BioNetS allows the software to simulate large systems in reasonable times without requiring high-end computational hardware.</p>
         <p>Techniques used to optimize the Gillespie method are:</p>
         <p>&#8226; For the discrete variables, the program uses data structures that allow only the chemical species and reaction rates that are affected by the current reaction to be updated.</p>
         <p>&#8226; A bisection search is used to determine which reaction occurred.</p>
         <p>The code has both an explicit and a semi-implicit solver, for simulating the chemical Langevin equations. The user specifies at runtime which method to use. By default the semi-implicit solver will be used. The semi-implicit solver uses Newton's method to solve the implicit equations, and for that the program needs to compute the Jacobian and solve a linear system at each iteration. For updating the chemical Langevin equations and hybrid models optimization techniques include:</p>
         <p>&#8226; The sparse nature of the stoichiometric matrix is used to efficiently store and per form matrix operations.</p>
         <p>&#8226; After every reaction, only the species and reaction rates affected by that reaction are updated. This can be seen in the Rates.cpp file, where all the different cases have been worked out and written for optimal execution speed.</p>
         <p>&#8226; The Jacobian is sparse, and the code takes full advantage of this fact. The program solves and factorizes the Jacobian using sparse methods. Before the code generation, BioNetS computes the entries in the Jacobian symbolically and finds a permutation that decreases the number of fill-ins during the LU factorization. As a result, no zero entries are saved, and the sparse structure is fully exploited. The sparse structure is then used in the LU solve. In the code, no pivots are visible, and no if-statements are left.</p>
      </sec>
      <sec>
         <st>
            <p>Results and discussion</p>
         </st>
         <p>In this section we present several examples which serve as illustrations of how to use BioNetS and test the accuracy and efficiency of the numerical methods. One particular concern is the accuracy of the Euler methods. While these methods are only of order <graphic file="1471-2105-5-24-i33.gif"/>, we show that when the approximations that lead to the chemical Langevin equations are valid, the difference between the numerical solutions of the SDEs and the exact discrete Gillespie method are negligible. Currently, the graphical user interface to BioNetS runs on the Macintosh OS X operating system, though the software will generate portable C/C++ code that can be compiled and run in any computing environment. The files needed to install and run BioNetS can be downloaded from <url>http://x.amath.unc.edu/BioNetS</url>. The following examples illustrate the way in which models are entered and run in BioNetS. More detailed documentation is available with the software package.</p>
         <sec>
            <st>
               <p>Dimerization</p>
            </st>
            <p>We begin with a simple system that consists of the following two reactions:</p>
            <p>
               <graphic file="1471-2105-5-24-i34.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i35.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i36.gif"/>
            </p>
            <p>In this system, monomer molecules <it>M </it>are produced at an average rate &#947; and degraded at an average rate &#948;<sub><it>m</it></sub><it>M</it>(<it>t</it>). Two monomers can then bind to form a dimer molecule <it>D</it>. The average forward and backward rates for the this reaction are <it>k</it><sub>1</sub><it>M</it>(<it>t</it>)(<it>M</it>(<it>t</it>) - 1) and <it>k</it><sub>2</sub><it>D</it>(<it>t</it>), respectively. The dimers are degraded at a rate &#948;<sub><it>d</it></sub>. We will treat two cases. In the first case the cell volume is assumed to be constant, and in the second case the cell is allowed to grow and divide. To model cell growth, the cell volume <it>V</it><sub><it>c </it></sub>is treated as a random variable <it>V</it><sub><it>c </it></sub>= 
&#945;<it>V</it>, where <it>V </it>is a non-negative discrete random variable and &#945; represents a unit of volume. The random variable <it>V </it>is governed by the reaction</p>
            <p>
               <graphic file="1471-2105-5-24-i37.gif"/>
            </p>
            <p>The above reaction causes <it>V </it>to grow exponentially fast with an average rate of <it>k</it><sub>3</sub>. Note that logistic growth is produced when the backward reaction in Eq. 32 is included.</p>
         </sec>
         <sec>
            <st>
               <p>Constant volume</p>
            </st>
            <p>We start by considering the simple case in which the volume of the cell remains constant. To use BioNetS follow these steps. Copy BioNetS onto your machine, and double click to launch. Help is included as part of the program, and accessed from the Help menu. The Help document will walk you through all the steps needed to enter reactions and run the simulator.</p>
            <p>The user interface asks you to enter the reaction and corresponding rate constants in the top part of the script window as shown in Fig. <figr fid="F1">1a</figr>. In the bottom part of the script window, you can toggle between panels. The Species panel is shown in Fig. <figr fid="F1">1a</figr> and allows the user to specify how the simulator treats each chemical species, discrete or continuous. The Constants panel lists the order in which the rate constants are referenced. The Output panel allows the user to specify the ouput type. There are two ways to generate program output, either binary or ASCII. Binary output is based on MATLAB binary files, so it is possible to drive the program with MATLAB and use MATLAB's plotting routines to view the output. It is also possible to generate time series and histograms of the data from within BioNetS. Using ASCII files for I/O allows the simulator to be run through shell scripts. The Executable panel allows the user to generate either an executable file or source code. BioNetS generates portable C/C++ code that can be compiled and run in any computing environment. BioNetS can directly compile the C/C++ code. However, this requires the Developer tools, included on all recent Apple machines and available directly from <url>http://developer.apple.com</url> for free. The compiled code can then be run from within BioNetS. The Comments panel is available for the user to enter descriptive comments about the model.</p>
            <fig id="F1">
               <title>
                  <p>Figure 1</p>
               </title>
               <caption>
                  <p>A) A screen shot of BioNetS that illustrates how the dimerization example with constant volume is entered</p>
               </caption>
               <text>
                  <p>A) A screen shot of BioNetS that illustrates how the dimerization example with constant volume is entered. The tabs at the bottom of the screen allow the user to enter various options. B) A screen shot that illustrates how the dimerization example with cell growth and division is entered into BioNetS. In each screen shot, the area to the right of the reaction entry interface is a a slide-out testing panel that allows the user to enter rate constants and initial conditions, then view the results of a run from within BioNetS.</p>
               </text>
               <graphic file="1471-2105-5-24-1"/>
            </fig>
            <p>To run BioNetS as a BioSpice agent, you need to move the source directory onto a OAA-supported system. Once there, open up the MakeOAA file and specify the locations of your oaalib folder. Then just type "make -f MakeOAA" (without the quotes) to create the agent.</p>
            <p>Figures <figr fid="F2">2A</figr> and <figr fid="F2">2B</figr> show plots of time series for the monomer number generated by BioNetS. The parameter values used to generate these figures are given in the caption. Figure <figr fid="F2">2A</figr> is the result obtained when <it>M </it>and <it>D </it>are treated as discrete variables. Figure <figr fid="F2">2B</figr> is the result from the chemical Langevin equations. The solid line shown in both panels is the result from the following equations for the first moments:</p>
            <fig id="F2">
               <title>
                  <p>Figure 2</p>
               </title>
               <caption>
                  <p>A) A single realization of <it>M(t) </it>for the discrete process</p>
               </caption>
               <text>
                  <p>A) A single realization of <it>M</it>(<it>t</it>) for the discrete process. B) A single realization of <it>M</it>(<it>t</it>) produced by the chemical Langevin equations. The solid line in both panels is the result produced from Eqs. 33 and 34. The parameter values used to generate these figures were &#947; = 50, &#948;<sub><it>m </it></sub>= 1.02, &#948;<sub><it>d </it></sub>= 0.02, <it>k</it><sub>1 </sub>= 0.01, and <it>k</it><sub>2 </sub>= 0.1. The initial conditions used were <it>M</it>(0) = 0 and <it>D</it>(0) = 0 and a time step of 0.01 was used for the continuous case.</p>
               </text>
               <graphic file="1471-2105-5-24-2"/>
            </fig>
            <p>
               <graphic file="1471-2105-5-24-i38.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i39.gif"/>
            </p>
            <p>Figure <figr fid="F3">3A</figr> shows the probability density function (PDF) of the dimer concentration at various times for the discrete and continuous case. Notice that for all times, the agreement between the two different methods is very good. At the final time, <it>t </it>= 200 s, the system has reached steady state. These figures indicate that the chemical Langevin equations are accurately capturing the dynamics and steady-state behavior of the discrete system.</p>
            <fig id="F3">
               <title>
                  <p>Figure 3</p>
               </title>
               <caption>
                  <p>PDFs for the dimer concentration at various times</p>
               </caption>
               <text>
                  <p>PDFs for the dimer concentration at various times. The staircase plots are the results for the discrete case and the continuous lines are the results for the continuous case. Panel A is for the case of constant volume and Panel B is the varying volume case. The parameter values and initial conditions are the same as in Figs. <figr fid="F2">2</figr> and <figr fid="F4">4</figr>, for the constant volume case and varying volume case, respectively. Each PDF consists of 10, 000 realizations of the process.</p>
               </text>
               <graphic file="1471-2105-5-24-3"/>
            </fig>
         </sec>
         <sec>
            <st>
               <p>Cell growth and division</p>
            </st>
            <p>In this section we describe how cell growth and division can be modeled using BioNetS. We will assume that the cell is experiencing exponential growth up until the time it divides. As discussed above, the cell volume <it>V</it><sub><it>c </it></sub>= &#945;<it>V </it>is treated as a random variable. In this model cell division occurs when <it>V </it>exceeds a threshold value <it>V</it><sub><it>max</it></sub>. Note that the choice of <it>V</it><sub><it>max </it></sub>influences the degree of variability observed in the cell division times: cells growing from <it>V </it>= 1 to <it>V</it><sub><it>max </it></sub>= 2 will have a large amount of variability in their division times, while those growing from <it>V </it>= 100 to <it>V</it><sub><it>max </it></sub>= 200 will have less variable times, and those ranging from <it>V </it>= 1000 to <it>V</it><sub><it>max </it></sub>= 2000 will be still less variable. Changing the range of <it>V </it>in this way requires rescaling the relationship of <it>V </it>to the cell volume by adjusting the value of &#945;. When cell division occurs the volume is halved, and the proteins are randomly divided between the two cells using a binomial distribution. Only one of the daughter cells is tracked. Because second order reactions require two molecules to collide, the rate constants for these reactions should scale like <it>k</it><sub>1 </sub>= <it>k</it>'<sub>1</sub>/<it>V</it><sub><it>c</it></sub>. We also assume that the production rate of monomers scales as &#947; = &#947;'<it>V</it><sub><it>c</it></sub>. This is a reasonable assumption, because as the cell grows the transcription and translation machinery increases. These assumptions produce the following rate equations for the concentrations</p>
            <p>
               <graphic file="1471-2105-5-24-i40.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i41.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i42.gif"/>
            </p>
            <p>The terms in Eqs. 35 and 36 that involve <it>k</it><sub>3 </sub>arise because of dilution due to cell growth. We use the same parameter values as in the constant volume case except &#948;<sub><it>m </it></sub>= 1 and &#948;<sub><it>d </it></sub>= 0. The cell growth rate is <it>k</it><sub>3 </sub>= 0.02 (assuming a scaling of 1 time unit to one minute, this yields an average cell division time of ln 2/<it>k</it><sub>3 </sub>&#8771; 35 minutes, typical for bacteria), the scale factor for the cell volume is &#945; = 1 (for simplicity), and <it>V</it><sub><it>max </it></sub>= 100. With these choices of parameter values, Eqs. 35 and 36 are identical with Eqs. 33 and 34, and we expect the average behavior of this system to be similar to that of the constant volume case.</p>
            <p>The screen shot shown in Fig. <figr fid="F1">1B</figr> illustrates how this model is entered into BioNetS. Figure <figr fid="F4">4A</figr> shows the time series for the volume and monomer number treating each variable discretely. The results for the continuous case are virtually identical. In Fig. <figr fid="F4">4B</figr> the concentration is plotted as a function of time. This figure should be compared with Fig. <figr fid="F2">2A</figr>. The solid line in Fig. <figr fid="F4">4B</figr> is the result from solving Eqs. 35&#8211;37. Figure <figr fid="F3">3B</figr> shows the PDFs for the dimer concentration at various times. Both the discrete and continuous results are shown. By comparing Fig. <figr fid="F3">3A</figr> with Fig. <figr fid="F3">3B</figr>, we see not surprisingly that for this simple example the main effect of volume growth is to act as an additional noise source and increase the variability of the distributions.</p>
            <fig id="F4">
               <title>
                  <p>Figure 4</p>
               </title>
               <caption>
                  <p>A) Time series for the volume and monomer number for the case of cell growth and division</p>
               </caption>
               <text>
                  <p>A) Time series for the volume and monomer number for the case of cell growth and division. The parameter values used to generate these figures were &#947; = 50, &#948;<sub><it>m </it></sub>= 1.0, &#948;<sub><it>d </it></sub>= 0.0, <it>k</it><sub>1 </sub>= 0.01, <it>k</it><sub>2 </sub>= 0.1, <it>k</it><sub>3 </sub>= 0.02, and <it>V</it><sub><it>max </it></sub>= 100. The initial conditions used were <it>M</it>(0) = 0, <it>D</it>(0) = 0 and <it>V</it>(0) = 50. B) The monomer concentration <it>M</it>(<it>t</it>)/<it>V</it>(<it>t</it>) as a function of time. The solid line is the result from Eqs. 35&#8211;36.</p>
               </text>
               <graphic file="1471-2105-5-24-4"/>
            </fig>
         </sec>
         <sec>
            <st>
               <p>A chemical oscillator</p>
            </st>
            <p>We next use BioNetS to simulate a two gene system that has been studied in the literature <abbrgrp><abbr bid="B37">37</abbr></abbrgrp>. In this system, the protein <it>A </it>coded for by gene <it>a </it>acts as an activator for gene <it>a </it>and gene <it>r</it>, by binding to the promoter regions, <it>P</it><sub><it>a </it></sub>and P<sub><it>r</it></sub>, of the respective gene. This increases the rate of <it>mRNA</it><sub><it>a </it></sub>and <it>mRNA</it><sub><it>r </it></sub>production by a factor &#945;<sub><it>a</it></sub>and &#945;<sub><it>r</it></sub>, respectively. The protein R, acts as a represser for both genes by binding to <it>A </it>to form the inactive complex <it>A_R</it>. All gene products, mRNA and protein, are actively degraded. However, the heterodimer <it>A_R </it>protects the <it>R </it>subunit from degradation. The system consists of 9 chemical species and the following 14 biochemical reactions:</p>
            <p>
               <graphic file="1471-2105-5-24-i43.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i44.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i45.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i46.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i47.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i48.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i49.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i50.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i51.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i52.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i53.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i54.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i55.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i56.gif"/>
            </p>
            <p>Figure <figr fid="F5">5</figr> shows the way this system is entered into BioNetS.</p>
            <fig id="F5">
               <title>
                  <p>Figure 5</p>
               </title>
               <caption>
                  <p>A screen shot of the BioNetS user interface for the chemical oscillator example</p>
               </caption>
               <text>
                  <p>A screen shot of the BioNetS user interface for the chemical oscillator example. The parameter values shown in the figure are the ones used to produce the results shown in Figs. <figr fid="F6">6</figr>, <figr fid="F7">7</figr>, <figr fid="F8">8</figr>. The area to the right of the reaction entry interface is a a testing panel provided by BioNetS to allow the user to enter rate constants and initial conditions, then examine the results of a run.</p>
               </text>
               <graphic file="1471-2105-5-24-5"/>
            </fig>
            <p>An interesting feature of the system is that it is capable of producing sustained oscillations <abbrgrp><abbr bid="B37">37</abbr></abbrgrp>. Figure <figr fid="F6">6A</figr> shows a times series for the repressor protein number when all the chemical species are treated as discrete random variables. The values of the rate constants used to generate this figure are listed in Fig. <figr fid="F5">5</figr>.</p>
            <fig id="F6">
               <title>
                  <p>Figure 6</p>
               </title>
               <caption>
                  <p>Sample paths for the repressor protein number</p>
               </caption>
               <text>
                  <p>Sample paths for the repressor protein number. Panel A is the fully discrete case and Panel B is the hybrid model.</p>
               </text>
               <graphic file="1471-2105-5-24-6"/>
            </fig>
            <p>The chemical species <it>P</it><sub><it>a</it></sub>, <it>P</it><sub><it>r</it></sub>, <it>P</it><sub><it>r</it></sub>_<it>A</it>, and <it>P</it><sub><it>r</it></sub>_<it>A </it>are binary random variables: they can only take on the values 0 or 1. Therefore, these species can not be approximated as continuous random variables. All the other chemical species appear in sufficient quantities to justify the continuum approximation. Figure <figr fid="F6">6B</figr> shows a time series corresponding to Fig. <figr fid="F6">6A</figr> using the hybrid model. The hybrid model was run using the semi-implicit Euler method, and for these parameter values, runs 3 times faster than full model. Visually, the agreement between the two methods appears good. To test the accuracy of the Euler method, we used BioNetS to construct 2-D histograms of <it>R </it>versus <it>mRN A</it><sub><it>r</it></sub>. The results for the discrete and hybrid models are shown in Figs. <figr fid="F7">7B</figr> and <figr fid="F7">7B</figr>. To construct these histograms 10, 000 oscillations were used. Excellent agreement between the discrete and hybrid model is seen. This indicates that the hybrid model is accurately sampling the steady-state distribution. To verify that the hybrid model faithfully captures the dynamics of the system, we computed the power spectra of both models. The results are shown in Figs. <figr fid="F8">8A</figr> and <figr fid="F8">8B</figr>. Again, excellent agreement is seen between the discrete and hybrid model.</p>
            <fig id="F7">
               <title>
                  <p>Figure 7</p>
               </title>
               <caption>
                  <p>2-D histograms of repressor mRNA number versus repressor protein number</p>
               </caption>
               <text>
                  <p>2-D histograms of repressor mRNA number versus repressor protein number. Red indicates regions of large frequency (i.e., where the system spends a lot of time) and blue indicates regions of low frequency. Panel A is for the discrete system and Panel B is the hybrid model. Roughly 10, 000 oscillations were used to produce both plots.</p>
               </text>
               <graphic file="1471-2105-5-24-7"/>
            </fig>
            <fig id="F8">
               <title>
                  <p>Figure 8</p>
               </title>
               <caption>
                  <p>Power spectra for the repressor protein number</p>
               </caption>
               <text>
                  <p>Power spectra for the repressor protein number. Panel A is the discrete case and B is the hybrid model.</p>
               </text>
               <graphic file="1471-2105-5-24-8"/>
            </fig>
         </sec>
         <sec>
            <st>
               <p>An engineered promoter system</p>
            </st>
            <p>Using standard techniques in modern molecular biology, it is possible to design novel systems of promoter-gene pairs, such that virtually any desired regulatory network architecture may be instantiated; such networks are often called "synthetic gene networks." Recent implementations have included direct negative <abbrgrp><abbr bid="B22">22</abbr></abbrgrp> and positive <abbrgrp><abbr bid="B23">23</abbr></abbrgrp> feedback, a bistable switch <abbrgrp><abbr bid="B12">12</abbr></abbrgrp>, an oscillator <abbrgrp><abbr bid="B11">11</abbr></abbrgrp>, an intercellular communication system <abbrgrp><abbr bid="B38">38</abbr></abbrgrp>, and a bimodal self-activating system <abbrgrp><abbr bid="B39">39</abbr></abbrgrp>.</p>
            <p>In this example, we use BioNetS to implement a model of a simple, open-loop network based around a novel engineered promoter, which has been designed and constructed by N. Guido and J. J. Collins at Boston University. The promoter, called <it>O</it><sub><it>R</it></sub><it>O</it><sub><it>lac</it></sub>, combines the <it>O</it><sub><it>lac</it></sub>, <it>O</it><sub><it>R</it></sub>1, and <it>O</it><sub><it>R</it></sub>2 operator sites, so that it is repressed by the lac repressor protein (LacI) and activated by the lambda repressor protein (CI); see Fig. <figr fid="F9">9</figr>. Experiments have been conducted in which the promoter, along with other sites to produce the activator and repressor proteins, is integrated into a high copy number plasmid and inserted into a strain of <it>Escherichia coli</it>. The promoter's activity is observed using a fluorescent reporter, Green Fluorescent Protein (GFP). A detailed modeling study with direct comparisons to experimental results has been carried out using a fully discrete stochastic approach, and will be reported elsewhere (McMillen <it>et al.</it>, manuscript in preparation). Our goal here is to provide a reasonably complex test case to evaluate the performance of BioNetS.</p>
            <fig id="F9">
               <title>
                  <p>Figure 9</p>
               </title>
               <caption>
                  <p>Schematic of the <it>O</it><sub><it>R</it></sub><it>O</it><sub><it>lac </it></sub>engineered promoter</p>
               </caption>
               <text>
                  <p>Schematic of the <it>O</it><sub><it>R</it></sub><it>O</it><sub><it>lac </it></sub>engineered promoter. The promoter fuses three operator sites, one of which (<it>O</it><sub><it>lac</it></sub>) yields repression when the LacI tetramer is bound to it, while binding of the CI dimer to <it>O</it><sub><it>R</it></sub>2 yields approximately ten-fold activation (the <it>O</it><sub><it>R</it></sub>1 site assists activation by cooperatively enhancing CI binding to <it>O</it><sub><it>R</it></sub>2 when CI is bound to <it>O</it><sub><it>R</it></sub>1). In the experimental system, CI and LacI are produced in the cell by external promoters, not shown here. The Green Fluorescent Protein (GFP) product is then used to monitor the output of the promoter by flow cytometry.</p>
               </text>
               <graphic file="1471-2105-5-24-9"/>
            </fig>
            <p>The processes to be captured by the model are: transcription and degradation of mRNA strands; translation of mRNA into protein; degradation of protein; formation of protein multimers (dimers in the case of CI, tetramers in the case of LacI); LacI binding to isopropyl-&#946;-D-thiogalactopyranoside (IPTG), a chemical inducer that reduces LacI's binding affinity for <it>O</it><sub><it>lac</it></sub>; and protein-DNA binding at the <it>O</it><sub><it>R</it></sub><it>O</it><sub><it>lac </it></sub>promoter's operator sites. We define the following chemical species: <it>G</it>, GFP; <it>M</it><sub><it>g</it></sub>, mRNA coding for GFP; <it>X</it>, CI monomer; <it>X</it><sub>2</sub>, CI dimer; <it>M</it><sub><it>x</it></sub>, mRNA coding for CI; <it>D</it><sub><it>x</it></sub>, the arabinose-inducible <it>pBAD </it>promoter site producing CI; <it>Y</it>, LacI monomer; <it>Y</it><sub>2</sub>, LacI dimer; <it>Y</it><sub>4</sub>, LacI tetramer; <it>I</it><sub>0</sub>, IPTG (present in massive excess and thus taken to be constant); <it>Y</it><sub><it>I</it></sub>, LacI tetramer bound to IPTG; <it>M</it><sub><it>y</it></sub>, mRNA coding for LacI; and <it>D</it><sub><it>y</it></sub>, the <it>P</it><sub><it>L</it></sub><it>tetO</it>1 site constitutively producing LacI. In addition to these, we define species <it>D</it><sub>0 </sub>through <it>D</it><sub>8</sub>, representing the various permutations of proteins bound to the three operator sites in the <it>O</it><sub><it>R</it></sub><it>O</it><sub><it>lac </it></sub>promoter (see Table for a list). There are twelve combinatorial possibilities, but we eliminate three of them on the basis that CI <it>(X</it><sub>2</sub><it>) </it>binding <it>O</it><sub><it>R</it></sub>2 but not<it>O</it><sub><it>R</it></sub>1 is unlikely, because of the low binding affinitity of CI for <it>O</it><sub><it>R</it></sub>2 compared to<it>O</it><sub><it>R</it></sub>1. Table also lists the effect on the basal rate of production when the promoter is in each state. This reflects the regulatory effect of the proteins; for example, CI bound to <it>O</it><sub><it>R</it></sub>2 leads to a 10-fold increase in transcription rate, while LacI bound to <it>O</it><sub><it>lac </it></sub>halts transcription completely (note that we assume in the event of simultaneous binding of activator and repressor, repression "wins" and transcription is halted).</p>
            <p>The following irreversible reactions represent the processes of transcription, translation, and degradation:</p>
            <p>
               <graphic file="1471-2105-5-24-i57.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i58.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i59.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i60.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i61.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i62.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i63.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i64.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i65.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i66.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i67.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i68.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i69.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i70.gif"/>
            </p>
            <p>As in previous reactions, the caligraphic letters represent individual molecules of each species. We scale all times and rates by the cell division time.</p>
            <p>Experimental measurements generally provide equilibrium rather than rate constants, and thus when writing reversible reactions we use the following notational convention: a reaction with equilibrium constant <it>K </it>has forward rate constant <it>KR </it>and backward rate constant <it>R</it>, where <it>R </it>is a scaling factor which sets the speed at which the reaction approaches equilibrium (we will consider three values of <it>R: </it>1, 10, and 100). Using this notation, we represent protein-protein binding with the following set of reactions</p>
            <p>
               <graphic file="1471-2105-5-24-i71.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i72.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i73.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i74.gif"/>
            </p>
            <p>Finally, protein-DNA binding is given by:</p>
            <p>
               <graphic file="1471-2105-5-24-i75.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i76.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i77.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i78.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i79.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i80.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i81.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i82.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i83.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i84.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i85.gif"/>
            </p>
            <p>
               <graphic file="1471-2105-5-24-i86.gif"/>
            </p>
            <p>In all, the system consists of 21 species, participating in 34 reactions. The reactions are entered into BioNetS using the same method described in the previous examples. We use BioNetS' ability to represent individual species as either discrete or continuous to formulate three versions of the model: fully discrete, fully continuous, and a hybrid version in which the DNA species <it>D</it><sub>0 </sub>through <it>D</it><sub>8 </sub>are discrete while all other species are continuous. We vary the value of <it>R</it>, the scaling factor for reversible reactions, and keep all other parameters fixed at the following nondimensionalized values: &#946;<sub><it>g </it></sub>= 0.1, &#946;<sub><it>y </it></sub>= 1, &#946;<sub><it>x </it></sub>= 0.5, &#946;<sub><it>T </it></sub>= 10, &#947;<sub><it>mrna </it></sub>= 3.5, &#947;<sub><it>prot </it></sub>= 0.7, <it>K</it><sub><it>y </it></sub>= 0.01, <it>K</it><sub><it>y</it>2 </sub>= 0.1, <it>K</it><sub><it>yI </it></sub>= 2 &#215; 10<sup>-6</sup>, <it>K</it><sub><it>x </it></sub>= 0.05, <it>K</it><sub>1 </sub>= 0.3, <it>K</it><sub>2 </sub>= 2<it>K</it><sub>1</sub>,<it>K</it><sub>3 </sub>= 0.008, <it>K</it><sub>4 </sub>= 1.4 &#215; l0<sup>-4</sup>K<sub>3</sub>, <it>I</it><sub>0 </sub>= 1 &#215; 10<sup>6</sup>.</p>
            <p>To evaluate the steady-state probability distributions produced by the reaction system, simulations 250000 cell cycles in length were used to accumulate histograms (a built-in feature of BioNetS) of the number of molecules of GFP (species <it>G)</it>, for each of the three versions of the model. As Fig. <figr fid="F10">10A</figr> shows, the resulting distributions are essentially identical, indicating that the continuum approximations used in the fully continuous and hybrid forms of the model were valid. Not all species in the system are well approximated as continuous variables: Fig. <figr fid="F10">10B</figr> shows the continuous probability distribution for species <it>D</it><sub>8</sub>, representing a promoter fully populated with two CI dimers and a LacI tetramer-IPTG complex. This situation is very rare in our parameter regime, and the system spends essentially all of its time with <it>D</it><sub>8 </sub>= 0. The fully continuous model, however, fluctuates into negative values, indicating that the continuum approximation has broken down. This does not significantly affect the distribution for GFP because the other, more common DNA states dominate the system's behavior; note, however, that if we were considering genomic DNA rather than a high copy number plasmid, we would not be able to employ a fully continuous model. The hybrid model, by treating the DNA species as continuous, eliminates the fluctuations into negative values. In general, the appropriate approximations will depend on both the system and the variables of interest: in the present example, if we were interested in the behavior of the operator sites themselves, we would not be able to use the fully continuous version of the model, but as a model solely of GFP expression the approximation suffices. Comparisons between types of models should be made to test the underlying assumptions, and BioNetS facilitates this process.</p>
            <fig id="F10">
               <title>
                  <p>Figure 10</p>
               </title>
               <caption>
                  <p>A) Probability densities of GFP molecules, for three versions of the <it>O</it><sub><it>R</it></sub><it>O</it><sub><it>lac </it></sub>promoter model</p>
               </caption>
               <text>
                  <p>A) Probability densities of GFP molecules, for three versions of the <it>O</it><sub><it>R</it></sub><it>O</it><sub><it>lac </it></sub>promoter model. Densities were generated by accumulating statistics in runs 250000 cell cycles in duration. (<it>Solid line</it>) Fully discrete model. (<it>Dashed line</it>) Fully continuous model. (<it>Dash-dotted line</it>) Hybrid model: the DNA binding states are represented by discrete variables, while all other species are continuous. All three methods produce virtually identical probability distributions. B) Probability density for species <it>D</it><sub>8</sub>, for the continuous model. The hybrid and fully discrete methods produce identical distributions in which <it>D</it><sub>8 </sub>spends 99.996% of the time at zero. This histogram shows that the continuous model artificially allows negative numbers (see inset time series).</p>
               </text>
               <graphic file="1471-2105-5-24-10"/>
            </fig>
            <p>We used simulations 200 cell cycles in length to test the speed at which the three model versions ran. In each case, 200 simulations were run using a consistent set of 200 different random seeds; all runs were started with identical initial conditions. For the fully continuous and hybrid systems, the semi-implicit scheme was numerically stable and yielded consistent histograms for all time step sizes between <it>dt = </it>0.001 and <it>dt = </it>0.5, but the latter corresponds to just two time points per cell division cycle (recall that all times are scaled by the cell division time), and we chose instead to sample 20 points per cycle and set <it>dt = </it>0.05. As shown in Table <tblr tid="T2">2</tblr>, the fully continuous method was always fastest, with the degree of improvement over the exact, fully discrete method depending strongly on the value of <it>R</it>, the scaling factor for the reversible reaction rates. For <it>R = </it>1, the fully continuous method was only 1.4-fold faster than the fully discrete method, but as <it>R </it>is increased this speed advantage increases to over 4-fold at <it>R = </it>10, then to over 30-fold at <it>R = </it>100. (Note that the speed advantage of the fully continuous over the fully discrete method increases with the abundances of the chemical species. Shifting parameters to generate higher protein numbers can yield cases in which the continuum approximation is hundreds of times faster than the discrete approach; runs not shown here.) Use of a hybrid discrete/continuous method did not, for this particular model system, offer any speed gain over the fully discrete approach; the increased time involved in computing the Jacobian for the semi-implicit method is more time-consuming than simply simulating the reactions directly. Optimizing efficiency requires testing various potential approaches, and BioNetS makes this a simple process.</p>
         </sec>
      </sec>
      <sec>
         <st>
            <p>Conclusions</p>
         </st>
         <p>We have developed BioNetS to be a reliable tool for studying the stochastic dynamics of large chemical networks. The software allows the user to specify which of the chemical species in the network should be treated as discrete random variables and which can be approximated as continuous random variables. The software is highly optimized for speed and should be be able to simulate networks consisting of hundreds of chemical species. We have verified the accuracy of the numerical methods by considering several test systems (a dimerization reaction, a chemical oscillator, and an engineered promoter), each of which shows excellent agreement between the fully discrete version and the fully or partially continuous versions. Our hope is that BioNetS, by providing a simple, user-friendly interface, will allow biological experimentalists to formulate biochemical reaction models of their systems quickly and easily, ideally increasing the number of systems in which direct comparisons are available between models and experimental results. Clearly, not every possible biological system can be captured in the current version of BioNetS, and its capabilities will continue to grow in the future. We wish to encourage users, or potential users, to contact us regarding which additional features would be most helpful to them.</p>
      </sec>
      <sec>
         <st>
            <p>Availability and requirements</p>
         </st>
         <p>&#8226; <b>Project name: </b>BlOchemical NETwork Stochastic Simulator (BioNetS)</p>
         <p>&#8226; <b>Project home page: </b><url>http://x.amath.unc.edu/BioNetS</url></p>
         <p>&#8226; <b>Operating system:</b></p>
         <p>* User interface: Macintosh OS X, version 10.2 or above.</p>
         <p>* Generated source code: Ability to compile portable C++ code. Makefiles included for OS X and Linux.</p>
         <p>&#8226; <b>Programming language: </b>C++.</p>
         <p>&#8226; <b>Other requirements: </b>None.</p>
         <p>&#8226; <b>License: </b>BSD license.</p>
         <p>&#8226; <b>Restrictions on use by non-academics: </b>None.</p>
      </sec>
      <sec>
         <st>
            <p>Authors' contributions</p>
         </st>
         <p>DA wrote the BioNetS code in its entirety, providing the user interface, the numerical optimizations and the code generator. TE provided the mathematical derivations, carried out the dimer and oscillator examples, wrote an initial draft of the paper, and worked with DA on the algorithms and numerical methods. DM revised and finalized the paper, provided the engineered promoter example, and worked extensively with DA on testing and debugging of the software. All authors read, edited, and approved the final version of the paper.</p>
         <tbl id="T1">
            <title>
               <p>Table 1</p>
            </title>
            <caption>
               <p>List of DNA-binding states in the <it>O</it><sub><it>R</it></sub><it>O</it><sub><it>lac </it></sub>engineered promoter example.</p>
            </caption>
            <tblbdy cols="5">
               <r>
                  <c ca="center">
                     <p>Species</p>
                  </c>
                  <c ca="center">
                     <p>
                        <it>O</it>
                        <sub>
                           <it>lac</it>
                        </sub>
                     </p>
                     <p/>
                  </c>
                  <c ca="center">
                     <p>
                        <it>O</it>
                        <sub>
                           <it>R</it>
                        </sub>
                        <it>2</it>
                     </p>
                  </c>
                  <c ca="center">
                     <p><it>O</it><sub><it>R</it></sub>1</p>
                  </c>
                  <c ca="center">
                     <p>Production Rate</p>
                  </c>
               </r>
               <r>
                  <c cspan="5">
                     <hr/>
                  </c>
               </r>
               <r>
                  <c ca="center">
                     <p>
                        <it>D</it>
                        <sub>0</sub>
                     </p>
                     <p/>
                  </c>
                  <c ca="center">
                     <p>-</p>
                  </c>
                  <c ca="center">
                     <p>
                        <it>-</it>
                     </p>
                  </c>
                  <c ca="center">
                     <p>
                        <it>-</it>
                     </p>
                  </c>
                  <c ca="center">
                     <p>1</p>
                  </c>
               </r>
               <r>
                  <c ca="center">
                     <p>
                        <it>D</it>
                        <sub>1</sub>
                     </p>
                  </c>
                  <c ca="center">
                     <p>-</p>
                  </c>
                  <c ca="center">
                     <p>
                        <it>-</it>
                     </p>
                  </c>
                  <c ca="center">
                     <p>
                        <it>X</it>
                        <sub>2</sub>
                     </p>
                     <p/>
                  </c>
                  <c ca="center">
                     <p>1</p>
                  </c>
               </r>
               <r>
                  <c ca="center">
                     <p>
                        <it>D</it>
                        <sub>2</sub>
                     </p>
                  </c>
                  <c ca="center">
                     <p>-</p>
                  </c>
                  <c ca="center">
                     <p>
                        <it>X</it>
                        <sub>2</sub>
                     </p>
                     <p/>
                  </c>
                  <c ca="center">
                     <p>
                        <it>X</it>
                        <sub>2</sub>
                     </p>
                  </c>
                  <c ca="center">
                     <p>10</p>
                  </c>
               </r>
               <r>
                  <c ca="center">
                     <p>
                        <it>D</it>
                        <sub>3</sub>
                     </p>
                  </c>
                  <c ca="center">
                     <p>
                        <it>Y</it>
                        <sub>4</sub>
                     </p>
                     <p/>
                  </c>
                  <c ca="center">
                     <p>
                        <it>-</it>
                     </p>
                  </c>
                  <c ca="center">
                     <p>
                        <it>-</it>
                     </p>
                  </c>
                  <c ca="center">
                     <p>0</p>
                  </c>
               </r>
               <r>
                  <c ca="center">
                     <p>
                        <it>D</it>
                        <sub>4</sub>
                     </p>
                     <p/>
                  </c>
                  <c ca="center">
                     <p>
                        <it>Y</it>
                        <sub>4</sub>
                     </p>
                  </c>
                  <c ca="center">
                     <p>
                        <it>-</it>
                     </p>
                  </c>
                  <c ca="center">
                     <p>
                        <it>X</it>
                        <sub>2</sub>
                     </p>
                  </c>
                  <c ca="center">
                     <p>0</p>
                  </c>
               </r>
               <r>
                  <c ca="center">
                     <p>
                        <it>D</it>
                        <sub>5</sub>
                     </p>
                     <p/>
                  </c>
                  <c ca="center">
                     <p>
                        <it>Y</it>
                        <sub>4</sub>
                     </p>
                  </c>
                  <c ca="center">
                     <p>
                        <it>X</it>
                        <sub>2</sub>
                     </p>
                  </c>
                  <c ca="center">
                     <p>
                        <it>X</it>
                        <sub>2</sub>
                     </p>
                  </c>
                  <c ca="center">
                     <p>0</p>
                  </c>
               </r>
               <r>
                  <c ca="center">
                     <p>
                        <it>D</it>
                        <sub>6</sub>
                     </p>
                     <p/>
                  </c>
                  <c ca="center">
                     <p>
                        <it>Y</it>
                        <sub>I</sub>
                     </p>
                  </c>
                  <c ca="center">
                     <p>
                        <it>-</it>
                     </p>
                  </c>
                  <c ca="center">
                     <p>
                        <it>-</it>
                     </p>
                  </c>
                  <c ca="center">
                     <p>0</p>
                  </c>
               </r>
               <r>
                  <c ca="center">
                     <p>
                        <it>D</it>
                        <sub>7</sub>
                     </p>
                     <p/>
                  </c>
                  <c ca="center">
                     <p>
                        <it>Y</it>
                        <sub>I</sub>
                     </p>
                  </c>
                  <c ca="center">
                     <p>
                        <it>-</it>
                     </p>
                  </c>
                  <c ca="center">
                     <p>
                        <it>X</it>
                        <sub>2</sub>
                     </p>
                  </c>
                  <c ca="center">
                     <p>0</p>
                  </c>
               </r>
               <r>
                  <c ca="center">
                     <p>
                        <it>D</it>
                        <sub>8</sub>
                     </p>
                     <p/>
                  </c>
                  <c ca="center">
                     <p>
                        <it>Y</it>
                        <sub>I</sub>
                     </p>
                  </c>
                  <c ca="center">
                     <p>
                        <it>X</it>
                        <sub>2</sub>
                     </p>
                  </c>
                  <c ca="center">
                     <p>
                        <it>X</it>
                        <sub>2</sub>
                     </p>
                  </c>
                  <c ca="center">
                     <p>0</p>
                  </c>
               </r>
            </tblbdy>
            <tblfn>
               <p>Column <it>O</it><sub><it>lac </it></sub>represents the <it>lac </it>operator site, while columns <it>O</it><sub><it>R</it></sub>1 and <it>O</it><sub><it>R</it></sub>2 represent the two operator sites in the <it>p</it><sub><it>rm </it></sub>region of bacteriophage &#955;. Entries in these columns indicate which regulatory proteins are bound to the operator sites in each state. The production rate column indicates how quickly transcription from the promoter proceeds in each state: basal expression occurs in states <it>D</it><sub>0 </sub>and D<sub>1</sub>; enhanced expression occurs in state <it>D</it><sub>2</sub>; and the remaining states display full repression (no expression).</p>
            </tblfn>
         </tbl>
         <tbl id="T2">
            <title>
               <p>Table 2</p>
            </title>
            <caption>
               <p>Execution times for three versions of the <it>O</it><sub><it>R</it></sub><it>O</it><sub><it>lac </it></sub>promoter model.</p>
            </caption>
            <tblbdy cols="7">
               <r>
                  <c>
                     <p/>
                  </c>
                  <c cspan="2" ca="center">
                     <p>Fully continuous</p>
                  </c>
                  <c cspan="2" ca="center">
                     <p>Fully discrete</p>
                  </c>
                  <c cspan="2" ca="center">
                     <p>Hybrid</p>
                  </c>
               </r>
               <r>
                  <c ca="center">
                     <p>
                        <it>R</it>
                     </p>
                  </c>
                  <c ca="center">
                     <p>Mean (s)</p>
                  </c>
                  <c ca="center">
                     <p>Std (s)</p>
                  </c>
                  <c ca="center">
                     <p>Mean (s)</p>
                  </c>
                  <c ca="center">
                     <p>Std (s)</p>
                  </c>
                  <c ca="center">
                     <p>Mean (s)</p>
                  </c>
                  <c ca="center">
                     <p>Std (s)</p>
                  </c>
               </r>
               <r>
                  <c cspan="7">
                     <hr/>
                  </c>
               </r>
               <r>
                  <c ca="center">
                     <p>
                        <it>1</it>
                     </p>
                  </c>
                  <c ca="center">
                     <p>0.26 [1]</p>
                  </c>
                  <c ca="center">
                     <p>0.01</p>
                  </c>
                  <c ca="center">
                     <p>0.36 [1.4]</p>
                  </c>
                  <c ca="center">
                     <p>0.01</p>
                  </c>
                  <c ca="center">
                     <p>0.69 [2.7]</p>
                  </c>
                  <c ca="center">
                     <p>0.01</p>
                  </c>
               </r>
               <r>
                  <c ca="center">
                     <p>10</p>
                  </c>
                  <c ca="center">
                     <p>0.27 [1]</p>
                  </c>
                  <c ca="center">
                     <p>0.01</p>
                  </c>
                  <c ca="center">
                     <p>1.15 [4.3]</p>
                  </c>
                  <c ca="center">
                     <p>0.01</p>
                  </c>
                  <c ca="center">
                     <p>6.91 [27]</p>
                  </c>
                  <c ca="center">
                     <p>0.12</p>
                  </c>
               </r>
               <r>
                  <c ca="center">
                     <p>100</p>
                  </c>
                  <c ca="center">
                     <p>0.27 [1]</p>
                  </c>
                  <c ca="center">
                     <p>0.01</p>
                  </c>
                  <c ca="center">
                     <p>9.11 [34]</p>
                  </c>
                  <c ca="center">
                     <p>0.28</p>
                  </c>
                  <c ca="center">
                     <p>69.43 [260]</p>
                  </c>
                  <c ca="center">
                     <p>1.13</p>
                  </c>
               </r>
            </tblbdy>
            <tblfn>
               <p>The mean values represent the number of seconds of CPU time required to run a simulation of 200 cell cycles on an otherwise unloaded 700 MHz PowerPC G4 processor, averaged over a set of 200 different random seeds, identical for each version of the model. "Std" indicates the standard deviation of this same set of 200 runs. Three values of parameter <it>R</it>, a scaling factor giving the relative speed of the reversible reactions in the system, have been used. In each row, the values in square brackets are normalized by the shortest execution time. The fully continuous version runs substantially faster than the other methods, and its execution time does not depend on <it>R</it>. The fully continuous version produces identical histograms to the fully discrete and hybrid methods for GFP (see Fig. <figr fid="F10">10A</figr>), but for the low-number species such as <it>D</it><sub>8 </sub>it produces spurious negative values (see Fig. <figr fid="F10">10B</figr>). If accuracy is required for the small-number states, the fully discrete method should be used; note that for this system, the hybrid approach is consistently slower than the fully discrete method.</p>
            </tblfn>
         </tbl>
         <tbl id="T3">
            <title>
               <p>Table 3</p>
            </title>
            <tblbdy cols="1">
               <r>
                  <c>
                     <p>&#8226; Initialize all species and rate constants</p>
                  </c>
               </r>
               <r>
                  <c>
                     <p>&#8226; Compute all reaction rates</p>
                  </c>
               </r>
               <r>
                  <c>
                     <p>&#8226; Loop:</p>
                  </c>
               </r>
               <r>
                  <c indent="1">
                     <p>* Set &#956; = sum of rates for the discrete reactions</p>
                  </c>
               </r>
               <r>
                  <c indent="1">
                     <p>* if (<it>p</it><sub><it>t </it></sub>= &#956;&#916;<it>t </it>> &#949;), <b>use Gillespie algorithm:</b></p>
                  </c>
               </r>
               <r>
                  <c indent="2">
                     <p>* R = a uniform random number in (0,1)</p>
                  </c>
               </r>
               <r>
                  <c indent="2">
                     <p>* Set timeStep = -log(<it>R</it>)/&#956;</p>
                  </c>
               </r>
               <r>
                  <c indent="2">
                     <p>* Find which reaction occurred, update the species involved</p>
                  </c>
               </r>
               <r>
                  <c indent="1">
                     <p>* else, <b>use small </b>&#916;<it>t </it><b>approximation:</b></p>
                  </c>
               </r>
               <r>
                  <c indent="2">
                     <p>* R = a uniform random number in [0,1]</p>
                  </c>
               </r>
               <r>
                  <c indent="2">
                     <p>* timeStep = continuousTimeStep</p>
                  </c>
               </r>
               <r>
                  <c indent="2">
                     <p>* if (<it>R </it>&lt;<it>p</it><sub><it>t </it></sub>= &#956; &#215; timeStep), <b>discrete transition has occurred:</b></p>
                  </c>
               </r>
               <r>
                  <c indent="3">
                     <p>&#8226; Determine which discrete transition occurred:</p>
                  </c>
               </r>
               <r>
                  <c indent="3">
                     <p>&#8226; Find the first value of <it>k </it>for which <graphic file="1471-2105-5-24-i31.gif"/></p>
                  </c>
               </r>
               <r>
                  <c indent="3">
                     <p>&#8226; If <graphic file="1471-2105-5-24-i32.gif"/>, the forward reaction occurred, otherwise the backward reaction occurred</p>
                  </c>
               </r>
               <r>
                  <c indent="2">
                     <p>* else, <b>no discrete transition:</b></p>
                  </c>
               </r>
               <r>
                  <c indent="3">
                     <p>&#8226; No discrete reaction occurs, update is entirely due to continuous reactions (below)</p>
                  </c>
               </r>
               <r>
                  <c indent="2">
                     <p>* end if (<it>small </it>&#916;<it>t </it><it>method, determination if discrete transition occurred</it>)</p>
                  </c>
               </r>
               <r>
                  <c indent="1">
                     <p>* end if (<it>selection of Gillespie or small </it>&#916;<it>t </it><it>method for discrete reactions</it>)</p>
                  </c>
               </r>
               <r>
                  <c indent="1">
                     <p>* Update the continuous species using the Langevin equation, with step size timeStep (where timeStep is either equal to continuousTimeStep or to the step size found by the Gillespie algorithm), using a semi-implicit numerical method</p>
                  </c>
               </r>
               <r>
                  <c indent="1">
                     <p>* Update any rates that have been changed by the continuous reactions and the single discrete reaction</p>
                  </c>
               </r>
               <r>
                  <c indent="1">
                     <p>* Break when user-defined total simulation time is reached</p>
                  </c>
               </r>
               <r>
                  <c>
                     <p>&#8226; end loop</p>
                  </c>
               </r>
            </tblbdy>
         </tbl>
      </sec>
   </bdy>
   <bm>
      <ack>
         <sec>
            <st>
               <p>Acknowledgements</p>
            </st>
            <p>This work was supported by DARPA grant F30602-01-2-0579. D. Adalsteinsson acknowledges support by the Alfred P. Sloan Foundation.</p>
         </sec>
      </ack>
      <refgrp>
         <bibl id="B1">
            <title>
               <p>The logical analysis of continuous, nonlinear biochemical control networks</p>
            </title>
            <aug>
               <au>
                  <snm>Glass</snm>
                  <fnm>L</fnm>
               </au>
               <au>
                  <snm>Kauffman</snm>
                  <fnm>S</fnm>
               </au>
            </aug>
            <source>J Theor Biol</source>
            <pubdate>1973</pubdate>
            <volume>39</volume>
            <fpage>103</fpage>
            <lpage>129</lpage>
            <xrefbib>
               <pubid idtype="pmpid">4741704</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B2">
            <title>
               <p>The large-scale structure and dynamics of gene control circuits: An ensemble approach</p>
            </title>
            <aug>
               <au>
                  <snm>Kauffman</snm>
                  <fnm>S</fnm>
               </au>
            </aug>
            <source>J Theor Biol</source>
            <pubdate>1974</pubdate>
            <volume>44</volume>
            <fpage>167</fpage>
            <lpage>190</lpage>
            <xrefbib>
               <pubid idtype="pmpid">4595774</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B3">
            <title>
               <p>Comparison of classical and autogenous systems of regulation in inducible operons</p>
            </title>
            <aug>
               <au>
                  <snm>Savageau</snm>
                  <fnm>M</fnm>
               </au>
            </aug>
            <source>Nature</source>
            <pubdate>1974</pubdate>
            <volume>252</volume>
            <fpage>546</fpage>
            <lpage>549</lpage>
            <xrefbib>
               <pubid idtype="pmpid">4431516</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B4">
            <title>
               <p>Classification of biological networks by their qualitative dynamics</p>
            </title>
            <aug>
               <au>
                  <snm>Glass</snm>
                  <fnm>L</fnm>
               </au>
            </aug>
            <source>J Theor Biol</source>
            <pubdate>1975</pubdate>
            <volume>54</volume>
            <fpage>85</fpage>
            <lpage>107</lpage>
            <xrefbib>
               <pubid idtype="pmpid">1202295</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B5">
            <title>
               <p>The dynamics of feedback control circuits in biochemical pathways</p>
            </title>
            <aug>
               <au>
                  <snm>Tyson</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>Othmer</snm>
                  <fnm>H</fnm>
               </au>
            </aug>
            <source>Progr Theor Biol</source>
            <pubdate>1978</pubdate>
            <volume>5</volume>
            <fpage>1</fpage>
            <lpage>60</lpage>
         </bibl>
         <bibl id="B6">
            <title>
               <p>Quantitative model for gene regulation by &#955; phage repressor</p>
            </title>
            <aug>
               <au>
                  <snm>Ackers</snm>
                  <fnm>G</fnm>
               </au>
               <au>
                  <snm>Johnson</snm>
                  <fnm>A</fnm>
               </au>
               <au>
                  <snm>Shea</snm>
                  <fnm>M</fnm>
               </au>
            </aug>
            <source>Proc Natl Acad Sci USA</source>
            <pubdate>1982</pubdate>
            <volume>79</volume>
            <fpage>1129</fpage>
            <lpage>1133</lpage>
            <xrefbib>
               <pubid idtype="pmpid">6461856</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B7">
            <title>
               <p>The O<sub><it>R </it></sub>control system of bacteriophage lambda: A physical-chemical model for gene regulation</p>
            </title>
            <aug>
               <au>
                  <snm>Shea</snm>
                  <fnm>M</fnm>
               </au>
               <au>
                  <snm>Ackers</snm>
                  <fnm>G</fnm>
               </au>
            </aug>
            <source>J Mol Biol</source>
            <pubdate>1985</pubdate>
            <volume>181</volume>
            <fpage>211</fpage>
            <lpage>230</lpage>
            <xrefbib>
               <pubid idtype="pmpid">3157005</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B8">
            <title>
               <p>Theoretical and experimental analysis of the phage lambda genetic switch implies missing levels of co-operativity</p>
            </title>
            <aug>
               <au>
                  <snm>Reinitz</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>Vaisnys</snm>
                  <fnm>J</fnm>
               </au>
            </aug>
            <source>J Theor Biol</source>
            <pubdate>1990</pubdate>
            <volume>145</volume>
            <fpage>295</fpage>
            <lpage>318</lpage>
            <xrefbib>
               <pubid idtype="pmpid">2146446</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B9">
            <title>
               <p>Model genetic circuits encoding autoregulatory transcription factors</p>
            </title>
            <aug>
               <au>
                  <snm>Keller</snm>
                  <fnm>A</fnm>
               </au>
            </aug>
            <source>J Theor Biol</source>
            <pubdate>1995</pubdate>
            <volume>172</volume>
            <fpage>169</fpage>
            <lpage>185</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1006/jtbi.1995.0014</pubid>
                  <pubid idtype="pmpid" link="fulltext">7891455</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B10">
            <title>
               <p>Chaos in high-dimensional neural and gene networks</p>
            </title>
            <aug>
               <au>
                  <snm>Mestl</snm>
                  <fnm>T</fnm>
               </au>
               <au>
                  <snm>Lemay</snm>
                  <fnm>C</fnm>
               </au>
               <au>
                  <snm>Glass</snm>
                  <fnm>L</fnm>
               </au>
            </aug>
            <source>Physica D</source>
            <pubdate>1996</pubdate>
            <volume>98</volume>
            <fpage>33</fpage>
            <lpage>52</lpage>
            <xrefbib>
               <pubid idtype="doi">10.1016/0167-2789(96)00086-3</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B11">
            <title>
               <p>A synthetic oscillatory network of transcriptonal regulators</p>
            </title>
            <aug>
               <au>
                  <snm>Elowitz</snm>
                  <fnm>M</fnm>
               </au>
               <au>
                  <snm>Leibler</snm>
                  <fnm>S</fnm>
               </au>
            </aug>
            <source>Nature</source>
            <pubdate>2000</pubdate>
            <volume>403</volume>
            <fpage>335</fpage>
            <lpage>338</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1038/35002125</pubid>
                  <pubid idtype="pmpid" link="fulltext">10659856</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B12">
            <title>
               <p>Construction of a genetic toggle switch in <it>Escherichia coli</it></p>
            </title>
            <aug>
               <au>
                  <snm>Gardner</snm>
                  <fnm>T</fnm>
               </au>
               <au>
                  <snm>Cantor</snm>
                  <fnm>C</fnm>
               </au>
               <au>
                  <snm>Collins</snm>
                  <fnm>J</fnm>
               </au>
            </aug>
            <source>Nature</source>
            <pubdate>2000</pubdate>
            <volume>403</volume>
            <fpage>339</fpage>
            <lpage>342</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1038/35002131</pubid>
                  <pubid idtype="pmpid" link="fulltext">10659857</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B13">
            <title>
               <p>Computation, prediction, and experimental tests of fitness for bacteriophage T7 mutants with permuted genomes</p>
            </title>
            <aug>
               <au>
                  <snm>Endy</snm>
                  <fnm>D</fnm>
               </au>
               <au>
                  <snm>You</snm>
                  <fnm>L</fnm>
               </au>
               <au>
                  <snm>Yin</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>Molineux</snm>
                  <fnm>I</fnm>
               </au>
            </aug>
            <source>Proc Natl Acad Sci USA</source>
            <pubdate>2000</pubdate>
            <volume>97</volume>
            <fpage>5375</fpage>
            <lpage>5380</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1073/pnas.090101397</pubid>
                  <pubid idtype="pmpid" link="fulltext">10792041</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B14">
            <title>
               <p>Designer gene networks: Towards fundamental cellular control</p>
            </title>
            <aug>
               <au>
                  <snm>Hasty</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>Isaacs</snm>
                  <fnm>F</fnm>
               </au>
               <au>
                  <snm>Dolnik</snm>
                  <fnm>M</fnm>
               </au>
               <au>
                  <snm>McMillen</snm>
                  <fnm>D</fnm>
               </au>
               <au>
                  <snm>Collins</snm>
                  <fnm>J</fnm>
               </au>
            </aug>
            <source>Chaos</source>
            <pubdate>2001</pubdate>
            <volume>11</volume>
            <fpage>207</fpage>
            <lpage>220</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1063/1.1345702</pubid>
                  <pubid idtype="pmpid" link="fulltext">12779454</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B15">
            <title>
               <p>Dynamic regulation of the tryptophan operon: A modeling study and comparison with experimental data</p>
            </title>
            <aug>
               <au>
                  <snm>Santill&#225;n</snm>
                  <fnm>M</fnm>
               </au>
               <au>
                  <snm>Mackey</snm>
                  <fnm>M</fnm>
               </au>
            </aug>
            <source>Proc Natl Acad Sci USA</source>
            <pubdate>2001</pubdate>
            <volume>98</volume>
            <fpage>1364</fpage>
            <lpage>1369</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1073/pnas.98.4.1364</pubid>
                  <pubid idtype="pmpid" link="fulltext">11171956</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B16">
            <title>
               <p>Synchronizing genetic relaxation oscillators by intercell signaling</p>
            </title>
            <aug>
               <au>
                  <snm>McMillen</snm>
                  <fnm>D</fnm>
               </au>
               <au>
                  <snm>Kopell</snm>
                  <fnm>N</fnm>
               </au>
               <au>
                  <snm>Hasty</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>Collins</snm>
                  <fnm>J</fnm>
               </au>
            </aug>
            <source>Proc Natl Acad Sci USA</source>
            <pubdate>2002</pubdate>
            <volume>99</volume>
            <fpage>679</fpage>
            <lpage>684</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1073/pnas.022642299</pubid>
                  <pubid idtype="pmpid" link="fulltext">11805323</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B17">
            <title>
               <p>Non-genetic individuality: Chance in the single cell</p>
            </title>
            <aug>
               <au>
                  <snm>Spudich</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>Koshland</snm>
                  <fnm>DEJ</fnm>
               </au>
            </aug>
            <source>Nature</source>
            <pubdate>1976</pubdate>
            <volume>262</volume>
            <fpage>467</fpage>
            <lpage>471</lpage>
            <xrefbib>
               <pubid idtype="pmpid">958399</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B18">
            <title>
               <p>Transcription of individual genes in eukaryotic cells occurs randomly and infrequently</p>
            </title>
            <aug>
               <au>
                  <snm>Ross</snm>
                  <fnm>I</fnm>
               </au>
               <au>
                  <snm>Browne</snm>
                  <fnm>C</fnm>
               </au>
               <au>
                  <snm>Hume</snm>
                  <fnm>D</fnm>
               </au>
            </aug>
            <source>Immunol Cell Biol</source>
            <pubdate>1994</pubdate>
            <volume>72</volume>
            <fpage>177</fpage>
            <lpage>185</lpage>
            <xrefbib>
               <pubid idtype="pmpid">8200693</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B19">
            <title>
               <p>Probability in transcriptional regulation and its implications for leukocyte differentiation and inducible gene expression</p>
            </title>
            <aug>
               <au>
                  <snm>Hume</snm>
                  <fnm>D</fnm>
               </au>
            </aug>
            <source>Blood</source>
            <pubdate>2000</pubdate>
            <volume>96</volume>
            <fpage>2323</fpage>
            <lpage>2328</lpage>
            <xrefbib>
               <pubid idtype="pmpid" link="fulltext">11001878</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B20">
            <title>
               <p>Stochastic kinetic analysis of developmental pathway bifurcation in phage &#955; -infected <it>Escherichia coli </it>cells</p>
            </title>
            <aug>
               <au>
                  <snm>Arkin</snm>
                  <fnm>A</fnm>
               </au>
               <au>
                  <snm>Ross</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>McAdams</snm>
                  <fnm>H</fnm>
               </au>
            </aug>
            <source>Genetics</source>
            <pubdate>1998</pubdate>
            <volume>149</volume>
            <fpage>1633</fpage>
            <lpage>1648</lpage>
            <xrefbib>
               <pubid idtype="pmpid" link="fulltext">9691025</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B21">
            <title>
               <p>Biological rhythms: Circadian clocks limited by noise</p>
            </title>
            <aug>
               <au>
                  <snm>Barkai</snm>
                  <fnm>N</fnm>
               </au>
               <au>
                  <snm>Leibler</snm>
                  <fnm>S</fnm>
               </au>
            </aug>
            <source>Nature</source>
            <pubdate>2000</pubdate>
            <volume>403</volume>
            <fpage>267</fpage>
            <xrefbib>
               <pubid idtype="pmpid" link="fulltext">10659837</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B22">
            <title>
               <p>Engineering stability in gene networks by autoregulation</p>
            </title>
            <aug>
               <au>
                  <snm>Becskei</snm>
                  <fnm>A</fnm>
               </au>
               <au>
                  <snm>Serrano</snm>
                  <fnm>L</fnm>
               </au>
            </aug>
            <source>Nature</source>
            <pubdate>2000</pubdate>
            <volume>405</volume>
            <fpage>590</fpage>
            <lpage>593</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1038/35014651</pubid>
                  <pubid idtype="pmpid" link="fulltext">10850721</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B23">
            <title>
               <p>Positive feedback in eukaryotic gene networks: cell differentiation by graded to binary response conversion</p>
            </title>
            <aug>
               <au>
                  <snm>Becskei</snm>
                  <fnm>A</fnm>
               </au>
               <au>
                  <snm>S&#233;raphin</snm>
                  <fnm>B</fnm>
               </au>
               <au>
                  <snm>Serrano</snm>
                  <fnm>L</fnm>
               </au>
            </aug>
            <source>EMBO J</source>
            <pubdate>2001</pubdate>
            <volume>20</volume>
            <fpage>2528</fpage>
            <lpage>2535</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1093/emboj/20.10.2528</pubid>
                  <pubid idtype="pmpid" link="fulltext">11350942</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B24">
            <title>
               <p>Stability and noise in biochemical switches</p>
            </title>
            <aug>
               <au>
                  <snm>Bialek</snm>
                  <fnm>W</fnm>
               </au>
            </aug>
            <source>In Advances in Neural Information Processing Systems</source>
            <publisher>Cambridge: The MIT Press</publisher>
            <pubdate>2001</pubdate>
            <volume>13</volume>
            <fpage>103</fpage>
            <lpage>109</lpage>
         </bibl>
         <bibl id="B25">
            <title>
               <p>Stochastic gene expression in a single cell</p>
            </title>
            <aug>
               <au>
                  <snm>Elowitz</snm>
                  <fnm>M</fnm>
               </au>
               <au>
                  <snm>Levine</snm>
                  <fnm>A</fnm>
               </au>
               <au>
                  <snm>Siggia</snm>
                  <fnm>E</fnm>
               </au>
               <au>
                  <snm>Swain</snm>
                  <fnm>P</fnm>
               </au>
            </aug>
            <source>Science</source>
            <pubdate>2002</pubdate>
            <volume>297</volume>
            <fpage>1183</fpage>
            <lpage>1186</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1126/science.1070919</pubid>
                  <pubid idtype="pmpid" link="fulltext">12183631</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B26">
            <title>
               <p>Noise-based switches and amplifiers for gene expression</p>
            </title>
            <aug>
               <au>
                  <snm>Hasty</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>Pradines</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>Dolnik</snm>
                  <fnm>M</fnm>
               </au>
               <au>
                  <snm>Collins</snm>
                  <fnm>J</fnm>
               </au>
            </aug>
            <source>Proc Natl Acad Sci USA</source>
            <pubdate>2000</pubdate>
            <volume>97</volume>
            <fpage>2075</fpage>
            <lpage>2080</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1073/pnas.040411297</pubid>
                  <pubid idtype="pmpid" link="fulltext">10681449</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B27">
            <title>
               <p>A stochastic model for gene induction</p>
            </title>
            <aug>
               <au>
                  <snm>Ko</snm>
                  <fnm>M</fnm>
               </au>
            </aug>
            <source>J Theor Biol</source>
            <pubdate>1991</pubdate>
            <volume>153</volume>
            <fpage>181</fpage>
            <lpage>194</lpage>
            <xrefbib>
               <pubid idtype="pmpid">1787735</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B28">
            <title>
               <p>Stochasticity in transcriptional regulation: origins, consequences, and mathematical representations</p>
            </title>
            <aug>
               <au>
                  <snm>Kepler</snm>
                  <fnm>T</fnm>
               </au>
               <au>
                  <snm>Elston</snm>
                  <fnm>T</fnm>
               </au>
            </aug>
            <source>Biophys J</source>
            <pubdate>2001</pubdate>
            <volume>81</volume>
            <fpage>3116</fpage>
            <lpage>3136</lpage>
            <xrefbib>
               <pubid idtype="pmpid" link="fulltext">11720979</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B29">
            <title>
               <p>Stochastic mechanisms in gene expression</p>
            </title>
            <aug>
               <au>
                  <snm>McAdams</snm>
                  <fnm>H</fnm>
               </au>
               <au>
                  <snm>Arkin</snm>
                  <fnm>A</fnm>
               </au>
            </aug>
            <source>Proc Natl Acad Sci USA</source>
            <pubdate>1997</pubdate>
            <volume>94</volume>
            <fpage>814</fpage>
            <lpage>819</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1073/pnas.94.3.814</pubid>
                  <pubid idtype="pmpid" link="fulltext">9023339</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B30">
            <title>
               <p>Regulation of noise in the expression of a single gene</p>
            </title>
            <aug>
               <au>
                  <snm>Ozbudak</snm>
                  <fnm>E</fnm>
               </au>
               <au>
                  <snm>Thattai</snm>
                  <fnm>M</fnm>
               </au>
               <au>
                  <snm>Kurtser</snm>
                  <fnm>I</fnm>
               </au>
               <au>
                  <snm>Grossman</snm>
                  <fnm>A</fnm>
               </au>
               <au>
                  <snm>van Oudenaarden</snm>
                  <fnm>A</fnm>
               </au>
            </aug>
            <source>Nature Genet</source>
            <pubdate>2002</pubdate>
            <volume>31</volume>
            <fpage>69</fpage>
            <lpage>73</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1038/ng869</pubid>
                  <pubid idtype="pmpid" link="fulltext">11967532</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B31">
            <title>
               <p>Intrinsic noise in gene regulatory networks</p>
            </title>
            <aug>
               <au>
                  <snm>Thattai</snm>
                  <fnm>M</fnm>
               </au>
               <au>
                  <snm>van Oudenaarden</snm>
                  <fnm>A</fnm>
               </au>
            </aug>
            <source>Proc Natl Acad Sci USA</source>
            <pubdate>2001</pubdate>
            <volume>98</volume>
            <fpage>8614</fpage>
            <lpage>8619</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1073/pnas.151588598</pubid>
                  <pubid idtype="pmpid" link="fulltext">11438714</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B32">
            <title>
               <p>Exact stochastic simulation of coupled chemical reactions</p>
            </title>
            <aug>
               <au>
                  <snm>Gillespie</snm>
                  <fnm>D</fnm>
               </au>
            </aug>
            <source>J Phys Chem</source>
            <pubdate>1977</pubdate>
            <volume>81</volume>
            <fpage>2340</fpage>
            <lpage>2361</lpage>
         </bibl>
         <bibl id="B33">
            <title>
               <p>Efficient exact stochastic simulation of chemical systems with many species and many channels</p>
            </title>
            <aug>
               <au>
                  <snm>Gibson</snm>
                  <fnm>M</fnm>
               </au>
               <au>
                  <snm>Bruck</snm>
                  <fnm>J</fnm>
               </au>
            </aug>
            <source>J Phys Chem</source>
            <pubdate>2000</pubdate>
            <volume>104</volume>
            <fpage>1876</fpage>
            <lpage>1889</lpage>
            <xrefbib>
               <pubid idtype="doi">10.1021/jp993732q</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B34">
            <title>
               <p>Approximate accelerated stochastic simulation of chemically reacting systems</p>
            </title>
            <aug>
               <au>
                  <snm>Gillespie</snm>
                  <fnm>D</fnm>
               </au>
            </aug>
            <source>J Phys Chem</source>
            <pubdate>2001</pubdate>
            <volume>115</volume>
            <fpage>1716</fpage>
            <lpage>1733</lpage>
            <xrefbib>
               <pubid idtype="doi">10.1063/1.1378322</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B35">
            <aug>
               <au>
                  <snm>Gardiner</snm>
                  <fnm>C</fnm>
               </au>
            </aug>
            <source>Handbook of stochastic methods: For physics, chemistry and the natural sciences</source>
            <publisher>Berlin: Springer Verlag</publisher>
            <pubdate>1996</pubdate>
         </bibl>
         <bibl id="B36">
            <aug>
               <au>
                  <snm>Kloeden</snm>
                  <fnm>P</fnm>
               </au>
               <au>
                  <snm>Platen</snm>
                  <fnm>E</fnm>
               </au>
            </aug>
            <source>Numerical solution of stochastic differential equations</source>
            <publisher>Berlin: Springer Verlag</publisher>
            <pubdate>1992</pubdate>
         </bibl>
         <bibl id="B37">
            <title>
               <p>Mechanisms of noise-resistance in genetic oscillators</p>
            </title>
            <aug>
               <au>
                  <snm>Vilar</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>Kueh</snm>
                  <fnm>H</fnm>
               </au>
               <au>
                  <snm>Barkai</snm>
                  <fnm>N</fnm>
               </au>
               <au>
                  <snm>Leibler</snm>
                  <fnm>S</fnm>
               </au>
            </aug>
            <source>Proc Natl Acad Sci USA</source>
            <pubdate>2002</pubdate>
            <volume>99</volume>
            <fpage>5988</fpage>
            <lpage>5992</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1073/pnas.092133899</pubid>
                  <pubid idtype="pmpid" link="fulltext">11972055</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B38">
            <title>
               <p>Engineered communications for microbial robotics</p>
            </title>
            <aug>
               <au>
                  <snm>Weiss</snm>
                  <fnm>R</fnm>
               </au>
               <au>
                  <snm>Knight</snm>
                  <fnm>T</fnm>
               </au>
            </aug>
            <source>In DNA6: Sixth International Meeting on DNA Based Computers: June 13&#8211;17 2000; Leiden, Netherlands</source>
            <publisher>Berlin: Springer Verlag</publisher>
            <editor>Condon A, Rozenberg G</editor>
            <pubdate>2001</pubdate>
         </bibl>
         <bibl id="B39">
            <title>
               <p>Prediction and measurement of an autoregulatory genetic module</p>
            </title>
            <aug>
               <au>
                  <snm>Isaacs</snm>
                  <fnm>F</fnm>
               </au>
               <au>
                  <snm>Hasty</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>Cantor</snm>
                  <fnm>C</fnm>
               </au>
               <au>
                  <snm>Collins</snm>
                  <fnm>J</fnm>
               </au>
            </aug>
            <source>Proc Natl Acad Sci USA</source>
            <pubdate>2003</pubdate>
            <volume>100</volume>
            <fpage>7714</fpage>
            <lpage>7719</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1073/pnas.1332628100</pubid>
                  <pubid idtype="pmpid" link="fulltext">12808135</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
      </refgrp>
   </bm>
</art>
