Ejemplo n.º 1
0
def run_detfl(yaml_file, uptake_funs, medium_funs=dict(), model=None, ini_sol=None):    # pass in

    params = read_config(yaml_file)

    for key, value in params.items():
        print('%s: %s' % (key, value))

    if model is None:
        model = load_json_model(params['model'])


    standard_solver_config(model)
    model.solver.configuration.verbosity = params['options']['verbose']

    time_data = run_dynamic_etfl(model,
                                 timestep=params['simulation']['timestep'],
                                 tfinal=params['simulation']['tfinal'],
                                 uptake_fun=uptake_funs,
                                 medium_fun=medium_funs,
                                 uptake_enz=params['assumptions']['uptake_enz'],
                                 S0=params['assumptions']['S0'],
                                 X0=params['assumptions']['X0'],
                                 inplace=params['options']['inplace'],
                                 initial_solution = ini_sol,
                                 chebyshev_include = params['options']['chebyshev_include'],
                                 dynamic_constraints = params['options']['constraints']
                                 )

    # plot_dynamics(model, time_data)
    out_path = join('outputs',params['tag']+get_timestr())
    makedirs(out_path)
    time_data.to_csv(join(out_path,'solution.csv'))
    write_yaml(params,join(out_path,'config.yaml'))

    return time_data
from cobra.flux_analysis import single_gene_deletion

from tqdm import tqdm

import time

solver = 'optlang-gurobi'
#
# ecoli_fba = cobra.io.json.load_json_model('models/iJO1366_T0E0N0__20180606_121758.json')
# ecoli_fba.solver = solver
# ecoli_tfa = pytfa.io.json.load_json_model('models/iJO1366_T1E0N0__20180606_121751.json')
# ecoli_tfa.solver = solver

# vETFL
ecoli = load_json_model(
    'models/SlackModel iJO1366_vETFL_431_enz_128_bins__20190701_082518.json')
# vETFL_infer:
#ecoli = load_json_model('models/SlackModel
# iJO1366_vETFL_infer_2084_enz_128_bins__20190624_095428.json')
ecoli.solver = solver

standard_solver_config(ecoli)
ecoli.optimize()
max_growth = ecoli.solution.objective_value

print('Growth               : {}'.format(ecoli.solution.objective_value))
print(' - Ribosomes produced: {}'.format(ecoli.solution.raw.EZ_rib))
print(' - RNAP produced: {}'.format(ecoli.solution.raw.EZ_rnap))

# --
Ejemplo n.º 3
0
vec_dict = {'plasmid_pET-AR-ALS': get_bdo_plasmid, 'debug': get_debug_plasmid}


def write_conf(model, conf):
    filename = 'outputs/' + conf['tag'] + '/config.yaml'
    conf['objective'] = str(model.objective.expression)
    with open(filename, 'w') as fid:
        yaml.dump(config, fid)


if __name__ == '__main__':
    config = read_config(CONFIG)

    if config['model'] != 'debug':
        model = load_json_model(config['model'],
                                solver=config['options']['solver'])
    else:
        from etfl.tests.small_model import create_etfl_model
        model = create_etfl_model(0, 1, solver=config['options']['solver'])

    standard_solver_config(model)
    model.solver.configuration.verbosity = config['options']['verbose']

    copy_number = int(config['simulation']['copy_number'])
    vector_generator = vec_dict[config['simulation']['vector']]
    has_rnap = config['simulation']['add_rnap']

    my_plasmid = vector_generator(model, has_rnap)

    #####################
    # Model integration #
