Kémiai és biokémiai folyamatok vizsgálata gráfelméleti módszerekkel

Palej Gréta

Bevezetés

Egy kémiai reakció- modellt, mely olyan elemi reakcióhalmazt tartalmaz, amely kifejezi, hogyan reagálnak a molekulák egymással, kémiai mechanizmusnak nevezünk. A klasszikus tömeg-mozgás kinematikában a mechanizmus  közönséges differenciálegyenletekkel írható le, ezek a differenciálegyenletek  a koncentrációk időbeni alakulását irányítják. Ebben a cikkben a kémiai kinetika közönséges differenciálegyenlet- modelljeivel foglalkozunk.

Példák

1. példa

Adott a következő modell:

(Subscript[A, 2])+(Subscript[Y, 1])(Overscript[→, (Subscript[k, 1])])(Subscript[A, 1 ])+(Subscript[A, 2]),
(Subscript[A, 1])+(Subscript[A, 3])(Overscript[→, (Subscript[k, 2])])(Subscript[A, 3])+(Subscript[Y, 1]) ,
(Subscript[A, 1])+(Subscript[Y, 2])(Overscript[→, (Subscript[k, 3])])(Subscript[A, 1])+(Subscript[A, 2]),
(Subscript[A, 2])(Overscript[→, (Subscript[k, 4])])(Subscript[Y, 2]),
(Subscript[Y, 3])(Overscript[→, (Subscript[k, 5])])(Subscript[A, 3]),
(Subscript[A, 1])+(Subscript[A, 3])(Overscript[→, (Subscript[k, 6])])(Subscript[A, 1])+(Subscript[Y, 3]),

ahol (Subscript[A, 1])  és  (Subscript[Y, 1]) az MPF (mitózist elősegítő faktor) aktív, illetve inaktív alakjai, (Subscript[A, 2])  és  (Subscript[Y, 2]) a Cdc25 (foszfátot feldolgozó protein) aktív és inaktív alakja, (Subscript[A, 3]) és (Subscript[Y, 3])az Myt1 (a protein wee1 családjának tagja) aktív és inaktív alakja. (Subscript[u, i])+(Subscript[y, i])=(Subscript[a, i]), ahol (Subscript[u, i]),(Subscript[y, i]) (Subscript[A, i]) és (Subscript[Y, i])  (i = 1,2,3) koncentrációja, (Subscript[a, 1]), (Subscript[a, 2]), (Subscript[a, 3]) pedig az MPF, Cdc25 és Myt1 teljes mennyiségei az oldatban. Ebből következik a következő differenciálegyenlet- rendszer:

((Subscript[du, 1])/dt)=(Subscript[k, 1])(Subscript[u, 2])((Subscript[a, 1])-(Subscript[u, 1]))-(Subscript[k, 2])(Subscript[u, 1])(Subscript[u, 3]),

((Subscript[du, 2])/dt)=(Subscript[k, 3])(Subscript[u, 1]) ((Subscript[a, 2])-(Subscript[u, 2]))-(Subscript[k, 4])(Subscript[u, 2]),

((Subscript[du, 3])/dt)=(Subscript[k, 5])((Subscript[a, 3])-(Subscript[u, 3]))-(Subscript[k, 6])(Subscript[u, 1])(Subscript[u, 3]).

Erről feltételezzük, hogy pozitív egyensúlynál lesz kiértékelve.

A linearizáció Jacobi-mátrixa:

f:={k1 u2 (a1-u1)-k2 u1 u3,k3 u1 (a2-u2)-k4 u2,k5 (a3-u3)-k6 u1 u3}
u:={u1,u2,u3}
JacobianMatrix[f_List,x_List]:=Outer[D,f,x]
MatrixForm[g=JacobianMatrix[f,u],{3,3}]

Állítsuk elő a Jacobi - mátrixból a szomszédsági - mátrixot!

mattrue=PossibleZeroQ[g[[All,All]]]
true2=Map[Not,mattrue,{2}]
final=Boole[true2]

Tüntessük el a szomszédsági - mátrixból az önhurkokat!

matrix=g-g*IdentityMatrix[3]

Készítsük el az élek indexeit:

index=Table[If[Boole[PossibleZeroQ[matrix[[i,j]]]]==0,j\[DirectedEdge]i->ToString[g[[i,j]]]],{i,3},{j,3}]
index2=Flatten[index]

Rajzoljuk ki a gráfot:

