首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将流量比设置为约束?

如何将流量比设置为约束?
EN

Stack Overflow用户
提问于 2018-05-16 19:14:04
回答 1查看 184关注 0票数 2

在一些数据集中,我有时观察到固定的磁通比,我想把它纳入我的模拟。我怎么能在CBMPy上做到这一点?

例如,我有来自这里的模型,现在希望将琥珀酸外流和丙酮酸外流的比例限制为2.0。我知道如何限制个人的反应:

代码语言:javascript
复制
import cbmpy

# downloaded from http://bigg.ucsd.edu/models/e_coli_core
ecoli = cbmpy.CBRead.readSBML3FBC('e_coli_core.xml')

ecoli.setReactionBounds('R_EX_pyr_e', 1.0, 1000.0)
ecoli.setReactionBounds('R_EX_succ_e', 2.0, 1000.0)

# solve the model
cbmpy.doFBA(ecoli)

# get all reaction values
solution = ecoli.getReactionValues()
print(solution['R_EX_pyr_e'])
print(solution['R_EX_succ_e'])

对于这种情况,比率是正确的,但我如何添加它作为一个约束,它将满足所有的条件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-16 20:52:40

在(FBA)中,这确实是一种常见的方法,您可以使用函数addUserConstraint来实现这一点。

整个代码示例可能如下所示(解释如下):

代码语言:javascript
复制
import cbmpy as cbm

# downloaded from http://bigg.ucsd.edu/models/e_coli_core
ecoli = cbm.CBRead.readSBML3FBC('e_coli_core.xml')

# make a clone of the original model
ecoli_ratio = ecoli.clone()

# add the desired user constraint; explanation follows below
ecoli_ratio.addUserConstraint("pyr_succ_ratio", fluxes=[(1.0, 'R_EX_pyr_e' ),(-0.5, 'R_EX_succ_e')], operator='=', rhs=0.0)

# now we have to set only one flux bound; if you think it is naturally excreted, this step is not needed
ecoli_ratio.setReactionBounds('R_EX_succ_e', 4.0, cbm.INF)

cbm.doFBA(ecoli_ratio)
solution = ecoli_ratio.getReactionValues()
print("{}: {}".format("succinate excretion rate", solution['R_EX_succ_e']))
print("{}: {}".format("pyruvate excretion rate", solution['R_EX_pyr_e']))

这个会打印出来

代码语言:javascript
复制
succinate excretion rate: 4.0
pyruvate excretion rate: 2.0

正如您所看到的,比率是2.0,如所需。

更详细的解释:

约束是

代码语言:javascript
复制
J_succ / J_pyr = 2.0

可以重写到

代码语言:javascript
复制
J_succ = 2.0 J_pyr

最后

代码语言:javascript
复制
J_pyr - 0.5 J_succ = 0

这正是我们传递给fluxes in addUserConstraint的方法

代码语言:javascript
复制
fluxes=[(1.0, 'R_EX_pyr_e' ),(-0.5, 'R_EX_succ_e')], operator='=', rhs=0.0)

您可以通过打印来检查用户定义的约束:

代码语言:javascript
复制
print(ecoli_ratio.user_constraints)
{'pyr_succ_ratio': {'operator': 'E', 'rhs': 0.0, 'fluxes': [(1.0, 'R_EX_pyr_e'), (-0.5, 'R_EX_succ_e')]}}

由于这是一个字典,所以只需执行以下操作就可以删除约束:

代码语言:javascript
复制
del ecoli_ratio.user_constraints['pyr_succ_ratio']
print(ecoli_ratio.user_constraints)
{}

但是,我强烈建议每次您对模型进行重大更改时都创建一个克隆体。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50378416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档