Skip to content

Commit aa5e167

Browse files
committed
partial fix kinetic models
1 parent c7119f6 commit aa5e167

5 files changed

Lines changed: 120 additions & 126 deletions

File tree

scripts/build_pathway_modelB.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@
7676
name="v_biomass",
7777
species=["c_A","c_atp","c_biomass","co2"],
7878
stoichiometry = [-0.175, -1, 1, 0.05],
79-
compartments = ['c','c','c', 'c','c'],
79+
compartments = ['c','c','c', 'c'],
8080
mechanism=mech_biomass, )
8181

8282
mech_maintenance = mechanisms.Jax_MM_Irrev_Uni(substrate='c_atp',

scripts/build_pathway_modelC.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@
9090
v_maintenance = build.Reaction(
9191
name="v_maintenance",
9292
species=["c_A", "c_atp", "co2",'c_adp', 'c_biomass'],
93-
stoichiometry=[-1/6, -1, 1,
93+
stoichiometry=[0, -1, 1,
9494
1, 0],
9595
compartments=['c', 'c', 'c', 'c', 'c'],
9696
mechanism=mech_maintenance, )
@@ -105,9 +105,9 @@
105105

106106
v_respiration = build.Reaction(
107107
name="v_respiration",
108-
species=["c_A", "c_adp","co2", "c_atp", 'c_biomass'],
109-
stoichiometry=[-1,-28, 6, 28, 0],
110-
compartments=['c', 'c', 'c', 'c', 'c'],
108+
species=["c_A","co2","c_atp", 'c_biomass'],
109+
stoichiometry=[-1, 6, 1, 0],
110+
compartments=['c', 'c', 'c', 'c'],
111111
mechanism=mech_respiration,
112112
)
113113

@@ -435,9 +435,9 @@
435435

436436
v_nadh_regeneration = build.Reaction(
437437
name="v_atpsynthase",
438-
species= ['c_nadh','c_nad','c_atp','c_biomass'],
439-
compartments = ['c', 'c', 'c', 'c'],
440-
stoichiometry=[-1, 1, 3, 0],
438+
species= ['c_nadh','c_nad','c_biomass'],
439+
compartments = ['c', 'c', 'c'],
440+
stoichiometry=[-1, 1, 0],
441441
mechanism=mech_nadh_regeneration,
442442
)
443443

@@ -570,13 +570,13 @@
570570

571571
protein_load = build.AssignmentRule(
572572
rule=("0.3*"
573-
"(((kcat_1 *enzyme_1) + (kcat_2 * enzyme_2) + (kcat_3 * enzyme_3) + (kcat_4*enzyme_4) "
574-
"+ (kcat_5* enzyme_5) +"
575-
"(kcat_6 * enzyme_6) + (kcat_7 * enzyme_7) + (kcat_8 * enzyme_8) + "
576-
"(kcat_9 * enzyme_9) + (kcat_10 * enzyme_10) + (kcat_11 * enzyme_11) +"
577-
"(kcat_12 * enzyme_12) + (kcat_13 * enzyme_13)+ (kcat_14 * enzyme_14)+"
578-
"(kcat_15 * enzyme_15) + (kcat_16 * enzyme_16) + (kcat_17 * enzyme_17)+"
579-
"+90)/100)"))
573+
"((enzyme_1 + enzyme_2 + enzyme_3 + enzyme_4"
574+
"+ enzyme_5 +"
575+
"enzyme_6+ enzyme_7 + enzyme_8 + "
576+
"enzyme_9 + enzyme_10 + enzyme_11 +"
577+
"enzyme_12 + enzyme_13+ enzyme_14+"
578+
"enzyme_15 + enzyme_16 + enzyme_17+"
579+
"+1)/17)"))
580580

581581
kmodel.add_parameter_assignment_rule(variable="vmax_maintenance",
582582
rule=protein_load)
@@ -751,7 +751,7 @@
751751

752752
for p in increasing_protein_load:
753753
newparameters = model.parameters.copy()
754-
newparameters['enzyme_12'] = p
754+
newparameters['enzyme_8'] = p
755755

756756
ys = JaxKmodel(ts=ts, y0=model.y0, params=newparameters)
757757
ys = pd.DataFrame(ys, columns=S.index)

scripts/build_pathway_modelD.py

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -138,10 +138,9 @@
138138

139139
v_maintenance = build.Reaction(
140140
name="v_maintenance",
141-
species=["c_A", "c_atp", "co2",'c_adp', 'c_biomass'],
142-
stoichiometry=[-1/6, -1, 1,
143-
1, 0],
144-
compartments=['c', 'c', 'c', 'c', 'c'],
141+
species=["c_A", "c_atp", "co2",'c_biomass'],
142+
stoichiometry=[0, -1, 1, 0],
143+
compartments=['c', 'c', 'c', 'c'],
145144
mechanism=mech_maintenance, )
146145

