{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 6. Tutorial: Create iML1515 RBA model\n", "\n", "In accordance with the workflows delineated in the preceding tutorials, with minimal effort, we generated enzyme constraint GECKO models from a well-annotated genome-scale metabolic model (GEM), and subsequently adjusted model parameters. The f2xba framework supported the model generation, optimization, and results analysis. The extension of a genome-scale model, utilized for FBA analysis, to a GECKO model necessitated the division of enzyme-catalyzed reactions into forward and reverse directions and per isoenzyme. It also entailed the introduction of protein concentration variables, the addition of coupling constraints to link reaction fluxes to protein requirements, and the replacement of constraints on nutrient uptake fluxes with a total protein constraint. The fixed biomass reaction was retained in the GECKO model and served as a proxy for the specific growth rate. The majority of the model parameters were retrieved automatically from online resources.\n", "\n", "In this tutorial, we will generate a resource balance constraint (RBA) (Goelzer et al., 2011) model of iML1515, the latest genome-scale metabolic model of *E. coli*. The f2xba package creates RBA models based on the formalism used in RBApy (Bulović et al., 2019), with some improvements. While RBApy exports models in a proprietary format, RBA models created with f2xba are fully annotated and formatted in standardized SBML language, allowing processing by SBML-compliant tools. Workflows for RBA model creation, optimization, and results analysis are consistent with the workflows for enzyme constraint GECKO models introduced in the previous tutorials. \n", "\n", "We will reuse the configuration data of our final GECKO model, including the auto-fitted turnover numbers. RBA necessitates a substantial augmentation of the metabolic network, incorporating organism-specific knowledge. Key components of RBA models are designated as \"process machines\" for macromolecule processing, including DNA, RNA, and protein synthesis, protein folding, and targeting. Furthermore, RBA employs compartment-specific capacity constraints for total protein and RNA, superseding the total protein constraint in GECKO models. The fixed biomass reaction employed in FBA and GECKO modeling is substituted by enzyme requirements and concentration targets. Michaelis-Menten derived rate laws are used for nutrient uptake reactions, and media conditions must be defined as specific nutrient concentrations rather than placing constraints on uptake fluxes. \n", "\n", "The optimization problems used for FBA and GECKO are replaced by feasibility problems, using a bisection algorithm to test for the maximal growth rate. At each growth rate, variable bounds and matrix coefficients must be recalculated and updated. RBA models coded in SBML utilize SBML features that are not accessible by cobrapy, such as initial assignments. Although cobrapy will be employed for RBA model loading and optimization, support by f2xba features is necessary. For larger and more complex models, such as genome-scale RBA models, the optimization interface based on gurobipy can provide substantial performance improvements over cobrapy.\n", "\n", "\n", "## RBA implementation details\n", "\n", "A comparison of the RBA and GECKO models reveals notable distinctions in their implementation. In the RBA model, reactions are divided according to isoenzyme, and no splitting in forward and reverse directions is required. Reactions are coupled at the enzyme level, while in the GECKO model, they are coupled at the protein level. The RBA model contains enzyme concentration variables, while the GECKO model contains protein concentration variables. A one-to-one relationship exists between reactions and modeled enzymes, with enzyme identifiers being derived from reaction identifiers. Enzymes are composed of proteins, which need to be produced by process machines. Enzymes may also require cofactors, which need to be provided by the metabolic network. The expression of protein and RNA masses is carried out in units of average amino acids, while the capacity constraints present in different compartments are expressed in units of mmol amino acids per gram cell dry weight (mmolAA/gDW).\n", "\n", "Enzyme efficiency constraints for the forward $C\\_EF_i$ and reverse $C\\_ER_i$ directions couple reaction fluxes $R_i$ [mmol/gDWh] with enzyme concentrations $V\\_EC_i$ [µmol/gDW] using apparent catalytic constants $kcat\\_app_i$ [$h^{-1}$].\n", "\n", "\\begin{equation}\n", "C\\_EF_i: R_i - kcat\\_app_i \\cdot V\\_EC_i \\cdot 0.001 \\leq 0 \n", "C\\_ER_i: - R_i - kcat\\_app_i \\cdot V\\_EC_i \\cdot 0.001 \\leq 0\n", "\\end{equation}\n", "\n", "The apparent catalytic constants are determined from the turnover numbers $kcat_i$ [$s^{-1}$], the number of active sites $n\\_AS_i$, and the average enzyme saturation $avg\\_enz\\_sat$, which is used for all reactions. \n", "\n", "\\begin{equation}\n", "kcat\\_app_i = kcat_i \\cdot n\\_AS_i \\cdot avg\\_enz\\_sat \\cdot 3600$\n", "\\end{equation}\n", "\n", "Macromolecular production reactions are incorporated to synthesize explicitly modeled proteins (e.g., R_PROD_b2907), balance dummy proteins (e.g., R_PROD_dummy_protein_im), and total DNA (R_PROD_dna), total mRNA (R_PROD_mrna), individual tRNAs (e.g., R_PROD_trnaala) and individual rRNAs (e.g., R_PROD_rRNA_16S), using metabolites produced in the metabolic reaction network. Process machine capacity constraints (e.g., C_PMC_pm_translation) couple these macromolecular production reactions to process machine concentrations (e.g., V_PMC_pm_translation) in the same way as metabolic reactions are coupled to enzyme requirements. Macromolecular degradation reactions are added in a similar way (e.g., R_DEGR_mrna).\n", "\n", "It is important to note that macromolecules undergo dilution due to cellular growth. Mass balance constraints for macromolecules (e.g., MM_b2907) ensure that macromolecule production, degradation, and dilution are balanced. The dilution of modeled proteins and ribosomal RNAs is governed by enzyme concentration (e.g., V_EC_FBA_iso1) and process machine concentration (e.g., V_PCM_pm_translation) variables. The dilution of other macromolecules due to growth is managed by specific target concentration variables (e.g., V_TMMC_mrna). The variable 'V_TSMC' [µmol/gDW] controls the growth dilution of selected metabolites, mainly derived from the biomass pseudo reaction of the foundational GEM. Compartmental capacity limits are controlled by the variable 'V_TCD' [mmolAA/gDW]. Density constraints (e.g., C_D_im) serve to regulate the concentrations of enzymes, processes, machines, and macromolecular targets, ensuring that these concentrations do not exceed the capacities of the respective compartments.\n", "\n", "Peter Schubert, Heinrich-Heine University Duesseldorf, Institute for Computational Cell Biology (Prof. Dr. M. Lercher), January, 2025\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "## Step 1: Initial setup\n", "\n", "In order to perform RBA modeling, it is necessary to import the following classes: `RbaModel`, `RbaOptimization`, and `RbaResults`." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "6 minimal media conditions created for simulation\n", "2347 records of proteomics loaded from data/Ecoli_Schmidt_proteomics.xlsx\n", "2232 records with confidence level above 43.0\n" ] } ], "source": [ "import os\n", "import re\n", "import time\n", "import pandas as pd\n", "import cobra\n", "\n", "from f2xba import XbaModel, RbaModel\n", "from f2xba import RbaOptimization, RbaResults\n", "from f2xba.utils.mapping_utils import load_parameter_file, write_parameter_file\n", "\n", "fba_model = 'iML1515'\n", "gecko_model = 'iML1515_predicted_fit_GECKO'\n", "target_model = 'iML1515_RBA'\n", "reference_cond = 'Glucose'\n", "\n", "# Create media conditions\n", "media_grs = {'Acetate': ['ac', 0.29], 'Glycerol': ['glyc', 0.47], 'Fructose': ['fru', 0.54], \n", " 'L-Malate': ['mal__L', 0.55], 'Glucose': ['glc__D', 0.66], 'Glucose 6-Phosphate': ['g6p', 0.78]}\n", "base_medium = ['ca2', 'cbl1', 'cl', 'co2', 'cobalt2', 'cu2', 'fe2', 'fe3', 'h2o', 'h', 'k', 'mg2', \n", " 'mn2', 'mobd', 'na1', 'nh4', 'ni2', 'o2', 'pi', 'sel', 'slnt', 'so4', 'tungs', 'zn2']\n", "conditions = {}\n", "exp_grs = {}\n", "for cond, (carbon_sid, exp_gr )in media_grs.items():\n", " conditions[cond] = {f'EX_{sidx}_e': 1000.0 for sidx in base_medium}\n", " conditions[cond][f'EX_{carbon_sid}_e'] = 1000.0\n", " exp_grs[cond] = exp_gr\n", "print(f'{len(conditions)} minimal media conditions created for simulation')\n", "\n", "# Load proteomics\n", "fname = os.path.join('data', 'Ecoli_Schmidt_proteomics.xlsx')\n", "with pd.ExcelFile(fname) as xlsx:\n", " df_mpmf = pd.read_excel(xlsx, sheet_name='proteomics', index_col=0)\n", " print(f'{len(df_mpmf)} records of proteomics loaded from {fname}')\n", "min_confidence_level = 43.0\n", "df_mpmf = df_mpmf[df_mpmf['confidence'] > min_confidence_level]\n", "print(f'{len(df_mpmf)} records with confidence level above {min_confidence_level}')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Step 2: Create XBA and RBA configuration files\n", "\n", "RBA models are considerably more intricate than GECKO models and necessitate a significant investment in model parametrization. Fortunately, numerous parameters have already been delineated in the GECKO model, and this configuration data can be reused. The data that will be added is relatively structured and can be easily reused with minimal modifications. The RBA model that will be developed in this tutorial is relatively sophisticated. In practice, it might be more prudent to begin with a very simple RBA model, such as one that has only a single process machinery for protein synthesis. This preliminary model can then be extended iteratively to gain more control over parametrization and to identify any modeling problems. As with the GECKO model, the generation of the RBA model is based on configuration files. In this case, we required XBA and RBA configuration files." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.1 create XBA configuration file\n", "\n", "The XBA configuration file, which was utilized to generate the baseline GECKO model, is expanded. Within the `general` table, the GenBank accession identifier for the ‘*Escherichia coli* str. K-12 substr. MG1655’ chromosome is assigned to the parameter `chromosome2accids`. Additionally, the inclusion of cofactors in enzyme compositions is requested by setting the `cofactor_flag` to ‘True’. The cofactor requirements are extracted from UniProt and mapped to metabolites in the model. \n", "\n", "The `modify_addrs` table will not be reused; rather, a new table is created in which three transport reactions are blocked by setting the upper flux bound to zero. It is not necessary to explicitly block the reaction ‘GLCDpp’ because RBA will not use this reaction unless the cofactor PQQ is supplied, which is also added to the model species.\n", "\n", "The protein translation machinery that is to be introduced requires charged tRNAs for translation initiation and elongation; with the exception of glutamyl-tRNA, iML1515 natively cannot synthesize charged tRNAs. Consequently, the tRNA charging reactions must be incorporated into the reaction network (`add_reactions` table), along with model species representing charged and uncharged tRNAs (`add_species`) and the gene products necessary to catalyze tRNA charging reactions (`add_gps`). The iJO1366 model (Orth et al., 2011) is the precursor to the iML1515 model. The tRNA charging reactions were defined in the iJO1366 model and were subsequently eliminated during the construction of the iML1515 model. The relevant reaction data acquired from the iJO1366 model has been compiled in the `data` structure. This data is utilized in the automatic generation of most configuration data.\n", "\n", "#### Configuration data for other organisms: \n", "\n", "The RBA model creation process necessitates the utilization of information from the genome to ascertain the composition of various types of RNA and DNA. Additionally, genome information can be employed to determine protein composition in instances where UniProt protein data records for the organism are not available. It is imperative to assign either NCBI GenBank or RefSeq accession numbers to the parameter `chromosome2accids`. It should be noted that the corresponding genome records contain the gene locus identifiers employed in the model. In instances where the genome is distributed across multiple chromosomes and/or plastids, it is essential that all pertinent segments are provided. For instance, the values designated for the parameter `chromosome2accids` in the configuration file for *Saccharomyces cerevisiae* may begin with: 'Chr_I=BK006935.2, Chr_II=BK006936.2, Chr_III=BK006937.2, …'." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# add tRNA charging reactions, (R_GLUTRS, Glutamyl-tRNA synthetase, already exists in iML1515)\n", "data = [\n", " ['R_ALATRS', 'Alanyl-tRNA synthetase', 'G_b2697', 'ala__L_c', 'trnaala_c', 'alatrna_c'],\n", " ['R_ARGTRS', 'Arginyl-tRNA synthetase', 'G_b1876', 'arg__L_c', 'trnaarg_c', 'argtrna_c'],\n", " ['R_ASNTRS', 'Asparaginyl-tRNA synthetase', 'G_b0930', 'asn__L_c', 'trnaasn_c', 'asntrna_c'],\n", " ['R_ASPTRS', 'Aspartyl-tRNA synthetase', 'G_b1866', 'asp__L_c', 'trnaasp_c', 'asptrna_c'],\n", " ['R_CYSTRS', 'Cysteinyl-tRNA synthetase', 'G_b0526', 'cys__L_c', 'trnacys_c', 'cystrna_c'],\n", " ['R_GLNTRS', 'Glutaminyl-tRNA synthetase', 'G_b0680', 'gln__L_c', 'trnagln_c', 'glntrna_c'],\n", " ['R_GLYTRS', 'Glycyl-tRNA synthetase', '(G_b3559 and G_b3560)', 'gly_c', 'trnagly_c', 'glytrna_c'],\n", " ['R_HISTRS', 'Histidyl-tRNA synthetase', 'G_b2514', 'his__L_c', 'trnahis_c', 'histrna_c'],\n", " ['R_ILETRS', 'Isoleucyl-tRNA synthetase', 'G_b0026', 'ile__L_c', 'trnaile_c', 'iletrna_c'],\n", " ['R_LEUTRS', 'Leucyl-tRNA synthetase', 'G_b0642', 'leu__L_c', 'trnaleu_c', 'leutrna_c'],\n", " ['R_LYSTRS', 'Lysyl-tRNA synthetase', '(G_b4129 or G_b2890)', 'lys__L_c', 'trnalys_c', 'lystrna_c'],\n", " ['R_METTRS', 'Methionyl-tRNA synthetase', 'G_b2114', 'met__L_c', 'trnamet_c', 'mettrna_c'],\n", " ['R_PHETRS', 'Phenylalanyl-tRNA synthetase', '(G_b1713 and G_b1714)', 'phe__L_c', 'trnaphe_c', 'phetrna_c'],\n", " ['R_PROTRS', 'Prolyl-tRNA synthetase', 'G_b0194', 'pro__L_c', 'trnapro_c', 'protrna_c'],\n", " ['R_SERTRS', 'Seryl-tRNA synthetase', 'G_b0893', 'ser__L_c', 'trnaser_c', 'sertrna_c'],\n", " ['R_SERTRS2', 'Seryl-tRNA synthetase (selenocystein)', 'G_b0893', 'ser__L_c', 'trnasecys_c', 'sertrna_sec_c'],\n", " ['R_THRTRS', 'Threonyl-tRNA synthetase', 'G_b1719', 'thr__L_c', 'trnathr_c', 'thrtrna_c'],\n", " ['R_TRPTRS', 'Tryptophanyl-tRNA synthetase', 'G_b3384', 'trp__L_c', 'trnatrp_c', 'trptrna_c'],\n", " ['R_TYRTRS', 'Tyrosyl-tRNA synthetase', 'G_b1637', 'tyr__L_c', 'trnatyr_c', 'tyrtrna_c'],\n", " ['R_VALTRS', 'Valyl-tRNA synthetase', 'G_b4258', 'val__L_c', 'trnaval_c', 'valtrna_c'],\n", "]\n", "\n", "# add tRNA charging reactions\n", "add_reactions_cols = ['id', 'name', 'fbcGeneProdAssoc', 'reactionString', 'fbcLb', 'fbcUb']\n", "add_reactions = [\n", " ['R_FMETTRS', 'Methionyl-tRNA formyltransferase', 'assoc=G_b3288', \n", " 'M_10fthf_c + M_mettrna_c => M_fmettrna_c + M_h_c + M_thf_c', 0.0, 1000.0],\n", " ['R_SELCYSS', 'Selenocysteine synthase', 'assoc=G_b3591',\n", " 'M_selnp_c + M_sertrna_sec_c => M_h_c + M_pi_c + M_sectrna_c', 0.0, 1000.0],\n", "]\n", "for record in data:\n", " reaction_string = f'M_{record[3]} + M_{record[4]} + M_atp_c => M_{record[5]} + M_amp_c + M_ppi_c'\n", " add_reactions.append([record[0], record[1], f'assoc={record[2]}', reaction_string, 0.0, 1000.0])" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# block selected transporters\n", "mod_attrs_data_cols=['id', 'component', 'attribute', 'value', 'notes']\n", "mod_attrs_data = [\n", " ['R_ALAt2pp', 'reaction', 'fbc_lower_bound', 'cobra_0_bound', \n", " 'block alanine import via H-symport, rather use R_ALAabcpp (ABC transporter)'], \n", " ['R_TREHpp', 'reaction', 'fbc_lower_bound', 'cobra_0_bound', \n", " 'TreA, b1197 (periplasmic trehalase) expressed during osmotic stress only'],\n", " ['R_MG2t3_2pp', 'reaction', 'fbc_upper_bound', 'cobra_0_bound', \n", " 'block, as this reaction has no enzyme attached'],\n", "]" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3 table(s) with parameters loaded from data/iML1515_predicted_fit_GECKO_xba_parameters.xlsx (Thu Feb 12 15:26:06 2026)\n", "6 table(s) with parameters written to data/iML1515_RBA_xba_parameters.xlsx\n" ] } ], "source": [ "# create XBA parameter file\n", "xba_params = load_parameter_file(os.path.join('data', f'{gecko_model}_xba_parameters.xlsx'))\n", "\n", "# add NCBI reference and activate cofactors\n", "data = [['chromosome2accids', 'chromosome=U00096.3'], \n", " ['cofactor_flag', True]]\n", "df = pd.DataFrame(data, columns=['parameter', 'value']).set_index('parameter')\n", "xba_params['general'] = pd.concat((xba_params['general'], df))\n", "\n", "# block selected transporters\n", "xba_params['modify_attributes'] = pd.DataFrame(mod_attrs_data, columns=mod_attrs_data_cols).set_index('id')\n", "\n", "# add tRNA charging reactions\n", "xba_params['add_reactions'] = pd.DataFrame(add_reactions, columns=add_reactions_cols).set_index('id')\n", "\n", "# add tRNA species and cofactor PQQ\n", "trna_sids = set()\n", "for rdata in add_reactions:\n", " for sid in re.findall(r'M_\\w*', rdata[3]):\n", " if 'trna' in sid:\n", " trna_sids.add(sid)\n", "data = [['M_pqq_p', 'pyrroloquinoline quinone(3−)', 'p', 'bqbiol:is, chebi/CHEBI:58442', -3, 'C14H3N2O8']]\n", "for sid in sorted(trna_sids):\n", " data.append([sid, re.match(r'^M_(.*)_c$', sid).group(1), 'c', None, None, None])\n", "cols = ['id', 'name', 'compartment', 'miriamAnnotation', 'fbcCharge', 'fbcChemicalFormula']\n", "xba_params['add_species'] = pd.DataFrame(data, columns=cols).set_index('id')\n", "\n", "# add gene products required for tRNA charging\n", "gp_ids = set()\n", "for rdata in add_reactions:\n", " for gpid in re.findall(r'G_b\\d{4}', rdata[2]):\n", " gp_ids.add(gpid)\n", "data = []\n", "for gp_id in sorted(gp_ids):\n", " data.append([gp_id, re.sub('G_', '', gp_id)]) \n", "xba_params['add_gps'] = pd.DataFrame(data, columns=['id', 'label']).set_index('id')\n", "\n", "write_parameter_file(os.path.join('data', f'{target_model}_xba_parameters.xlsx'), xba_params)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.2 create RBA configuration file\n", "\n", "The RBA configuration file is considerably more sophisticated than the ECM configuration file utilized for GECKO models, encompassing the configuration of multiple tables. The `generals` table is straightforward, containing only the parameter `avg_enz_sat`. We assign a value that makes the predicted growth rate close to the measured growth rate for our reference condition. Numerical values in RBA can be constant values, derived from functions of growth rate or species concentration, or aggregates (multiplication) of functions. The relevant data is configured in the table `functions`. Configuration data for process machines is spread across three different tables: `processes`, containing general processes data; `machineries`, defining the composition of process machines; and `processing_maps`, defining macromolecular components and processing steps. The table `trna2locus` contains configuration data for tRNAs, while `compartments` contains compartment-specific information. Concentration and flux targets are configured in the table `targets`. Detailed configuration data is created automatically where possible, based on parameter input and templates. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 2.2.1 configure process machines\n", "\n", "In practice, the configuration of process machines is executed incrementally, a method that is supported by the workflow presented below. The definition of relevant data is performed separately for each process machine, and the acquisition of most data is typically straightforward, often requiring only organism-specific knowledge. The data is first collected in the dictionaries, and subsequently, we generate the detailed configuration data and requisite tables automatically. The seven processes intended for inclusion in the RBA model are as follows: DNA replication, stable RNA transcription for rRNA and tRNA synthesis, mRNA transcription for mRNA synthesis, mRNA degradation, protein synthesis, protein folding, and protein.\n", "\n", "In the Python dictionary `proc_data`, we collate general process-related information for each process machine. This includes a process identifier (`process`), a descriptive name (`name`), and the type of process (`type`). The latter can be set to ‘production’ or ‘degradation’. The connected processing map identifier (`processing_map`), the kind of macromolecules being processed (`set`), which can be set to 'dna', 'rna' or 'protein', and a filter applied to the selected set of macromolecules (`input_filter`). The filter, if defined, can be a comma-separated list of regular expression patterns applied to the macromolecule identifiers or the value ‘signal_peptide’ to filter proteins containing a signal peptide as per the corresponding UniProt record. The capacity of the process machine is also defined in terms of individual reaction steps per hour, similar to the turnover number used for enzymatic reactions. The capacity can be defined as a constant value (`capacity_constant`), a function definition (`capacity_function`), or an aggregate of functions (`capacity_aggregate`), in which case the functions need to be defined and added to `func_data`. Function definitions compliant with RBApy are supported, including linear, exponential, Michalis Menten, and indicator, supporting x- and y-ranges. The values used are based on the RBA model `Escherichia-coli-K12-WT` (https://github.com/SysBioInra/Bacterial-RBA-models/tree/master/Escherichia-coli-K12-WT), determined from experimental data and/or have been fitted to improve protein prediction. An initial RBA model could be configured with constant values instead of growth dependent values.\n", "\n", "In the Python dictionary `mach_data`, the detailed composition of each process machine is recorded. This composition is subsequently utilized to generate the table `machineries`. The model of a process machine is that of a large enzymatic complex consisting of multiple proteins with a defined stoichiometry (`stoic`), based on literature or adjusted to proteomics data. This complex may also encompass accessory proteins, such as elongation factors and ribosomal RNA. \n", "During the process machine's creation, metabolites from the reaction network may be produced or consumed. The column labeled `set` serves to define the type of macromolecule in question, with options including ‘protein’, ‘rna’, or ‘None’ for metabolites. Macromolecules are assigned an identifier (`id`), and corresponding gene products are automatically added to the model based on the configured gene product identifier (`gpid`) and gene label (`label`). The mass of the macromolecule is allocated to the configured cellular compartment (`compartment`). A `notes` column is included in all tables to allow for the recording of additional information.\n", "\n", "Macromolecules are composed of elementary components, the attributes of which must be defined, as well as the manner in which these components are processed. Respective data is initially collected in `pm_data` and subsequently utilized to generate the table `processing_map`. Processes are linked to their corresponding processing map using the `processingMap` identifier. Attributes for elementary components are defined with `set` set to the type of macromolecule (‘dna’, ‘rna', or 'protein'). In this case, the component identifier is set in `component`, a descriptive name is set in `name`, and the weight is set in units of average amino acid weight in `weight`. The weight of amino acids is configured to 1, the weight of RNA nucleotides is converted to the average amino acid mass, and the weight of DNA nucleotides is set to zero, indicating that there is no weight impact. Cofactors utilized in the translation machinery are assigned a weight of zero as well. The processing of components consumes and produces metabolites as defined in `reaction_string`and loads the processing machine by the value specified in `machinery_cost`. Special values assigned to `component` initiate processing for a specific set of elementary components, such as ‘amino_acid’ or ‘cofactors’. The ‘constantProcessing’ value specifies an initial processing step during the production of a macromolecule." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# Dictionaries to collect process machine configuration data\n", "proc_data = {}\n", "mach_data = {}\n", "pm_data = {}\n", "func_data = {'general': [\n", " ['zero', 0.0, None],\n", " ['default_spontaneous', 5000.0 * 3600.0, None]]}\n", "\n", "proc_data_cols = ['process', 'name', 'type', \n", " 'capacity_constant', 'capacity_function', 'capacity_aggregate', \n", " 'processing_map', 'set', 'input_filter']\n", "mach_data_cols = ['process', 'id', 'set', 'label', 'stoic', 'compartment', 'gpid', 'notes']\n", "pm_data_cols = ['processingMap', 'set', 'component', 'name', 'weight', \n", " 'machinery_cost', 'reaction_string']\n", "func_data_cols = ['function_name', 'constant', 'function']" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# DNA replication machine (DNA polymerase)\n", "proc_id = 'replication'\n", "proc_data[proc_id] = [\n", " 'replication', 'production', \n", " None, None, 'dna_polymerase_III_prefactor, dna_polymerase_III_exponential', \n", " proc_id, 'dna', None]\n", "\n", "func_data[proc_id] = [\n", " ['dna_polymerase_III_prefactor', 146.9 * 3600, None],\n", " ['dna_polymerase_III_exponential', None, 'RATE=0.4254']]\n", "\n", "data = [['b0184', -3.0, 'dnaE: DNA polymerase III subunit alpha'],\n", " ['b0215', -3.0, 'dnaQ: DNA polymerase III subunit epsilon'],\n", " ['b0470', -2.0, 'dnaX: DNA polymerase III subunit tau'],\n", " ['b0640', -1.0, 'holA: DNA polymerase III subunit delta'],\n", " ['b1099', -1.0, 'holB: DNA polymerase III subunit deltaprime'],\n", " ['b1842', -3.0, 'holE: DNA polymerase III subunit theta'],\n", " ['b3701', -4.0, 'dNone: Beta sliding clamp'],\n", " ['b4259', -4.0, 'holC: DNA polymerase III subunit chi'],\n", " ['b4372', -4.0, 'holD: DNA polymerase III subunit psi']]\n", "mach_data[proc_id] = []\n", "for record in data:\n", " mach_data[proc_id].append([record[0], 'protein', record[0], record[1], 'c', f'G_{record[0]}', record[2]])\n", "\n", "pm_data[proc_id] = [\n", " ['dna', 'A', 'Adenine', 0.0, 1.0, 'M_datp_c => M_ppi_c'],\n", " ['dna', 'C', 'Cytosine', 0.0, 1.0, 'M_dctp_c => M_ppi_c'],\n", " ['dna', 'G', 'Guanine', 0.0, 1.0, 'M_dgtp_c => M_ppi_c'],\n", " ['dna', 'T', 'Thymine', 0.0, 1.0, 'M_dttp_c => M_ppi_c']]" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# stable RNA transcription machine (RNA polymerase)\n", "proc_id = 'srna_transcription'\n", "proc_data[proc_id] = [\n", " 'stable RNA transcription', 'production', \n", " 20.0 * 3600.0, None, None, \n", " 'transcription', 'rna', 'trna, rRNA']\n", "\n", "data = [['b3295', -2.0, 'rpoA: RNA polymerase subunit α'],\n", " ['b3987', -1.0, 'rpoB: RNA polymerase subunit β'],\n", " ['b3988', -1.0, 'rpoC: RNA polymerase subunit βprime'],\n", " ['b3067', -0.2, 'rpoD: RNA polymerase sigma factor RpoD (sigma 70)'],\n", " ['b3169', -1.7, 'nusA: Transcription elongation protein nusA']]\n", "mach_data[proc_id] = []\n", "for record in data:\n", " mach_data[proc_id].append([record[0], 'protein', record[0], record[1], 'c', f'G_{record[0]}', record[2]])\n", "\n", "pm_data['transcription'] = [\n", " ['rna', 'A', 'Adenine', 2.9036, 1.0, 'M_atp_c => M_ppi_c'],\n", " ['rna', 'C', 'Cytosine', 2.7017, 1.0, 'M_ctp_c => M_ppi_c'],\n", " ['rna', 'G', 'Guanine', 3.0382, 1.0, 'M_gtp_c => M_ppi_c'],\n", " ['rna', 'U', 'Uracil', 2.7102, 1.0, 'M_utp_c => M_ppi_c']]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# mRNA transcription machine (RNA polymerase)\n", "proc_id = 'mrna_transcription'\n", "proc_data[proc_id] = [\n", " 'mRNA transcription', 'production', \n", " None, None, 'rnap_mrna_efficiency_constant, rnap_mrna_modulation_1, rnap_mrna_modulation_2', \n", " 'transcription', 'rna', 'mrna']\n", "\n", "func_data[proc_id] = [\n", " ['rnap_mrna_efficiency_constant', 9.0 * 3600.0, None],\n", " ['rnap_mrna_modulation_1', None, 'LINEAR_CONSTANT=4.930, LINEAR_COEF=-1.0, X_MIN=0.2, X_MAX=1.9'],\n", " ['rnap_mrna_modulation_2', None, 'LINEAR_CONSTANT=0.1201, LINEAR_COEF=0.1304, X_MIN=0.2, X_MAX=1.9']]\n", "\n", "data = [['b3295', -2.0, 'rpoA: RNA polymerase subunit α'],\n", " ['b3987', -1.0, 'rpoB: RNA polymerase subunit β'],\n", " ['b3988', -1.0, 'rpoC: RNA polymerase subunit βprime'],\n", " ['b3067', -0.2, 'rpoD: RNA polymerase sigma factor RpoD (sigma 70)'],\n", " ['b3169', -1.7, 'nusA: Transcription elongation protein nusA']]\n", "mach_data[proc_id] = []\n", "for record in data:\n", " mach_data[proc_id].append([record[0], 'protein', record[0], record[1], 'c', f'G_{record[0]}', record[2]])\n", "\n", "# note: also use pm_data['transcription']" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "# mRNA degradation process machine\n", "proc_id = 'mrna_degradation'\n", "proc_data[proc_id] = [\n", " 'mRNA degradation', 'degradation', \n", " 55.0 * 3600.0, None, None, \n", " proc_id, 'rna', 'mrna']\n", "\n", "data = [['b1084', -4.0, 'rne: Ribonuclease E'],\n", " ['b3164', -3.0, 'pnp: Polyribonucleotide nucleotidyltransferase'],\n", " ['b2779', -2.0, 'eno: Enolase'],\n", " ['b3780', -2.0, 'rhlB: ATP-dependent RNA helicase rhlB'],\n", " ['b2501', -2.0, 'ppk: Polyphosphate kinase']]\n", "mach_data[proc_id] = []\n", "for record in data:\n", " mach_data[proc_id].append([record[0], 'protein', record[0], record[1], 'c', f'G_{record[0]}', record[2]])\n", "\n", "pm_data[proc_id] = [\n", " [None, 'A', None, None, 1.0, 'M_h2o_c => M_amp_c + M_h_c'],\n", " [None, 'C', None, None, 1.0, 'M_h2o_c => M_cmp_c + M_h_c'],\n", " [None, 'G', None, None, 1.0, 'M_h2o_c => M_gmp_c + M_h_c'],\n", " [None, 'U', None, None, 1.0, 'M_h2o_c => M_ump_c + M_h_c']]" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "# protein sythesis process machine (ribosome)\n", "proc_id = 'translation'\n", "proc_data[proc_id] = [\n", " 'protein synthesis', 'production', \n", " None, None, 'ribosome_efficiency_MM, fraction_active_ribosomes', \n", " proc_id, 'protein', None]\n", "\n", "func_data[proc_id] = [\n", " ['ribosome_efficiency_MM', None, 'kmax=86400.0, Km=0.5, Y_MIN=32400.0'],\n", " ['fraction_active_ribosomes', None, 'variable=growth_rate, RATE=-0.083333']]\n", "\n", "data = [['b0023', -1.0, 'rpsT: 30S ribosomal protein S20'], \n", " ['b0169', -1.0, 'rpsB: 30S ribosomal protein S2'], \n", " ['b0170', -1.0, 'tsf: Elongation factor Ts'], \n", " ['b0884', -0.25, 'infA: Translation initiation factor IF-1'], \n", " ['b0911', -1.0, 'rpsA: 30S ribosomal protein S1'], \n", " ['b1089', -1.0, 'rpmF: 50S ribosomal protein L32'], \n", " ['b1211', -0.02, 'prfA: Peptide chain release factor RF1'], \n", " ['b1480', -1.0, 'sra: Stationary-phase-induced ribosome-associated'], \n", " ['b1716', -1.0, 'rplT: 50S ribosomal protein L20'], \n", " ['b1717', -1.0, 'rpmI: 50S ribosomal protein L35'], \n", " ['b1718', -0.4, 'infC: Translation initiation factor IF-3'], \n", " ['b2185', -1.0, 'rplY: 50S ribosomal protein L25'], \n", " ['b2606', -1.0, 'rplS: 50S ribosomal protein L19'], \n", " ['b2609', -1.0, 'rpsP: 30S ribosomal protein S16'], \n", " ['b2891', -0.1, 'prfB: Peptide chain release factor RF2'], \n", " ['b3065', -1.0, 'rpsU: 30S ribosomal protein S21'], \n", " ['b3165', -1.0, 'rpsO: 30S ribosomal protein S15'], \n", " ['b3168', -0.15, 'infB: Translation initiation factor IF-2'], \n", " ['b3185', -1.0, 'rpmA: 50S ribosomal protein L27'], \n", " ['b3186', -1.0, 'rplU: 50S ribosomal protein L21'], \n", " ['b3230', -1.0, 'rpsI: 30S ribosomal protein S9'], \n", " ['b3231', -1.0, 'rplM: 50S ribosomal protein L13'], \n", " ['b3294', -1.0, 'rplQ: 50S ribosomal protein L17'], \n", " ['b3296', -1.0, 'rpsD: 30S ribosomal protein S4'], \n", " ['b3297', -1.0, 'rpsK: 30S ribosomal protein S11'], \n", " ['b3298', -1.0, 'rpsM: 30S ribosomal protein S13'], \n", " ['b3299', -1.0, 'rpmJ: 50S ribosomal protein L36'], \n", " ['b3301', -1.0, 'rplO: 50S ribosomal protein L15'], \n", " ['b3302', -1.0, 'rpmD: 50S ribosomal protein L30'], \n", " ['b3303', -1.0, 'rpsE: 30S ribosomal protein S5'], \n", " ['b3304', -1.0, 'rplR: 50S ribosomal protein L18'], \n", " ['b3305', -1.0, 'rplF: 50S ribosomal protein L6'], \n", " ['b3306', -1.0, 'rpsH: 30S ribosomal protein S8'], \n", " ['b3307', -1.0, 'rpsN: 30S ribosomal protein S14'], \n", " ['b3308', -1.0, 'rplE: 50S ribosomal protein L5'], \n", " ['b3309', -1.0, 'rplX: 50S ribosomal protein L24'], \n", " ['b3310', -1.0, 'rplN: 50S ribosomal protein L14'], \n", " ['b3311', -1.0, 'rpsQ: 30S ribosomal protein S17'], \n", " ['b3312', -1.0, 'rpmC: 50S ribosomal protein L29'], \n", " ['b3313', -1.0, 'rplP: 50S ribosomal protein L16'], \n", " ['b3314', -1.0, 'rpsC: 30S ribosomal protein S3'], \n", " ['b3315', -1.0, 'rplV: 50S ribosomal protein L22'], \n", " ['b3316', -1.0, 'rpsS: 30S ribosomal protein S19'], \n", " ['b3317', -1.0, 'rplB: 50S ribosomal protein L2'], \n", " ['b3318', -1.0, 'rplW: 50S ribosomal protein L23'], \n", " ['b3319', -1.0, 'rplD: 50S ribosomal protein L4'], \n", " ['b3320', -1.0, 'rplC: 50S ribosomal protein L3'], \n", " ['b3321', -1.0, 'rpsJ: 30S ribosomal protein S10'], \n", " ['b3339', -14.0, 'tufA: Elongation factor Tu 1'], \n", " ['b3340', -2.2, 'fusA: Elongation factor G'], \n", " ['b3341', -1.0, 'rpsG: 30S ribosomal protein S7'], \n", " ['b3342', -1.0, 'rpsL: 30S ribosomal protein S12'], \n", " ['b3636', -1.0, 'rpmG: 50S ribosomal protein L33'], \n", " ['b3637', -1.0, 'rpmB: 50S ribosomal protein L28'], \n", " ['b3703', -1.0, 'rpmH: 50S ribosomal protein L34'], \n", " ['b3936', -1.0, 'rpmE: 50S ribosomal protein L31'], \n", " ['b3983', -1.0, 'rplK: 50S ribosomal protein L11'], \n", " ['b3984', -1.0, 'rplA: 50S ribosomal protein L1'], \n", " ['b3985', -1.0, 'rplJ: 50S ribosomal protein L10'], \n", " ['b3986', -4.0, 'rplL: 50S ribosomal protein L7/L12'], \n", " ['b4147', -0.8, 'efp: Elongation factor P'], \n", " ['b4200', -1.0, 'rpsF: 30S ribosomal protein S6'], \n", " ['b4202', -1.0, 'rpsR: 30S ribosomal protein S18'], \n", " ['b4203', -1.0, 'rplI: 50S ribosomal protein L9'], ] \n", "data_rnas = [['rRNA_16S', 'b3851', -1.0, '16S ribosomal RNA'],\n", " ['rRNA_23S', 'b3854', -1.0, '23S ribosomal RNA'],\n", " ['rRNA_5S', 'b3855', -1.0, '5S ribosomal RNA'],] \n", "data_metabs = [['M_gtp_c', -2.0], ['M_h2o_c', -2.0], ['M_gdp_c', 2.0], ['M_pi_c', 2.0], ['M_h_c', 2.0],]\n", "mach_data[proc_id] = []\n", "for record in data:\n", " mach_data[proc_id].append([record[0], 'protein', record[0], record[1], 'c', \n", " f'G_{re.sub(\"-\", \"_\", record[0])}', record[2]])\n", "for record in data_rnas:\n", " mach_data[proc_id].append([record[0], 'rna', record[1], record[2], 'c', \n", " f'G_{re.sub(\"-\", \"_\", record[1])}', record[3]])\n", "for record in data_metabs:\n", " mach_data[proc_id].append([record[0], None, record[0], record[1], 'c', None, None])\n", "\n", "data = [['A', 'Alanine', 'alatrna_c', 'trnaala_c'], \n", " ['C', 'Cysteine', 'cystrna_c', 'trnacys_c'], \n", " ['D', 'Aspartate', 'asptrna_c', 'trnaasp_c'], \n", " ['E', 'Glutamate', 'glutrna_c', 'trnaglu_c'], \n", " ['F', 'Phenylalanine', 'phetrna_c', 'trnaphe_c'], \n", " ['G', 'Glycine', 'glytrna_c', 'trnagly_c'], \n", " ['H', 'Histidine', 'histrna_c', 'trnahis_c'], \n", " ['I', 'Isoleucine', 'iletrna_c', 'trnaile_c'], \n", " ['K', 'Lysine', 'lystrna_c', 'trnalys_c'], \n", " ['L', 'Leucine', 'leutrna_c', 'trnaleu_c'], \n", " ['M', 'Methionine', 'mettrna_c', 'trnamet_c'], \n", " ['N', 'Asparagine', 'asntrna_c', 'trnaasn_c'], \n", " ['P', 'Proline', 'protrna_c', 'trnapro_c'], \n", " ['Q', 'Glutamine', 'glntrna_c', 'trnagln_c'], \n", " ['R', 'Arginine', 'argtrna_c', 'trnaarg_c'], \n", " ['S', 'Serine', 'sertrna_c', 'trnaser_c'], \n", " ['T', 'Threonine', 'thrtrna_c', 'trnathr_c'], \n", " ['U', 'Selenocysteine', 'sectrna_c', 'trnasecys_c'], \n", " ['V', 'Valine', 'valtrna_c', 'trnaval_c'], \n", " ['W', 'Tryptophan', 'trptrna_c', 'trnatrp_c'], \n", " ['Y', 'Tyrosine', 'tyrtrna_c', 'trnatyr_c']]\n", "pm_data[proc_id] = [[None, 'cofactor', None, 0.0, 0.0, 'cofactor =>'],\n", " [None, 'constantProcessing', None, None, None, \n", " ('M_fmettrna_c + M_gtp_c + 3.0 M_h2o_c => ' + \n", " 'M_trnamet_c + M_met__L_c + M_for_c + M_gdp_c + M_pi_c + 2.0 M_h_c')]]\n", "for record in data:\n", " pm_data[proc_id].append(['protein', record[0], record[1], 1.0, 1.0, \n", " f'M_{record[2]} + 2.0 M_gtp_c + 2.0 M_h2o_c => M_{record[3]} + 2.0 M_gdp_c + 2.0 M_pi_c + 3.0 M_h_c'])" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "# protein folding process machine\n", "proc_id = 'folding'\n", "proc_data[proc_id] = [\n", " 'DnaKJ and GroEL/ES folding', 'production', \n", " None, 'LINEAR_CONSTANT=5711.3, LINEAR_COEF=25942.8, X_MIN=0.26, X_MAX=1.9', None, \n", " proc_id, 'protein', None]\n", "\n", "data = [\n", " ['b0015', -0.2, 'dnaJ: Chaperone protein DnaJ - fit to proteomics'],\n", " ['b0014', -5.0, 'dnaK: Chaperone protein DnaK - fit to proteomics'],\n", " ['b4143', -7.0, 'groEL: Chaperonin GroEL (50%)'],\n", " ['b4142', -7.0, 'groES: Co-chaperonin GroES (50%)'],\n", " ['b2614', -2.0, 'grpE: Protein GrpE'],\n", " ['b0436', -6.5, 'tig: Trigger factor - fit to proteomics']]\n", "mach_data[proc_id] = []\n", "for record in data:\n", " mach_data[proc_id].append([record[0], 'protein', record[0], record[1], 'c', f'G_{record[0]}', record[2]])\n", "\n", "pm_data[proc_id] = [\n", " [None, 'amino_acid', None, None, 0.1, 'M_atp_c + M_h2o_c => M_adp_c + M_pi_c + M_h_c']]" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "# secretion process machine\n", "proc_id = 'secretion'\n", "proc_data[proc_id] = [\n", " 'Sec translocation pathway', 'production', \n", " None, 'LINEAR_CONSTANT=61200.0, LINEAR_COEF=36000.0, X_MIN=0.26, X_MAX=1.9', None, \n", " proc_id, 'protein', 'signal_peptide']\n", "\n", "data = [['b0407', -1.0, 'yajC: Sec translocon accessory complex subunit YajC'],\n", " ['b0408', -1.0, 'secD: Protein translocase subunit SecD'],\n", " ['b0409', -1.0, 'secF: Protein translocase subunit SecF'],\n", " ['b3175', -1.0, 'secG: Protein-export membrane protein SecG'],\n", " ['b3300', -1.0, 'secY: Protein translocase subunit SecY'],\n", " ['b3705', -1.0, 'yidC: Membrane protein insertase YidC'],\n", " ['b3981', -1.0, 'secE: Protein translocase subunit SecE']]\n", "mach_data[proc_id] = []\n", "for record in data:\n", " mach_data[proc_id].append([record[0], 'protein', record[0], record[1], 'c-p', f'G_{record[0]}', record[2]])\n", "\n", "pm_data[proc_id] = [\n", " [None, 'amino_acid', None, None, 1.0, '4.0 M_atp_c + 4.0 M_h2o_c => 4.0 M_adp_c + 4.0 M_pi_c + 4.0 M_h_c']]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 2.2.2 configure tRNAs\n", "\n", "tRNAs constitute a substantial fraction of the cellular dry mass, necessitating their synthesis in amounts that balance dilution by growth. Their mass is constrained by compartmental capacity, and the composition of tRNAs is determined by the genome. The target concentration of tRNAs can be calculated from experimental data on total tRNA and the distribution of amino acids in the fixed biomass composition of the foundational GEM. The configuration data compiled in the table \"trna2locus\" is imperative for the creation of tRNA synthesis reactions and the tRNA target concentration variables. \n", "\n", "A representative tRNA is selected for each amino acid, assigned an arbitrary identifier (`rna_id`), and the gene locus (`label`) is set. The relevant compartment identifier is then assigned to `compartment`. The distribution of tRNA macromolecules can be automatically determined when the corresponding amino acid metabolite identifier is assigned to `biomass_aa`." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "# add tRNAs to the model\n", "trna_data_cols = ['rna_id', 'label', 'compartment', 'biomass_aa']\n", "\n", "trna_data = [\n", " ['trnaala', 'b0203', 'c', 'M_ala__L_c'],\n", " ['trnaarg', 'b0536', 'c', 'M_arg__L_c'],\n", " ['trnaasn', 'b1977', 'c', 'M_asn__L_c'],\n", " ['trnaasp', 'b0206', 'c', 'M_asp__L_c'],\n", " ['trnacys', 'b1910', 'c', 'M_cys__L_c'],\n", " ['trnagln', 'b0664', 'c', 'M_gln__L_c'],\n", " ['trnaglu', 'b2590', 'c', 'M_glu__L_c'],\n", " ['trnagly', 'b1911', 'c', 'M_gly_c'],\n", " ['trnahis', 'b3797', 'c', 'M_his__L_c'],\n", " ['trnaile', 'b0202', 'c', 'M_ile__L_c'],\n", " ['trnaleu', 'b0672', 'c', 'M_leu__L_c'],\n", " ['trnalys', 'b0743', 'c', 'M_lys__L_c'],\n", " ['trnamet', 'b0666', 'c', 'M_met__L_c'],\n", " ['trnaphe', 'b2967', 'c', 'M_phe__L_c'],\n", " ['trnapro', 'b2189', 'c', 'M_pro__L_c'],\n", " ['trnasecys', 'b3658', 'c', None],\n", " ['trnaser', 'b0883', 'c', 'M_ser__L_c'],\n", " ['trnathr', 'b0244', 'c', 'M_thr__L_c'],\n", " ['trnatrp', 'b3761', 'c', 'M_trp__L_c'],\n", " ['trnatyr', 'b1230', 'c', 'M_tyr__L_c'],\n", " ['trnaval', 'b0744', 'c', 'M_val__L_c']\n", "]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 2.2.3 configure compartments\n", "\n", "In the RBA, individual compartments are configured with a capacity constraint in units mmolAA/gDW, which in turn constrains the amount of protein and RNA macromolecules located in these compartments. Individual protein and RNA macromolecules can be assigned to specific compartments by explicit configuration, as is done for components of process machines and tRNAs. Alternatively, protein assignment to compartments is done automatically. The location of the metabolites that participate in the reaction catalyzed by such protein determines the reaction compartment identifier assigned to them. Proteins catalyzing transport reactions can be allocated to membrane compartments. Specific roles can be assigned to compartments. For instance, the `cytoplasm` compartment serves as the default compartment, the `medium` compartment delineates the external environment, and the `uptake` compartment is designated for transport reactions associated with medium uptake. It is noteworthy that transport reactions for medium are automatically configured with a Michaelis-Menten type saturation function, where the Michaelis constants are all set to the default value of $K_M = 1\\frac{mmol} {l}$. This must be taken into consideration when setting medium conditions in the optimization loop. \n", "\n", "The configuration data, delineated in table `compartments`, facilitates the generation of individual compartments (`id`) within the RBA model. This process entails the allocation of descriptive names (`name`), the definition of reaction compartment identifiers (`reaction_cids`), the establishment of roles (`keywords`), the setting of capacity limits, and the configuration of translation targets for the dummy protein.\n", "\n", "The capacity limits [mmolAA/gDW] are defined by the variable `density_constraint_value_type`, which can take the values ‘value’, ‘lowerBound’, or ‘upperBound’, and the actual numerical values, either a constant value (`density_constraint_constant`), a function definition (`density_constraint_function`), or an aggregate of functions (`density_constraint_aggregate`). The translation targets for the dummy protein [mmol/gDW] can be defined in three different ways: as a constant value (`translation_target_constant`), as a function definition (`translation_target_function`), or as an aggregate of functions (`translation_target_aggregate`). Functions utilized in aggregates must be defined and added to the data set designated as `func_data`." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "comp_data_cols = ['id', 'name', 'reaction_cids', 'keyword', \n", " 'translation_target_aggregate',\n", " 'density_contraint_value_type', 'density_constraint_constant', 'density_constraint_aggregate']\n", "\n", "comp_data = [\n", " ['c', 'cytoplasm', 'c', 'cytoplasm', \n", " 'aa_conc, inv_avg_protein_len, frac_protein_c, frac_dummy_protein_c', \n", " 'upperBound', 4.8911, None],\n", " ['e', 'external', 'e', 'medium', \n", " 'aa_conc, inv_avg_protein_len, frac_protein_e, frac_dummy_protein_e', \n", " None, None, None],\n", " ['p', 'periplasm', 'p', None, \n", " 'aa_conc, inv_avg_protein_len, frac_protein_p, frac_dummy_protein_p',\n", " 'upperBound', None, 'aa_conc, frac_protein_p'],\n", " ['im', 'inner_membrane', 'c-p, c-e-p, c-e', None, \n", " 'aa_conc, inv_avg_protein_len, frac_protein_im, frac_dummy_protein_im', \n", " 'upperBound', None, 'aa_conc, frac_protein_im'],\n", " ['om', 'outer_membrane', 'e-p', 'uptake', \n", " 'aa_conc, inv_avg_protein_len, frac_protein_om, frac_dummy_protein_om', \n", " 'upperBound', None, 'aa_conc, frac_protein_om']\n", "]\n", "\n", "func_data['compartment'] = [\n", " ['aa_conc', None, 'LINEAR_CONSTANT=5.9915, LINEAR_COEF=-0.9988, X_MIN=0.2, X_MAX=1.9'],\n", " ['inv_avg_protein_len', 0.003207, None],\n", " ['frac_protein_c', None, 'LINEAR_CONSTANT=0.7279, LINEAR_COEF=0.04472, X_MIN=0.2, X_MAX=1.9'],\n", " ['frac_protein_im', 0.08004, None],\n", " ['frac_protein_p', None, 'LINEAR_CONSTANT=0.1021, LINEAR_COEF=-0.03642, X_MIN=0.2, X_MAX=1.9'],\n", " ['frac_protein_om', None, 'LINEAR_CONSTANT=0.08885, LINEAR_COEF=-0.007134, X_MIN=0.2, X_MAX=1.9'],\n", " ['frac_protein_e', 0.000402, None],\n", " ['frac_dummy_protein_c', None, 'LINEAR_CONSTANT=0.20, LINEAR_COEF=-0.04, X_MIN=0.2, X_MAX=1.9'],\n", " ['frac_dummy_protein_im', None, 'LINEAR_CONSTANT=0.4862, LINEAR_COEF=-0.0862, X_MIN=0.2, X_MAX=1.9'],\n", " ['frac_dummy_protein_p', None, 'LINEAR_CONSTANT=0.04326, LINEAR_COEF=0.0945, X_MIN=0.2, X_MAX=1.9'],\n", " ['frac_dummy_protein_om', 0.0332, None],\n", " ['frac_dummy_protein_e', 1.0, None]]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 2.2.4 configure targets\n", "\n", "In the context of FBA and GECKO modeling, the biomass reaction, also referred to as the \"growth\" reaction, functions as a proxy for the growth rate. This reaction consumes energy equivalents and metabolites, which are primarily utilized as precursor metabolites for the production of macromolecules at a fixed composition. The flux through the biomass reaction corresponds to growth-associated maintenance and metabolite dilution by growth. This dilution imposes an additional burden on the reaction network, compelling it to generate sufficient metabolites to maintain constant metabolite concentrations, despite the increase in total cell volume due to growth.\n", "\n", "During RBA model construction, the biomass reaction is replaced by variable and fixed concentration targets, which get diluted according to the growth rate. Metabolites in the biomass reaction can be split into a variable and a fixed part. The variable part contains energy equivalents and precursor metabolites that are used for producing protein and rRNA macromolecules. The RBA model optimization determines the concentrations of these macromolecules, depending on the cellular requirement and the constraints imposed. To ensure the growth dilution of metabolites contained in the fixed composition part of the biomass, so-called \"target concentrations\" need to be defined.\n", "\n", "The configuration of target concentrations for metabolites (small molecules) and DNA, tRNA, and mRNA macromolecules is achieved through the table designated as \"targets.\" Additionally, the configuration of specific flux targets is permitted within this table. Targets can be arbitrarily grouped by means of the `target_group` attribute. The `target_type` can be assigned the values 'concentrations' to ensure growth dilution of target metabolites and macromolecules, 'reactionFluxes' to enforce minimal or maximal metabolic fluxes, or 'productionFluxes'/'degradationFluxes' to enforce macromolecular production or degradation fluxes. The target metabolite (e.g., 'M_pi_c'), macromolecule (e.g., 'mrna'), or reaction (e.g., 'R_ATPM') is specified by the `target` attribute. A group of metabolite targets can be created using \", 'metabolites'\", which extracts from , usually the biomass reaction, metabolites appearing as products (excluding amino acids and nucleotides) with their stoichiometric coefficients. This creates individual concentration targets for each metabolite by multiplying the stoichiometric coefficient with the constant value provided in `target_constant`. A group of tRNA macromolecular concentration targets can be created in a similar fashion using \", 'amino_acids'\", where the target value would correspond to the total mass concentration of tRNAs in mmol/gDW, and individual tRNAs distribution would be extracted from the amino acids in the biomass, according to the tRNA to amino acid mapping configured in the table `trna2locus`.\n", "\n", "The concentration target values [mmol/gDW] and flux target values [mmol/gDWh] are defined by the variable `target_value_type`, which can take the values ‘value’, ‘lowerBound’, or ‘upperBound’, and the actual numerical values, either a constant value (`target_constant`), a function definition (`target_function`), or an aggregate of functions (`target_aggregate`). Functions utilized in aggregates must be defined and added to the data set designated as `func_data`." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "# targets definition\n", "targets_data_cols = ['target_group', 'target_type', 'target', \n", " 'target_value_type', 'target_constant', 'target_function']\n", "targets_data = [\n", " ['biomass_production', 'concentrations', 'R_BIOMASS_Ec_iML1515_core_75p37M, metabolites', \n", " 'value', 1.0, None],\n", " ['trna_production', 'concentrations', 'R_BIOMASS_Ec_iML1515_core_75p37M, amino_acids', \n", " 'value', 0.0007019, None],\n", " ['replication_targets', 'concentrations', 'dna', \n", " 'value', None, 'LINEAR_CONSTANT=0.1308, LINEAR_COEF=-0.0612, X_MIN=0.2, X_MAX=1.0'],\n", " ['transcription_targets', 'concentrations', 'mrna', \n", " 'value', None, 'LINEAR_CONSTANT=0.004460, LINEAR_COEF=0.004142, X_MIN=0.2'],\n", " ['mrna_degradation', 'degradationFluxes', 'mrna', \n", " 'value', None, 'LINEAR_CONSTANT=0.2732, LINEAR_COEF=-0.0376, X_MIN=0.2'],\n", " ['metabolite_production', 'concentrations', 'M_adp_c', 'value', 0.0026, None],\n", " ['metabolite_production', 'concentrations', 'M_amp_c', 'value', 0.0047, None],\n", " ['metabolite_production', 'concentrations', 'M_atp_c', 'value', 0.003, None],\n", " ['metabolite_production', 'concentrations', 'M_cdp_c', 'value', 0.0003, None],\n", " ['metabolite_production', 'concentrations', 'M_cmp_c', 'value', 0.001, None],\n", " ['metabolite_production', 'concentrations', 'M_ctp_c', 'value', 0.0005, None],\n", " ['metabolite_production', 'concentrations', 'M_gdp_c', 'value', 0.0002, None],\n", " ['metabolite_production', 'concentrations', 'M_gmp_c', 'value', 0.0005, None],\n", " ['metabolite_production', 'concentrations', 'M_gtp_c', 'value', 0.0004, None],\n", " ['metabolite_production', 'concentrations', 'M_pi_c', 'value', 0.0144, None],\n", " ['metabolite_production', 'concentrations', 'M_ppi_c', 'value', 0.0009, None],\n", " ['maintenance_atp_target', 'reactionFluxes', 'R_ATPM', \n", " 'lowerBound', None, 'LINEAR_CONSTANT=3.0, LINEAR_COEF=1.0, X_MIN=0.2']\n", "]\n", "\n", "func_data['targets'] = []" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 2.2.5 write RBA configuration file\n", "\n", "In concluding this workflow, the configuration data is then utilized to generate the tables of the RBA configuration." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "8 table(s) with parameters written to data/iML1515_RBA_rba_parameters.xlsx\n" ] } ], "source": [ "# collect all data related to process machines and function definitions\n", "proc_data_all = []\n", "for proc_id, record in proc_data.items():\n", " proc_data_all.append([f'pm_{proc_id}'] + record)\n", "\n", "mach_data_all = []\n", "for proc_id, records in mach_data.items():\n", " for record in records:\n", " mach_data_all.append([f'pm_{proc_id}'] + record)\n", "\n", "pm_data_all = []\n", "for pm_id, records in pm_data.items():\n", " for record in records:\n", " pm_data_all.append([pm_id] + record)\n", " \n", "func_data_all = []\n", "for group_id, records in func_data.items():\n", " for record in records:\n", " func_data_all.append(record) \n", "\n", "# create RBA parameter file\n", "rba_params = {}\n", "data = [['avg_enz_sat', 0.50]]\n", "rba_params['general'] = pd.DataFrame(data, columns=['parameter', 'value']).set_index('parameter')\n", "rba_params['trna2locus'] = pd.DataFrame(trna_data, columns=trna_data_cols).set_index('rna_id')\n", "rba_params['compartments'] = pd.DataFrame(comp_data, columns=comp_data_cols).set_index('id')\n", "rba_params['functions'] = pd.DataFrame(func_data_all, columns=func_data_cols).set_index('function_name')\n", "rba_params['targets'] = pd.DataFrame(targets_data, columns=targets_data_cols).set_index('target_group')\n", "rba_params['processes'] = pd.DataFrame(proc_data_all, columns=proc_data_cols).set_index('process')\n", "rba_params['machineries'] = pd.DataFrame(mach_data_all, columns=mach_data_cols).set_index('process')\n", "rba_params['processing_maps'] = pd.DataFrame(pm_data_all, columns=pm_data_cols).set_index('processingMap')\n", "\n", "write_parameter_file(os.path.join('data', f'{target_model}_rba_parameters.xlsx'), rba_params)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Step 3: Create RBA model\n", "\n", "The creation of RBA models is analogous to that of GECKO models. Initially, an instance of `XbaModel` is created and configured with XBA configuration data. Subsequently, an instance of `RbaModel` is created and configured with RBA configuration data. The resulting model is exported in SBML format. Optionally, the model can be validated with respect to SBML compliance (`rba_model.validate()`), or the model can be exported in XLSX format (`xba_model.export()`) for the purpose of inspecting the model configuration. We export the turnover numbers of t" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "loading: SBML_models/iML1515.xml (last modified: Thu Dec 5 10:03:46 2024)\n", "6 table(s) with parameters loaded from data/iML1515_RBA_xba_parameters.xlsx (Thu Feb 12 15:27:14 2026)\n", " 22 gene product(s) removed from reactions (1494 gene products remaining)\n", " 23 gene products added to the model (1517 total gene products)\n", " 43 constraint ids added to the model (1920 total constraints)\n", " 22 variable ids added to the model (2734 total variables)\n", " 3 attributes on reaction instances updated\n", "25 reactions with atom imbalances, e.g. [R_PUACGAMS, R_BIOMASS_Ec_iML1515_core_75p37M, R_BIOMASS_Ec_iML1515_WT_75p37M, ...], check XbaModel.atom_imbalances.\n", "24 reactions with charge imbalances, e.g. [R_BIOMASS_Ec_iML1515_core_75p37M, R_BIOMASS_Ec_iML1515_WT_75p37M, R_FMETTRS, ...], check XbaModel.charge_imbalances.\n", "extracting nucleotide sequence from data/ncbi/chromosome_U00096.3_fasta.txt\n", "chromosome : 4641652 nucleotides, 4308 mRNAs, 22 rRNAs, 86 tRNAs\n", "extracting UniProt protein data from data/uniprot_organism_83333.tsv\n", "1517 proteins created\n", "140 cofactors used in proteins could not be mapped (are not considered). These correspond to 18 CHEBI ids, which could be added to the parameter spreadsheet (chebi2sid):\n", "{'49883': '[4Fe-4S] cluster', '60539': 'Mo-bis(molybdopterin guanine dinucleotide)', '30413': 'heme', '190135': '[2Fe-2S] cluster', '21137': '[3Fe-4S] cluster', '24875': 'Fe cation', '25213': 'a metal cation', '60240': 'a divalent metal cation', '87746': 'prenylated FMN', '18408': 'adenosylcob(III)alamin', '23378': 'Cu cation', '30408': 'iron-sulfur cluster', '79027': 'L-topaquinone', '61717': 'heme c', '60342': 'dipyrromethane', '62814': 'heme d cis-diol', '71302': 'Mo-molybdopterin', '28115': 'methylcob(III)alamin'}\n", " 479 cofactors mapped to species ids\n", "1224 enzymes added with default stoichiometry\n", "1 table(s) with parameters loaded from data/iML1515_enzyme_composition_updated.xlsx (Thu Feb 12 15:17:11 2026)\n", "1203 enzyme compositions updated from data/iML1515_enzyme_composition_updated.xlsx\n", "2243 reactions catalyzed by 1224 enzymes\n", "default kcat values configured for ['metabolic', 'transporter'] reactions\n", "1 table(s) with parameters loaded from data/iML1515_predicted_fit_GECKO_kcats.xlsx (Thu Feb 12 15:26:06 2026)\n", "5357 kcat values updated from data/iML1515_predicted_fit_GECKO_kcats.xlsx\n", " 0 enzymes removed due to missing kcat values\n", "1920 constraints (+43); 2734 variables (+22); 1517 genes (+1); 5 parameters (+0)\n", ">>> BASELINE XBA model configured!\n", "\n", "8 table(s) with parameters loaded from data/iML1515_RBA_rba_parameters.xlsx (Thu Feb 12 15:27:14 2026)\n", " 2 compartment(s) added\n", " 94 gene products added to the model (1611 total gene products)\n", " 94 gene product(s) added for process machineries\n", " 94 protein(s) created with UniProt information\n", "140 cofactors used in proteins could not be mapped (are not considered). These correspond to 18 CHEBI ids, which could be added to the parameter spreadsheet (chebi2sid):\n", "{'49883': '[4Fe-4S] cluster', '60539': 'Mo-bis(molybdopterin guanine dinucleotide)', '30413': 'heme', '190135': '[2Fe-2S] cluster', '21137': '[3Fe-4S] cluster', '24875': 'Fe cation', '25213': 'a metal cation', '60240': 'a divalent metal cation', '87746': 'prenylated FMN', '18408': 'adenosylcob(III)alamin', '23378': 'Cu cation', '30408': 'iron-sulfur cluster', '79027': 'L-topaquinone', '61717': 'heme c', '60342': 'dipyrromethane', '62814': 'heme d cis-diol', '71302': 'Mo-molybdopterin', '28115': 'methylcob(III)alamin'}\n", " 487 cofactor(s) mapped to species ids for added protein\n", "2734 reactions -> 4283 iso-reactions, including pseudo reactions\n", " 4 density constraints added\n", " 73 targets in 7 target groups\n", " 5 targets in 8 target groups\n", " 5 compartments\n", "1920 species\n", "3952 reactions\n", " 331 medium metabolites (24 > 0.0 mmol/l)\n", " 1 macromolecules (4 components) in dna \n", " 25 macromolecules (4 components) in rna \n", "1611 macromolecules (48 components) in protein \n", " 5 dummy proteins added\n", "3946 enzymes\n", " 7 processes and 6 processing maps\n", "5784 functions, 1162 aggregates\n", ">>> RBA model created\n", "update XbaModel with RBA parameters\n", " 1 attributes on compartment instances updated\n", " 0 reactions removed\n", "1642 macromoledules to add\n", "1642 constraint ids added to the model (3562 total constraints)\n", "5391 RBA constraints to add\n", "5391 constraint ids added to the model (8953 total constraints)\n", "5380 fwd/rev reactions to couple with enzyme efficiency constraints\n", "5380 attributes on reaction instances updated\n", "1643 processing reactions to add\n", "1643 variable ids added to the model (5926 total variables)\n", "6946 parameter values calulated based on 1.00 h-1 growth rate and medium\n", "3792 enzyme concentration variables to add\n", "3792 variable ids added to the model (9718 total variables)\n", " 7 process machine concentration variables to add\n", " 7 variable ids added to the model (9725 total variables)\n", " 27 macromolecule concentration target variables to add\n", " 27 variable ids added to the model (9752 total variables)\n", " 1 metabolites concentration target variable to add\n", " 1 variable ids added to the model (9753 total variables)\n", " 5 density target and slack variables to add\n", " 5 variable ids added to the model (9758 total variables)\n", " 3 Flux/variable bounds need to be updated.\n", " 3 attributes on reaction instances updated\n", " 1 objectives removed\n", "Dummy FBA objective configured: maximize V_TSMC\n", "3828 variables (reactions) require srefs id for initial assignment\n", "3828 attributes on reaction instances updated\n", " 5 function definitions added to XBA model\n", " 1 parameters removed following cleanup: ['R_ATPM_lower_bound']\n", "XbaModel updated with RBA configuration\n", "model exported to SBML format: SBML_models/iML1515_RBA.xml\n", "model exported to Microsoft Excel Spreadsheet: xlsx_models/iML1515_RBA.xlsx\n" ] }, { "data": { "text/plain": [ "True" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# create RBA model\n", "xba_model = XbaModel(os.path.join('SBML_models', f'{fba_model}.xml'))\n", "xba_model.configure(os.path.join('data', f'{target_model}_xba_parameters.xlsx'))\n", "\n", "rba_model = RbaModel(xba_model)\n", "rba_model.configure(os.path.join('data', f'{target_model}_rba_parameters.xlsx'))\n", "\n", "#rba_model.validate() # optional model validation\n", "rba_model.export(os.path.join('SBML_models', f'{target_model}.xml'))\n", "rba_model.export(os.path.join('xlsx_models', f'{target_model}.xlsx')) # optional export to xlsx format" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "---\n", "## Step 4. Load and optimize GECKO model (COBRApy)\n", "\n", "The process of loading the RBA model using the cobrapy interface is analogous to the loading of a GECKO model. However, while GECKO models can be optimized natively by cobrapy, this is no longer the case with RBA models. Optimization in this context necessitates the utilization of an `RbaOptimization` object, which autonomously adjusts the signs of constraints, allows setting of external metabolite concentrations, recalibrates growth rate and medium-dependent parameter values, and implements the bisection algorithm for the RBA feasibility optimization problem (`ro.solve()`). \n", "\n", "The media configuration employed for the optimization of FBA and GECKO models is converted from uptake flux to media concentrations. The medium concentrations $[S]$ are scaled to achieve an equivalent average enzyme saturation as used for the other enzymes in the RBA model. We solve the saturation equation $\\sigma = \\frac{[S]}{[S] + K_M}$ for the substrate concentration $[S] = \\frac{\\sigma}{1 - \\sigma} \\cdot K_M$, and set the value of $K_M$ to the default value for transporters (`ro.importer_km`) which is $K_M = 1 \\frac{mmol}{l}$. The proton concentration is configured as non-limiting to avoid throttling proton symporters excessively.\n", "\n", "It should be noted that results extraction is now supported by `RbaResults`. The reaction fluxes encompass fluxes from the metabolic network and macromolecular production/degradation fluxes introduced with RBA. Macromolecular production/degradation fluxes are filtered using `df_all_net_fluxes.loc[synthesis_rids]`. Protein concentrations can be extracted using the function `rr.collect_protein_results()` in units of ‘mg_per_gP,’ ‘mg_per_gDW’, or ‘µmol_per_gDW’. Similarly, RNA concentrations can be extracted using `rr.collect_rna_results()` and enzyme/process machine concentrations can be extracted using `rr.collect_enzyme_results()`. These concentrations can be expressed in units of ‘mg_per_gDW’ or ‘µmol_per_gDW’. Finally, compartment utilization in terms of percentage occupancy or actual utilization can be extracted using the function `rr.collect_density_results()`." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Set parameter Username\n", "Set parameter LicenseID to value 2731209\n", "Academic license - for non-commercial use only - expires 2026-10-31\n", "SBML model loaded by sbmlxdf: SBML_models/iML1515_RBA.xml (Thu Feb 12 15:27:47 2026)\n", "3792 enzymes, 7 process machines\n", "RBA enzyme efficiency constraints configured (C_EF_xxx, C_ER_xxx) ≤ 0\n", "average saturation level: 0.5, importer Km: 1.0 mmol/l\n", "1611 genes: (492) transporter, (1025) metabolic, (94) process machines\n", "Duration: 43.5 s\n" ] } ], "source": [ "# Load model using cobrapy\n", "start = time.time()\n", "fname = os.path.join('SBML_models', f'{target_model}.xml')\n", "rbam = cobra.io.read_sbml_model(fname)\n", "\n", "# Load SBML model with RbaOptimization (required for optimization under COBRApy)\n", "ro = RbaOptimization(fname, rbam)\n", "sigma = ro.avg_enz_saturation\n", "importer_km = ro.importer_km\n", "print(f'average saturation level: {sigma}, importer Km: {importer_km} mmol/l')\n", "all_genes = set(ro.m_dict['fbcGeneProducts']['label'].values)\n", "tx_genes, metab_genes = ro.get_tx_metab_genes()\n", "pm_genes = all_genes.difference(tx_genes.union(metab_genes))\n", "print(f'{len(all_genes)} genes: ({len(tx_genes)}) transporter, ({len(metab_genes)}) metabolic, '\n", " f'({len(pm_genes)}) process machines')\n", "print(f'Duration: {time.time()-start:.1f} s')" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Acetate : pred gr: 0.415 h-1 vs. exp 0.290, diff: 0.125\n", "Glycerol : pred gr: 0.402 h-1 vs. exp 0.470, diff: -0.068\n", "Fructose : pred gr: 0.555 h-1 vs. exp 0.540, diff: 0.015\n", "L-Malate : pred gr: 0.443 h-1 vs. exp 0.550, diff: -0.107\n", "Glucose : pred gr: 0.647 h-1 vs. exp 0.660, diff: -0.013\n", "Glucose 6-Phosphate : pred gr: 0.597 h-1 vs. exp 0.780, diff: -0.183\n", "\n", "Correlation with Schmidt, 2016, protein mass fractions:\n", "Acetate : r² = 0.3687, p = 5.54e-113 (1112 proteins lin scale)\n", "Glycerol : r² = 0.5207, p = 1.71e-179 (1112 proteins lin scale)\n", "Fructose : r² = 0.6798, p = 9.89e-277 (1112 proteins lin scale)\n", "Glucose : r² = 0.8550, p = 0.00e+00 (1112 proteins lin scale)\n", "Acetate : r² = 0.4173, p = 1.93e-51 ( 424 proteins log scale)\n", "Glycerol : r² = 0.4154, p = 7.70e-52 ( 430 proteins log scale)\n", "Fructose : r² = 0.4701, p = 1.18e-58 ( 413 proteins log scale)\n", "Glucose : r² = 0.4799, p = 1.84e-62 ( 428 proteins log scale)\n", "condition: Glucose\n", "1616 proteins in model with total predicted mass fraction of 1000.0 mg/gP\n", " 1112 have been measured with mpmf of 807.2 mg/gP vs. 639.8 mg/gP predicted\n", " 785 metabolic proteins measured 436.9 mg/gP vs. 329.7 mg/gP predicted\n", " 237 transport proteins measured 100.4 mg/gP vs. 45.8 mg/gP predicted\n", " 90 processes proteins measured 270.0 mg/gP vs. 264.2 mg/gP predicted\n", " 504 proteins not measured vs. 360.2 mg/gP predicted\n", " 5 dummy proteins 316.1 mg/gP predicted\n", " 499 actual proteins 44.2 mg/gP predicted\n", "total : r² = 0.8550, p = 0.00e+00 (1112 proteins lin scale)\n", " metabolic : r² = 0.5978, p = 5.30e-157 ( 785 proteins lin scale)\n", " transport : r² = 0.5333, p = 9.25e-41 ( 237 proteins lin scale)\n", " processes : r² = 0.9819, p = 1.68e-78 ( 90 proteins lin scale)\n", "total : r² = 0.4799, p = 1.84e-62 ( 428 proteins log scale)\n", " metabolic : r² = 0.4054, p = 1.35e-34 ( 292 proteins log scale)\n", " transport : r² = 0.5832, p = 6.70e-10 ( 46 proteins log scale)\n", " processes : r² = 0.8245, p = 5.22e-35 ( 90 proteins log scale)\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "1 file(s) exported for \"Load reaction data\" into Escher maps\n", "Duration: 140.5 s\n" ] } ], "source": [ "# Optimize model using cobrapy and analyze results\n", "start = time.time()\n", "pred_results = {}\n", "for cond, medium in conditions.items():\n", " rel_mmol_per_l = (sigma / (1.0-min(sigma, .99))) * importer_km\n", " ex_sidx2mmol_per_l = {re.sub('EX_', '', ex_ridx): rel_mmol_per_l for ex_ridx in medium}\n", " ex_sidx2mmol_per_l['h_e'] = 100.0 * sigma # H-symport reactions not to be constraint by proton concentration\n", " ro.medium = ex_sidx2mmol_per_l\n", "\n", " solution = ro.solve(gr_min=0.01, gr_max=1.2, bisection_tol=1e-3)\n", " if solution.status == 'optimal':\n", " gr = solution.objective_value\n", " pred_results[cond] = solution\n", " print(f'{cond:25s}: pred gr: {gr:.3f} h-1 vs. exp {exp_grs[cond]:.3f}, '\n", " f'diff: {gr - exp_grs[cond]:6.3f}')\n", " else:\n", " print(f'{cond:25s}: INFEASIBLE')\n", " \n", "rr = RbaResults(ro, pred_results, df_mpmf)\n", "df_fluxes = rr.collect_fluxes()\n", "df_all_net_fluxes = rr.collect_fluxes(net=True) \n", "metabolic_rids = [rid for rid in list(df_all_net_fluxes.index) if re.match('(PROD)|(DEGR)', rid) is None]\n", "synthesis_rids = [rid for rid in list(df_all_net_fluxes.index) if re.match('(PROD)|(DEGR)', rid)]\n", "df_net_fluxes = df_all_net_fluxes.loc[metabolic_rids]\n", "\n", "# additional results with RBA\n", "df_synt_fluxes = df_all_net_fluxes.loc[synthesis_rids]\n", "df_proteins = rr.collect_protein_results('mg_per_gP')\n", "df_enzyme_conc = rr.collect_enzyme_results('µmol_per_gDW')\n", "df_rna_conc = rr.collect_rna_results('µmol_per_gDW')\n", "df_occupancy = rr.collect_density_results()\n", "df_capacity = rr.collect_density_results(capacity=True)\n", "\n", "print('\\nCorrelation with Schmidt, 2016, protein mass fractions:') \n", "rr.report_proteomics_correlation(scale='lin')\n", "rr.report_proteomics_correlation(scale='log')\n", "rr.report_protein_levels(reference_cond)\n", "rr.plot_grs(exp_grs, highlight=reference_cond)\n", "rr.plot_proteins(reference_cond, \n", " plot_fname=os.path.join('plots', f'{target_model}_proteins_{reference_cond}.pdf'))\n", "rr.save_to_escher(df_net_fluxes[reference_cond], os.path.join('escher', target_model))\n", "\n", "print(f'Duration: {time.time()-start:.1f} s')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### synthesis and degradation fluxes\n", "\n", "The following is a list of macromolecules for which synthesis and degradation fluxes have been determined: individual proteins, dummy proteins, RNA, and DNA." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1644 synthesis and degradation fluxes\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
reaction_strgprgroupsrankmean mmol_per_gDWhabs_mean mmol_per_gDWhstdevAcetateGlycerolFructoseL-MalateGlucoseGlucose 6-Phosphate
rid
PROD_mrna0.2406 atp_c + 0.2455 ctp_c + 0.2734 gtp_c + 0...1170.2574210.2574210.0029860.2601600.2605580.2560820.2593350.2534970.254895
DEGR_mrnah2o_c + MM_mrna => 0.2406 amp_c + h_c + 0.2455...1190.2540350.2540350.0038920.2575960.2580990.2523310.2565470.2488790.250758
PROD_dna0.254 dgtp_c + 0.254 dctp_c + 0.246 datp_c + 0...2730.0502230.0502230.0069810.0437410.0426610.0537450.0459250.0590000.056268
PROD_dummy_protein_c0.001 fmettrna_c + 0.7457 gtp_c + 1.12 h2o_c +...4050.0012010.0012010.0002010.0010160.0009880.0012950.0010740.0014610.001373
PROD_dummy_protein_im0.001 fmettrna_c + 0.7457 gtp_c + 2.6093 h2o_c...4480.0003150.0003150.0000520.0002680.0002600.0003400.0002830.0003820.000359
\n", "
" ], "text/plain": [ " reaction_str gpr \\\n", "rid \n", "PROD_mrna 0.2406 atp_c + 0.2455 ctp_c + 0.2734 gtp_c + 0... \n", "DEGR_mrna h2o_c + MM_mrna => 0.2406 amp_c + h_c + 0.2455... \n", "PROD_dna 0.254 dgtp_c + 0.254 dctp_c + 0.246 datp_c + 0... \n", "PROD_dummy_protein_c 0.001 fmettrna_c + 0.7457 gtp_c + 1.12 h2o_c +... \n", "PROD_dummy_protein_im 0.001 fmettrna_c + 0.7457 gtp_c + 2.6093 h2o_c... \n", "\n", " groups rank mean mmol_per_gDWh \\\n", "rid \n", "PROD_mrna 117 0.257421 \n", "DEGR_mrna 119 0.254035 \n", "PROD_dna 273 0.050223 \n", "PROD_dummy_protein_c 405 0.001201 \n", "PROD_dummy_protein_im 448 0.000315 \n", "\n", " abs_mean mmol_per_gDWh stdev Acetate Glycerol \\\n", "rid \n", "PROD_mrna 0.257421 0.002986 0.260160 0.260558 \n", "DEGR_mrna 0.254035 0.003892 0.257596 0.258099 \n", "PROD_dna 0.050223 0.006981 0.043741 0.042661 \n", "PROD_dummy_protein_c 0.001201 0.000201 0.001016 0.000988 \n", "PROD_dummy_protein_im 0.000315 0.000052 0.000268 0.000260 \n", "\n", " Fructose L-Malate Glucose Glucose 6-Phosphate \n", "rid \n", "PROD_mrna 0.256082 0.259335 0.253497 0.254895 \n", "DEGR_mrna 0.252331 0.256547 0.248879 0.250758 \n", "PROD_dna 0.053745 0.045925 0.059000 0.056268 \n", "PROD_dummy_protein_c 0.001295 0.001074 0.001461 0.001373 \n", "PROD_dummy_protein_im 0.000340 0.000283 0.000382 0.000359 " ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print(f'{len(df_synt_fluxes)} synthesis and degradation fluxes')\n", "df_synt_fluxes.head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### enzyme concentrations\n", "\n", "The RBA is used to determine the amount of enzyme required to catalyze the flux through a given reaction or process machine. Reactions are divided according to iso-enzyme, and the amount of enzyme is determined per sub-reaction." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3799 enzymes and process machines\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
mw_kDareaction_strgprmean µmol_per_gDWstdevAcetateGlycerolFructoseL-MalateGlucoseGlucose 6-Phosphate
enzyme
ACKr_iso243.290ac_c + atp_c -> actp_c + adp_cb22960.0993410.1456420.3779520.0042830.0661730.1339030.0073310.006404
METS_iso184.6745mthf_c + hcys__L_c => h_c + met__L_c + thf_cb38290.0954630.0244300.0844360.0600150.1098510.0813710.1267390.110365
NH4tpp133.545nh4_p -> nh4_cb04510.0727730.0190470.0625580.0469340.0833430.0608470.0981190.084838
\n", "
" ], "text/plain": [ " mw_kDa reaction_str gpr \\\n", "enzyme \n", "ACKr_iso2 43.290 ac_c + atp_c -> actp_c + adp_c b2296 \n", "METS_iso1 84.674 5mthf_c + hcys__L_c => h_c + met__L_c + thf_c b3829 \n", "NH4tpp 133.545 nh4_p -> nh4_c b0451 \n", "\n", " mean µmol_per_gDW stdev Acetate Glycerol Fructose \\\n", "enzyme \n", "ACKr_iso2 0.099341 0.145642 0.377952 0.004283 0.066173 \n", "METS_iso1 0.095463 0.024430 0.084436 0.060015 0.109851 \n", "NH4tpp 0.072773 0.019047 0.062558 0.046934 0.083343 \n", "\n", " L-Malate Glucose Glucose 6-Phosphate \n", "enzyme \n", "ACKr_iso2 0.133903 0.007331 0.006404 \n", "METS_iso1 0.081371 0.126739 0.110365 \n", "NH4tpp 0.060847 0.098119 0.084838 " ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print(f'{len(df_enzyme_conc)} enzymes and process machines')\n", "df_enzyme_conc.head(3)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
mw_kDareaction_strgprmean mg_per_gDWstdevAcetateGlycerolFructoseL-MalateGlucoseGlucose 6-Phosphate
enzyme
pm_translation3160.0461NoneNone130.65457523.78303128.03078392.072371145.44653117.616591159.481958141.279216
\n", "
" ], "text/plain": [ " mw_kDa reaction_str gpr mean mg_per_gDW stdev \\\n", "enzyme \n", "pm_translation 3160.0461 None None 130.654575 23.78303 \n", "\n", " Acetate Glycerol Fructose L-Malate Glucose \\\n", "enzyme \n", "pm_translation 128.030783 92.072371 145.44653 117.616591 159.481958 \n", "\n", " Glucose 6-Phosphate \n", "enzyme \n", "pm_translation 141.279216 " ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# ribosome concentration in mg/gDW\n", "rr.collect_enzyme_results('mg_per_gDW').loc[['pm_translation']]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### RNA concentrations \n", "\n", "The concentrations of ribosomal RNA (rRNA), transfer RNA (tRNA), and messenger RNA (mRNA) are expressed in µmol/gDW or mg/gDW." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "24 rnas\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
mw_kDamean µmol_per_gDWstdevAcetateGlycerolFructoseL-MalateGlucoseGlucose 6-Phosphate
rna
mrna0.32106.5712074.287356e-016.178916.1235556.7589316.2944337.1391946.932216
trnagly24.43580.0804001.520235e-170.080400.0804000.0804000.0804000.0804000.080400
trnaala24.43380.0674101.520235e-170.067410.0674100.0674100.0674100.0674100.067410
trnaleu27.38810.0591200.000000e+000.059120.0591200.0591200.0591200.0591200.059120
trnaval24.44080.0555300.000000e+000.055530.0555300.0555300.0555300.0555300.055530
\n", "
" ], "text/plain": [ " mw_kDa mean µmol_per_gDW stdev Acetate Glycerol \\\n", "rna \n", "mrna 0.3210 6.571207 4.287356e-01 6.17891 6.123555 \n", "trnagly 24.4358 0.080400 1.520235e-17 0.08040 0.080400 \n", "trnaala 24.4338 0.067410 1.520235e-17 0.06741 0.067410 \n", "trnaleu 27.3881 0.059120 0.000000e+00 0.05912 0.059120 \n", "trnaval 24.4408 0.055530 0.000000e+00 0.05553 0.055530 \n", "\n", " Fructose L-Malate Glucose Glucose 6-Phosphate \n", "rna \n", "mrna 6.758931 6.294433 7.139194 6.932216 \n", "trnagly 0.080400 0.080400 0.080400 0.080400 \n", "trnaala 0.067410 0.067410 0.067410 0.067410 \n", "trnaleu 0.059120 0.059120 0.059120 0.059120 \n", "trnaval 0.055530 0.055530 0.055530 0.055530 " ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print(f'{len(df_rna_conc)} rnas')\n", "df_rna_conc.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### compartment occupancy\n", "\n", "The RBA imposes constraints on the amount of protein and RNA that can be placed in each compartment. The occupancy level of the different compartments indicates which compartments are limiting. Total and used capacity per compartment in mmolAA/gDW can be reported as well." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
mean utilizationstdevAcetateGlycerolFructoseL-MalateGlucoseGlucose 6-Phosphate
cid
im1.0000000.0000001.0000001.0000001.0000001.0000001.0000001.000000
c0.7189760.0901380.7772420.5538410.7797730.6861790.7906410.726181
om0.1689490.0411530.2076130.0977300.1562000.1996760.1947850.157693
p0.1093050.0117150.0985840.0970720.1144320.1017460.1248260.119168
\n", "
" ], "text/plain": [ " mean utilization stdev Acetate Glycerol Fructose L-Malate \\\n", "cid \n", "im 1.000000 0.000000 1.000000 1.000000 1.000000 1.000000 \n", "c 0.718976 0.090138 0.777242 0.553841 0.779773 0.686179 \n", "om 0.168949 0.041153 0.207613 0.097730 0.156200 0.199676 \n", "p 0.109305 0.011715 0.098584 0.097072 0.114432 0.101746 \n", "\n", " Glucose Glucose 6-Phosphate \n", "cid \n", "im 1.000000 1.000000 \n", "c 0.790641 0.726181 \n", "om 0.194785 0.157693 \n", "p 0.124826 0.119168 " ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# compartment occupancy\n", "df_occupancy" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
mean capacity mmolAA_per_gDWstdevAcetateGlycerolFructoseL-MalateGlucoseGlucose 6-Phosphate
cid
c4.8911009.729507e-164.8911004.8911004.8911004.8911004.8911004.891100
om0.4672401.284558e-020.4790060.4806850.4615610.4755090.4502760.456403
p0.4583062.923985e-020.4851200.4890030.4452240.4770610.4198430.433582
im0.4388128.274943e-030.4463830.4474520.4351880.4441540.4278490.431844
\n", "
" ], "text/plain": [ " mean capacity mmolAA_per_gDW stdev Acetate Glycerol Fructose \\\n", "cid \n", "c 4.891100 9.729507e-16 4.891100 4.891100 4.891100 \n", "om 0.467240 1.284558e-02 0.479006 0.480685 0.461561 \n", "p 0.458306 2.923985e-02 0.485120 0.489003 0.445224 \n", "im 0.438812 8.274943e-03 0.446383 0.447452 0.435188 \n", "\n", " L-Malate Glucose Glucose 6-Phosphate \n", "cid \n", "c 4.891100 4.891100 4.891100 \n", "om 0.475509 0.450276 0.456403 \n", "p 0.477061 0.419843 0.433582 \n", "im 0.444154 0.427849 0.431844 " ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# maximal compartment capacity\n", "df_capacity" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## (Optional) Track progress" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 table(s) with parameters loaded from protein_predictions.xlsx (Thu Feb 12 15:25:51 2026)\n", "1 table(s) with parameters written to protein_predictions.xlsx\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
modellin r2log r2lin proteinslog proteins
No
1iML1515_default_GECKO0.0332440.1902251018299
2iML1515_modified_GECKO0.1359810.201613999322
3iML1515_predicted_GECKO0.0788030.268769999308
4iML1515_manual_adjust_GECKO0.2054130.333470999308
5iML1515_predicted_fit_GECKO0.8698500.549757999313
6iML1515_RBA0.8550030.4799411112428
\n", "
" ], "text/plain": [ " model lin r2 log r2 lin proteins \\\n", "No \n", "1 iML1515_default_GECKO 0.033244 0.190225 1018 \n", "2 iML1515_modified_GECKO 0.135981 0.201613 999 \n", "3 iML1515_predicted_GECKO 0.078803 0.268769 999 \n", "4 iML1515_manual_adjust_GECKO 0.205413 0.333470 999 \n", "5 iML1515_predicted_fit_GECKO 0.869850 0.549757 999 \n", "6 iML1515_RBA 0.855003 0.479941 1112 \n", "\n", " log proteins \n", "No \n", "1 299 \n", "2 322 \n", "3 308 \n", "4 308 \n", "5 313 \n", "6 428 " ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import scipy\n", "import numpy as np\n", "\n", "number = 6\n", "xy = np.array([[df_mpmf.at[gene, reference_cond], df_proteins.at[gene, reference_cond]] \n", " for gene in df_proteins.index if gene in df_mpmf.index])\n", "log10_x, log10_y = rr.get_log10_xy(xy)\n", "lin_pearson_r, _ = scipy.stats.pearsonr(xy[:, 0], xy[:, 1])\n", "log_pearson_r, _ = scipy.stats.pearsonr(log10_x, log10_y)\n", "\n", "predictions = load_parameter_file('protein_predictions.xlsx')\n", "data = [[number, target_model, lin_pearson_r**2,log_pearson_r**2, len(xy), len(log10_x)]]\n", "cols = ['No', 'model', 'lin r2', 'log r2', 'lin proteins', 'log proteins']\n", "df = pd.DataFrame(data, columns=cols).set_index('No')\n", "if number in predictions[reference_cond].index:\n", " predictions[reference_cond].drop(index=number, inplace=True)\n", "predictions[reference_cond] = pd.concat((predictions[reference_cond], df)).sort_index()\n", "write_parameter_file('protein_predictions.xlsx', predictions)\n", "predictions[reference_cond]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Closing remarks\n", "\n", "The development of a RBA model necessitates a significantly greater investment of effort compared to a GECKO model, yet it offers the advantage of generating more realistic models. The utilization of organism-specific knowledge is imperative, as it provides a foundation for defining the processes to be implemented, the compartments to be incorporated, and the compartmental constraints to be imposed. Additionally, it determines the targets concentrations and fluxes to be established, the target values to be configured, and the realistic growth-dependent functions to be designated for dynamic value assignments. The parametrizations selected for this RBA model could serve as a foundational starting point for future model enhancements and as a paradigm for RBA models of other organisms that one may wish to develop. Despite the augmented intricacy, the RBA optimization outcomes persist in demonstrating substantial correlation with empirical data, encompassing both the predicted growth rates and the predicted protein concentrations. \n", "\n", "In a manner analogous to the GECKO model of a particular organism serving as a precursor to the RBA model, the RBA model has the potential to serve as a precursor to a GBA model (Dourado & Lercher, 2020).The extension to GBA would entail defining default or specific reaction kinetics for each of the enzyme-catalyzed reactions and introducing metabolite concentration variables. \n", "\n", "An advantage of the f2xba modeling framework is that the resulting models contain all information and annotation data from the foundational GEM, which can be exploited in downstream processing. The models are self-contained and fully compliant with the SBML standard (Hucka et al., 2019), which facilitates sharing and processing by SBML-compliant tools. However, RBA model optimization requires support from the f2xba Python package. Loading and optimization of this SBML-coded RBA model in environments other than Python would require efforts to port relevant coding sections from f2xba to the other environment.\n", "\n", "In the subsequent tutorials, we will augment our models with thermodynamic constraints, commencing with a thermodynamic FBA model.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "---\n", "## (Alternative) gurobipy - model optimization\n", "\n", "The gurobipy interface has been demonstrated to exhibit superior performance in terms of speed for RBA model optimizations. This enhancement can be attributed to the elimination of overhead introduced by cobrapy." ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SBML model loaded by sbmlxdf: SBML_models/iML1515_RBA.xml (Thu Feb 12 15:27:47 2026)\n", "LP Model of iML1515_RBA\n", "9758 variables, 8953 constraints, 119517 non-zero matrix coefficients\n", "3792 enzymes, 7 process machines\n", "RBA enzyme efficiency constraints configured (C_EF_xxx, C_ER_xxx) ≤ 0\n", "average saturation level: 0.5, importer Km: 1.0 mmol/l\n", "1611 genes: (492) transporter, (1025) metabolic, (94) process machines\n", "Duration: 23.9 s\n" ] } ], "source": [ "# Load model using gurobiy\n", "start = time.time()\n", "fname = os.path.join('SBML_models', f'{target_model}.xml')\n", "ro = RbaOptimization(fname)\n", "sigma = ro.avg_enz_saturation\n", "importer_km = ro.importer_km\n", "print(f'average saturation level: {sigma}, importer Km: {importer_km} mmol/l')\n", "all_genes = set(ro.m_dict['fbcGeneProducts']['label'].values)\n", "tx_genes, metab_genes = ro.get_tx_metab_genes()\n", "pm_genes = all_genes.difference(tx_genes.union(metab_genes))\n", "print(f'{len(all_genes)} genes: ({len(tx_genes)}) transporter, ({len(metab_genes)}) metabolic, '\n", " f'({len(pm_genes)}) process machines')\n", "print(f'Duration: {time.time()-start:.1f} s')" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Acetate : pred gr: 0.415 h-1 vs. exp 0.290, diff: 0.125\n", "Glycerol : pred gr: 0.405 h-1 vs. exp 0.470, diff: -0.065\n", "Fructose : pred gr: 0.553 h-1 vs. exp 0.540, diff: 0.013\n", "L-Malate : pred gr: 0.443 h-1 vs. exp 0.550, diff: -0.107\n", "Glucose : pred gr: 0.646 h-1 vs. exp 0.660, diff: -0.014\n", "Glucose 6-Phosphate : pred gr: 0.599 h-1 vs. exp 0.780, diff: -0.181\n", "\n", "Correlation with Schmidt, 2016, protein mass fractions:\n", "Acetate : r² = 0.3654, p = 9.57e-112 (1112 proteins lin scale)\n", "Glycerol : r² = 0.5342, p = 2.27e-186 (1112 proteins lin scale)\n", "Fructose : r² = 0.6779, p = 2.59e-275 (1112 proteins lin scale)\n", "Glucose : r² = 0.8519, p = 0.00e+00 (1112 proteins lin scale)\n", "Acetate : r² = 0.4168, p = 3.06e-51 ( 423 proteins log scale)\n", "Glycerol : r² = 0.4183, p = 3.47e-52 ( 429 proteins log scale)\n", "Fructose : r² = 0.4774, p = 1.30e-59 ( 411 proteins log scale)\n", "Glucose : r² = 0.4602, p = 3.81e-59 ( 429 proteins log scale)\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "1 file(s) exported for \"Load reaction data\" into Escher maps\n", "Duration: 23.9 s\n" ] } ], "source": [ "# Optimize model using gurobiy and analyze results\n", "start = time.time()\n", "pred_results = {}\n", "for cond, medium in conditions.items():\n", " rel_mmol_per_l = (sigma / (1.0-min(sigma, .99))) * importer_km\n", " ex_sidx2mmol_per_l = {re.sub('EX_', '', ex_ridx): rel_mmol_per_l for ex_ridx in medium}\n", " ex_sidx2mmol_per_l['h_e'] = 100.0 * sigma # H-symport reactions to be not constraint by main metabolite\n", " ro.medium = ex_sidx2mmol_per_l\n", "\n", " solution = ro.solve(gr_min=0.01, gr_max=1.2, bisection_tol=1e-3)\n", " if solution.status == 'optimal':\n", " gr = solution.objective_value\n", " pred_results[cond] = solution\n", " print(f'{cond:25s}: pred gr: {gr:.3f} h-1 vs. exp {exp_grs[cond]:.3f}, '\n", " f'diff: {gr - exp_grs[cond]:6.3f}')\n", " else:\n", " print(f'{cond:25s}: INFEASIBLE')\n", " \n", "rr = RbaResults(ro, pred_results, df_mpmf)\n", "df_fluxes = rr.collect_fluxes()\n", "df_all_net_fluxes = rr.collect_fluxes(net=True) \n", "metabolic_rids = [rid for rid in list(df_all_net_fluxes.index) if re.match('(PROD)|(DEGR)', rid) is None]\n", "synthesis_rids = [rid for rid in list(df_all_net_fluxes.index) if re.match('(PROD)|(DEGR)', rid)]\n", "df_net_fluxes = df_all_net_fluxes.loc[metabolic_rids]\n", "\n", "# additional results with RBA\n", "df_synt_fluxes = df_all_net_fluxes.loc[synthesis_rids]\n", "df_proteins = rr.collect_protein_results('mg_per_gP')\n", "df_enzyme_conc = rr.collect_enzyme_results('µmol_per_gDW')\n", "df_rna_conc = rr.collect_rna_results('µmol_per_gDW')\n", "df_occupancy = rr.collect_density_results()\n", "df_capacity = rr.collect_density_results(capacity=True)\n", "\n", "print('\\nCorrelation with Schmidt, 2016, protein mass fractions:') \n", "rr.report_proteomics_correlation(scale='lin')\n", "rr.report_proteomics_correlation(scale='log')\n", "# rr.report_protein_levels(reference_cond)\n", "rr.plot_grs(exp_grs, highlight=reference_cond)\n", "rr.plot_proteins(reference_cond, \n", " plot_fname=os.path.join('plots', f'{target_model}_proteins_{reference_cond}.pdf'))\n", "rr.save_to_escher(df_net_fluxes[reference_cond], os.path.join('escher', target_model))\n", "print(f'Duration: {time.time()-start:.1f} s')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "---\n", "## References\n", "\n", "- Bulović, A., Fischer, S., Dinh, M., Golib, F., Liebermeister, W., Poirier, C., Tournier, L., Klipp, E., Fromion, V., & Goelzer, A. (2019). Automated generation of bacterial resource allocation models. Metabolic Engineering, 55, 12-22. https://doi.org/https://doi.org/10.1016/j.ymben.2019.06.001 \n", "- Dourado, H., & Lercher, M. J. (2020). An analytical theory of balanced cellular growth. Nat Commun, 11(1), 1226. https://doi.org/10.1038/s41467-020-14751-w \n", "- Goelzer, A., Fromion, V., & Scorletti, G. (2011). Cell design in bacteria as a convex optimization problem. Automatica, 47(6), 1210-1218. https://doi.org/https://doi.org/10.1016/j.automatica.2011.02.038 \n", "- Hucka, M., Bergmann, F. T., Chaouiya, C., Dräger, A., Hoops, S., Keating, S. M., König, M., Novère, N. L., Myers, C. J., Olivier, B. G., Sahle, S., Schaff, J. C., Sheriff, R., Smith, L. P., Waltemath, D., Wilkinson, D. J., & Zhang, F. (2019). The Systems Biology Markup Language (SBML): Language Specification for Level 3 Version 2 Core Release 2. J Integr Bioinform, 16(2). https://doi.org/10.1515/jib-2019-0021 \n", "- Orth, J. D., Conrad, T. M., Na, J., Lerman, J. A., Nam, H., Feist, A. M., & Palsson, B. Ø. (2011). A comprehensive genome-scale reconstruction of Escherichia coli metabolism. Molecular Systems Biology, 7(1), 535. https://doi.org/https://doi.org/10.1038/msb.2011.65 \n", "\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3.12", "language": "python", "name": "python310" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.0" } }, "nbformat": 4, "nbformat_minor": 4 }