Introduction

Oscillatory responses arise in a wide variety of natural and artificial systems, such as population dynamics (Frank et al. 2011), nanomechanical oscillators (Okamoto et al. 2013), and electronic circuits (Pershin and Ventra 2010). In biomolecular regulatory networks, oscillatory systems control many vital functions, including circadian rhythms (Zhang and Kay 2010), glycolysis (Chandra et al. 2011), DNA damage response (Batchelor et al. 2008), among others (Tiana et al. 2007). Given this ubiquitousness, it is no surprise that oscillatory systems have been extensively studied for a long time (Tyson et al. 2008). While we now thoroughly understand the most simple oscillators (Ferrell et al. 2011), and are even able to implement them in predictable systems such as electronic circuits, the requirements for robust oscillations in biomolecular networks are yet to be identified. Furthermore, in contrast to the environment in which artificial oscillators operate, biomolecular regulatory networks often operate under uncertain conditions and considerable levels of biomolecular noise (Velar et al. 2002). Robustness, the ability of a system to maintain functionality under perturbations, is therefore of paramount importance in any biomolecular regulatory network.

Despite the complexity of the task, during the last decade there have been significant advances in building synthetic biochemical oscillators, some of them towards replicating the inherent robustness of natural systems (Purcell et al. 2010; Bashor et al. 2010; Toettcher et al. 2010; Kim and Winfree 2011). Synthetic functional circuits incorporating oscillators as time-keepers have also been developed (Danino et al. 2010; Mondragon-Palomino et al. 2011; Franco et al. 2011; Khalil and Collins 2014). Still, there is not yet a thorough and comprehensive set of guidelines for engineering robust oscillators. Several studies have made contributions towards identifying some design principles for oscillatory behaviour. Network motifs-recurrent patterns of interactions believed to form the building blocks of any complex network (Milo et al. 2002; Yeger-Lotem et al. 2004; Barabasi and Oltvai 2004; Alon 2007; Kim et al. 2010)—have also been highlighted to some extent for oscillators (Ferrell et al. 2011; Wagner 2005; Novak and Tyson 2008; Tsai et al. 2008; Burda et al. 2011; Lomnitz and Savageau 2014; Noman et al. 2015; Semenov et al. 2015).

In this work, we aim at revealing the requirements for biomolecular networks to function as robust oscillators. Particularly, we investigate topological features related to oscillatory responses of a three-component enzymatic network. We do so by conducting extensive numerical simulations of every possible topological arrangement. Previous related work focused on exploring a limited number of topological variations of three-node oscillators (Tsai et al. 2008; Ananthasubramaniam and Herzel 2014). Our approach, however, is not biased towards any specific architecture since we evaluate the robustness of every possible three-component network. Similar studies have also been carried out, but for analyzing adaptation (Ma et al. 2009), switch-like responses (Shah and Sarkar 2011) and patterning in response to morphogen gradients (Cotterell and Sharpe 2010).

We begin by briefly describing our model, the simulation setup and the method used to estimate the corresponding oscillatory robustness. Next, we analyze the distribution of the oscillatory robustness over the complete set of topologies and characterize the dependence of the robustness on a selected number of topological features. Afterwards, we identify some network motifs, i.e. recurrent oscillatory subnetworks that underlie oscillatory behavior. Finally, we obtain a series of architectural patterns that are recurrent only in the most robust oscillatory topologies. Additional details about the simulation procedure and motif selection can be found in the Electronic Supplementary Material (ESM) file.

Fig. 1
figure 1

Schematic of the three-component generic enzymatic network with background constitutive reactions. Solid lines represent always present interactions: activation (pointed arrowhead) or inhibition (crossbar-ended). Dashed lines represent possible activation, inhibition or no interaction

Material and methods

Computational model: general three-component enzymatic network

We use an ordinary differential equation (ODE)-based model of an enzymatic three-component network, similar to the one used by Ma et al. (2009). Every component shown in Fig. 1, labeled A, B or C, represents an enzyme. Each one of them has a fixed concentration normalized to 1, and can be present in two forms: active (represented by the letter itself, i.e. A) and inactive (represented by the complement, i.e. \(1\,-\,A\)). Only the active form of an enzyme is allowed to have an influence over the other components. This influence, if present, can be an activating or inhibiting interaction. An activating interaction catalyzes the conversion of an enzyme’s inactive form into the active form. For example, an activating interaction of component A over component B, denoted by \(A \rightarrow B\), means that the active form of A converts inactive B into its active form. This reaction is modeled by the following Michaelis–Menten rate equation:

$${\text {R}}\left( B^A_{{\mathrm{inactive}}}\rightarrow B^A_{{\mathrm{active}}}\right)={\frac{k_{AB}A(1-B)}{(1-B)+K_{AB}}},$$
(1)

where A is the normalized concentration of active A, and (\(1\,-\,B\)) is the normalized concentration of inactive B. Likewise, an inhibiting interaction of component A over component B, denoted by \(A \dashv B\), means that the active form of A converts active B into inactive B, with a rate equation given by:

$${\text {R}}\left( B^A_{{\mathrm{active}}}\rightarrow B^A_{\mathrm{inactive}}\right) ={\frac{k'_{AB}AB}{B+K'_{AB}}}.$$
(2)

The effect of multiple interactions over one component is additive. For example, if component C is positively regulated by components A and B, its reaction rate is:

$${\text {R}}\left( C^{A,B}_{{\mathrm{inactive}}}\rightarrow C^{A,B}_{{\mathrm{active}}}\right)={\frac{k_{AC}A(1-C)}{(1-C)+K_{AC}}}+{\frac{k_{BC}B(1-C)}{(1-C)+K_{BC}}}.$$
(3)

A feedback loop is defined as a chain of interactions (positive or negative) that begins and ends at the same component. For example, an activating interaction of component A over component B, an inhibiting interaction of component B over component C, and an activating interaction of component C over component A, is denoted by \(A \rightarrow B \dashv C \rightarrow A\). The resultant effect of component A over itself, through components B and C, is an inhibiting one.

An enzyme can also activate or inhibit itself (autoregulation). For example, an activating (inhibiting) interaction of component A over itself, denoted by \(A \rightarrow A\) (\(A \dashv A\)), means that the active form of A converts inactive (active) A into its active (inactive) form.

Background constitutive reactions are also taken into account. For every component i, there are constant–concentration enzymes, denoted by \(E_i\) and \(F_i\), which catalyze the background activating and inhibiting reactions, respectively. The kinetic rates of these background reactions are independently tunable for each component i.

Consequently, the general rate equation for component B is:

$$\frac{dB}{dt}=\sum _i {\frac{k_{X_iB}X_i(1-B)}{(1-B)+K_{X_iB}}} - \sum _i {\frac{k'_{Y_iB}Y_iB}{B+K'_{Y_iB}}},$$
(4)

where \(X_i=A,B,C\) or \(E_B\) are the activating enzymes (positive interactions), and \(Y_i=A,B,C\) or \(F_B\) are the inhibiting enzymes (negative interactions).

A network topology emerges after setting each possible network interaction (dashed lines in Fig. 1) to either activation, inhibition or no interaction. A total of 3284 three-component architectures resulted after discarding symmetric equivalents and not fully connected topologies. Each one of these architectures was worked out by computationally searching for oscillatory responses using random parameter sampling (\(3\times 10^5\) samples per topology). A custom software package to detect oscillatory responses, based on periodicity of the Euclidean distance in state space, was written (for more information see Supplementary Material, Section 1).

Oscillatory robustness

We are mainly interested in how likely is it for a network to oscillate. For the three-component topology defined above, two features can be selected to get oscillatory responses: the network architecture and the system parameters. Herein, the robustness of a topology is defined as the probability of getting an oscillatory response with that topology by randomly selecting the parameter set, i.e.:

$$r_{{\mathrm{topology}}}=P(\hbox {oscillatory response} \mid {\text {topology}}).$$
(5)

The experiment, which consists of repeatedly choosing a parameter set and checking whether the system oscillates or not, corresponds to Bernoulli trials. Hence, the maximum likelihood estimator of the robustness defined above corresponds to:

$$r={\frac{N_{\mathrm{osc}}}{N_{{\mathrm{samples}}}}},$$
(6)

