首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >增加与探地雷达的新反应

增加与探地雷达的新反应
EN

Stack Overflow用户
提问于 2018-06-05 17:24:49
回答 1查看 147关注 0票数 3

我有一个模型,想给它增加一个全新的途径。一些代谢物已经存在于模型中,另一些必须被创造出来。我还必须增加GPRs的反应,使用尚未在模型中存在的基因。

我找到了函数addReaction,但在使用它时总是会出现错误:

代码语言:javascript
复制
import cbmpy

cmod = cbmpy.CBRead.readSBML3FBC('model.xml')

cmod.addReaction('R_foo')

AssertionError:错误:需要一个反应对象,而不是某种类型的<type 'str'>

有什么想法吗?我怎样才能传递一个反应物,添加代谢物和探地雷达?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-05 19:06:25

你在找createReaction。以下内容将起作用(我使用来自this question的模型):

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

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

mod.createReaction('R_foo')

这个会打印出来

反应" R_foo“界限设置为:-INF <= R_foo <= INF添加cmod.createReactionReagent试剂(R_foo,代谢物,系数)

因此,在默认情况下,一个添加可逆反应(参见下面如何添加一个不可逆的反应),它还告诉您如何添加试剂。

首先,假设您添加了一个所有试剂都已存在于模型中的反应。然后,您可以使用createReactionReagent添加试剂及其化学计量比因子,如下所示:

代码语言:javascript
复制
mod.createReactionReagent('R_foo', 'M_fum_c', -1.)
mod.createReactionReagent('R_foo', 'M_nh4_c', 5.)

我们可以检查是否正确地添加了反应:

代码语言:javascript
复制
mod.getReaction('R_foo').getStoichiometry()

会回来

代码语言:javascript
复制
[(-1.0, 'M_fum_c'), (5.0, 'M_nh4_c')]

然后,您可以使用createGeneProteinAssociation轻松地将探地雷达添加到反应中。

代码语言:javascript
复制
mod.createGeneProteinAssociation('R_foo', 'gene_1 or gene_2')

同样,检查它是否正常工作:

代码语言:javascript
复制
mod.getGPRforReaction('R_foo').getAssociationStr()

产量:

代码语言:javascript
复制
'((gene_1 or gene_2))'

如果模型中没有这些基因,它们将自动添加:

代码语言:javascript
复制
mod.getGeneIds()[-2:]

会回来

代码语言:javascript
复制
['gene_1', 'gene_2']

当你想要加入一条完整的途径时,我们现在对另一种试剂的第二反应也是这样做的,这个试剂还不是模型的一部分:

代码语言:javascript
复制
# add an irreversible reaction
mod.createReaction('R_bar', reversible=False)
mod.createReactionReagent('R_bar', 'M_succ_c', -1.5)

让我们假设,您要添加的代谢物称为A,然后

代码语言:javascript
复制
mod.createReactionReagent('R_bar', 'A', 1.0)

会失败的

AssertionError:代谢物A不存在

这意味着我们首先必须使用createSpecies创建它。

代码语言:javascript
复制
mod.createSpecies('A', name='species A', compartment='c', charge=-2, chemFormula='C1H2O3')

不需要参数name直到chemFormula。现在你可以打电话了

代码语言:javascript
复制
mod.createReactionReagent('R_bar', 'A', 1.0)

您可以检查this question如何向物种或反应添加附加注释。

然后,您还可能希望将属于该路径的所有反应添加到一个组中,这使得以后访问这些反应非常容易:

代码语言:javascript
复制
pw_reactions = ['R_foo', 'R_bar']

# create an empty group
mod.createGroup('my_new_pathway')

# we can only add objects to a group so we get the reaction object for each reaction in the pathway
reaction_objects = [mod.getReaction(ri) for ri in pw_reactions]

# add all the reaction objects to the group
new_pw.addMember(reaction_objects)

现在您可以使用以下方法访问此组的成员

代码语言:javascript
复制
mod.getGroup('my_new_pathway').getMemberIDs()
# returns ['R_foo', 'R_bar']

如果您对反应in感兴趣,或者

代码语言:javascript
复制
mod.getGroup('my_new_pathway').getMembers()

如果你对反应对象本身感兴趣。

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

https://stackoverflow.com/questions/50705753

复制
相关文章

相似问题

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