增加新的GPR反应

2024-05-16 03:55:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个模型,想给它添加一个全新的路径。一些代谢物已经存在于模型中,其他的必须被创建。我还必须使用模型中尚未出现的基因来添加GPRs。你知道吗

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

import cbmpy

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

cmod.addReaction('R_foo')

AssertionError: ERROR: requires a Reaction object, not something of type <type 'str'>

你知道我如何传递一个反应物,添加代谢物和GPR吗?你知道吗


Tags: 函数模型import路径modeltype错误基因
1条回答
网友
1楼 · 发布于 2024-05-16 03:55:50

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

import cbmpy as cbm

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

mod.createReaction('R_foo')

这将打印

Reaction "R_foo" bounds set to: -INF <= R_foo <= INF Add reagents with cmod.createReactionReagent(R_foo, metabolite, coefficient)

所以,默认情况下,一个添加可逆反应(见下文如何添加不可逆反应),它还告诉你如何添加试剂。你知道吗

首先假设您添加了一个模型中已经存在所有试剂的反应。然后可以使用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: Metabolite A does not exist

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

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

参数namechemFormula不是必需的。现在你可以打电话了

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']

如果你对反应感兴趣

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

如果你对反作用物体本身感兴趣。你知道吗

相关问题 更多 >