AdjacencyGraph[final-IdentityMatrix[3],GraphLayout->"CircularEmbedding", DirectedEdges->True, EdgeLabels->index2,GraphStyle->"VintageDiagram",VertexSize->0.05,VertexShapeFunction->"Square",VertexLabels->Table[i->Placed[(Subscript[A, i]),Top],{i,3}]]

Az eredmény egy páros gráf lesz. Pozitív körfolyamat: (Subscript[f, 1])={(12),(3)} és (Subscript[f, 2])={(13),(2)}.  Ezek a (-J) determinánsának kibővítésében a negatív kifejezésekhez tartoznak.
A gráf vizsgálatból kiderül, hogy a multistabilitás  a kölcsönös gátlás eredménye az MPF és az Myt1 fehérje között.

2. példa

Ez a kémiai mechanizmusnak egy érdekes példája, amiből kiderül, hogy a reakció néhány paraméter - érték oszcillátori viselkedését mutathatja. A reakció a CSTR-ben (folyamatosan kevert reaktor tartály) zajlik, a reagens összes konstans beáramlásával és  kiáramlásával, speciális (Subscript[k, 0]) aránynál. A reakció szerkezete a következő:

(Subscript[A, i]^((0)))(Overscript[→, (Subscript[k, 0])])(Subscript[A, i]),        i=1,... , 4,
(Subscript[A, i])(Overscript[→, (Subscript[k, 0])])(),           i = 1,   ... , 4,
(Subscript[A, 1])+(Subscript[A, 2])(Overscript[→, (Subscript[k, 1])])(Subscript[P, 1]),
(Subscript[A, 2])+(Subscript[A, 3])(Overscript[→, (Subscript[k, 2])])(Subscript[P, 2]),
(Subscript[A, 3])+(Subscript[A, 4])(Overscript[→, (Subscript[k, 3])])2(Subscript[A, 1]),
(Subscript[A, 4])(Overscript[→, (Subscript[k, 4])])(Subscript[A, 1])+(Subscript[A, 3])

A (Subscript[A, 4])(Overscript[→, (Subscript[k, 4])])(Subscript[A, 1])+(Subscript[A, 3]) reakció arra utal, hogy az (Subscript[A, 4]) egy (Subscript[A, 1]) és egy (Subscript[A, 3])alegységből áll. Az (Subscript[A, 3])+(Subscript[A, 4])(Overscript[→, (Subscript[k, 3])])2(Subscript[A, 1])reakció arra utal, hogy (Subscript[A, 1])dimerje az (Subscript[A, 3])részegységeknek és így (Subscript[A, 4]) az (Subscript[A, 3])trimerje. Ez a mechanizmus így leírja a versenyt az (Subscript[A, 2]) reakció között szabad monomerekkel ((Subscript[A, 2])+(Subscript[A, 3])(Overscript[→, (Subscript[k, 2])])(Subscript[P, 2])) és dimerekkel ((Subscript[A, 1])+(Subscript[A, 2])(Overscript[→, (Subscript[k, 1])])(Subscript[P, 1])). (Subscript[A, i]^0) kifejezi (Subscript[A, i])-t egy tartályban amely táplálja a reaktort. 

A modell differenciálegyenlet-rendszere:

((Subscript[du, 1])/(dt )) = -(Subscript[k, 1])(Subscript[u, 1])(Subscript[u, 2])+2(Subscript[k, 3])(Subscript[u, 3])(Subscript[u, 4])+(Subscript[k, 4])(Subscript[u, 4]),

((Subscript[du, 2])/dt)=-(Subscript[k, 1])(Subscript[u, 1])(Subscript[u, 2])-(Subscript[k, 2])(Subscript[u, 2])(Subscript[u, 3]),

((Subscript[du, 3])/dt)=-(Subscript[k, 2])(Subscript[u, 2])(Subscript[u, 3])-(Subscript[k, 3])(Subscript[u, 3])(Subscript[u, 4])+(Subscript[k, 4])(Subscript[u, 4])),

((Subscript[du, 4])/dt)=-(Subscript[k, 3])(Subscript[u, 3])(Subscript[u, 4])-(Subscript[k, 4])(Subscript[u, 4]).

A linearizáció Jacobi - mátrixa:

