使用 GPR 添加新反应
Add new reactions with GPR
我有一个模型,想给它添加一个全新的路径。一些代谢物已经存在于模型中,其他的则必须创建。我还必须使用模型中尚未存在的基因将 GPR 添加到反应中。
我找到了函数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 吗?
您正在寻找 createReaction
。以下将起作用(我使用 中的模型):
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()
将return
[(-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:]
将return
['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')
不需要参数 name
到 chemFormula
。现在你可以打电话给
mod.createReactionReagent('R_bar', 'A', 1.0)
您可以查看 如何为物种或反应添加额外的注释。
然后您可能还想将属于此途径的所有反应添加到一个组中,这使得以后访问反应变得非常容易:
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()
如果您对反应对象本身感兴趣。
我有一个模型,想给它添加一个全新的路径。一些代谢物已经存在于模型中,其他的则必须创建。我还必须使用模型中尚未存在的基因将 GPR 添加到反应中。
我找到了函数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 吗?
您正在寻找 createReaction
。以下将起作用(我使用
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()
将return
[(-1.0, 'M_fum_c'), (5.0, 'M_nh4_c')]
然后您可以使用 createGeneProteinAssociation
:
mod.createGeneProteinAssociation('R_foo', 'gene_1 or gene_2')
再次检查它是否按预期工作:
mod.getGPRforReaction('R_foo').getAssociationStr()
产量:
'((gene_1 or gene_2))'
如果模型中不存在基因,将自动添加它们:
mod.getGeneIds()[-2:]
将return
['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')
不需要参数 name
到 chemFormula
。现在你可以打电话给
mod.createReactionReagent('R_bar', 'A', 1.0)
您可以查看
然后您可能还想将属于此途径的所有反应添加到一个组中,这使得以后访问反应变得非常容易:
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()
如果您对反应对象本身感兴趣。