{ "cells": [ { "cell_type": "markdown", "id": "02a76399-7c2b-44e8-8f49-beb39db14815", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "# Evaluating robustness\n", "With parameter sets generated from multi-omics data and enzyme kinetic databases, RobustNet constructs an ensemble of stochastic kinetic models, where each sampled parameter set defines one realization of the metabolic system. These ensemble models represent uncertainty in metabolic parameters and are used to simulate metabolic responses to engineering interventions, typically enzyme expression perturbations, and to evaluate metabolic robustness, i.e., whether and how likely the metabolic system can maintain a physiologically meaningful steady state following perturbation. Simulations are performed using a [continuation-like method](https://pubmed.ncbi.nlm.nih.gov/24972370/) that directly solves steady-state sensitivity equations along the perturbation trajectory, thereby avoiding repeated and computationally expensive time-domain integrations from scratch after each perturbation step. " ] }, { "cell_type": "markdown", "id": "86dec6ca-dd7e-40c8-b7a5-d994fe6b6cc0", "metadata": {}, "source": [ "## Simulating enzyme perturbations\n", "Using the same *E. coli* model, assume that the parameter sampling procedure has already been completed and the returned samp_res stores sampled metabolite concentrations, enzyme concentrations, and kinetic parameters for ensemble model construction (see [Parameterizing the model](https://robustnet.readthedocs.io/en/latest/parameterize_model.html) for more details). The `evaluate_robustness` can then be used to simulate perturbations of specified enzyme(s). \n", "\n", "For example, a 10-fold overexpression of pyruvate dehydrogenase relative to its reference-state expression level can be simulated as follows:" ] }, { "cell_type": "code", "execution_count": 1, "id": "ac9a9264-77bd-4e97-b326-4a8a8c050f4c", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING: AC, ETOH, FOR, GLC, LAC, O2 appear in rate expressions but not in the stoichiometric matrix. This likely means they are excluded or considered as unbalanced metabolites. When performing robustness analysis, they are treated as kinetic parameters, and their concentrations will not be simulated.\n", "WARNING: Hcyt, Hper appear in the stoichiometric matrix but not in rate expression. They will be excluded from robustness analysis to maintain numerical stability.\n", "INFO: Perturb enzyme PDH (1, 10)\n" ] } ], "source": [ "metab_sets = samp_res.sampled_metabolite_concentrations\n", "enz_sets = samp_res.sampled_enzyme_concentrations\n", "kparam_sets = pd.concat(\n", " (samp_res.sampled_kinetic_parameters, metab_sets), \n", " axis=1\n", ")\n", "\n", "model.load_parameter_sets(\n", " mconc_set=metab_sets,\n", " econc_set=enz_sets,\n", " kparam_set=kparam_sets\n", ")\n", "rob_res = model.evaluate_robustness(\n", " perturb_enzymes=['PDH'],\n", " fold_change=(1, 10),\n", " n_steps=300,\n", " n_models=1000,\n", " n_jobs=100\n", ")" ] }, { "cell_type": "markdown", "id": "2157fd4a-0974-489f-aa86-c9412dc9d6c3", "metadata": {}, "source": [ "