Last week I was in need of an irreversible bistable switch to show my class. I remember seeing one in the well known review by Tyson et al, Sniffers, buzzers, toggles and blinkers: dynamics of regulatory and signaling pathways in the cells, Current Opinion in Cell Biology 2003, 15:221–231. I hunted down the paper and found it. However when I looked at the details of the model, it turns out to be incorrect or at least very odd. I couldn’t get the model to work and I didn’t particularly like the equations that described the model (assuming they were correct and not a typo in the paper). So I decided to design my own. The traditional bistable system has two physically realizable steady states, that is states that admit positive concentrations. By suitably large perturbations it is possible to jump from one state to the other. We often depict bistable systems in the form of a bifurcation diagram as shown below:

Here we see the state of the system (vertical axis) plotted as a function of a parameter in the system. Over a particular range of the parameter we see that the system admits three possible solutions (along a vertical line). Two are stable and the third is unstable (blue dotted line). If I start on at a high steady state at a parameter value of say 1.2 and slowly increase the parameter, the steady state value will slowly decrease until I reach a parameter value of about 2.4 where we suddenly jump to the lower steady state. If I now decrease the parameter value I now follow the lower steady state branch until I reach about 1.3 where I will suddenly jump up to the high state. I can therefore move freely between the high state and the low state simply by changing the parameter. The bistable system is therefore freely reversible.It is possible however to arrange things so that the entire curve is shifted to the left in such a way that is becomes impossible to freely move back and forth between the states.

In the above diagram we see that the left-hand turning point now pokes into the negative half of the graph. The graph is mirror image of the previous one because I used a slighly different model in the upper one, but don’t let that worry you. The negative halve implies negative concentrations which is clearly impossible. Consider then starting the parameter (this time called the signal) at zero with the variable also at zero and slowly increasing the signal level. The output concentration will slowly increase following the lower branch until we reach a signal value of about 2.0 when we suddenly jump to the high state. Let us now start lowering the signal. As we lower the signal we now follow the upper steady state branch but instead of dropping to the lower state we end up stuck at the upper branch as we reach a signal strength of zero (My signal can’t go below zero concentration!). We are therefore unable to drop to the lower branch. This is what we mean by an irreversible bistable systems. In one direction we can go from the lower steady state to the upper one, but we cannot go the other way.

To design this system I knew that I could probably start with Tyson’s original figure which I redraw below:

The output from the system is R1 and the input is Signal. The Jarnac model for this system is given below:

p = defn cell $X -> R1; k1*EP + k2*Signal; R1 -> $w; k3*R1; EP -> E; Vm1*EP/(Km + EP); E -> EP; ((Vm2+R1)*E)/(Km + E); end; p.Vm1 = 12; p.Vm2 = 6; p.Km = 0.6; p.k1 = 1.6; p.k2 = 4; p.E = 5; p.EP = 15; p.k3 = 3; p.Signal = 0.1;

The $ sign in front of a species means that it is fixed in time. First question is what values for the parameters will yield bistabilty? To do that I set up two loops. The outer loop randomized parameters, the inner loop randomized the initial conditions for the system and computed the steady state. The inner loop ran 10 times and printed out ten steady state levels of R, the output species. The outer loop ran 50 times. If any of the outer loop parameter combinations generated a bistable system I would see at least to different output levels in R when the inner loop was run. In this way I was able to quickly locate a parameter set that gave me a bistable system. This was all programed in Jarnac.

Once I had a bistable system I then needed to compute the bifurcation plot shown above. To do this I used Oscill8 (Developed in Tyson’s lab), a reliable application for doing simple bifurcation plots and much easier to use than XPP. Oscill8 is SBW compatible so it shows up in the Jarnac menu and all I had to do was call it from Jarnac and the model would be automatically passed over. Alternative I could have saved the model from Jarnac in SBML format and loaded it manually into Oscill8 (it also understands SBML). Oscill8 confirmed for me that I did indeed have a bistable system. To get an irreversible system I then used Oscill8 to test every parameter in the system to find the parameter that moved the bifurcation graph left or right. Once I found the right parameter I just moved the bifurcation plot to the left so that the upper loop poked into the negative half of the graph. And that’s how I designed my irreversible bistable system to show class. The Jarnac script shown above is the set of parameters that gives the irreversible bistable system.