where (\(N_{{\mathrm{osc}}}\)) is the number of oscillatory responses obtained and (\(N_{{\mathrm{samples}}}\)) is the total number of simulations conducted for that topology. A similar definition (favorable outcome divided by total number of simulations) has been used before in related studies (Wagner 2005). One can show theoretically that the relative estimation error is a function of both the robustness value itself and the number of samples, and that values of r greater than 0.001 have less than 5.77 % error. Numerical analysis also supports the aforementioned dependency (see Supplementary Material, Section 2).

Parameter values and simulations

Parameters \(k_{XY}\) and \(K_{XY}\) have been sampled from log-uniform distributions, with intervals of [\(10^{-1}\),10] for \(k_{XY}\) and [\(10^{-3}\),\(10^2\)] for \(K_{XY}\). Up to \(3\times 10^5\) samples were taken for every pair (\(k_{XY},K_{XY}\)), and the same number of simulations were carried out for each topology. The whole procedure was repeated for different values of \(E_i\) and \(F_i\): 0, 0.001, 0.01, 0.05 and 0.5. In summary, \(3\times 10^5\) simulations were conducted for each one of the 3284 topologies and for 5 different values of \(E_i\) and \(F_i\), all adding up to approximately \(5\times 10^9\) simulations.

Computational tools

Simulations were carried out using the PyDSTool library in Python, which in turn can use Dopri (Dormand–Prince) and Radau (implicit Runge–Kutta) integrators (Clewley et al. 2007). The stiff integrator Radau was preferred, and the non-stiff Dopri integrator was only used when the former failed. An initial round of simulations was needed to determine that, on average, the Radau integrator performed much faster and failed less.

Simulations were run in a 32-node cluster built on the Rocks Cluster software distribution (Rocks 2013). Analysis, such as the determination of amplitude and period of oscillations and the generation of undirected graphs, was done using Numpy, Scipy (Scipy 2013) and Matplotlib (Matplotlib 2013). Hive plots were drawn using Martin Krzywinski’s Linnet package (Krzywinski et al. 2012).

Results

Distribution of the robustness for oscillatory topologies

First, we analyze the distribution of the robustness among the oscillatory topologies, with the goal of answering the question: how robust can an oscillatory network be? More than half of the identified three-component topologies were able to oscillate, 1665 out of 3284 (Fig. 2). However, only 7.13 % of the oscillatory architectures presented robustness larger than \(r=0.01\), and even larger values (\(r>0.02\)) seemed to be a property of just a handful of topological structures (1.67 %).

Fig. 2
figure 2

Robustness histogram for the 1665 oscillatory topologies found out of the 3284 three-component topologies identified. Oscillatory robustness is calculated as the fraction of parameter sets that yielded oscillatory responses parameters were randomly sampled \(3 \times 10^5\) times per topology. Only a reduced fraction of topologies (1.67 %) presented an appreciable level of robustness (\(r> 0.02\))

Features of robust oscillatory topologies

Another question of importance about the three-component networks is: are there any architectural features that characterize the most robust topologies? To answer this, a detailed comparison of network architectures according to diverse topological features is performed. To begin with, topologies are lined up based on their total number of interactions, i.e. network complexity (Fig. 3a). Even though a couple of topologies with three interactions are able to oscillate, the most robust ones need a minimum of five. Next, topologies are grouped by the nature of the interaction—positive or negative (Fig. 3b, c). The most robust topologies present from two to four positive interactions, and from three to four negative ones. When organizing the topologies by the type of autoregulations present, extra insight is also gained (Fig. 3d, e). Topologies require to have at least one positive autoregulation for robust oscillation. On the contrary, negative autoregulation interactions are absent in robust topologies. Our result for positive autoregulation agrees with earlier studies which also demonstrated numerically (Tsai et al. 2008) and experimentally (Kim and Winfree 2011; Stricker et al. 2008; Tigges et al. 2009) the importance of positive autoregulation. In terms of having negative feedback loops in the network, at least one loop is required, with most robust topologies using at least two (Fig. 3f). It is worth noting that a negative feedback loop was found to be a necessary but not sufficient condition for oscillation, since not all the topologies with negative feedback (a total of 2021) were able to oscillate. Furthermore, addition of a negative feedback loop to a topology does not always lead to an increase in robustness (Lomnitz and Savageau 2014) (Supplementary Fig. S3B).

