添加GPR的新反应

时间:2018-06-05 17:24:50

标签: python cbmpy

我有一个模型,想要为它添加一个全新的途径。一些代谢物已经存在于模型中,其他代谢物必须被创建。我还必须使用模型中尚未存在的基因将GPR添加到反应中。

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

import cbmpy

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

cmod.addReaction('R_foo')
  

AssertionError:错误:需要一个Reaction对象,而不是   输入<type 'str'>

我是如何通过反应物体并添加代谢物和GPR的?

1 个答案:

答案 0 :(得分:0)

您正在寻找createReaction。以下内容适用(我使用this question中的模型):

import cbmpy as cbm

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

mod.createReaction('R_foo')

这将打印

  

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

因此,默认情况下,会添加可逆反应(请参阅下文如何添加不可逆转的反应),它还会告诉您如何添加试剂。

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

mod.createReactionReagent('R_foo', 'M_fum_c', -1.)
mod.createReactionReagent('R_foo', 'M_nh4_c', 5.)

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

mod.getReaction('R_foo').getStoichiometry()

将返回

[(-1.0, 'M_fum_c'), (5.0, 'M_nh4_c')]

然后,您可以使用createGeneProteinAssociation

轻松地将GPR添加到反应中
mod.createGeneProteinAssociation('R_foo', 'gene_1 or gene_2')

再次检查它是否按预期工作:

mod.getGPRforReaction('R_foo').getAssociationStr()

的产率:

'((gene_1 or gene_2))'

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

mod.getGeneIds()[-2:]

将返回

['gene_1', 'gene_2']

如果您想添加一个完整的途径,我们现在也做同样的事情,对于尚未成为该模型一部分的试剂进行第二次反应:

# add an irreversible reaction
mod.createReaction('R_bar', reversible=False)
mod.createReactionReagent('R_bar', 'M_succ_c', -1.5)

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

mod.createReactionReagent('R_bar', 'A', 1.0)

将失败

  

AssertionError:代谢物A不存在

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

mod.createSpecies('A', name='species A', compartment='c', charge=-2, chemFormula='C1H2O3')

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

mod.createReactionReagent('R_bar', 'A', 1.0)

您可以查看this question如何为物种或反应添加其他注释。

然后,您可能还希望将属于此途径的所有反应添加到一个组中,以便以后轻松访问这些反应:

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)

现在您可以使用

访问该组的成员
mod.getGroup('my_new_pathway').getMemberIDs()
# returns ['R_foo', 'R_bar']

如果您对反应ID感兴趣或

mod.getGroup('my_new_pathway').getMembers()

如果您对反应物本身感兴趣。