我有一个模型,想给它增加一个全新的途径。一些代谢物已经存在于模型中,另一些必须被创造出来。我还必须增加GPRs的反应,使用尚未在模型中存在的基因。
我找到了函数addReaction,但在使用它时总是会出现错误:
import cbmpy
cmod = cbmpy.CBRead.readSBML3FBC('model.xml')
cmod.addReaction('R_foo')AssertionError:错误:需要一个反应对象,而不是某种类型的
<type 'str'>
有什么想法吗?我怎样才能传递一个反应物,添加代谢物和探地雷达?
发布于 2018-06-05 19:06:25
你在找createReaction。以下内容将起作用(我使用来自this question的模型):
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添加试剂及其化学计量比因子,如下所示:
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轻松地将探地雷达添加到反应中。
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']如果您对反应in感兴趣,或者
mod.getGroup('my_new_pathway').getMembers()如果你对反应对象本身感兴趣。
https://stackoverflow.com/questions/50705753
复制相似问题