147146
mech_respiration = mechanisms.Jax_MM_Irrev_Bi(substrate1='c_A',
@@ -154,12 +153,11 @@
154153

155154
v_respiration = build.Reaction(
156155
name="v_respiration",
157-
species=["c_A", "c_adp",
158-
"co2", "c_atp",
156+
species=["c_A",
157+
"co2",
158+
"c_atp",
159159
'c_biomass'],
160-
stoichiometry=[-1, -28,
161-
6, 28,
162-
0],
160+
stoichiometry=[-1, 6, 1, 0],
163161
compartments=['c', 'c', 'c', 'c', 'c'],
164162
mechanism=mech_respiration,
165163
)
@@ -555,7 +553,7 @@
555553
v_nadh_regeneration = build.Reaction(
556554
name="v_atpsynthase",
557555
species= ['c_nad','c_nadh','c_biomass'],
558-
compartments = ['c', 'c', 'c', 'c'],
556+
compartments = ['c', 'c', 'c'],
559557
stoichiometry=[-1, 1, 0],
560558
mechanism=mech_nadh_regeneration,
561559
)
@@ -704,17 +702,15 @@
704702
#we sum all vmaxes as a protein load, divide this by the sum of vmaxes (which
705703
#for the baseline returns one, and then we multiply by 0.2 to get the vmax maintenance.
706704

707-
708705
protein_load = build.AssignmentRule(
709706
rule=("0.3*"
710-
"(((kcat_1 *enzyme_1) + (kcat_2 * enzyme_2) + (kcat_3 * enzyme_3) + (kcat_4*enzyme_4) "
711-
"+ (kcat_5* enzyme_5) +"
712-
"(kcat_6 * enzyme_6) + (kcat_7 * enzyme_7) + (kcat_8 * enzyme_8) + "
713-
"(kcat_9 * enzyme_9) + (kcat_10 * enzyme_10) + (kcat_11 * enzyme_11) +"
714-
"(kcat_12 * enzyme_12) + (kcat_13 * enzyme_13)+ (kcat_14 * enzyme_14)+"
715-
"(kcat_15 * enzyme_15) + (kcat_16 * enzyme_16) + (kcat_17 * enzyme_17)+(kcat_18 *enzyme_18)+"
716-
"(kcat_19 * enzyme_19) + (kcat_20 * enzyme_20)+ (kcat_21 * enzyme_21)+"
717-
"+1)/100)"))
707+
"((enzyme_1 + enzyme_2 + enzyme_3 + enzyme_4 "
708+
"+ enzyme_5 + enzyme_6 + enzyme_7 + enzyme_8 + "
709+
"enzyme_9 + enzyme_10 + enzyme_11 + enzyme_12 + "
710+
"enzyme_13 + enzyme_14 + enzyme_15 + enzyme_16 + "
711+
"enzyme_17 + enzyme_18 + enzyme_19 + enzyme_20 + enzyme_21 "
712+
"+1)/100)")
713+
)
718714

719715
kmodel.add_parameter_assignment_rule(variable="vmax_maintenance",
720716
rule=protein_load)

scripts/build_pathway_modelE.py

Lines changed: 50 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -64,20 +64,23 @@
6464

6565

6666
# now biomass, from the internal carbon source species
67-
mech_biomass = Jax_MM_Irrev_Uni_e(substrate="c_A",
67+
mech_biomass = Jax_MM_Irrev_Bi_e(substrate1="c_A",
68+
substrate2="c_atp",
6869
kcat="kcat_1",
6970
enzyme="enzyme_1",
70-
km_substrate="km_v1_gluc")
71+
km_substrate1="km_v1_gluc",
72+
km_substrate2="km_v1_atp")
7173
mech_biomass.add_modifier(modifier.BasicDivision(symbol="a", scaling="scale"))
7274
mech_biomass.add_modifier(modifier.BasicMultiplication(symbol="c_biomass", scaling="scale"))
73-
mech_biomass.add_modifier(modifier.SimpleInhibitor(inhibitor="toxic_byproduct",k_I="ki_toxicbyproduct"))
7475
v_biomass = build.Reaction(
7576
name="v_biomass",
76-
species=["c_A","c_biomass","co2"],
77-
stoichiometry = [-0.175, 1, 0.05],
77+
species=["c_A","c_atp","c_biomass","co2"],
78+
stoichiometry = [-0.175, -1, 1, 0.05],
7879
compartments = ['c','c','c', 'c','c'],
7980
mechanism=mech_biomass, )
8081

