opencobra / memote

memote – the genome-scale metabolic model test suite
https://memote.readthedocs.io/
Apache License 2.0
127 stars 27 forks source link

annotation vs notes #213

Open cdanielmachado opened 7 years ago

cdanielmachado commented 7 years ago

memote reports missing annotations for metabolites and reactions when they are annotated using the element rather than the element.

This should maybe be marked as a warning or "recommended practice" for the modeler to use the element, rather than an error.

The field was commonly used as the default way of storing annotations in the legacy cobra format.

ChristianLieven commented 7 years ago

I think this is a discussion worth having in the context of the OpenCOBRA schema: https://github.com/opencobra/schema

cdiener commented 7 years ago

The common tone from the SBML contributors in that thread was that notes for annotations are actually wrong from the view of the SBML specification. They are obviously completely fine for comments.

Relevant excerpt from @draeger:

Notes are not the right place to store any information that is relevant for computational tools. Notes in SBML are like comments in programing languages. You don't want to parse information out from there. This was done in the past and caused a lot of problems. People are still trying to write converters to get rid of repurposed notes in SBML.

cdanielmachado commented 7 years ago

Yes, I agree that the annotations field is a better practice than the notes field. Hence my initial comment, memote could report a warning, saying that it's preferable to use the annotations field, if it finds the annotations in the notes field. I think that is more appropriate than reporting missing annotations as an error, when they exist somewhere in the model (if people just don't agree on where to put them).

ChristianLieven commented 6 years ago

I think this test is definitely very valid! However, I'd like to coordinate this a bit more with an overhaul to the cobrapy SBML parsers so that I know what to expect from the contents of the annotation and note fields in general. I have a feeling that not everything that is in the model may be adequately represented in the cobrapy model object yet.