Closed BenjaSanchez closed 4 years ago
This is partly due to the model definition and partly due to how memote tries to be very eager to find the biomass reaction. I have recorded how these components are matched:
BIOMASS_yeastGEM_LIP identifier match by buzzword.
GROWTH growth name match by buzzword.
BIOMASS_yeastGEM match by SBO.
BIOMASS_yeastGEM_PROT identifier match by buzzword.
BIOMASS_yeastGEM_CARB identifier match by buzzword.
BIOMASS_yeastGEM_RNA identifier match by buzzword.
BIOMASS_yeastGEM_DNA identifier match by buzzword.
BIOMASS_yeastGEM_LIPBACK identifier match by buzzword.
BIOMASS_yeastGEM_LIPCHAIN identifier match by buzzword.
BIOMASS_yeastGEM_COFACTOR identifier match by buzzword.
BIOMASS_yeastGEM_ION identifier match by buzzword.
pail_cho_c match by SBO.
biomass_c match by SBO.
dag_hs_r match by SBO.
ergstest_c match by SBO.
fa_c match by SBO.
mip2c_g match by SBO.
ipc_g match by SBO.
lipid_c match by SBO.
mipc_g match by SBO.
ps_cho_c match by SBO.
pchol_cho_c match by SBO.
pe_hs_c match by SBO.
pe_hs_r match by SBO.
tag_cho_c match by SBO.
ergstest_rm match by SBO.
ps_cho_rm match by SBO.
pchol_cho_rm match by SBO.
pe_hs_rm match by SBO.
tag_cho_rm match by SBO.
protein_c match by SBO.
carbohydrate_c match by SBO.
rna_c match by SBO.
dna_c match by SBO.
cer_g match by SBO.
cer_c match by SBO.
mip2c_c match by SBO.
ipc_c match by SBO.
mipc_c match by SBO.
lcb_r match by SBO.
lcb_c match by SBO.
lcbp_r match by SBO.
lcbp_c match by SBO.
pa_rm match by SBO.
pa_c match by SBO.
dag_rm match by SBO.
dag_c match by SBO.
lpi_rm match by SBO.
lpi_c match by SBO.
pg_mm match by SBO.
pg_c match by SBO.
cl_mm match by SBO.
cl_c match by SBO.
c160chain_c match by SBO.
c161chain_c match by SBO.
c180chain_c match by SBO.
c181chain_c match by SBO.
c240chain_c match by SBO.
c260chain_c match by SBO.
lipidbackbone_c match by SBO.
lipidchain_c match by SBO.
cofactor_c match by SBO.
ion_c match by SBO.
As you can see, most of the matches are by SBO term and only few by 'buzzword'. The main problem is that in addition to the reactions, we also search through the metabolites (as some models only have a biomass compound within an unspecified reaction). For metabolites we use https://www.ebi.ac.uk/sbo/main/SBO:0000649 which is not very specific and many metabolites match in the yeast model (this is correctly done in the model). Then, for each matching metabolite, we add all reactions to the list of candidates. That is why so many reactions are found.
If you agree that those are solutions, I can implement 1. and 2. rather quickly.
@Midnighter thanks for getting back to me. I think solution 1 would be indeed the simplest one, and it will for sure solve our issue (we just have one reaction with SBO:0000629). Additionally, it would make the test more consistent with its documentation :)
Problem description
From the definition of
test_biomass_presence
:"Implementation: Identifies possible biomass reactions using two principal steps: 1. Return reactions that include the SBO annotation "SBO:0000629" for biomass. If no reactions can be identifies this way: 1. Look for the
buzzwords
"biomass", "growth" and "bof" in reaction IDs. 2. Look for metabolite IDs or names that contain thebuzzword
"biomass" and obtain the set of reactions they are involved in. 3. Remove boundary reactions from this set. 4. Return the union of reactions that match the buzzwords and of the reactions that metabolites are involved in that match the buzzword."However, when the report is ran on this model, which has a single reaction
BIOMASS_yeastGEM
with the SBO termSBO:0000629
, it returns 214 reactions (also matches to component pseudoreactions e.g.protein pseudoreaction
+ other reactions where the biomass components are involved). This does not sound like intended behavior to me.Code Sample
Context