Ejemplo n.º 4
0
    medium_funs = {
        'EX_glc__D_e': glc_fun,
        'EX_lcts_e': lac_fun,
        'EX_o2_e': o2_diff,
        'EX_ac_e': ac_fun,
    }

    uptake_funs = get_uptake_funs()

    if not has_lcts:
        medium_funs.pop('EX_lcts_e')
        uptake_funs.pop('EX_lcts_e')

    if config['model'] != 'debug':
        model = load_json_model(config['model'])
    else:
        from etfl.tests.small_model import create_etfl_model
        model = create_etfl_model(0, 0)

    standard_solver_config(model)
    model.solver.configuration.verbosity = 0

    ini_sol = prepare_model(model,
                            v0=config['assumptions']['v0'],
                            S0=config['assumptions']['S0'],
                            uptake_fun=uptake_funs)

    time_data = run_detfl(model=model,
                          yaml_file=CONFIG,
                          ini_sol=ini_sol,
Ejemplo n.º 5
0
import pandas as pd
#
# model = create_etfl_model(  0,0,
#                             n_mu_bins = 128,
#                             )
# # model.reactions.ATPM.lower_bound = 4
# model.reactions.EX_glc__D_e.lower_bound = -1
# model.optimize()
# model.objective = model.growth_reaction.forward_variable + \
#                   model.reactions.EX_glc__D_e.reverse_variable


from etfl.io.json import load_json_model

model = load_json_model('models/iJO1366_T0E1N1_431_enz_128_bins__20180926_135704.json')
# model = load_json_model('models/RelaxedModel iJO1366_T1E1N1_431_enz_128_bins__20180926_124941.json')

def get_enzymes_of_subsystem(model, subsystem):
    reactions = [x for x in model.reactions if subsystem.lower() in x.subsystem.lower()]

    enzymes = [item for rxn in reactions if hasattr(rxn,'enzymes')
               for item in rxn.enzymes
               ]

    return enzymes

def get_mrna_total(time_data, mrnas):
    return time_data.loc[[x.variable.name * x.scaling_factor
                          for x in mrnas]].sum()
Ejemplo n.º 6
0
from math import exp
import pandas as pd
#
# model = create_etfl_model(  0,0,
#                             n_mu_bins = 128,
#                             )
# # model.reactions.ATPM.lower_bound = 4
# model.reactions.EX_glc__D_e.lower_bound = -1
# model.optimize()
# model.objective = model.growth_reaction.forward_variable + \
#                   model.reactions.EX_glc__D_e.reverse_variable

from etfl.io.json import load_json_model

# model = load_json_model('models/SlackModel iJO1366_vETFL_2084_enz_128_bins__20190122_170118.json')
model = load_json_model(
    'models/iJO1366_vEFL_431_enz_128_bins__20190121_090316.json')
# model = load_json_model('models/SlackModel iJO1366_vETFL_431_enz_128_bins__20190122_145700.json')
# model = load_json_model('models/iJO1366_T0E1N1_431_enz_128_bins__20180926_135704.json')
# model = load_json_model('models/RelaxedModel iJO1366_T1E1N1_431_enz_128_bins__20180926_124941.json')

model_tag = 'vEFL_mixed_lcts2_with_degradation'

# for rxn in model.translation_reactions:
#     rxn.subsystem = 'Translation'
# for rxn in model.transcription_reactions:
#     rxn.subsystem = 'Transcription'

exchanges = ['EX_glc__D_e', 'EX_ac_e', 'EX_o2_e', 'EX_lcts_e']

concentrations = ['X'] + ['S_' + x for x in exchanges]
Ejemplo n.º 7
0
from tqdm import tqdm

import time

solver = 'optlang-gurobi'
#
# ecoli_fba = cobra.io.json.load_json_model('models/iJO1366_T0E0N0__20180606_121758.json')
# ecoli_fba.solver = solver
# ecoli_tfa = pytfa.io.json.load_json_model('models/iJO1366_T1E0N0__20180606_121751.json')
# ecoli_tfa.solver = solver

# ecoli = load_json_model('models/RelaxedModel iJO1366_vETFL_431_enz_128_bins__20190108_181346.json')
# ecoli = load_json_model('models/SlackModel iJO1366_vETFL_431_enz_128_bins__20190122_155755.json')
# ecoli = load_json_model('models/SlackModel iJO1366_vETFL_1783_enz_128_bins__20190221_185154.json')
ecoli = load_json_model(
    'models/SlackModel iJO1366_vETFL_2084_enz_128_bins__20190122_170118.json')
ecoli.solver = solver

standard_solver_config(ecoli)
ecoli.optimize()
max_growth = ecoli.solution.objective_value

print('Growth               : {}'.format(ecoli.solution.objective_value))
print(' - Ribosomes produced: {}'.format(ecoli.solution.raw.EZ_rib))
print(' - RNAP produced: {}'.format(ecoli.solution.raw.EZ_rnap))

# --


def ko_gene(model, gene_id):
    try:
Ejemplo n.º 8
0
import numpy as np
import bokeh.plotting as bp
from bokeh.models import Whisker, ColumnDataSource
from etfl.io.json import load_json_model
import cobra

from bokeh.io import export_svgs

bp.curdoc().clear()

ec_cobra = cobra.io.load_json_model('iJO1366_with_xrefs.json')
# ec_cobra.reactions.ATPM.lower_bound = 0
growth_reaction_id = 'BIOMASS_Ec_iJO1366_WT_53p95M'

ecoli = load_json_model(
    'models/RelaxedModel iJO1366_T1E1N1_350_enz_256_bins__20180830_121200.json'
)

uptake_range = pd.Series(list(range(100)))


def simulate(uptake, model):
    model.reactions.EX_glc__D_e.lower_bound = -1 * uptake
    model.reactions.EX_glc__D_e.upper_bound = 0
    model.objective = growth_reaction_id
    model.objective.direction = 'max'
    try:
        sol = model.optimize()
    except Exception:
        return pd.Series([np.nan, np.nan])
    return pd.Series([sol.f, model.reactions.EX_glc__D_e.flux * -1])
Ejemplo n.º 9
0
from math import exp
import pandas as pd
#
# model = create_etfl_model(  0,0,
#                             n_mu_bins = 128,
#                             )
# # model.reactions.ATPM.lower_bound = 4
# model.reactions.EX_glc__D_e.lower_bound = -1
# model.optimize()
# model.objective = model.growth_reaction.forward_variable + \
#                   model.reactions.EX_glc__D_e.reverse_variable


from etfl.io.json import load_json_model

model = load_json_model('models/SlackModel iJO1366_vETFL_440_enz_128_bins__20190227_141232.json')
# model = load_json_model('models/SlackModel iJO1366_vETFL_2084_enz_128_bins__20190122_170118.json')
# model = load_json_model('models/iJO1366_vEFL_431_enz_128_bins__20190121_090316.json')
# model = load_json_model('models/SlackModel iJO1366_vETFL_431_enz_128_bins__20190122_145700.json')
# model = load_json_model('models/iJO1366_T0E1N1_431_enz_128_bins__20180926_135704.json')
# model = load_json_model('models/RelaxedModel iJO1366_T1E1N1_431_enz_128_bins__20180926_124941.json')

model_tag = 'dvETFL_deg_glc_lcts_alldelta_noexpc'

# for rxn in model.translation_reactions:
#     rxn.subsystem = 'Translation'
# for rxn in model.transcription_reactions:
#     rxn.subsystem = 'Transcription'


exchanges = [
Ejemplo n.º 10
0
import time

solver = 'optlang-gurobi'
USE_GPR = False
#
# ecoli_fba = cobra.io.json.load_json_model('models/iJO1366_T0E0N0__20180606_121758.json')
# ecoli_fba.solver = solver
# ecoli_tfa = pytfa.io.json.load_json_model('models/iJO1366_T1E0N0__20180606_121751.json')
# ecoli_tfa.solver = solver

# vETFL
# ecoli = load_json_model('models/SlackModel iJO1366_vETFL_v_0.12_431_enz_128_bins__20200605_083556.json')
# ecoli = load_json_model('models/SlackModel iJO1366_vETFL_mean_kcat_431_enz_128_bins__20200605_090017.json')
# vETFL_infer:
ecoli = load_json_model('models/SlackModel iJO1366_vETFL_infer_infer_2084_enz_128_bins__20200605_102233.json')
ecoli.solver = solver

standard_solver_config(ecoli)
ecoli.optimize()
max_growth = ecoli.solution.objective_value

print('Growth               : {}'.format(ecoli.solution.objective_value))
print(' - Ribosomes produced: {}'.format(ecoli.solution.raw.EZ_rib))
print(' - RNAP produced: {}'.format(ecoli.solution.raw.EZ_rnap))


# --


def safe_optim(model):
Ejemplo n.º 11
0
etfl_classif = y_true.copy()
etfl_classif[etfl_tp.index] = 'tp'
etfl_classif[etfl_tn.index] = 'tn'
etfl_classif[etfl_fp.index] = 'fp'
etfl_classif[etfl_fn.index] = 'fn'

ijo_classif = y_true.copy()
ijo_classif[ijo_tp['genes']] = 'tp'
ijo_classif[ijo_tn['genes']] = 'tn'
ijo_classif[ijo_fp['genes']] = 'fp'
ijo_classif[ijo_fn['genes']] = 'fn'

from etfl.io.json import load_json_model
from etfl.core.reactions import EnzymaticReaction
m = load_json_model('models/SlackModel '
                            'iJO1366_vETFL_431_enz_128_bins__20190701_082518.json',
                    solver='cplex')

def enzrxn_to_gpr(rxn):
    return ' OR '.join([' AND '.join(['{}*{}'.format(v,k)
                                    for v,k in isozyme.composition.items()])
                                for isozyme in rxn.enzymes])
def enzrxn_to_iso(rxn):
    return ' OR '.join([isozyme.id for isozyme in rxn.enzymes])

list_of_offenders = list()
for gene_id in etfl_classif.index:
    if etfl_classif[gene_id] != ijo_classif[gene_id]:
        rxns = [x for x in m.reactions if any(gene_id == g.id for g in x.genes)]
        for rxn in rxns:
            ijo_GPR = rxn.gene_reaction_rule
Ejemplo n.º 12
0
from etfl.io.json import load_json_model

from etfl.optim.variables import mRNAVariable, EnzymeVariable
from etfl.optim.utils import fix_integers

from pytfa.analysis import  variability_analysis,           \
                            apply_reaction_variability,     \
                            apply_generic_variability,      \
                            apply_directionality

from etfl.analysis.utils import enzymes_to_peptides_conc

import pandas as pd


ecoli = load_json_model('models/RelaxedModel iJO1366_T1E1N1_431_enz_128_bins__20180926_124941.json')
ecoli.optimize()

def print_sol(model):
    print('Objective            : {}'.format(model.solution.f))
    print(' - Glucose uptake    : {}'.format(model.solution.x_dict.EX_glc__D_e))
    print(' - Growth            : {}'.format(model.solution.x_dict[model.growth_reaction.id]))
    print(' - Ribosomes produced: {}'.format(model.solution.raw.EZ_rib))
    print(' - RNAP produced: {}'.format(model.solution.raw.EZ_rnap))
    try:
        print(' - DNA produced: {}'.format(model.solution.raw.DN_DNA))
    except AttributeError:
        pass

# ID	    109686
# Property	Glucose uptake rate of strain C-3000 in minimal M9 media
Ejemplo n.º 13
0
from etfl.io.json import load_json_model

from etfl.optim.variables import mRNAVariable, EnzymeVariable
from etfl.optim.utils import fix_integers

from pytfa.analysis import  variability_analysis,           \
                            apply_reaction_variability,     \
                            apply_generic_variability,      \
                            apply_directionality

from etfl.analysis.utils import enzymes_to_peptides_conc

import pandas as pd

ecoli = load_json_model(
    'models/SlackModel iJO1366_vETFL_431_enz_128_bins__20190122_145700.json')
ecoli.optimize()


def print_sol(model):
    print('Objective            : {}'.format(model.solution.objective_value))
    print(' - Glucose uptake    : {}'.format(
        model.solution.raw.loc['EX_glc__D_e']))
    print(' - Growth            : {}'.format(
        model.solution.raw.loc[model.growth_reaction.id]))
    print(' - Ribosomes produced: {}'.format(model.solution.raw.loc['EZ_rib']))
    print(' - RNAP produced: {}'.format(model.solution.raw.loc['EZ_rnap']))
    try:
        print(' - DNA produced: {}'.format(model.solution.raw.DN_DNA))
    except AttributeError:
        pass
Ejemplo n.º 14
0
    model_files = {
        # 'EFL':'iJO1366_EFL_1783_enz_128_bins__20190221_165945.json',
        # 'ETFL':'SlackModel iJO1366_ETFL_1783_enz_128_bins__20190221_172509.json',
        # 'vEFL':'iJO1366_vEFL_1783_enz_128_bins__20190221_182321.json',
        # 'vETFL':'SlackModel iJO1366_vETFL_1783_enz_128_bins__20190221_185154.json',
        # 'vETFL65':'SlackModel iJO1366_vETFL_1783_enz_128_bins__20190221_194424.json',
        # 'vETFL_infer':'SlackModel iJO1366_vETFL_infer_2088_enz_128_bins__20190221_204202.json',
        # 'vETFL65_infer': 'SlackModel iJO1366_vETFL_infer_2088_enz_128_bins__20190221_220847.json',
        #
        'EFL':'iJO1366_EFL_431_enz_128_bins__20190121_080047.json',
        'ETFL':'SlackModel iJO1366_ETFL_431_enz_128_bins__20190121_110027.json',
        'vEFL':'iJO1366_vEFL_431_enz_128_bins__20190121_090316.json',
        'vETFL':'SlackModel iJO1366_vETFL_431_enz_128_bins__20190122_145700.json',
        'vETFL65':'SlackModel iJO1366_vETFL_431_enz_128_bins__20190122_155755.json',
        'vETFL_infer':'SlackModel iJO1366_vETFL_2084_enz_128_bins__20190122_170118.json',
        'vETFL65_infer':'SlackModel iJO1366_vETFL_2084_enz_128_bins__20190124_082824.json',
    }

    models = {k:load_json_model('models/'+v,solver=solver) for k,v in model_files.items()}
    data = {}

    for name,model in models.items():
        growth_uptake_config(model)
        model.warm_start = None
        model.logger.info('Simulating ...')
        start = time()
        data[name] = uptake_range.apply(simulate, args=[model,variables])
        stop = time()
        print('Elapsed time: {}'.format(stop - start))
        data[name].to_csv('outputs/benchmark_{}.csv'.format(name))
Ejemplo n.º 15
0
from collections import OrderedDict

from bokeh.palettes import Category10
from bokeh.io import export_svgs
from bokeh.layouts import row

from os.path import join as pjoin

bp.curdoc().clear()

data_dir = '../organism_data/info_ecoli'

from etfl.io.json import load_json_model
# scaling_model = load_json_model('models/RelaxedModel iJO1366_T1E1N1_431_enz_128_bins__20180926_124941.json')
scaling_model = load_json_model(
    'models/iJO1366_EFL_431_enz_128_bins__20190121_080047.json')


def make_polygon(x, ymin, ymax):
    lx = x.tolist()
    lymin = ymin.tolist()
    lymax = ymax.tolist()

    return lx + lx[::-1], lymin + lymax[::-1]


def make_bars(x, ymin, ymax, width=None):
    data = pd.DataFrame([x, ymin, ymax]).T
    data.columns = ['x', 'bottom', 'top']
    data.dropna(how='any', inplace=True)
Ejemplo n.º 16
0
        'iJO1366_EFL_431_enz_128_bins__20190620_080807.json',
        'ETFL':
        'SlackModel iJO1366_ETFL_431_enz_128_bins__20190701_122635.json',
        'vEFL':
        'iJO1366_vEFL_431_enz_128_bins__20190620_084052.json',
        'vETFL':
        'SlackModel iJO1366_vETFL_431_enz_128_bins__20190701_082518.json',
        'vETFLmean':
        'SlackModel iJO1366_vETFL_mean_kcat_431_enz_128_bins__20190701_070448.json',
        'vETFL_infer':
        'SlackModel iJO1366_vETFL_infer_2084_enz_128_bins__20190624_095428.json',
        'vETFLmean_infer':
        'SlackModel iJO1366_vETFL_infer_mean_kcat_infer_2084_enz_128_bins__20190701_070427.json',
    }

    models = {
        k: load_json_model('models/' + v, solver=solver)
        for k, v in model_files.items()
    }
    data = {}

    for name, model in models.items():
        growth_uptake_config(model)
        model.warm_start = None
        model.logger.info('Simulating ...')
        start = time()
        data[name] = uptake_range.apply(simulate, args=[model, variables])
        stop = time()
        print('Elapsed time: {}'.format(stop - start))
        data[name].to_csv('outputs/benchmark_{}.csv'.format(name))
Ejemplo n.º 17
0
def test_read():
    m = load_json_model(savepath)
    m.optimize()