82+
83+
8184
mech_maintenance = mechanisms.Jax_MM_Irrev_Bi(substrate1='c_A',
8285
substrate2= 'c_atp',
8386
vmax="vmax_maintenance",
@@ -90,28 +93,22 @@
9093
v_maintenance = build.Reaction(
9194
name="v_maintenance",
9295
species=["c_A", "c_atp", "co2",'c_adp', 'c_biomass'],
93-
stoichiometry=[-1/6, -28, 1,
94-
28, 0],
95-
compartments=['c', 'c', 'c', 'c', 'c'],
96+
stoichiometry=[0, -1, 1, 0],
97+
compartments=['c', 'c', 'c', 'c'],
9698
mechanism=mech_maintenance, )
9799

98-
mech_respiration = mechanisms.Jax_MM_Irrev_Bi(substrate1='c_A',
99-
substrate2= "c_adp",
100+
mech_respiration = mechanisms.Jax_MM_Irrev_Uni(substrate='c_A',
100101
vmax="vmax_respiration",
101-
km_substrate1="km_respiration_A",
102-
km_substrate2="km_respiration_adp",)
102+
km_substrate="km_respiration_A")
103103
mech_respiration.add_modifier(modifier.BasicDivision(symbol="a", scaling="scale"))
104104
mech_respiration.add_modifier(modifier.BasicMultiplication(symbol="c_biomass", scaling="scale"))
105105

106106
v_respiration = build.Reaction(
107107
name="v_respiration",
108-
species=["c_A", "c_adp",
109-
"co2", "c_atp",
108+
species=["c_A","co2", "c_atp",
110109
'c_biomass'],
111-
stoichiometry=[-1, -28,
112-
6, 28,
113-
0],
114-
compartments=['c', 'c', 'c', 'c', 'c'],
110+
stoichiometry=[-1, 6,1,0],
111+
compartments=['c', 'c', 'c', 'c'],
115112
mechanism=mech_respiration,
116113
)
117114

@@ -555,9 +552,9 @@
555552

556553
v_nadh_regeneration = build.Reaction(
557554
name="v_atpsynthase",
558-
species= ['c_nadh','c_adp','c_nad', 'c_atp', 'c_biomass'],
559-
compartments = ['c', 'c', 'c', 'c'],
560-
stoichiometry=[-1, -1, 1, 1, 0],
555+
species= ['c_nadh','c_nad', 'c_biomass'],
556+
compartments = ['c', 'c', 'c'],
557+
stoichiometry=[-1, 1, 0],
561558
mechanism=mech_nadh_regeneration,
562559
)
563560

@@ -569,17 +566,17 @@
569566
"kcat_1": 0.3,
570567
"enzyme_1": 1,
571568
"km_v1_gluc": 0.01,
572-
569+
"km_v1_atp": 0.005,
573570
"a": 1.6,
574571
"scale": 1, # is the broth volume
575572
# "respiration_flux": 0.02,
576573
"vmax_respiration": 0.35,
577574
"km_respiration_A": 0.6,
578-
"km_respiration_adp":0.1,
579575
"vmax_maintenance": 0, #has assignment rule
580576
"km_vmaintenance_atp":0.1,
581577
"km_vmaintenance_gluc": 0.1,
582578
"km_v2_A": 0.01,
579+
583580
"km_v2_adp":0.01,
584581
"kcat_2": 0.1,
585582
"enzyme_2": 1.0,
@@ -706,35 +703,23 @@
706703
#for the baseline returns one, and then we multiply by 0.2 to get the vmax maintenance.
707704

708705

709-
# protein_load = build.AssignmentRule(
710-
# rule=("0.3*"
711-
# "(((kcat_1 *enzyme_1) + (kcat_2 * enzyme_2) + (kcat_3 * enzyme_3) + (kcat_4*enzyme_4)"
712-
# "+(kcat_5* enzyme_5) +"
713-
# "(kcat_6 * enzyme_6) + (kcat_7 * enzyme_7) + (kcat_8 * enzyme_8) +"
714-
# "(kcat_9 * enzyme_9) + (kcat_10 * enzyme_10) + (kcat_11 * enzyme_11) +"
715-
# "(kcat_12 * enzyme_12) + (kcat_13 * enzyme_13)+ (kcat_14 * enzyme_14)+"
716-
# "(kcat_15 * enzyme_15) + (kcat_16 * enzyme_16) + (kcat_17 * enzyme_17) + (kcat_18 * enzyme_18) +"
717-
# "(kcat_19 * enzyme_19) + (kcat_20 * enzyme_20) + (kcat_21 * enzyme_21) +"
718-
# "(kcat_22 * enzyme_22)+ (kcat_23 enzyme_23)+ (kcat_24 * enzyme_24)+ (kcat_25 * enzyme_25)"
719-
# "+75)/100)"))
720706

721707
protein_load = build.AssignmentRule(
722-
rule=("0.2*"
723-
"(((kcat_1 *enzyme_1) + (kcat_2 * enzyme_2) + (kcat_3 * enzyme_3) + (kcat_4*enzyme_4) "
724-
"+ (kcat_5* enzyme_5) +"
725-
"(kcat_6 * enzyme_6) + (kcat_7 * enzyme_7) + (kcat_8 * enzyme_8) + "
726-
"(kcat_9 * enzyme_9) + (kcat_10 * enzyme_10) + (kcat_11 * enzyme_11) +"
727-
"(kcat_12 * enzyme_12) + (kcat_13 * enzyme_13)+ (kcat_14 * enzyme_14)+"
728-
"(kcat_15 * enzyme_15) + (kcat_16 * enzyme_16) + (kcat_17 * enzyme_17)+(kcat_18 *enzyme_18)+"
729-
"(kcat_22 * enzyme_22)+ (kcat_23* enzyme_23)+ (kcat_24 * enzyme_24)+ (kcat_25 * enzyme_25)+"
730-
"+49.4991)/55)"))
708+
rule=("0.3*"
709+
"((enzyme_1 + enzyme_2 + enzyme_3 + enzyme_4 "
710+
"+ enzyme_5 + enzyme_6 + enzyme_7 + enzyme_8 + "
711+
"enzyme_9 + enzyme_10 + enzyme_11 + enzyme_12 + "
712+
"enzyme_13 + enzyme_14 + enzyme_15 + enzyme_16 + "
713+
"enzyme_17 + enzyme_18 + enzyme_22 + enzyme_23 + "
714+
"enzyme_24 + enzyme_25 + 12)/25)")
715+
)
731716

732717
kmodel.add_parameter_assignment_rule(variable="vmax_maintenance",
733718
rule=protein_load)
734719

735720
kmodel_sim = build.NeuralODEBuild(kmodel)
736721

737-
ts = jnp.linspace(0, 50, 1000)
722+
ts = jnp.linspace(0, 90, 1000)
738723

739724
print(kmodel_sim.species_names) #check unit consistency (cmol/L) later
740725
print('number of parameters', len(parameters))
@@ -910,26 +895,26 @@
910895
norm = colors.Normalize(vmin=increasing_protein_load.min(), vmax=increasing_protein_load.max())
911896
cmap = plt.cm.Reds # or any other colormap you like
912897
#
913-
# for p in increasing_protein_load:
914-
# print(p)
915-
# newparameters = model.parameters.copy()
916-
# newparameters['enzyme_5'] = p
917-
#
918-
# ys = JaxKmodel(ts=ts, y0=model.y0, params=newparameters)
919-
# ys = pd.DataFrame(ys, columns=S.index)
898+
for p in increasing_protein_load:
899+
print(p)
900+
newparameters = model.parameters.copy()
901+
newparameters['enzyme_5'] = p
902+
903+
ys = JaxKmodel(ts=ts, y0=model.y0, params=newparameters)
904+
ys = pd.DataFrame(ys, columns=S.index)
905+
906+
color = cmap(norm(p)) # map protein load to a color
907+
ax.plot(ts, ys['product_E'], color=color, label=f'p={p:.2f}')
920908
#
921-
# color = cmap(norm(p)) # map protein load to a color
922-
# ax.plot(ts, ys['product_E'], color=color, label=f'p={p:.2f}')
923-
# #
924-
# # # Optional: add colorbar
925-
# sm = plt.cm.ScalarMappable(cmap=cmap, norm=norm)
926-
# sm.set_array([]) # Needed for ScalarMappable in some versions
927-
# cbar = plt.colorbar(sm, ax=ax)
928-
# cbar.set_label('Protein Load (vmax_maintenance)')
909+
# # Optional: add colorbar
910+
sm = plt.cm.ScalarMappable(cmap=cmap, norm=norm)
911+
sm.set_array([]) # Needed for ScalarMappable in some versions
912+
cbar = plt.colorbar(sm, ax=ax)
913+
cbar.set_label('Protein Load (vmax_maintenance)')
914+
915+
ax.set_title("Protein load (0-100 vmax3)")
916+
ax.set_xlabel('Time')
917+
ax.set_ylabel('Product')
918+
plt.tight_layout()
929919
#
930-
# ax.set_title("Protein load (0-100 vmax3)")
931-
# ax.set_xlabel('Time')
932-
# ax.set_ylabel('Product')
933-
# plt.tight_layout()
934-
# #
935-
# fig.savefig(f"{output_dir}/protein_load_effect.png", bbox_inches='tight')
920+
fig.savefig(f"{output_dir}/protein_load_effect.png", bbox_inches='tight')

0 commit comments

Comments
 (0)