Skip to content

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
exaexa committed Jan 10, 2024
1 parent 7f3c756 commit 53f55a2
Showing 1 changed file with 73 additions and 6 deletions.
79 changes: 73 additions & 6 deletions src/frontend/mmdf.jl
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ Reactions specified in `ignore_reaction_ids` are internally ignored when
calculating the max-min driving force. Importantly, this should include water
and proton importers.
Since biochemical thermodynamics are assumed, the `proton_ids` and `water_ids`
Since biochemical thermodynamics are assumed, the `proton_metabolites` and `water_metabolites`
need to be specified so that they can be ignored in the calculations.
Effectively this assumes an aqueous environment at constant pH is used.
Expand All @@ -75,16 +75,83 @@ function max_min_driving_force_analysis(
reference_flux = Dict{String,Float64}(),
concentration_ratios = Dict{String,Tuple{String,String,Float64}}(),
constant_concentrations = Dict{String,Float64}(),
proton_ids,
water_ids,
ignored_metabolites = Set{String}()proton_metabolites = Set{String}(),
water_metabolites = Set{String}(),
concentration_lb = 1e-9, # M
concentration_ub = 1e-1, # M
T = 298.15, # Kelvin
R = 8.31446261815324e-3, # kJ/K/mol
ignore_reaction_ids = String[],
check_ignored_reactions = missing,
settings = [],
optimizer,
)

# First let's check if all the identifiers are okay because we use quite a
# lot of these.

model_reactions = Set(A.reactions(model))
model_metabolites = Set(A.metabolites(model))

all(in(model_reactions), keys(reaction_standard_gibbs_free_energies)) || throw(
DomainError(
reaction_standard_gibbs_free_energies,
"unknown reactions referenced by reaction_standard_gibbs_free_energies",
),
)
all(in(model_reactions), keys(reference_flux)) || throw(
DomainError(
reaction_standard_gibbs_free_energies,
"unknown reactions referenced by reference_flux",
),
)
all(in(model_metabolites), keys(constant_concentrations)) || throw(
DomainError(
constant_concentrations,
"unknown metabolites referenced by constant_concentrations",
),
)
all(
in(model_metabolites),
(m for (_, (x, y, _)) in concentration_ratios for m in (x, y)),
) || throw(
DomainError(
concentration_ratios,
"unknown metabolites referenced by concentration_ratios",
),
)
all(in(model_metabolites), proton_metabolites) || throw(
DomainError(
concentration_ratios,
"unknown metabolites referenced by proton_metabolites",
),
)
all(in(model_metabolites), water_metabolites) || throw(
DomainError(
concentration_ratios,
"unknown metabolites referenced by water_metabolites",
),
)
all(in(model_metabolites), ignored_metabolites) || throw(
DomainError(
concentration_ratios,
"unknown metabolites referenced by ignored_metabolites",
),
)

if !ismissing(check_ignored_reactions) && (
all(
x -> !haskey(reaction_standard_gibbs_free_energies, x),
check_ignored_reactions,
) || (
union(
Set(check_ignored_reactions),
Set(keys(reaction_standard_gibbs_free_energies)),
) != model_reactions
)
)
throw(AssertionError("check_ignored_reactions validation failed"))
end

m = max_min_driving_force_constraints(
model,
reaction_standard_gibbs_free_energies;
Expand All @@ -94,8 +161,8 @@ function max_min_driving_force_analysis(
R,
T,
ignore_reaction_ids,
water_ids,
proton_ids,
water_metabolites,
proton_metabolites,
)

for (mid, val) in constant_concentrations
Expand Down

0 comments on commit 53f55a2

Please sign in to comment.