Closed ChristianLieven closed 5 years ago
Is the biomass reaction identified based on the ID or the name of the reaction? I'd suggest enforcing usage of the correct SBO term 629. In my opinion, Memote could even complain about the lack of a biomass reaction if that SBO term isn't used.
Our strategy for identifying biomass reactions is:
This function identifies possible biomass reactions using two steps:
- Return reactions that include the SBO annotation "SBO:0000629" for biomass. If no reactions can be identifies this way:
- Look for the buzzwords "biomass", "growth" and "bof" in reaction IDs.
- Look for metabolite IDs or names that contain the buzzword "biomass" and obtain the set of reactions they are involved in.
- Remove boundary reactions from this set.
- Return the union of reactions that match the buzzwords and of the reactions that metabolites are involved in that match the buzzword.
Memote does complain if the SBO term is missing in the respective SBO annotation section but we still consider the biomass reactions identified in this way. I think only relying on the SBO term is not productive at this point since only models coming from KBase and the majority of BiGG models use SBO terms at all.
Thank you all very much for your answers! I should say first that I converted the model from .mat to .xml and some information associated with the metabolites and reactions annotations got lost in this process - I know I should fix this. However, based on the 2 reactions that were identified in my case, there might be a bug in the pipeline that Midnighter and Christian very nicely described to me. The two reactions are: (1) the real biomass reaction producing a metabolite named "Biomass", and (2) the exchange reaction for the "Biomass" metabolite. The step 4 in the identification process is not being applied here, right?
Indeed, there is a problem with the logic of the function that identifies biomass reactions. In some cases it returns too early before all of the above steps have been performed.
@anushchp Could you check-out #677 and test it with your model to see if it fixes the bug?
Opening on behalf of @anushcph
Problem description