f:={-k1 u1 u2 +2k3 u3 u4+k4 u4,-k1 u1 u2 -k2 u2 u3,-k2 u2 u3-k3 u3 u4+k4 u4,-k3 u3 u4-k4 u4 }
u:={u1,u2,u3, u4}
JacobianMatrix[f_List,x_List]:=Outer[D,f,x]
g=MatrixForm[JacobianMatrix[f,u]]

Rajzoljuk ki a gráfot:

graf111[f,u,4]

3. példa

Multistabilitásra egy példa:

(Subscript[A, 1])(Overscript[→, (Subscript[k, 1])])( ),
( )(Overscript[→, (Subscript[k, 2])])(Subscript[A, 1]),
(Subscript[A, 1])+(Subscript[A, 2])(Overscript[→, (Subscript[k, 3])])(Subscript[A, 3]),
(Subscript[A, 3])(Overscript[→, (Subscript[k, 4])])(Subscript[A, 2]),
(Subscript[A, 4])(Overscript[→, (Subscript[k, 6])])(Subscript[A, 1])+(Subscript[A, 3]),
(Subscript[A, 1])+(Subscript[A, 3])(Overscript[→, (Subscript[k, 5])])(Subscript[A, 4]).

(Subscript[A, 1]) egy alapegység, (Subscript[A, 2]) enzim, (Subscript[A, 3]) és (Subscript[A, 4]) enzim- egység egészek. Ez a reakció egy terméket produlál, ami tovább nem vesz részt a reakcióban tehát elhagyjuk a mechanizmusból. Az első és második reakciót az (Subscript[A, 1])bemenetele és  kimenetele alkotja.
Legyen az (Subscript[A, i]) koncentrációja (Subscript[u, i]) minden i-re. Ekkor a differenciálegyenlet- rendszer a következő:

((Subscript[du, 1])/dt)=-(Subscript[k, 1])(Subscript[u, 1])+(Subscript[k, 2])-(Subscript[k, 3])(Subscript[u, 1])(Subscript[u, 2])-(Subscript[k, 5])(Subscript[u, 1])(Subscript[u, 3])+(Subscript[k, 6])(Subscript[u, 4]),

((Subscript[du, 2])/dt)=-(Subscript[k, 3])(Subscript[u, 1])(Subscript[u, 2])+(Subscript[k, 4])(Subscript[u, 3]),

((Subscript[du, 3])/dt)=(Subscript[k, 3])(Subscript[u, 1])(Subscript[u, 2])-(Subscript[k, 4])(Subscript[u, 3])-(Subscript[k, 5])(Subscript[u, 1])(Subscript[u, 3])+(Subscript[k, 6])(Subscript[u, 4]),

((Subscript[du, 4])/dt)=(Subscript[k, 5])(Subscript[u, 1])(Subscript[u, 3])-(Subscript[k, 6])(Subscript[u, 4]).

f:={-k1 u1+k2-k3 u1 u2-k5 u1 u3+k6 u4,-k3 u1 u2+k4 u3,k3 u1 u2-k4 u3-k5 u1 u3+k6 u4, k5 u1 u3-k6 u4}
u:={u1,u2,u3,u4}
JacobianMatrix[f_List,x_List]:=Outer[D,f,x]
MatrixForm[JacobianMatrix[f,u],{4,4}]

graf111[f0_,u0_,n0_]:=Module[{g,j,i},
AdjacencyGraph[Boole[Map[Not,PossibleZeroQ[g=Transpose[JacobianMatrix[f0,u0]][[All,All]]],{2}]]-IdentityMatrix[n0],GraphLayout->"CircularEmbedding", DirectedEdges->True, EdgeLabels->Flatten[Table[If[Boole[PossibleZeroQ[{g-g*IdentityMatrix[n0]}[[1,i,j]]]]==0,i\[DirectedEdge]j->ToString[g[[i,j]]]],{i,n0},{j,n0}]],GraphStyle->"VintageDiagram",VertexSize->0.05,VertexShapeFunction->"Square",VertexLabels->Table[i->Placed[(Subscript[A, i]),Top],{i,n0}]]
]

graf111[f,u,4]

4. példa

Legyen (Subscript[A, 1]) ATP, (Subscript[A, 2])komplex, (Subscript[A, 3]) és (Subscript[A, 4])termékek, (Subscript[A, 5]) enzim. Ekkor a reakció a következő legyen:

( )(Overscript[→, (Subscript[k, 1])])(Subscript[A, 1]),
(Subscript[A, 1])+(Subscript[A, 2])(Overscript[→, (Subscript[k, 2])])(Subscript[A, 4]),
(Subscript[A, 4])(Overscript[→, (Subscript[k, 3])])(Subscript[A, 1])+(Subscript[A, 2]),
(Subscript[A, 4])(Overscript[→, (Subscript[k, 4])])(Subscript[A, 3])+(Subscript[A, 2])
(Subscript[A, 3])(Overscript[→, (Subscript[k, 5])])( ),
(Subscript[A, 3])+(Subscript[A, 5])(Overscript[→, (Subscript[k, 6])])(Subscript[A, 2]),
(Subscript[A, 2])(Overscript[→, (Subscript[k, 7])])(Subscript[A, 3])+(Subscript[A, 5.])

A differenciálegyenlet - rendszer:

((Subscript[du, 1])/(dt )) = (Subscript[k, 1])-(Subscript[k, 2])(Subscript[u, 1])(Subscript[u, 2])+(Subscript[k, 3])(Subscript[u, 4]),

((Subscript[du, 2])/dt)=-(Subscript[k, 2])(Subscript[u, 1])(Subscript[u, 2])+(Subscript[k, 6])(Subscript[u, 3])(Subscript[u, 5])+(Subscript[u, 4])((Subscript[k, 3])+(Subscript[k, 4]))-(Subscript[k, 7])(Subscript[u, 2]),

((Subscript[du, 3])/dt)=(Subscript[k, 4])(Subscript[u, 4])-(Subscript[k, 6])(Subscript[u, 3])(Subscript[u, 5])+(Subscript[k, 7])(Subscript[u, 2])-(Subscript[k, 5])(Subscript[u, 3]),

((Subscript[du, 4])/dt)=(Subscript[k, 2])(Subscript[u, 1])(Subscript[u, 2])-((Subscript[k, 3])+(Subscript[k, 4]))(Subscript[u, 4]),
((
(Subscript[du, 5]))/(dt )) = -(Subscript[k, 6])(Subscript[u, 3])(Subscript[u, 5])+(Subscript[k, 7])(Subscript[u, 2]).

Jacobi-mátrixa:

f:={k1-k2 u1 u2+k3 u4,-k2 u1 u2+k6 u3 u5+u4(k3+k4)- k7 u2,k4 u4-k6 u3 u5+k7 u2-k5 u3,k2 u1 u2-(k3+k4) u4,-k6 u3 u5+k7 u2}
u:={u1,u2,u3, u4,u5}
JacobianMatrix[f_List,x_List]:=Outer[D,f,x]
MatrixForm[JacobianMatrix[f,u],{5,5}]

graf111[f,u,5]

5. példa

Az eredeti reakcióban A+2B→R+S ahol a reakció mechanizmusa egy közbelső x elemen keresztül zajlik: A+B→X
, X+B→R+S
Adott a következő differenciálegyenlet- rendszer:

((Subscript[du, 1])/(dt )) = -(Subscript[k, 1])(Subscript[u, 1])(Subscript[u, 2])+(Subscript[k, 2])(Subscript[u, 3,])

((Subscript[du, 2])/dt)=-(Subscript[k, 1])(Subscript[u, 1])(Subscript[u, 2])+(Subscript[k, 2])(Subscript[u, 3])-(Subscript[k, 3])(Subscript[u, 2])(Subscript[u, 3]),

((Subscript[du, 3])/dt)=(Subscript[k, 1])(Subscript[u, 1])(Subscript[u, 2])-(Subscript[k, 2])(Subscript[u, 3])-(Subscript[k, 3])(Subscript[u, 2])(Subscript[u, 3])

Ebben a rendszerben (Subscript[u, 1]), (Subscript[u, 2]),(Subscript[u, 3])jelölik az A, B ,X vegyületeknek a koncentrációját a t időben. A (Subscript[k, 1]),(Subscript[k, 2]),(Subscript[k, 3])paraméterek konstansnak tekintendők. 

A rendszer Jacobi- mátrixa:

f:={-k1 u1 u2+k2 u3,-k1 u1 u2+k2 u3-k3 u2 u3,k1 u1 u2-k2 u3-k3 u2 u3}
u:={u1,u2,u3}
JacobianMatrix[f_List,x_List]:=Outer[D,f,x]