Regarding all topological features analyzed, the robustness median (short horizontal line) does not present remarkable dependence. This confirms the fact that robust topologies are outliers and that most topologies, even when able to oscillate, do it for just a few parameter sets (see also Fig. 2b). Interestingly, two architectural features, the network complexity and the number of feedback loops, are able to define groups where almost all the topologies presented oscillations (dotted lines in Fig. 3a, f). Summarizing, even though robust topologies are only a small fraction of all oscillatory topologies, there are clear architectural features that are required for this behavior and that can be used as design guidelines for robust oscillators.

Fig. 3
figure 3

Oscillatory robustness as determined by topological features. Blue circles represent the robustness of oscillatory topologies. Horizontal lines at 0.02 isolate the most robust topologies. Short horizontal lines crossing each column indicate the median value of the group robustness. Dotted lines show the fraction of topologies that present oscillations in each group. Topologies are grouped by their a number of total interactions, b number of positive interactions, c number of negative interactions, d number of positive autoregulations, e number of negative autoregulations, and f number of negative feedback loops. (Color figure online)

Motifs for oscillatory behavior

We also investigate the influence of highly significant “core” topologies, or motifs. For this purpose, we start with the simplest architectures, two- and three-component networks with minimum number of interactions, and searched for their presence among the more complex topologies. At the end, we obtain a set of eight motifs (Fig. 4) with the following characteristics: (1) no motif includes any other motif in the set, and (2) every three-component oscillatory topology includes at least one motif. A simple visual inspection of the motifs reveals a common pattern: a negative feedback loop. In fact, each motif can be seen as a “sophisticated” version of this pattern. Importantly, a two-component network analysis (Supplementary Fig. S3A) reveals that the negative feedback loop alone (i.e. with two interactions) cannot sustain oscillations; a fact also shown in previous studies (Ferrell et al. 2011; Novak and Tyson 2008; Lomnitz and Savageau 2014). In our simulations, only three two-component configurations are able to oscillate (Supplementary Fig. S3B). From the negative feedback loop, oscillations are achieved either by adding a positive autoregulation interaction to one of the components (Motifs 1, 2 in Fig. 4) or by inserting a third component in the positive branch of the feedback loop (Motifs 3, 4). Motif 1 is a well-known circuit, the “amplified negative feedback oscillator”, where the key characteristic is to obtain significantly faster activator than repressor dynamics (Stricker et al. 2008; Tigges et al. 2009; Purcell et al. 2010; Lomnitz and Savageau 2014). Motif 2, on the other hand, is less common in the literature, and it accounts more for not-so-robust topologies (median robustness \(7.1\times 10^{-3}\) for Motif 1 and \(7.1\times 10^{-4}\) for Motif 2). Motifs 1a, 1b, 2a, 2b can be seen as derived from Motifs 1, 2, after inserting a third component in the autoregulation reaction. These derived topologies are related to the oscillatory behaviour of some networks; however they fail to account for the most robust networks. Motif 3 has been used to model the circadian rhythm of cyanobacteria (Tiana et al. 2007) and the embryonic cell cycle of Xenopus (Ferrell et al. 2011). Motif 4, which is topologically identical to the “repressilator”, was employed in one of the first successful attempts to implement synthetic networks of transcriptional systems (Elowitz and Leibler 2000), and more recently, has also been identified as part of the circadian clock of Arabidopsis (Pokhilko et al. 2012). Observing Motifs 3, 4, both present a similar activation effect of component A on B via C, nonetheless through a different mechanism. It is also worth noting that, when characterizing each motif by the median of the robustness of the topologies they accounted for, Motifs 1, 4 are related to the most robust oscillatory topologies. Overall, this analysis shows that the sole presence of a handful of simple topologies can, in advance, help us explain the oscillatory behavior of more complex networks.

Fig. 4
figure 4

Network motifs in oscillatory topologies. Left motifs for oscillatory behavior. Right bar charts for oscillatory robustness, where a vertical line represents a topology lined up according to its robustness. A red vertical line represents the median of the robustness of the topologies in the bar. All topologies along one bar included the adjacent motif. Very few non-oscillatory topologies included any of these motifs when concentrations for basal interactions were different from zero, hence these motifs readily allow us to distinguish between oscillatory and non-oscillatory topologies. (Color figure online)

