diff --git a/src/frontend/enzymes.jl b/src/frontend/enzymes.jl index 9749dc48..6fdcbcd8 100644 --- a/src/frontend/enzymes.jl +++ b/src/frontend/enzymes.jl @@ -104,11 +104,13 @@ function enzyme_constrained_flux_balance_constraints( # allocate all variables and build the system constraints = flux_balance_constraints(model; interface, interface_name) - constraints += sign_split_variables( - constraints.fluxes, - positive = :fluxes_forward, - negative = :fluxes_reverse, - ) + constraints += + :fluxes_forward^unsigned_positive_contribution_variables(constraints.fluxes) + constraints *= + :fluxes_reverse^unsigned_negative_contribution_constraints( + constraints.fluxes, + constraints.fluxes_forward, + ) constraints += enzyme_variables(; fluxes_forward = constraints.fluxes_forward, @@ -117,27 +119,21 @@ function enzyme_constrained_flux_balance_constraints( isozyme_reverse_ids, ) - return constraints * - :directional_flux_balance^sign_split_constraints(; - positive = constraints.fluxes_forward, - negative = constraints.fluxes_reverse, - signed = constraints.fluxes, - ) * - enzyme_constraints(; - fluxes_forward = constraints.fluxes_forward, - fluxes_reverse = constraints.fluxes_reverse, - isozyme_forward_amounts = constraints.isozyme_forward_amounts, - isozyme_reverse_amounts = constraints.isozyme_reverse_amounts, - kcat_forward, - kcat_reverse, - isozyme_gene_product_stoichiometry, - gene_product_molar_mass, - capacity_limits = capacity isa Real ? - [(:total_capacity, gene_ids, C.Between(0, capacity))] : - [ - (Symbol(k), Symbol.(gs), C.Between(0, cap)) for (k, gs, cap) in capacity - ], - ) + return constraints * enzyme_constraints(; + fluxes_forward = constraints.fluxes_forward, + fluxes_reverse = constraints.fluxes_reverse, + isozyme_forward_amounts = constraints.isozyme_forward_amounts, + isozyme_reverse_amounts = constraints.isozyme_reverse_amounts, + kcat_forward, + kcat_reverse, + isozyme_gene_product_stoichiometry, + gene_product_molar_mass, + capacity_limits = capacity isa Real ? + [(:total_capacity, gene_ids, C.Between(0, capacity))] : + [ + (Symbol(k), Symbol.(gs), C.Between(0, cap)) for (k, gs, cap) in capacity + ], + ) end export enzyme_constrained_flux_balance_constraints