MatrixForm[JacobianMatrix[f,u],{3,3}]
graf111[f0_,u0_,n0_]:=Module[{g,j,i},
AdjacencyGraph[Boole[Map[Not,PossibleZeroQ[g=Transpose[JacobianMatrix[f0,u0]][[All,All]]],{2}]]-IdentityMatrix[n0],GraphLayout->"CircularEmbedding", DirectedEdges->True, EdgeLabels->Flatten[Table[If[Boole[PossibleZeroQ[{g-g*IdentityMatrix[n0]}[[1,i,j]]]]==0,i\[DirectedEdge]j->ToString[g[[i,j]]]],{i,n0},{j,n0}]],GraphStyle->"VintageDiagram",VertexSize->0.05,VertexShapeFunction->"Square",VertexLabels->Table[i->Placed[(Subscript[A, i]),Top],{i,n0}]]
]
graf111[f,u,3]

6. példa

Reakció katalizátorral:

A+X→R+Y
B+Y→S+X  

Egyenletrendszere:

((Subscript[du, 1])/(dt )) = -(Subscript[k, 1])(Subscript[u, 1])(Subscript[u, 3])

((Subscript[du, 2])/dt)=-(Subscript[k, 2])(Subscript[u, 2])(Subscript[u, 4]),

((Subscript[du, 3])/dt)=-(Subscript[k, 1])(Subscript[u, 1])(Subscript[u, 3])+(Subscript[k, 2])(Subscript[u, 2])(Subscript[u, 4]),

((Subscript[du, 4])/dt)=(Subscript[k, 1])(Subscript[u, 1])(Subscript[u, 3])-(Subscript[k, 2])(Subscript[u, 2])(Subscript[u, 4]).

f:={-k1 u1 u3,-k2 u2 u4,-k1 u1 u3+k2  u2 u4 ,k1 u1 u3-k2 u2 u4}
u:={u1,u2,u3,u4}
JacobianMatrix[f_List,x_List]:=Outer[D,f,x]

graf111[f0_,u0_,n0_]:=Module[{g,j,i},
AdjacencyGraph[Boole[Map[Not,PossibleZeroQ[g=Transpose[JacobianMatrix[f0,u0]][[All,All]]],{2}]]-IdentityMatrix[n0],GraphLayout->"CircularEmbedding", DirectedEdges->True, EdgeLabels->Flatten[Table[If[Boole[PossibleZeroQ[{g-g*IdentityMatrix[n0]}[[1,i,j]]]]==0,i\[DirectedEdge]j->ToString[g[[i,j]]]],{i,n0},{j,n0}]],GraphStyle->"VintageDiagram",VertexSize->0.05,VertexShapeFunction->"Square",VertexLabels->Table[i->Placed[(Subscript[A, i]),Top],{i,n0}]]
]
graf111[f,u,4]

7. példa

Shinar-Feinberg hálózat:

XD(Overscript[→, (Subscript[k, 12])])X(Overscript[→, (Subscript[k, 23])])XT(Overscript[→, (Subscript[k, 34])])(Subscript[X, p]),

(Subscript[X, p])+Y(Overscript[→, (Subscript[k, 56])])(Subscript[X, p])Y(Overscript[→, (Subscript[k, 67])])(Subscript[Y, p])+X,

XD+(Subscript[Y, p])(Overscript[→, (Subscript[k, 12])])XD (Subscript[Y, p])(Overscript[→, (Subscript[k, 13])])XD+Y.

Jelölje (Subscript[x, 1])...(Subscript[x, 9]) a koncentrációt.  A kémiai reakció rendszer a következő:

((Subscript[du, 1])/(dt )) = -(Subscript[k, 12])(Subscript[u, 1])+(Subscript[k, 21])(Subscript[u, 2])-(Subscript[k, 12])(Subscript[u, 1])(Subscript[u, 7])+((Subscript[k, 11])+(Subscript[k, 13]))(Subscript[u, 9]),

((Subscript[du, 2])/dt)=(Subscript[k, 12])(Subscript[u, 1])+(-(Subscript[k, 21])-(Subscript[k, 23]))(Subscript[u, 2])+(Subscript[k, 32])(Subscript[u, 3])+(Subscript[k, 67])(Subscript[u, 6]),

((Subscript[du, 3])/dt)=(Subscript[k, 23])(Subscript[u, 2])+(-(Subscript[k, 32])-(Subscript[k, 34]))(Subscript[u, 3])-(Subscript[k, 89])(Subscript[u, 3])(Subscript[u, 7])+((Subscript[k, 98])+(Subscript[k, 10]))(Subscript[u, 8]),