Architectural patterns in robust oscillatory topologies

With core topologies for oscillatory networks determined, we aim at identifying architectural patterns recurrent in the oscillatory topologies with larger robustness. We construct new patterns by adding one interaction at a time to motifs shown in Fig. 4, and then compare them using the median value of the oscillatory robustness of the topologies that include these new patterns (Supplementary Fig. S4). Architectures with the highest median are chosen as configurations for robust oscillation. Since Motif 1 outperforms the other motifs in reproducing the most robust topologies (Fig. 4), it is unsurprising that architectures for robust oscillation descend from it (Fig. 5, top). The increment in median robustness is evident as we increase the number of interactions (Fig. 5, middle), but to the expense of representing a smaller set of topologies (Fig. 5, bottom). The architecture in Fig. 5b can be found in the context of the p53-Mdm2-NUMB trilogy (Shin et al. 2011). The architecture in Fig. 5c, in addition of being a two-step improvement over Motif 1, can also be considered as a combination of Motifs 1 and 4. Notably, by using the design guidelines derived from the analysis of Fig. 3, we can also obtain the architectures shown in Fig. 5b, c. Thus, this analysis elicits simple architectural patterns that are related to robust oscillatory behavior.

Fig. 5
figure 5

Architectures for generating robust oscillatory behavior. Top Motif 1 and two architectural patterns for robust behavior that descended from it. Middle bar charts indicate oscillatory robustness for motif on top. A red vertical line represents the median of the robustness of the topologies that contain the architectures on the top. Bottom hive plots highlighting in red the three-component topologies including the architectures on top. Topology robustness is positioned on radially distributed linear axes. Linear axes indicate number of interactions. Two topologies that differ in one interaction are connected by links. a Motif 1. b Architecture for robust oscillation generated from Motif 1 (one interaction added). c Architecture for robust oscillation generated from Motif 1 (two interactions added). (Color figure online)

Influence of basal interactions

Finally, we test the influence of the concentration of basal enzymes on our results. In addition to the value of 0.01 for concentration of \(E_i\) and \(F_i\) (which corresponds to the results presented in this article), we repeat our analysis for values of 0.5, 0.05, 0.001 and 0 (absence of basal interactions). Even though the exact robustness values vary as we change \(E_i\) and \(F_i\), the qualitative conclusions obtained for \(E_i=F_i=0.01\) still prevail for larger concentration values. When basal interactions approach to 0, however, none of the identified oscillatory motifs shown in Fig. 4 prompted a well defined separation between oscillatory and non-oscillatory topologies, such as observed for \(E_i=F_i=0.01\) (Supplementary Fig. S5). From this analysis, it is observed that the level of the enzyme concentrations related to basal interactions, as long as different from zero, present little qualitative influence on the results discussed before.

Discussion

Synthetic biologists have been designing increasingly complex biomolecular networks with desired functionality. However, this design process has been performed without an explicit set of design rules or guidelines, such as the ones found in the area of engineering. The present work aims at identifying such guidelines for obtaining robust oscillations in biochemical circuits. We do so by performing an extensive amount of computer simulations. Numerical models are proving to be extremely useful in synthetic biology design, because they allow us to easily test several topologies in silico. However, we note that proposing a model is much easier than validating it at the laboratory (Kim and Winfree 2011).

Our model comprises three biochemical components influencing one another through enzymatic Michaelis–Menten interactions, and includes the effect of activating, inhibiting and autoregulating interactions. We allow for the presence of background enzymes that constitutively activate or deactivate each one of our three biochemical species. This is analogous to a transcriptional network subject to protein production and degradation. In this case, there will be a constitutive decrease of protein concentration when production stops, and an increase up to a finite value when production is maximal. We allow for the kinetic parameters of background reactions to be different when interacting with A, B, and C. We note that in our simulations the existence of the motifs identified in Fig. 4 depends on the presence of these background enzymes, but not on the precise value of their concentration.

We performed simulations of every possible three-component topology. Past studies that dealt with design principles of robust oscillators focused on a limited number of previously known architectures. Our approach, on the other hand, ignores the bias towards current knowledge and attempts to find every possible topological mechanism for oscillatory behaviour. Interestingly, the most robust basic motifs found in this study do correspond to previously known architectures (Purcell et al. 2010; Elowitz and Leibler 2000). Our results, however, show that it is possible to improve their robustness by adding the appropriate number and type of interactions (Fig. 3).

