Skip to content

doFBAMinSum fails when a new reaction is added to a model #25

@willigott

Description

@willigott

Let's say I take an existing model and do

import cbmpy as cbm

mod = cbm.CBRead.readSBML3FBC('e_coli_core.xml.gz')
cbm.doFBAMinSum(mod)

everything will work as expected.

However, when I now add a new reaction to this model,

newmod = mod.clone()
newmod.createReaction('foo')
newmod.createReactionReagent('foo', 'M_h_e', -1.)

and try again to minimize the fluxes, I get an error

cbm.doFBAMinSum(newmod)

CPLEX is using solver option: "o"

KeyError Traceback (most recent call last)
/opt/ibm/ILOG/CPLEX_Studio128/cplex/python/3.6/x86-64_linux/cplex/_internal/_aux_functions.py in _cachelookup(item, getindexfunc, cache)
277 try:
--> 278 idx = cache[item]
279 except KeyError:

KeyError: 'foo'

The reason seems to be that the stoichiometric matrix is not updated when a new reaction is added. If I do

newmod.buildStoichMatrix()
cbm.doFBAMinSum(newmod)

it will work fine.

Not sure what the best approach would be to deal with it. Maybe one could also add the build_n=True option to the function call as in doFBA?

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions