## Wednesday, November 29, 2023

### A simple linear pathway

Analysis of a simple pathway:
This model is model a) from the paper by Tyson et al (2003) "Sniffers, buzzers, toggles and blinkers: dynamics of regulatory and signaling pathways in the cell". I changed their R to P however so I could use the symbol R for response.

Assume $v_1 = k_1 S$ and $v_2 = k_2 P$ Then $\frac{dP}{dt} = k_1 S - k_2 P$. At steady-state this equals 0 so that $$P = \frac{k_1 S}{k_2}$$ In other words P is a linear function of S. In terms of logarithmic senstivities or the reponse coefficient: $$R^P_S = \frac{dP}{dS} \frac{S}{P} = \frac{k_1}{k_2} \frac{k_2}{k_1} = 1$$ That is a 1% change in S will lead to a 1% change in the steady-state level of P. This is important because in their pathway (d, shown below) they use this property to ensure that when S also regulates a secondary pathway that in turn up regulates the consumption step v2, the level of P remains unchanged.
This property is not very robust however and any change to the rate law on $v_1$ will result in the pathway failing to maintain P constant. For example if $v_1 = k_o + k_1 S$, where we've added a basal rate of $k_o$, then the response becomes: $$R^P_S = = \frac{k_1 S}{k_o + k_1 S}$$ that is the response is no longer proportional. Change S in this case will result in P changing. The code below will model this system. One important point to make is that this isn't an example of integral control.

import tellurium as te
import matplotlib.pyplot as plt

-> P; k0 + k1*S
P ->; k2*X*P
-> X; k3*S
X ->; k4*X

k1 = 1; k2 = 1
k3 = 1; k4 = 1

# Set basal rate to zero
k0 = 0; S = 1

# Change signal, P won't change
at time > 10: S = S*2

# Change basal rate and set S back to what it was
at time > 25: k0 = 0.3, S = 1;

# Change signal, this time P will change
at time > 40: S = S*2
""")

m = r1.simulate(0, 60, 200, ['time', 'P', 'S'])
plt.plot (m['time'], m['P'], label='P')
plt.plot (m['time'], m['S'], label='S')
plt.text(2, 0.75, "Basal = 0")
plt.text(9, 0.9, "Change S")
plt.text(14, 1.2, "P restored")
plt.text(20, 0.75, "Set basal > 0")
plt.text(35, 0.9, "Change S, P not restored")
plt.legend()