Other types of molecular interactions could also be explored using our approach, while leveraging the software developed in this study. In the last years, a significant number of “orthogonal” (non cross-interacting) transcriptional activators and repressors have been identified and used to construct basic synthetic biological circuits (Rhodius et al. 2013; Stanton et al. 2014; Nielsen and Voigt 2014). It would therefore be interesting to perform the analysis presented here with transcriptional regulation based on Hill functions. However, we expect the precise molecular mechanism of interactions not to have a big influence on the general conclusions of our study, even though the precise robustness values will most likely change. This is supported up to some extent by a recent study conducted by Lomnitz and Savageau (2014), in which the authors analyze oscillations in three transcriptional two-component networks. The qualitative conclusions of their comparison are in good agreement with our results for two-component networks (Supplementary Fig. S3B), despite the differences in our models.

Our study was concerned with the oscillatory robustness of each three-component topology, which we define as the probability of achieving oscillations given the architecture. Theoretical analysis, as well as numerical calculations, show that we are able to get a good estimate of this robustness as long as the robustness value itself is not excessively small (Supplementary Fig. S1 and discussion). The number of parameters of a topology does not seem to have a big influence on the robustness estimation error. However, we could have potentially missed some interesting phenotype that is restricted to a small region in the parameter space, and the probability of this to happen increases with the number of parameters. Are these phenotypes relevant for biological systems if their range is limited? This probably will depend on the specific case, but our robustness metric is, by definition, not concerned with such phenomena. To address those kind of issues, Lomnitz and Savageau (2014) proposed a method that decomposes the parameter space into finite regions of interest. We also note that there is a great insight to be gained by analyzing the parameters that produce oscillations in a topology, and the amplitude, period, and phase of the resulting oscillatory response. Not only can this shed light into which parameter configuration makes a topology oscillate, but also into how “tunable” a topology is, that is, how much the oscillatory response can be controlled by changing the parameters of the network. Tunability, as well as robustness, is a highly desirable feature in synthetic oscillators (Tsai et al. 2008; Stricker et al. 2008).

We started our analysis by studying the distribution of the robustness among all three-component topologies. It turns out that very few topologies are capable of robust oscillation. So, what distinguishes oscillatory topologies from the rest? From our study, we are able to characterize the influence of a few basic topological features over the oscillatory robustness, and come up with a basic set of design principles for a network to be a robust oscillator (Fig. 3): (1) it must have a high number of interactions, (2) the interactions should be properly balanced between activating and inhibiting, (3) positive autoregulation interactions must be included, (4) negative autoregulations must be absent, and (5) feedback loops are absolutely necessary for obtaining oscillations, with more feedback loops being, on average, better.

Following, we uncovered common patterns present in the oscillatory topologies, or motifs. Initially, we focused on patterns that are related to the basic mechanisms of oscillatory behavior, and later we did so for the case of robust oscillations. It turns out that every topology that presents oscillations includes at least one of the eight motifs shown in Fig. 4. These motifs, in turn, are based on a simple two-component negative feedback loop which can include either a positive autoregulation or an additional (third) component inserted in the loop. The first one of these motifs closely resembles several oscillatory circuits previously found in nature. The fourth one is similar to a widely-known synthetic circuit, the repressilator. For the identification of patterns only present in robust oscillatory systems, we considered every possible topology that could be derived from those eight motifs, by adding one interaction at a time. The resulting patterns were compared using a performance measure (median robustness) intended to evaluate the robustness of the complex topologies they are included in. We ended up obtaining the architectural patterns shown in Fig. 5. Interestingly, the pattern in Fig. 5c can be seen as a combination of Motif 1—the amplified negative feedback oscillator—and Motif 4—similar to the repressilator. Consequently, a synthetic robust oscillator must incorporate the architectural pattern shown in Fig. 5c.

In summary, we have unveiled underlying architectural patterns for robust oscillation that we believe can serve as basis for defining design charts. These results are expected to help in the design process of robust synthetic oscillatory networks and may as well offer additional understanding when studying natural oscillatory systems.