A while back Wilhelm, and Heinrich published a paper that described the smallest chemical network that could display a Hopf bifurcation. That is, the chemical species oscillated. The paper that describes this result is:

Wilhelm, Thomas, and Reinhart Heinrich. “Smallest chemical reaction system with Hopf bifurcation.” Journal of mathematical chemistry 17.1 (1995): 1-14.

This is a diagram of the network taken from their paper:

Here is a Tellurium script that uses Antimony to define the model (Note that $A means that species A is fixed):

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import tellurium as te import roadrunner r = te.loada(""" J1: X + $A -> X + X; k1*X*A; J2: X + Y -> Y + $A; k2*X*Y; J3: Y -> $A; k3*Y; J4: X -> Z; k4*X; J5: Z -> Y; k5*Z; A = 1; k1 = 4; k2 = 1; k3 = 1; k4 = 1; k5 = 1; X = 1; """) m = r.simulate (0, 40, 500) r.plot() |

The paper gives parameter values that result in oscillations but I wanted to find some other parameter sets. One way to do this is to load the model into the SBW slider control. By changing the sliders one can observe the dynamics. Here I used pathwaydesigner (pathwaydesigner.org) to do the same thing. I first exported the model as SBML using:

1 2 |
import tellurium as te te.saveToFile ('model.xml', r.getSBML()) |

I loaded the saved SBML file into pathwayDesigner and used the autolayout plugin to get the following network:

I started the slider plugin and varied the sliders until I saw oscillations. In fact, it didn’t take much to get oscillations, all I had to do was increase the value of k1:

I copied the new value of k1 to the Tellurium model (see above) and got the following output: