gpt4 book ai didi

python - 如何在 cbmpy 中从头开始创建基因组规模的代谢模型?

转载 作者:行者123 更新时间:2023-12-01 09:22:16 24 4
gpt4 key购买 nike

所以上一个问题显然没有明智地提出。所以这是重新表述的原始问题:

我计划从 nothong 构建一个新的 GSMM(即我需要一个空模型,0 react /代谢物/隔室/GPR/注释,但具有工具箱可接受的正确模型结构)。

我以前使用Matlab和COBRA工具箱,但最近改为Python和cbmpy工具箱。我知道如何通过 COBRA 在 Matlab 中创建模型结构,但不知道如何使用 cbmpy 在 python 中创建模型结构。我对cmbpy的功能实在不太熟悉,特来寻求帮助。

有多种方法可以满足我的需求:

  1. 最愚蠢的方法:读取现有模型并删除其所有内容。

    import cbmpy as cbm
    mod = cbm.CBRead.readSBML3FBC('example.xml')
    for ri in mod.getSpeciesIds():
    mod.deleteSpecies(ri, also_delete = 'reaction')

同样,以“mod.delete...”开头的不同函数将清除所有内容。最终你将得到一个干净的空模型。

  • 根据Cleb的建议,我查看了源代码并找到了我需要的功能

    import cbmpy as cbm
    mod = cbm.CBModel.Model('Name')
    mod.createSpecies('M_a_c',boundary=False,value=float('nan'),name='AA',compartment='c',charge=None,chemFormula='C2H2O2')
    mod.createSpecies('M_b_c',boundary=False,value=float('nan'),name='BB',compartment='c',charge=None,chemFormula='CHO')
    mod.createReaction('R_AB',reversible=False)
    mod.createReactionReagent('R_AB','M_a_c',-1.0)
    mod.createReactionReagent('R_AB','M_b_c',2)

  • 然后创建一个 ID 为“Name”的模型对象。这是一个非常简单的问题,如果您找到了正确的函数,其答案也非常简单。稍后您可以逐渐添加 react /代谢物/等并指定目标 react 。当然也可以直接使用cbm.CBModelTools.quickDefaultBuild,但您需要准备必要的参数来添加 react /物种/边界/目标。

    最佳答案

    虽然您确实可以按照您的描述构建模型,但使用它可能会更容易(也更干净)

    cbm.CBModelTools.quickDefaultBuild

    我将展示如何使用它作为一个简单的示例,这是非常不言自明的:

    import cbmpy as cbm


    def define_new_model():

    model_name = 'my_great_model'

    reactions = {
    'R01': {'id': 'R01', 'reversible': True, 'reagents': [(-1., 'A'), (1., 'A_ext')], 'SUBSYSTEM': ''},
    'R02': {'id': 'R02', 'reversible': True, 'reagents': [(-1., 'B'), (1., 'B_ext')], 'SUBSYSTEM': '',
    'GENE_ASSOCIATION': '(gene_1 or gene_2)'},
    'R_EX_A': {'id': 'R_EX_A', 'reversible': True, 'reagents': [(1., 'A_b'), (-1., 'A_ext')], 'SUBSYSTEM': ''},
    'R_EX_B': {'id': 'R_EX_B', 'reversible': True, 'reagents': [(1., 'B_b'), (-1., 'B_ext')], 'SUBSYSTEM': ''},
    'R_biomass': {'id': 'R_biomass', 'reversible': False, 'reagents': [(-1., 'A'), (-1., 'B')], 'SUBSYSTEM': ''}
    }

    species = {
    'A': {'id': 'A', 'boundary': False, 'SUBSYSTEM': 'C1'},
    'B': {'id': 'B', 'boundary': False, 'SUBSYSTEM': 'C1'},
    'A_ext': {'id': 'A_ext', 'boundary': False, 'SUBSYSTEM': 'C0'},
    'B_ext': {'id': 'B_ext', 'boundary': False, 'SUBSYSTEM': 'C0'},
    'A_b': {'id': 'A_b', 'boundary': True, 'SUBSYSTEM': ''},
    'B_b': {'id': 'B_b', 'boundary': True, 'SUBSYSTEM': ''},
    }

    bounds = {'R_EX_A': {'lower': -1., 'upper': 0.},
    'R_EX_B': {'lower': -1., 'upper': 0.}}

    objective_function = {'objMaxJ1': {'id': 'biomass_obj1',
    'flux': 'R_biomass',
    'coefficient': 1,
    'sense': 'Maximize',
    'active': True}}

    return model_name, reactions, species, bounds, objective_function


    model_def = define_new_model()

    mod = cbm.CBModelTools.quickDefaultBuild(*model_def)

    现在您可以调用

    mod.getReactionIds()
    ['R01', 'R02', 'R_EX_A', 'R_EX_B', 'R_biomass']

    mod.getSpeciesIds()
    ['A', 'A_b', 'A_ext', 'B', 'B_b', 'B_ext']

    mod.getBoundarySpeciesIds()
    ['A_b', 'B_b']

    您还可以模拟模型

    cbm.doFBA(mod)
    analyzeModel objective value: 1.0

    当您查找为 react R02定义的基因时,您将看到一个空列表:

    mod.getGeneIds()
    []

    您首先必须调用

    mod.createGeneAssociationsFromAnnotations()

    打印内容

    INFO: used key(s) '['GENE_ASSOCIATION']'
    INFO: Added 2 new genes and 1 associations to model

    然后

    mod.getGeneIds()

    将给出期望的结果

    ['gene_1', 'gene_2']

    以及

    mod.getGPRforReaction('R02').getAssociationStr()

    返回

    '((gene_1 or gene_2))'

    我强烈建议使用这种方法,因为如果您想更改模型定义,以后更容易阅读和编辑。

    如果您想添加更多注释,可以查看 this question .

    关于python - 如何在 cbmpy 中从头开始创建基因组规模的代谢模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50720107/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com