"""FBA example with UserDefinedConstraints."""
import numpy as np
from sbmlutils.examples import templates
from sbmlutils.factory import *
from sbmlutils.metadata.sbo import *
from sbmlutils.validation import ValidationOptions
[docs]class U(Units):
"""UnitsDefinition."""
[docs] mmole = UnitDefinition("mmole")
[docs] m2 = UnitDefinition("m2", "meter^2")
[docs] hr = UnitDefinition("hr")
[docs] mmole_per_l = UnitDefinition("mmole_per_l", "mmole/liter")
[docs] mmole_per_hr = UnitDefinition("mmole_per_hr", "mmole/hr")
[docs]model = Model(
"fbc_user_defined_constraints",
packages=[Package.FBC_V3],
# creators=templates.creators,
# notes="""
# # Model with fbc version 3
# Example creating fbc model with KeyValuePairs.
#
# The `ListOfKeyValuePairs`, forms the basis of a controlled annotation defined by
# the Flux Balance Constraints package. This element defines a structured note or
# descriptive list of keys and associated values.
# """
# + templates.terms_of_use,
# units=U,
# model_units=ModelUnits(
# time=U.hr,
# extent=U.mmole,
# substance=U.mmole,
# length=U.meter,
# area=U.m2,
# volume=U.liter,
# ),
compartments=[
Compartment("cell", value=1.0),
],
species=[
Species("S1", initialAmount=NaN, compartment="cell"),
],
parameters=[
Parameter(sid="uc1", value=5),
Parameter(sid="uc2lb", value=2),
Parameter(sid="uc2ub", value=np.Inf),
Parameter(sid="Avar", value=NaN, constant=False),
],
reactions=[
Reaction("RGLX", equation="S1 -> "),
Reaction("RXLG", equation="-> S1"),
Reaction("RGDP", equation="S1 -> "),
],
user_defined_constraints=[
UserDefinedConstraint(
lowerBound="uc1",
upperBound="uc1",
components={
"RGLX": 1.0,
"RXLG": -1.0,
},
variableType="linear",
),
UserDefinedConstraint(
lowerBound="uc2lb",
upperBound="uc2ub",
components={
"Avar": 2.0,
"RGDP": -1.0,
},
variableType="linear",
),
],
)
if __name__ == "__main__":
from sbmlutils.resources import EXAMPLES_DIR
[docs] fac_results = create_model(
model=model,
filepath=EXAMPLES_DIR / f"{model.sid}.xml",
show_sbml=True,
validation_options=ValidationOptions(units_consistency=False),
sbml_level=3,
sbml_version=1,
)