SBRG / bigg_models

The BiGG Models website server
http://bigg.ucsd.edu
Other
77 stars 18 forks source link

SBML of iAT_PLT_636 misses FluxObjectives #333

Closed matthiaskoenig closed 5 years ago

matthiaskoenig commented 5 years ago

The SBML iAT_PLT_636.xml has an objective, but no listOfFluxObjectives. Therefore it is unclear what should be optimized. This is invalid SBML.

"E0 (Error): SBML component consistency (fbc, L76); An <objective> must have one <listOfFluxObjectives>.; An <objective> object must have one and only one instance of the <listOfFluxObjectives> object. \nReference: L3V1 Fbc V2, Section 3.6\n <objective> 'obj' has no listOfFluxObjectives.\n"
draeger commented 5 years ago

My understanding is that this model of human platelets does not represent a growing cell. There is no clear objective because platelets have a different purpose in the body. It would probably be necessary to develop some kind of objective other than a biomass growth function. My assumption is that this model was created to simply reflect a knowledgebase, the current state of metabolic reactions taking place in these cells.

matthiaskoenig commented 5 years ago

In this case the Objective should be removed from the model (and with it the listOfObjectives). I.e. have no ListOfObjectives on the model. This will contain the same information and make the model valid SBML.

zakandrewking commented 5 years ago

@draeger Is this something we can solve in ModelPolisher?

draeger commented 5 years ago

It is possible to detect such a problem automatically, but it is not always clear which action to take for solving it:

  1. We could expose a warning to the user of ModelPolisher.
  2. We could simply remove the objective. In such a case, we would also need to change the model's attribute fbc:strict to the value false, which might cause problems with COBRApy.
  3. We could add a user option to decide what to do, e.g., with option 1 or 2.

What would be best?

zakandrewking commented 5 years ago

We could simply remove the objective. In such a case, we would also need to change the model's attribute fbc:strict to the value false, which might cause problems with COBRApy.

I'm not familiar with the details here – does fbc:strict require that an objective be present?

We can also raise this with COBRApy and ask them to update if that is the bottleneck. It's always good to push the community toward more-correct support of the standards.

But I don't know enough about the details to have a strong opinion, so I'll follow your and Matthias's lead.

draeger commented 5 years ago

We checked the FBC specification again. As it turns out a strict model doesn't necessarily have to include an objective function. We can therefore safely remove it in such cases. We'll incorporate that into ModelPolisher