Obtain the steady-state equations for a given network. Before any equations can be created, you must invoke the createRing function, which creates the reaction network ring. If you do not create the ring, you will receive an error message.
i1 : N = reactionNetwork "A <--> 2B, A + C <--> D, B + E --> A + C, D --> B+E"
o1 = A-->2B
2B-->A
A+C-->D
D-->A+C
D-->B+E
B+E-->A+C
o1 : ReactionNetwork
|
i2 : R = createRing(N, QQ) o2 = R o2 : PolynomialRing |
i3 : steadyStateEquations N
o3 = | xx_B^2kk_{1, 0}-xx_Axx_Ckk_{2, 3}+xx_Bxx_Ekk_{4, 2}-xx_Akk_{0, 1}+xx_Dkk_{3, 2} |
| -2xx_B^2kk_{1, 0}-xx_Bxx_Ekk_{4, 2}+2xx_Akk_{0, 1}+xx_Dkk_{3, 4} |
| -xx_Axx_Ckk_{2, 3}+xx_Bxx_Ekk_{4, 2}+xx_Dkk_{3, 2} |
| xx_Axx_Ckk_{2, 3}-xx_Dkk_{3, 2}-xx_Dkk_{3, 4} |
| -xx_Bxx_Ekk_{4, 2}+xx_Dkk_{3, 4} |
5 1
o3 : Matrix R <--- R
|
Obtain the steady-state equations for a motif and display equations.
i4 : N = modificationOfTwoSubstratesI()
o4 = S_0+E-->X_1
X_1-->S_0+E
X_1-->E+S_1
S_1+F-->Y_1
Y_1-->S_1+F
Y_1-->S_0+F
E+P_0-->X_2
X_2-->E+P_0
X_2-->E+P_1
F+P_1-->Y_2
Y_2-->F+P_1
Y_2-->F+P_0
o4 : ReactionNetwork
|
i5 : R = createRing(N, QQ) o5 = R o5 : PolynomialRing |
i6 : steadyStateEquations N
o6 = | -xx_S_0xx_Ekk_{0, 1}+xx_X_1kk_{1, 0}+xx_Y_1kk_{4, 5} |
| -xx_S_0xx_Ekk_{0, 1}-xx_Exx_P_0kk_{6, 7}+xx_X_1kk_{1, 0}+xx_X_1kk_{1, 2}+xx_X_2kk_{7, 6}+xx_X_2kk_{7, 8} |
| xx_S_0xx_Ekk_{0, 1}-xx_X_1kk_{1, 0}-xx_X_1kk_{1, 2} |
| -xx_S_1xx_Fkk_{3, 4}+xx_X_1kk_{1, 2}+xx_Y_1kk_{4, 3} |
| -xx_S_1xx_Fkk_{3, 4}-xx_Fxx_P_1kk_{9, 10}+xx_Y_1kk_{4, 3}+xx_Y_1kk_{4, 5}+xx_Y_2kk_{10, 9}+xx_Y_2kk_{10, 11} |
| xx_S_1xx_Fkk_{3, 4}-xx_Y_1kk_{4, 3}-xx_Y_1kk_{4, 5} |
| -xx_Exx_P_0kk_{6, 7}+xx_X_2kk_{7, 6}+xx_Y_2kk_{10, 11} |
| xx_Exx_P_0kk_{6, 7}-xx_X_2kk_{7, 6}-xx_X_2kk_{7, 8} |
| -xx_Fxx_P_1kk_{9, 10}+xx_X_2kk_{7, 8}+xx_Y_2kk_{10, 9} |
| xx_Fxx_P_1kk_{9, 10}-xx_Y_2kk_{10, 9}-xx_Y_2kk_{10, 11} |
10 1
o6 : Matrix R <--- R
|
Generate the steady-state equations in a specific ring.
i7 : N = twoLayerCascadeL()
o7 = S_0+E-->X_1
X_1-->S_0+E
X_1-->E+S_1
S_1+P_0-->X_2
X_2-->S_1+P_0
X_2-->S_1+P_1
E+P_0-->X_3
X_3-->E+P_0
X_3-->E+P_1
S_1+F_1-->Y_1
Y_1-->S_1+F_1
Y_1-->S_0+F_1
P_1+F_2-->Y_2
Y_2-->P_1+F_2
Y_2-->P_0+F_2
o7 : ReactionNetwork
|
i8 : R = createRing(N, ZZ/2) o8 = R o8 : PolynomialRing |
i9 : F = steadyStateEquations(N, ZZ/2)
o9 = | xx_S_0xx_Ekk_{0, 1}+xx_X_1kk_{1, 0}+xx_Y_1kk_{10, 11} |
| xx_S_0xx_Ekk_{0, 1}+xx_Exx_P_0kk_{6, 7}+xx_X_1kk_{1, 0}+xx_X_1kk_{1, 2}+xx_X_3kk_{7, 6}+xx_X_3kk_{7, 8} |
| xx_S_0xx_Ekk_{0, 1}+xx_X_1kk_{1, 0}+xx_X_1kk_{1, 2} |
| xx_S_1xx_P_0kk_{3, 4}+xx_S_1xx_F_1kk_{9, 10}+xx_X_1kk_{1, 2}+xx_X_2kk_{4, 3}+xx_X_2kk_{4, 5}+xx_Y_1kk_{10, 9} |
| xx_S_1xx_P_0kk_{3, 4}+xx_Exx_P_0kk_{6, 7}+xx_X_2kk_{4, 3}+xx_X_3kk_{7, 6}+xx_Y_2kk_{13, 14} |
| xx_S_1xx_P_0kk_{3, 4}+xx_X_2kk_{4, 3}+xx_X_2kk_{4, 5} |
| xx_P_1xx_F_2kk_{12, 13}+xx_X_2kk_{4, 5}+xx_X_3kk_{7, 8}+xx_Y_2kk_{13, 12} |
| xx_Exx_P_0kk_{6, 7}+xx_X_3kk_{7, 6}+xx_X_3kk_{7, 8} |
| xx_S_1xx_F_1kk_{9, 10}+xx_Y_1kk_{10, 9}+xx_Y_1kk_{10, 11} |
| xx_S_1xx_F_1kk_{9, 10}+xx_Y_1kk_{10, 9}+xx_Y_1kk_{10, 11} |
| xx_P_1xx_F_2kk_{12, 13}+xx_Y_2kk_{13, 12}+xx_Y_2kk_{13, 14} |
| xx_P_1xx_F_2kk_{12, 13}+xx_Y_2kk_{13, 12}+xx_Y_2kk_{13, 14} |
12 1
o9 : Matrix R <--- R
|
Substitute ReactionRates
The example below demonstrates how to substitute randomly generated values, for the reaction rates, directly into the steady state equations. For specific user-input values create a list with the corresponding values for each reaction rate; to view the order: N.ReactionRates, where N is the name of the reaction network.
i10 : M = reactionNetwork "A <--> 2B, A+C <--> D, D --> B+E, B+E --> A+C"
o10 = A-->2B
2B-->A
A+C-->D
D-->A+C
D-->B+E
B+E-->A+C
o10 : ReactionNetwork
|
i11 : R = createRing M o11 = R o11 : PolynomialRing |
i12 : K = toList(apply(0..length M.ReactionRates-1, i-> random(QQ)))
9 1 9 1 3
o12 = {-, -, -, -, 1, -}
2 2 4 2 4
o12 : List
|
i13 : Rr = toList(apply(0..length M.ReactionRates-1, i-> value(M.ReactionRates#i)))
o13 = {kk , kk , kk , kk , kk , kk }
{0, 1} {1, 0} {2, 3} {3, 2} {3, 4} {4, 2}
o13 : List
|
i14 : P = toList(apply(0..length Rr-1, i-> Rr#i=>sub(K#i,R)))
9 1 9 1 3
o14 = {kk => -, kk => -, kk => -, kk => -, kk => 1, kk => -}
{0, 1} 2 {1, 0} 2 {2, 3} 4 {3, 2} 2 {3, 4} {4, 2} 4
o14 : List
|
i15 : SSE = flatten entries steadyStateEquations M
2 2
o15 = {xx kk - xx xx kk + xx xx kk - xx kk + xx kk , - 2xx kk - xx xx kk + 2xx kk
B {1, 0} A C {2, 3} B E {4, 2} A {0, 1} D {3, 2} B {1, 0} B E {4, 2} A {0, 1}
---------------------------------------------------------------------------------------------------------------------------
+ xx kk , - xx xx kk + xx xx kk + xx kk , xx xx kk - xx kk - xx kk , - xx xx kk
D {3, 4} A C {2, 3} B E {4, 2} D {3, 2} A C {2, 3} D {3, 2} D {3, 4} B E {4,
---------------------------------------------------------------------------------------------------------------------------
+ xx kk }
2} D {3, 4}
o15 : List
|
i16 : toList apply(0..length SSE-1, i-> sub(SSE#i,P))
1 2 9 3 9 1 2 3 9 3 1 9 3
o16 = {-xx - -xx xx + -xx xx - -xx + -xx , - xx - -xx xx + 9xx + xx , - -xx xx + -xx xx + -xx , -xx xx - -xx , -
2 B 4 A C 4 B E 2 A 2 D B 4 B E A D 4 A C 4 B E 2 D 4 A C 2 D
---------------------------------------------------------------------------------------------------------------------------
3
-xx xx + xx }
4 B E D
o16 : List
|
The object steadyStateEquations is a method function.