Добавить новые реакции с GPR

Hetitus спросил: 12 мая 2018 в 03:44 в: python

У меня есть модель и хочу добавить к ней совершенно новый путь. Некоторые из метаболитов уже существуют в модели, другие должны быть созданы. Я также должен добавить GPR к реакциям с использованием генов, еще не присутствующих в модели.

Я нашел функцию addReaction, но всегда получаю сообщение об ошибке, когда я его использую:

import cbmpycmod = cbmpy.CBRead.readSBML3FBC('model.xml')cmod.addReaction('R_foo')

AssertionError: ERROR: требуется объект Reaction, а не что-то вроде <type 'str'>

Любые идеи о том, как я могу пройти объект реакции и добавляют метаболиты и GPR?

1 ответ

Есть решение
Cleb ответил: 12 мая 2018 в 05:26

Вы ищете createReaction. Следующее будет работать (я использую модель из этого вопроса ):

import cbmpy as cbmmod = cbm.CBRead.readSBML3FBC('e_coli_core.xml')mod.createReaction('R_foo')

Это напечатает

Взаимодействие "R_foo" установлено на: -INF < = R_foo < = INF Добавить реагенты withcmod.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')]

Затем вы можете легко добавить GPR к реакции с помощью 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: Metabolite A не существует

Это означает, что мы сначала должны создать его с помощью 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']

, если вас интересуют идентификаторы реакции или

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

, если вас интересуют сами объекты реакции .