((Subscript[du, 4])/dt)=(Subscript[k, 34])(Subscript[u, 3])-(Subscript[k, 56])(Subscript[u, 4])(Subscript[u, 5])+(Subscript[k, 65])(Subscript[u, 6]),
((
(Subscript[du, 5]))/(dt )) = -(Subscript[k, 56])(Subscript[u, 4])(Subscript[u, 5])+(Subscript[k, 65])(Subscript[u, 6])+(Subscript[k, 10])(Subscript[u, 8])+(Subscript[k, 13])(Subscript[u, 9]),

((Subscript[du, 6])/(dt )) = (Subscript[k, 56])(Subscript[u, 4])(Subscript[u, 5])+ (-(Subscript[k, 65])-(Subscript[k, 67]))(Subscript[u, 6]),

((Subscript[du, 7])/dt)=(Subscript[k, 67])(Subscript[u, 6])-(Subscript[k, 89])(Subscript[u, 3])(Subscript[u, 7])+(Subscript[k, 98])(Subscript[u, 8])-(Subscript[k, 12])(Subscript[u, 1])(Subscript[u, 7])+(Subscript[k, 11])(Subscript[u, 9]),

((Subscript[du, 8])/dt)=(Subscript[k, 89])(Subscript[u, 3])(Subscript[u, 7])+(-(Subscript[k, 98])-(Subscript[k, 10]))(Subscript[u, 8]),
((
(Subscript[du, 9]))/(dt )) = (Subscript[k, 12])(Subscript[u, 1])(Subscript[u, 7])+(-(Subscript[k, 11])-(Subscript[k, 13]))(Subscript[u, 9]).

f:={-k12 u1+k21 u2-k11 u1 u7+(k11+k13)u9,k12 u1+(-k21-k23)u2+k32 u3+k67 u6,k23 u2+(-k32-k34)u3-k89 u3 u7+(k98+k10)u8,k34 u3-k56 u4 u5+k65 u6,-k56 u4 u5+k65 u6+k10 u8+k13 u9,k56 u4 u5+(-k65-k67)u6,k67 u6-k89 u3 u7+k98 u8-k12 u1 u7+k11 u9,k89 u3 u7+(-k98-k10)u8,k12 u1 u7+(-k11-k13)u9}
u:={u1,u2,u3,u4,u5,u6,u7,u8,u9}
JacobianMatrix[f_List,x_List]:=Outer[D,f,x]

MatrixForm[JacobianMatrix[f,u],{5,5}]

graf111[f,u,9]

Module

A végleges program egyben:

f:={k1 u2 (a1-u1)-k2 u1 u3,k3 u1 (a2-u2),k5 (a3-u3)-k6 u1 u3}
u:={u1,u2,u3}
JacobianMatrix[f_List,x_List]:=Outer[D,f,x]

graf111[f0_,u0_,n0_]:=Module[{g,j,i},
AdjacencyGraph[Boole[Map[Not,PossibleZeroQ[g=Transpose[JacobianMatrix[f0,u0]][[All,All]]],{2}]]-IdentityMatrix[n0],GraphLayout->"CircularEmbedding", DirectedEdges->True, EdgeLabels->Flatten[Table[If[Boole[PossibleZeroQ[{g-g*IdentityMatrix[n0]}[[1,i,j]]]]==0,i\[DirectedEdge]j->ToString[g[[i,j]]]],{i,n0},{j,n0}]],GraphStyle->"VintageDiagram",VertexSize->0.05,VertexShapeFunction->"Square",VertexLabels->Table[i->Placed[(Subscript[A, i]),Top],{i,n0}]]
]

1. példa

graf111[f,u,3]

2. példa

f:={-k1 u1+k2-k3 u1 u2-5k u1 u3+k6 u4,-k3 u1 u2+k4 u3,k3 u1 u2-k4 u3-k5 u1 u3+k6 u4, k5 u1 u3-k6 u4}
u:={u1,u2,u3,u4}
graf111[f,u,4]

Table[(Subscript[u, i]),{i,120}]

Table[StringJoin["u",ToString[i]],{i,120}]

Források

Maya Mincheva - Marc R. Roussel:
Graph-theoretic methods for the analysis of chemical and biochemical networks,

http://www.scientificants.com/chemicalkinetics/chemicalkinetics.html

http://www.math.duke.edu/~annejls/multisite.pdf