{
"cells": [
{
"cell_type": "markdown",
"id": "a84fb367",
"metadata": {},
"source": [
"# A full MFA analysis workflow"
]
},
{
"cell_type": "markdown",
"id": "366a5363",
"metadata": {},
"source": [
"This is a summary notebook of all the MFA methods. More in-depth descriptions, please "
]
},
{
"cell_type": "markdown",
"id": "e20f6e3e",
"metadata": {},
"source": [
"#### INCA script generation"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "872c8152",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Determination of memory status is not supported on this \n",
" platform, measuring for memoryleaks will never fail\n"
]
}
],
"source": [
"from BFAIR.mfa.INCA import INCA_script\n",
"import pandas as pd\n",
"import numpy as np\n",
"import time\n",
"import ast\n",
"import matlab.engine"
]
},
{
"cell_type": "markdown",
"id": "e8eacf37",
"metadata": {},
"source": [
"#### Initialize the script"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "a6ad35d2",
"metadata": {},
"outputs": [],
"source": [
"INCA_script = INCA_script()"
]
},
{
"cell_type": "markdown",
"id": "1de80a02",
"metadata": {},
"source": [
"#### Import the data"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "6c9d2fd2",
"metadata": {},
"outputs": [],
"source": [
"# measured fragments/MS data, tracers and measured fluxes should be limited to one experiment\n",
"\n",
"atomMappingReactions_data_I = pd.read_csv('data/MFA_modelInputsData/data_stage02_isotopomer_atomMappingReactions2.csv')\n",
"modelReaction_data_I = pd.read_csv('data/MFA_modelInputsData/data_stage02_isotopomer_modelReactions.csv')\n",
"atomMappingMetabolite_data_I = pd.read_csv('data/MFA_modelInputsData/data_stage02_isotopomer_atomMappingMetabolites.csv')\n",
"measuredFluxes_data_I = pd.read_csv('data/MFA_modelInputsData/data_stage02_isotopomer_measuredFluxes.csv')\n",
"experimentalMS_data_I = pd.read_csv('data/MFA_modelInputsData/data-1604345289079.csv')\n",
"tracer_I = pd.read_csv('data/MFA_modelInputsData/data_stage02_isotopomer_tracers.csv')"
]
},
{
"cell_type": "markdown",
"id": "4fc0a6c0",
"metadata": {},
"source": [
"#### Exclude data for irreleavnt experiments and models"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "4ae92441",
"metadata": {},
"outputs": [],
"source": [
"# The files need to be limited by model id and mapping id, I picked \"ecoli_RL2013_02\" here\n",
"atomMappingReactions_data_I = INCA_script.limit_to_one_model(atomMappingReactions_data_I, 'mapping_id', 'ecoli_RL2013_02')\n",
"modelReaction_data_I = INCA_script.limit_to_one_model(modelReaction_data_I, 'model_id', 'ecoli_RL2013_02')\n",
"atomMappingMetabolite_data_I = INCA_script.limit_to_one_model(atomMappingMetabolite_data_I, 'mapping_id', 'ecoli_RL2013_02')\n",
"measuredFluxes_data_I = INCA_script.limit_to_one_model(measuredFluxes_data_I, 'model_id', 'ecoli_RL2013_02')\n",
"\n",
"# Limiting fluxes, fragments and tracers to one experiment\n",
"measuredFluxes_data_I = INCA_script.limit_to_one_experiment(measuredFluxes_data_I, 'experiment_id', 'WTEColi_113C80_U13C20_01')\n",
"experimentalMS_data_I = INCA_script.limit_to_one_experiment(experimentalMS_data_I, 'experiment_id', 'WTEColi_113C80_U13C20_01')\n",
"tracer_I = INCA_script.limit_to_one_experiment(tracer_I, 'experiment_id', 'WTEColi_113C80_U13C20_01')"
]
},
{
"cell_type": "markdown",
"id": "ce357111",
"metadata": {},
"source": [
"## Generate the MATLAB script\n",
"\n",
"Save it in your working directory. The last argument in the script_generator function will name your future .mat file"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "fde2ae87",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"There is no stoichimetriy given for: ATPM\n",
"There is no stoichimetriy given for: Ec_Biomass_INCA\n",
"There is no stoichimetriy given for: EX_nh4_LPAREN_e_RPAREN_\n",
"There is no stoichimetriy given for: EX_o2_LPAREN_e_RPAREN_\n",
"There is no stoichimetriy given for: EX_so4_LPAREN_e_RPAREN_\n",
"There is no stoichimetriy given for: FADR_NADH_CYTBD_HYD_ATPS4r\n",
"There is no stoichimetriy given for: NADH_CYTBD_HYD_ATPS4r\n",
"There is no stoichimetriy given for: NADTRHD_THD2pp\n",
"There is no stoichimetriy given for: NADTRHD_THD2pp_reverse\n"
]
}
],
"source": [
"script = INCA_script.script_generator(\n",
" modelReaction_data_I,\n",
" atomMappingReactions_data_I,\n",
" atomMappingMetabolite_data_I,\n",
" measuredFluxes_data_I,\n",
" experimentalMS_data_I,\n",
" tracer_I\n",
")\n",
"INCA_script.save_INCA_script(script, \"testscript\")\n",
"runner = INCA_script.runner_script_generator('TestFile', 10)\n",
"INCA_script.save_runner_script(runner=runner, scriptname=\"testscript\")"
]
},
{
"cell_type": "markdown",
"id": "18e56279",
"metadata": {},
"source": [
"#### Provide the path to you INCA installation, your working directory and the name of the previously generated MATLAB script"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "ad92c7a0",
"metadata": {},
"outputs": [],
"source": [
"INCA_base_directory = \"/Users/matmat/Documents/INCAv1.9\" # ADD YOUR BASE DIRECTORY HERE, e.g. \n",
"script_folder = %pwd\n",
"matlab_script = \"testscript\"\n",
"runner_script = matlab_script + \"_runner\""
]
},
{
"cell_type": "markdown",
"id": "49366410",
"metadata": {},
"source": [
"#### INCA will be started and your script run in MATLAB. This will produce the .mat file specified above"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "05fa2db1",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"--- 186.927631855011 seconds -\n"
]
}
],
"source": [
"INCA_script.run_INCA_in_MATLAB(INCA_base_directory, script_folder, matlab_script, runner_script)"
]
},
{
"cell_type": "markdown",
"id": "0cb1abea",
"metadata": {},
"source": [
"# Reimport MFA data after calculation in INCA"
]
},
{
"cell_type": "markdown",
"id": "74b0b1e1",
"metadata": {},
"source": [
"This is an example notebook for the reimport module that is a part of the INCA processing tools of BFAIR. The calculated fluxes/fragments/etc. (other output of INCA), can be reimported and worked on here in Python."
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "a52adffe",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import time\n",
"import ast\n",
"import sys\n",
"import escher\n",
"from BFAIR.mfa.INCA import INCA_reimport"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "abc3dede",
"metadata": {},
"outputs": [],
"source": [
"filename = 'data/MFA_modelInputsData/TestFile.mat'\n",
"simulation_info = pd.read_csv('data/MFA_modelInputsData/Re-import/experimentalMS_data_I.csv')\n",
"simulation_id = 'WTEColi_113C80_U13C20_01'"
]
},
{
"cell_type": "markdown",
"id": "cfe310dd",
"metadata": {},
"source": [
"### Stepwise import"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "ff6a7926",
"metadata": {},
"outputs": [],
"source": [
"reimport_data = INCA_reimport()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "2f616125",
"metadata": {},
"outputs": [],
"source": [
"# Succession of functions\n",
"info = reimport_data.extract_file_info(filename)\n",
"parallel, non_stationary = reimport_data.det_simulation_type(simulation_info)\n",
"m, f = reimport_data.data_extraction(filename)\n",
"model_info = reimport_data.extract_model_info(m)\n",
"simulationParameters = reimport_data.extract_sim_params(simulation_id, info, m, filename)\n",
"fittedData = reimport_data.extract_base_stats(f, simulation_id, info)\n",
"f_mnt_info = reimport_data.get_fit_info(f)\n",
"fittedMeasuredFluxes, fittedMeasuredFragments = reimport_data.sort_fit_info(f_mnt_info, simulation_info, fittedData)\n",
"f_mnt_res_info = reimport_data.get_residuals_info(f, simulation_info)\n",
"fittedMeasuredFluxResiduals, fittedMeasuredFragmentResiduals = reimport_data.sort_residual_info(f_mnt_res_info, simulation_info, fittedData)\n",
"f_par_info = reimport_data.get_fitted_parameters(f, simulation_info)\n",
"fittedFluxes, fittedFragments = reimport_data.sort_parameter_info(f_par_info, simulation_info, fittedData)"
]
},
{
"cell_type": "markdown",
"id": "f0724ee7",
"metadata": {},
"source": [
"### Alternative shortcut"
]
},
{
"cell_type": "markdown",
"id": "ab17abae",
"metadata": {},
"source": [
"There is also a summary function that performes all the custom re-import functions subsequently"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "c34c010d",
"metadata": {},
"outputs": [],
"source": [
"reimport_data_directly = INCA_reimport()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "deb854a0",
"metadata": {},
"outputs": [],
"source": [
"fittedData2, fittedFluxes2, fittedFragments2, fittedMeasuredFluxes2, fittedMeasuredFragments2, fittedMeasuredFluxResiduals2, fittedMeasuredFragmentResiduals2, simulationParameters2 = reimport_data_directly.reimport(filename, simulation_info, simulation_id)"
]
},
{
"cell_type": "markdown",
"id": "3d2a6922",
"metadata": {},
"source": [
"# Model compatibility"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "21e6e7e3",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import cobra\n",
"from BFAIR.mfa.INCA import INCA_reimport\n",
"from BFAIR.mfa.sampling import (\n",
" model_rxn_overlap,\n",
" rxn_coverage,\n",
" split_lumped_rxns,\n",
" split_lumped_reverse_rxns,\n",
" find_reverse_rxns,\n",
" combine_split_rxns,\n",
" cobra_add_split_rxns,\n",
" find_biomass_reaction,\n",
" replace_biomass_rxn_name,\n",
")"
]
},
{
"cell_type": "markdown",
"id": "7926d4a4",
"metadata": {},
"source": [
"Here we import the model"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "583d9f74",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Academic license - for non-commercial use only - expires 2021-07-30\n",
"Using license file /Users/matmat/gurobi.lic\n"
]
}
],
"source": [
"model = cobra.io.load_json_model('data/FIA_MS_example/database_files/iJO1366.json')"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "c613e6f3",
"metadata": {},
"outputs": [],
"source": [
"fittedFluxes = replace_biomass_rxn_name(fittedFluxes, biomass_string='Biomass', biomass_rxn_name='BIOMASS_Ec_iJO1366_core_53p95M')"
]
},
{
"cell_type": "markdown",
"id": "b5b75256",
"metadata": {},
"source": [
"Next step, adjust the names of our MFA data so that they can be assigned to our model's reactions"
]
},
{
"cell_type": "markdown",
"id": "ffd1ab78",
"metadata": {},
"source": [
"Observations: \n",
"1) some reaction names include more than one metabolite\n",
"2) many unassigned amino acids end with `SYN` and\n",
"3) some exchange reactions include `LPAREN_` and `RPAREN_`. Let's try to do something about that\n",
"4) probably all `_reverse` reactions could not be assigned"
]
},
{
"cell_type": "markdown",
"id": "4862960a",
"metadata": {},
"source": [
"1) Split the lumped reactions and give all of them the same bounds"
]
},
{
"cell_type": "markdown",
"id": "22323453",
"metadata": {},
"source": [
"So let's pick the ones we want. Let's save the reverse reactions for a separate step"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "18804fd3",
"metadata": {},
"outputs": [],
"source": [
"lumped_ids = [1, 21, 26, 27, 53, 54, 67, 74, 82]\n",
"mask = []\n",
"overlap = model_rxn_overlap(fittedFluxes, model)\n",
"for i in overlap.iteritems():\n",
" if i[0] in lumped_ids:\n",
" mask.append(True)\n",
" else:\n",
" mask.append(False)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "38510a64",
"metadata": {},
"outputs": [],
"source": [
"lumped_rxns = model_rxn_overlap(fittedFluxes, model)[mask]\n",
"fittedFluxes = split_lumped_rxns(lumped_rxns, fittedFluxes)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "9c77f1f1",
"metadata": {},
"outputs": [],
"source": [
"lumped_reverse_ids = [2, 28, 55, 68]\n",
"mask_reverse = []\n",
"for i in model_rxn_overlap(fittedFluxes, model).iteritems():\n",
" if i[0] in lumped_reverse_ids:\n",
" mask_reverse.append(True)\n",
" else:\n",
" mask_reverse.append(False)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "025cb1c9",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ACONTa_ACONTb_reverse\n",
"GAPD_PGK_reverse\n",
"NADTRHD_THD2pp_reverse\n",
"PTAr_ACKr_ACS_reverse\n"
]
}
],
"source": [
"lumped_reverse_rxns = model_rxn_overlap(fittedFluxes, model)[mask_reverse]\n",
"fittedFluxes = split_lumped_reverse_rxns(lumped_reverse_rxns, fittedFluxes)"
]
},
{
"cell_type": "markdown",
"id": "0e542dc5",
"metadata": {},
"source": [
"2) SYN, these reactions might be lumped; let's investigate!"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "42829d0e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ARGAGMt7pp\n",
"ARGDC\n",
"ARGDCpp\n",
"ARGORNt7pp\n",
"ARGSL\n",
"ARGSS\n",
"ARGTRS\n",
"ARGabcpp\n",
"ARGt3pp\n",
"ARGtex\n"
]
}
],
"source": [
"for rxn in model.reactions:\n",
" if 'ARG' in rxn.id:\n",
" print(rxn.id)"
]
},
{
"cell_type": "markdown",
"id": "051fd4ab",
"metadata": {},
"source": [
"3) Let's remove the extra bits in the exchange reaction strings"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "d0255d74",
"metadata": {},
"outputs": [],
"source": [
"for i, row in fittedFluxes.iterrows():\n",
" if 'LPAREN_' in row['rxn_id']:\n",
" fittedFluxes.at[i, 'rxn_id'] = row['rxn_id'].replace('LPAREN_', '').replace('_RPAREN_', '')"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "a3a008b4",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"50.0 %\n"
]
}
],
"source": [
"rxn_coverage(fittedFluxes, model)"
]
},
{
"cell_type": "markdown",
"id": "651f1ec3",
"metadata": {},
"source": [
"4) Reverse. Let's check if the forward and reverse fluxes are actually separate. If not, then the two of them will define the bounds together. If they are, then we should add new reverse reactions to the model."
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "26d99721",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"These reactions need to be split into two: ACONTa\n",
"These reactions need to be split into two: FUM\n",
"These reactions need to be split into two: GAPD\n",
"These reactions need to be split into two: ICDHyr\n",
"These reactions need to be split into two: MlthfSYN\n",
"These reactions need to be split into two: PGM\n",
"These reactions need to be split into two: PTAr\n",
"These reactions need to be split into two: ACONTb\n",
"These reactions need to be split into two: PGK\n",
"These reactions need to be split into two: ACKr\n",
"These reactions need to be split into two: ACS\n"
]
}
],
"source": [
"fittedFluxes, rxns_to_split = combine_split_rxns(fittedFluxes)"
]
},
{
"cell_type": "markdown",
"id": "d00044de",
"metadata": {},
"source": [
"The reactions that are acutally separate (i.e. non-overlapping bounds) are a problem. COBRA has some ways to account for that but they seem to be quite involved. An easier way to deal with that is that just add the reverse reaction as a separate reaction to the model; it's the same reaction, just with the inverse direction. The following method is \"destructive\", i.e. it will alter the model. Be aware of that."
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "251d4704",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"- Added ACONTa to model\n",
"- Added FUM to model\n",
"- Added GAPD to model\n",
"- Added ICDHyr to model\n",
"# Could not add MlthfSYN to model\n",
"- Added PGM to model\n",
"- Added PTAr to model\n",
"- Added ACONTb to model\n",
"- Added PGK to model\n",
"- Added ACKr to model\n",
"- Added ACS to model\n"
]
}
],
"source": [
"cobra_add_split_rxns(rxns_to_split, model)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "58b6da20",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"32.0 %\n"
]
}
],
"source": [
"rxn_coverage(fittedFluxes, model)"
]
},
{
"cell_type": "markdown",
"id": "f990c980",
"metadata": {},
"source": [
"# Sampling"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "83bedce0",
"metadata": {},
"outputs": [],
"source": [
"import pickle\n",
"import pandas as pd\n",
"import escher\n",
"import cobra\n",
"from cobra import Reaction\n",
"from tabulate import tabulate\n",
"from gurobipy import Model as GRBModel\n",
"from BFAIR.mfa.INCA import INCA_reimport\n",
"from BFAIR.mfa.sampling import (\n",
" add_constraints,\n",
" add_feasible_constraints,\n",
" find_biomass_reaction,\n",
" get_min_solution_val,\n",
" replace_biomass_rxn_name,\n",
" bound_relaxation,\n",
")\n",
"from BFAIR.mfa.visualization import (\n",
" reshape_fluxes_escher,\n",
")"
]
},
{
"cell_type": "markdown",
"id": "46c63f2c",
"metadata": {},
"source": [
"Let's copy the model so we won't have to go through the pre-processing steps again"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "e4a2b6c9",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmp_chk2sx7.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n",
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmpmxmauzs1.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n"
]
}
],
"source": [
"model_original = model.copy()"
]
},
{
"cell_type": "markdown",
"id": "9704f777",
"metadata": {},
"source": [
"#### Re-integration"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "e02004d3",
"metadata": {},
"outputs": [],
"source": [
"original_solution = model.optimize()"
]
},
{
"cell_type": "markdown",
"id": "ea87c8df",
"metadata": {},
"source": [
"## Dealing with infeasible solutions - exclusion"
]
},
{
"cell_type": "markdown",
"id": "cd5d277f",
"metadata": {},
"source": [
"The easier way to deal with this issue is to simply exclude the constraints that render a model infeasible. We can do that by adding the calculated bounds one by one. If we come across a reaction whose bounds cause trouble, we restart the process and skip this one. This might have to be done a few times to exclude all troublemakers. the `add_feasible_constraints()` functions takes care of that for us. Let's reset the model first."
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "2a43ee30",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmp00zj94av.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n",
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmpumlr_73d.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n"
]
}
],
"source": [
"model = model_original.copy()"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "38cc72ac",
"metadata": {},
"outputs": [],
"source": [
"min_val = get_min_solution_val(fittedFluxes, biomass_string='BIOMASS')"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "7d45312d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"--- start ---\n",
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmps03pnhwe.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n",
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmpim6mqwqz.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n",
"Did not work for 26dap_DASH_MSYN\n",
"Did not work for ArgSYN\n",
"Solution infeasible if adding ASPTA\n",
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmpkrd0zf0i.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/matmat/opt/anaconda3/envs/bfair/lib/python3.8/site-packages/cobra/util/solver.py:430: UserWarning: solver status is 'infeasible'\n",
" warn(\"solver status is '{}'\".format(status), UserWarning)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmpvuxs0hal.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n",
"Did not work for 26dap_DASH_MSYN\n",
"Did not work for ArgSYN\n",
"Solution infeasible if adding DAPDC\n",
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmper_uovdu.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n",
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmp6_vqe36_.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n",
"Did not work for 26dap_DASH_MSYN\n",
"Did not work for ArgSYN\n",
"Solution infeasible if adding BIOMASS_Ec_iJO1366_core_53p95M\n",
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmp0s5w3d3i.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n",
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmp2a5zg8ta.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n",
"Did not work for 26dap_DASH_MSYN\n",
"Did not work for ArgSYN\n",
"Did not work for EX_co2_e_unlabeled\n",
"Did not work for EX_glc_e\n",
"Solution infeasible if adding EX_nh4_e\n",
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmpx_f0nfiu.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n",
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmpxh11_j_f.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n",
"Did not work for 26dap_DASH_MSYN\n",
"Did not work for ArgSYN\n",
"Did not work for EX_co2_e_unlabeled\n",
"Did not work for EX_glc_e\n",
"Solution infeasible if adding EX_o2_e\n",
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmpbx4v7fay.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n",
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmpmql7eha_.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n",
"Did not work for 26dap_DASH_MSYN\n",
"Did not work for ArgSYN\n",
"Did not work for EX_co2_e_unlabeled\n",
"Did not work for EX_glc_e\n",
"Solution infeasible if adding EX_so4_e\n",
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmp23akxvi6.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n",
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmp_anm8730.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n",
"Did not work for 26dap_DASH_MSYN\n",
"Did not work for ArgSYN\n",
"Did not work for EX_co2_e_unlabeled\n",
"Did not work for EX_glc_e\n",
"Did not work for FADR\n",
"Solution infeasible if adding GLNS\n",
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmpdez2kna4.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n",
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmp8265py9h.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n",
"Did not work for 26dap_DASH_MSYN\n",
"Did not work for ArgSYN\n",
"Did not work for EX_co2_e_unlabeled\n",
"Did not work for EX_glc_e\n",
"Did not work for FADR\n",
"Did not work for GluSYN\n",
"Did not work for HisSYN\n",
"Did not work for IleSYN\n",
"Did not work for LeuSYN\n",
"Did not work for MetSYN\n",
"Did not work for MlthfSYN\n",
"Did not work for MlthfSYN_reverse\n",
"Did not work for NADH\n",
"Did not work for PheSYN\n",
"Did not work for ProSYN\n",
"Did not work for SerSYN\n",
"Did not work for SUCCOAS\n",
"Did not work for ThrSYN\n",
"Did not work for TKT1a\n",
"Did not work for TKT1b\n",
"Did not work for TKT2a\n",
"Did not work for TKT2b\n",
"Did not work for TrpSYN\n",
"Did not work for TyrSYN\n",
"Did not work for ValSYN\n",
"Did not work for CYTBD\n",
"Did not work for HYD\n",
"Did not work for ATPS4r\n",
"---------------------------\n",
"Total number of restarts: 7\n",
"add_feasible_constraints takes 0h: 1min: 34sec to run\n",
"--- end ---\n"
]
}
],
"source": [
"model, problems = add_feasible_constraints(model, fittedFluxes, min_val=min_val)"
]
},
{
"cell_type": "markdown",
"id": "80941307",
"metadata": {},
"source": [
"The `model` is our newly constrained model and the problematic reactions can be listed in `problems`."
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "477fdbd8",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['ASPTA',\n",
" 'DAPDC',\n",
" 'BIOMASS_Ec_iJO1366_core_53p95M',\n",
" 'EX_nh4_e',\n",
" 'EX_o2_e',\n",
" 'EX_so4_e',\n",
" 'GLNS']"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"problems"
]
},
{
"cell_type": "markdown",
"id": "7cebe2ca",
"metadata": {},
"source": [
"Now let's see what an effect these new bounds had on the predicted growth rate (the objective value) of our model"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "82a120df",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"Optimal solution with objective value 0.807
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
fluxes
\n",
"
reduced_costs
\n",
"
\n",
" \n",
" \n",
"
\n",
"
EX_cm_e
\n",
"
0.000000
\n",
"
0.0
\n",
"
\n",
"
\n",
"
EX_cmp_e
\n",
"
0.000000
\n",
"
-0.0
\n",
"
\n",
"
\n",
"
EX_co2_e
\n",
"
15.000000
\n",
"
-0.0
\n",
"
\n",
"
\n",
"
EX_cobalt2_e
\n",
"
-0.000020
\n",
"
-0.0
\n",
"
\n",
"
\n",
"
DM_4crsol_c
\n",
"
0.000180
\n",
"
0.0
\n",
"
\n",
"
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
\n",
"
\n",
"
PTAr_reverse
\n",
"
0.000000
\n",
"
0.0
\n",
"
\n",
"
\n",
"
ACONTb_reverse
\n",
"
0.000000
\n",
"
0.0
\n",
"
\n",
"
\n",
"
PGK_reverse
\n",
"
23.706810
\n",
"
0.0
\n",
"
\n",
"
\n",
"
ACKr_reverse
\n",
"
4.783906
\n",
"
0.0
\n",
"
\n",
"
\n",
"
ACS_reverse
\n",
"
0.000000
\n",
"
0.0
\n",
"
\n",
" \n",
"
\n",
"
2593 rows × 2 columns
\n",
"
"
],
"text/plain": [
""
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"new_bounds_solution = model.optimize()\n",
"new_bounds_solution"
]
},
{
"cell_type": "markdown",
"id": "11525ebe",
"metadata": {},
"source": [
"And here's the star of the show, our sampling method. We trust our models because... we have to! And because smart people that knew what they were doing set them up. So in order to gain more confidence in our MFA data, we sample the model after adding the calculated bound for some of the reactions and re-calculate the fluxes a number of time. Then, we take the mean and take that as the most trustworthy calculated flux. These fluxes can be visualized, for example in tools like `Escher`"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "4805f67a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmp7x92cxly.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n",
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmpkrlck1yf.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n"
]
}
],
"source": [
"sampled_fluxes = cobra.sampling.sample(model, n=100, processes=2)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "6e9e7311",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
EX_cm_e
\n",
"
EX_cmp_e
\n",
"
EX_co2_e
\n",
"
EX_cobalt2_e
\n",
"
DM_4crsol_c
\n",
"
DM_5drib_c
\n",
"
DM_aacald_c
\n",
"
DM_amob_c
\n",
"
DM_mththf_c
\n",
"
EX_colipa_e
\n",
"
...
\n",
"
ACONTa_reverse
\n",
"
FUM_reverse
\n",
"
GAPD_reverse
\n",
"
ICDHyr_reverse
\n",
"
PGM_reverse
\n",
"
PTAr_reverse
\n",
"
ACONTb_reverse
\n",
"
PGK_reverse
\n",
"
ACKr_reverse
\n",
"
ACS_reverse
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
0.0
\n",
"
0.0
\n",
"
14.999088
\n",
"
-1.339147e-06
\n",
"
0.000012
\n",
"
0.000013
\n",
"
0.0
\n",
"
1.115956e-07
\n",
"
0.000075
\n",
"
0.000199
\n",
"
...
\n",
"
2.493187
\n",
"
2.480205
\n",
"
0.000015
\n",
"
2.405819
\n",
"
21.358313
\n",
"
1.039291
\n",
"
2.493187
\n",
"
23.187728
\n",
"
5.067647
\n",
"
0.024882
\n",
"
\n",
"
\n",
"
1
\n",
"
0.0
\n",
"
0.0
\n",
"
14.999084
\n",
"
-1.339510e-06
\n",
"
0.000012
\n",
"
0.000013
\n",
"
0.0
\n",
"
1.116258e-07
\n",
"
0.000076
\n",
"
0.000200
\n",
"
...
\n",
"
2.493826
\n",
"
2.480803
\n",
"
0.000017
\n",
"
2.406503
\n",
"
21.358295
\n",
"
1.039288
\n",
"
2.493826
\n",
"
23.187678
\n",
"
5.067628
\n",
"
0.024827
\n",
"
\n",
"
\n",
"
2
\n",
"
0.0
\n",
"
0.0
\n",
"
14.998737
\n",
"
-1.339462e-06
\n",
"
0.000012
\n",
"
0.000013
\n",
"
0.0
\n",
"
1.116218e-07
\n",
"
0.000460
\n",
"
0.000200
\n",
"
...
\n",
"
2.471987
\n",
"
2.434850
\n",
"
0.000414
\n",
"
2.362223
\n",
"
21.342829
\n",
"
0.997276
\n",
"
2.471987
\n",
"
23.185357
\n",
"
5.088901
\n",
"
0.046730
\n",
"
\n",
"
\n",
"
3
\n",
"
0.0
\n",
"
0.0
\n",
"
14.998857
\n",
"
-1.339745e-06
\n",
"
0.000012
\n",
"
0.000015
\n",
"
0.0
\n",
"
1.116451e-07
\n",
"
0.000460
\n",
"
0.000200
\n",
"
...
\n",
"
2.470665
\n",
"
2.425709
\n",
"
0.000386
\n",
"
2.362204
\n",
"
21.342890
\n",
"
0.996040
\n",
"
2.470665
\n",
"
23.185121
\n",
"
5.088558
\n",
"
0.043674
\n",
"
\n",
"
\n",
"
4
\n",
"
0.0
\n",
"
0.0
\n",
"
14.999487
\n",
"
-1.339599e-06
\n",
"
0.000012
\n",
"
0.000016
\n",
"
0.0
\n",
"
1.116330e-07
\n",
"
0.000460
\n",
"
0.000191
\n",
"
...
\n",
"
2.473141
\n",
"
2.431752
\n",
"
0.000660
\n",
"
2.370946
\n",
"
21.342124
\n",
"
1.003584
\n",
"
2.473141
\n",
"
23.184075
\n",
"
5.079221
\n",
"
0.040048
\n",
"
\n",
"
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
\n",
"
\n",
"
95
\n",
"
0.0
\n",
"
0.0
\n",
"
14.156739
\n",
"
-5.957167e-07
\n",
"
0.000005
\n",
"
0.000739
\n",
"
0.0
\n",
"
4.950141e-08
\n",
"
0.030364
\n",
"
0.004158
\n",
"
...
\n",
"
18.854177
\n",
"
12.395875
\n",
"
0.904012
\n",
"
8.509575
\n",
"
19.718567
\n",
"
10.244867
\n",
"
18.813388
\n",
"
20.605212
\n",
"
10.661989
\n",
"
14.043184
\n",
"
\n",
"
\n",
"
96
\n",
"
0.0
\n",
"
0.0
\n",
"
14.164929
\n",
"
-3.979189e-07
\n",
"
0.000004
\n",
"
0.000812
\n",
"
0.0
\n",
"
3.327362e-08
\n",
"
0.030274
\n",
"
0.001995
\n",
"
...
\n",
"
19.218672
\n",
"
13.104670
\n",
"
1.042889
\n",
"
9.324296
\n",
"
19.979771
\n",
"
10.366559
\n",
"
19.177943
\n",
"
20.593370
\n",
"
10.525130
\n",
"
13.664941
\n",
"
\n",
"
\n",
"
97
\n",
"
0.0
\n",
"
0.0
\n",
"
14.187878
\n",
"
-4.555902e-07
\n",
"
0.000004
\n",
"
0.000781
\n",
"
0.0
\n",
"
3.790877e-08
\n",
"
0.023998
\n",
"
0.002089
\n",
"
...
\n",
"
19.057096
\n",
"
13.327001
\n",
"
1.023691
\n",
"
9.848673
\n",
"
20.175344
\n",
"
10.980365
\n",
"
19.017571
\n",
"
20.545579
\n",
"
10.227273
\n",
"
13.382844
\n",
"
\n",
"
\n",
"
98
\n",
"
0.0
\n",
"
0.0
\n",
"
14.219565
\n",
"
-4.161341e-07
\n",
"
0.000004
\n",
"
0.000765
\n",
"
0.0
\n",
"
3.481715e-08
\n",
"
0.005227
\n",
"
0.001707
\n",
"
...
\n",
"
18.894520
\n",
"
13.078425
\n",
"
1.056791
\n",
"
9.572593
\n",
"
20.411139
\n",
"
10.631993
\n",
"
18.855104
\n",
"
20.774070
\n",
"
10.187578
\n",
"
13.051384
\n",
"
\n",
"
\n",
"
99
\n",
"
0.0
\n",
"
0.0
\n",
"
14.183204
\n",
"
-3.975896e-07
\n",
"
0.000004
\n",
"
0.000768
\n",
"
0.0
\n",
"
3.330955e-08
\n",
"
0.110367
\n",
"
0.002118
\n",
"
...
\n",
"
19.039639
\n",
"
13.298455
\n",
"
1.033253
\n",
"
9.571850
\n",
"
20.300731
\n",
"
10.922345
\n",
"
19.000201
\n",
"
20.785488
\n",
"
10.317175
\n",
"
13.033961
\n",
"
\n",
" \n",
"
\n",
"
100 rows × 2593 columns
\n",
"
"
],
"text/plain": [
" EX_cm_e EX_cmp_e EX_co2_e EX_cobalt2_e DM_4crsol_c DM_5drib_c \\\n",
"0 0.0 0.0 14.999088 -1.339147e-06 0.000012 0.000013 \n",
"1 0.0 0.0 14.999084 -1.339510e-06 0.000012 0.000013 \n",
"2 0.0 0.0 14.998737 -1.339462e-06 0.000012 0.000013 \n",
"3 0.0 0.0 14.998857 -1.339745e-06 0.000012 0.000015 \n",
"4 0.0 0.0 14.999487 -1.339599e-06 0.000012 0.000016 \n",
".. ... ... ... ... ... ... \n",
"95 0.0 0.0 14.156739 -5.957167e-07 0.000005 0.000739 \n",
"96 0.0 0.0 14.164929 -3.979189e-07 0.000004 0.000812 \n",
"97 0.0 0.0 14.187878 -4.555902e-07 0.000004 0.000781 \n",
"98 0.0 0.0 14.219565 -4.161341e-07 0.000004 0.000765 \n",
"99 0.0 0.0 14.183204 -3.975896e-07 0.000004 0.000768 \n",
"\n",
" DM_aacald_c DM_amob_c DM_mththf_c EX_colipa_e ... ACONTa_reverse \\\n",
"0 0.0 1.115956e-07 0.000075 0.000199 ... 2.493187 \n",
"1 0.0 1.116258e-07 0.000076 0.000200 ... 2.493826 \n",
"2 0.0 1.116218e-07 0.000460 0.000200 ... 2.471987 \n",
"3 0.0 1.116451e-07 0.000460 0.000200 ... 2.470665 \n",
"4 0.0 1.116330e-07 0.000460 0.000191 ... 2.473141 \n",
".. ... ... ... ... ... ... \n",
"95 0.0 4.950141e-08 0.030364 0.004158 ... 18.854177 \n",
"96 0.0 3.327362e-08 0.030274 0.001995 ... 19.218672 \n",
"97 0.0 3.790877e-08 0.023998 0.002089 ... 19.057096 \n",
"98 0.0 3.481715e-08 0.005227 0.001707 ... 18.894520 \n",
"99 0.0 3.330955e-08 0.110367 0.002118 ... 19.039639 \n",
"\n",
" FUM_reverse GAPD_reverse ICDHyr_reverse PGM_reverse PTAr_reverse \\\n",
"0 2.480205 0.000015 2.405819 21.358313 1.039291 \n",
"1 2.480803 0.000017 2.406503 21.358295 1.039288 \n",
"2 2.434850 0.000414 2.362223 21.342829 0.997276 \n",
"3 2.425709 0.000386 2.362204 21.342890 0.996040 \n",
"4 2.431752 0.000660 2.370946 21.342124 1.003584 \n",
".. ... ... ... ... ... \n",
"95 12.395875 0.904012 8.509575 19.718567 10.244867 \n",
"96 13.104670 1.042889 9.324296 19.979771 10.366559 \n",
"97 13.327001 1.023691 9.848673 20.175344 10.980365 \n",
"98 13.078425 1.056791 9.572593 20.411139 10.631993 \n",
"99 13.298455 1.033253 9.571850 20.300731 10.922345 \n",
"\n",
" ACONTb_reverse PGK_reverse ACKr_reverse ACS_reverse \n",
"0 2.493187 23.187728 5.067647 0.024882 \n",
"1 2.493826 23.187678 5.067628 0.024827 \n",
"2 2.471987 23.185357 5.088901 0.046730 \n",
"3 2.470665 23.185121 5.088558 0.043674 \n",
"4 2.473141 23.184075 5.079221 0.040048 \n",
".. ... ... ... ... \n",
"95 18.813388 20.605212 10.661989 14.043184 \n",
"96 19.177943 20.593370 10.525130 13.664941 \n",
"97 19.017571 20.545579 10.227273 13.382844 \n",
"98 18.855104 20.774070 10.187578 13.051384 \n",
"99 19.000201 20.785488 10.317175 13.033961 \n",
"\n",
"[100 rows x 2593 columns]"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sampled_fluxes"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "e52f916f",
"metadata": {},
"outputs": [],
"source": [
"fluxes_sampling = reshape_fluxes_escher(sampled_fluxes)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "8470ab38",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"\n",
" \n",
"\n",
" \n"
],
"text/plain": [
""
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sampled_flux_map = escher.Builder('e_coli_core.Core metabolism',\n",
" reaction_data = fluxes_sampling).display_in_notebook()\n",
"sampled_flux_map"
]
},
{
"cell_type": "markdown",
"id": "85034a57",
"metadata": {},
"source": [
"There are also other ways to cosolidate the MFA calculations and the constraint based flux predictions. One of these is lMOMA (linear Minimization Of Metabolic Adjustment). MOMA assumes that the fluxes before and after adding the new constraints should be similar, so it aims to predicting an optimum for the newly constrined model while keeping the differences to the original model small. We suggest using pFBA (parsimonious Flux Balance Analysis) instead of regular FBA for this step as pFBA aims to keep the overal fluxes low."
]
},
{
"cell_type": "markdown",
"id": "a550baa8",
"metadata": {},
"source": [
"## Dealing with infeasible solutions - relaxation"
]
},
{
"cell_type": "markdown",
"id": "6af392ea",
"metadata": {},
"source": [
"Another way of dealing with infeasible models is to relax the added constraints to the point that it works again. You will need to have the Gurobi solver installed for this. The same principle is used in the `BFAIR thermo` tools. For that we add our constraints to a model that will now be infeasible. Have I meantioned that this is much more elegant, better and that you should do that? It is. The other method is *fine* but you exclude reactions and, in general, it is always better to use as much as possible of the information that is available to you."
]
},
{
"cell_type": "code",
"execution_count": 39,
"id": "620d16cc",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmpvqr73dw6.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n",
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmphajgz79_.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n"
]
}
],
"source": [
"model = model_original.copy()"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "b6931fb5",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"--- start ---\n",
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmp56xf2ylp.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n",
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmp64r6tsdy.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n",
"Did not work for 26dap_DASH_MSYN\n",
"Did not work for ArgSYN\n",
"Did not work for EX_co2_e_unlabeled\n",
"Did not work for EX_glc_e\n",
"Did not work for FADR\n",
"Did not work for GluSYN\n",
"Did not work for HisSYN\n",
"Did not work for IleSYN\n",
"Did not work for LeuSYN\n",
"Did not work for MetSYN\n",
"Did not work for MlthfSYN\n",
"Did not work for MlthfSYN_reverse\n",
"Did not work for NADH\n",
"Did not work for PheSYN\n",
"Did not work for ProSYN\n",
"Did not work for SerSYN\n",
"Did not work for SUCCOAS\n",
"Did not work for ThrSYN\n",
"Did not work for TKT1a\n",
"Did not work for TKT1b\n",
"Did not work for TKT2a\n",
"Did not work for TKT2b\n",
"Did not work for TrpSYN\n",
"Did not work for TyrSYN\n",
"Did not work for ValSYN\n",
"Did not work for CYTBD\n",
"Did not work for HYD\n",
"Did not work for ATPS4r\n",
"add_constraints takes 0h: 0min: 11sec to run\n",
"--- end ---\n"
]
}
],
"source": [
"model = add_constraints(model, fittedFluxes)"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "14824c8d",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/matmat/opt/anaconda3/envs/bfair/lib/python3.8/site-packages/cobra/util/solver.py:430: UserWarning: solver status is 'infeasible'\n",
" warn(\"solver status is '{}'\".format(status), UserWarning)\n"
]
},
{
"data": {
"text/html": [
"infeasible solution"
],
"text/plain": [
""
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.optimize()"
]
},
{
"cell_type": "markdown",
"id": "e4c39a06",
"metadata": {},
"source": [
"Then we make use of the handy `bound_relaxation()` function that will test our model to figure out which of these added bounds need to be adjusted and return a DataFrame that describes the affected functions and the gravity of the suggested changes. If we allow this function to be `desctructive` it will adjust the input model right away."
]
},
{
"cell_type": "code",
"execution_count": 42,
"id": "0d13bbcb",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"--- start ---\n",
"bound_relaxation takes 0h: 0min: 0sec to run\n",
"--- end ---\n"
]
},
{
"data": {
"text/html": [
"
"
],
"text/plain": [
""
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"relaxed_solution = model.optimize()\n",
"relaxed_solution"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "6a06cb51",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.7"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"relaxed_solution.fluxes[\"BIOMASS_Ec_iJO1366_core_53p95M\"]"
]
},
{
"cell_type": "markdown",
"id": "e2259e1e",
"metadata": {},
"source": [
"And here's the star of the show, our sampling method. We trust our models because... we have to! And because smart people that knew what they were doing set them up. So in order to gain more confidence in our MFA data, we sample the model after adding the calculated bound for some of the reactions and re-calculate the fluxes a number of time. Then, we take the mean and take that as the most trustworthy calculated flux. These fluxes can be visualized, for example in tools like `Escher`.\n",
"So here is the point where we can let the power of constraint based models work for us and make use of the tools mentioned above in order to adjust the fluxes calculated using MFA so that they nicely fit into our model."
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "ca472188",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmpdxjoiq2r.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n",
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmpwimsstip.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n"
]
}
],
"source": [
"relaxed_sampled_fluxes = cobra.sampling.sample(model, n=100, processes=2)"
]
},
{
"cell_type": "code",
"execution_count": 46,
"id": "916dfba0",
"metadata": {},
"outputs": [],
"source": [
"relaxed_fluxes_sampling = reshape_fluxes_escher(relaxed_sampled_fluxes)"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "8e369c6c",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"\n",
" \n",
"\n",
" \n"
],
"text/plain": [
""
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"relaxed_flux_map = escher.Builder('e_coli_core.Core metabolism',\n",
" reaction_data = relaxed_fluxes_sampling).display_in_notebook()\n",
"relaxed_flux_map"
]
},
{
"cell_type": "markdown",
"id": "121c5287",
"metadata": {},
"source": [
"## Alternatives"
]
},
{
"cell_type": "markdown",
"id": "1f36419c",
"metadata": {},
"source": [
"There are also other ways to cosolidate the MFA calculations and the constraint based flux predictions. "
]
},
{
"cell_type": "markdown",
"id": "33ba87be",
"metadata": {},
"source": [
"#### MOMA"
]
},
{
"cell_type": "markdown",
"id": "1778b0c9",
"metadata": {},
"source": [
"One of these is lMOMA (linear Minimization Of Metabolic Adjustment). MOMA assumes that the fluxes before and after adding the new constraints should be similar, so it aims to predicting an optimum for the newly constrined model while keeping the differences to the original model small. We suggest using pFBA (parsimonious Flux Balance Analysis) instead of regular FBA for this step as pFBA aims to keep the overal fluxes low."
]
},
{
"cell_type": "markdown",
"id": "8ba83713",
"metadata": {},
"source": [
"From [Volkova, 2020](https://www.mdpi.com/2218-1989/10/8/303/htm):\n",
"\n",
"\"While FBA with the objective of maximizing growth results in reasonable solutions for wild-type cells, it does not so for (unevolved) gene knockout mutants. While in principle wild-type cells optimize their growth, unevolved cells with knockouts do not. Since homeostasis governs metabolic reprogramming, we cannot assume that the cell will follow a common objective, such as maximizing its growth. To acknowledge the requirement for metabolic homeostasis, the minimization of metabolic adjustment (MOMA) approach was proposed. The main idea behind this method is that, to maintain homeostasis, the difference in fluxes before and after the perturbation should be minimal. MOMA predicts the fluxes of a knockout strain by assuming that the cell will have a minimal redistribution of fluxes compared to its ancestor.\"\n",
"We're using pFBA istead of FBA because, on top of optimizing the growth rate, it also minimizes the total sum of fluxes."
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "0706875c",
"metadata": {},
"outputs": [],
"source": [
"pfba_relaxed_solution = cobra.flux_analysis.pfba(model)"
]
},
{
"cell_type": "code",
"execution_count": 49,
"id": "cba63818",
"metadata": {},
"outputs": [],
"source": [
"moma_after_relaxed_MFA = cobra.flux_analysis.moma(\n",
" model=model, solution=pfba_relaxed_solution, linear=True)"
]
},
{
"cell_type": "code",
"execution_count": 50,
"id": "474a50f9",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.7"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"moma_after_relaxed_MFA.fluxes[\"BIOMASS_Ec_iJO1366_core_53p95M\"]"
]
},
{
"cell_type": "markdown",
"id": "ee443dbe",
"metadata": {},
"source": [
"#### ROOM"
]
},
{
"cell_type": "markdown",
"id": "0524c6c6",
"metadata": {},
"source": [
"From [Volkova, 2020](https://www.mdpi.com/2218-1989/10/8/303/htm):\n",
"\n",
"Another similar approach is the regulatory on/off minimization (ROOM), which minimizes the number of fluxes that are significantly different from the wild type. Wild-type fluxes, determined by FBA or other methods, need to be known in order to use these approaches. "
]
},
{
"cell_type": "code",
"execution_count": 51,
"id": "2b4f89a4",
"metadata": {},
"outputs": [],
"source": [
"room_after_relaxed_MFA = cobra.flux_analysis.room(\n",
" model=model, solution=pfba_relaxed_solution, linear=True, delta=0.03, epsilon=0.001)"
]
},
{
"cell_type": "code",
"execution_count": 52,
"id": "87e6f778",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.7"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"room_after_relaxed_MFA.fluxes[\"BIOMASS_Ec_iJO1366_core_53p95M\"]"
]
},
{
"cell_type": "code",
"execution_count": 53,
"id": "929d7de5",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Method Biomass function\n",
"------------------------------ ------------------\n",
"Before adding new constraints: 0.98\n",
"New constraints relaxed FBA: 0.7\n",
"New constraints relaxed pFBA: 0.7\n",
"New constraints relaxed MOMA: 0.7\n",
"New constraints relaxed ROOM: 0.7\n"
]
}
],
"source": [
"from tabulate import tabulate\n",
"results = [['Before adding new constraints:', round(original_solution.objective_value, 2)],\n",
" ['New constraints relaxed FBA:', round(relaxed_solution.objective_value, 2)],\n",
" ['New constraints relaxed pFBA:', round(pfba_relaxed_solution.fluxes[\"BIOMASS_Ec_iJO1366_core_53p95M\"], 2)],\n",
" ['New constraints relaxed MOMA:', round(moma_after_relaxed_MFA.fluxes[\"BIOMASS_Ec_iJO1366_core_53p95M\"], 2)],\n",
" ['New constraints relaxed ROOM:', round(room_after_relaxed_MFA.fluxes[\"BIOMASS_Ec_iJO1366_core_53p95M\"], 2)]]\n",
"print(tabulate(results, headers=[\"Method\", \"Biomass function\"]))"
]
},
{
"cell_type": "markdown",
"id": "d08246ce",
"metadata": {},
"source": [
"Of course also the MOMA results can be visualized with `Escher`. The `reshape_fluxes_escher()` can take both pandas DataFrames or cobra solutions as an input."
]
},
{
"cell_type": "code",
"execution_count": 54,
"id": "91c86129",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"\n",
" \n",
"\n",
" \n"
],
"text/plain": [
""
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fluxes_relaxed_moma = reshape_fluxes_escher(moma_after_relaxed_MFA)\n",
"moma_relaxed_flux_map = escher.Builder('e_coli_core.Core metabolism',\n",
" reaction_data = fluxes_relaxed_moma).display_in_notebook()\n",
"moma_relaxed_flux_map"
]
},
{
"cell_type": "code",
"execution_count": 55,
"id": "fe8687e0",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"\n",
" \n",
"\n",
" \n"
],
"text/plain": [
""
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fluxes_relaxed_room = reshape_fluxes_escher(room_after_relaxed_MFA)\n",
"room_relaxed_flux_map = escher.Builder('e_coli_core.Core metabolism',\n",
" reaction_data = fluxes_relaxed_room).display_in_notebook()\n",
"room_relaxed_flux_map"
]
},
{
"cell_type": "markdown",
"id": "881326d9",
"metadata": {},
"source": [
"# Pathway visualization"
]
},
{
"cell_type": "code",
"execution_count": 56,
"id": "8172011b",
"metadata": {},
"outputs": [],
"source": [
"from BFAIR.mfa.INCA import INCA_reimport\n",
"from BFAIR.mfa.utils import (\n",
" calculate_split_ratio,\n",
" plot_split_ratio,\n",
" get_observable_fluxes,\n",
" percent_observable_fluxes,\n",
" get_flux_precision,\n",
")\n",
"from BFAIR.mfa.visualization import (\n",
" reshape_fluxes_escher,\n",
" sampled_fluxes_minrange,\n",
" show_reactions,\n",
" plot_sampled_reaction_fluxes,\n",
" plot_all_subsystem_fluxes,\n",
" get_subsytem_reactions,\n",
" show_subsystems,\n",
" plot_subsystem_fluxes,\n",
")"
]
},
{
"cell_type": "markdown",
"id": "ac71744b",
"metadata": {},
"source": [
"The following steps are detailed in the notebooks `MFA_compatibility` and `MFA_feasibility_and_sampling`."
]
},
{
"cell_type": "code",
"execution_count": 57,
"id": "5b76db5e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmp79wklwb_.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n",
"Read LP format model from file /var/folders/mb/7cs2dcbn369_w97fqkfx47brjcxl49/T/tmp71xdwkpz.lp\n",
"Reading time = 0.02 seconds\n",
": 1805 rows, 5186 columns, 20446 nonzeros\n"
]
}
],
"source": [
"model = model_original.copy()"
]
},
{
"cell_type": "markdown",
"id": "2949a602",
"metadata": {},
"source": [
"## Investigate the sampled fluxes"
]
},
{
"cell_type": "markdown",
"id": "3e91335c",
"metadata": {},
"source": [
"A few plots of the distribution of points per reaction to visually inspect how gaussian the sample distributions are. In rare cases, bimodal distributions can be found"
]
},
{
"cell_type": "markdown",
"id": "650f8d79",
"metadata": {},
"source": [
"#### Sampled value distributions per reaction"
]
},
{
"cell_type": "code",
"execution_count": 58,
"id": "ee4682fe",
"metadata": {},
"outputs": [],
"source": [
"reactions, _ = get_subsytem_reactions(model, 14)"
]
},
{
"cell_type": "code",
"execution_count": 59,
"id": "be23046d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0: ACALD\n",
"1: ACKr\n",
"2: ACS\n",
"3: ALCD2x\n",
"4: FHL\n",
"5: LDH_D\n",
"6: OAADC\n",
"7: PFL\n",
"8: POR5\n",
"9: PTAr\n",
"10: PTAr_reverse\n",
"11: ACKr_reverse\n",
"12: ACS_reverse\n"
]
}
],
"source": [
"show_reactions(reactions)"
]
},
{
"cell_type": "markdown",
"id": "75e0704e",
"metadata": {},
"source": [
"Here are some plotting methods to better understand what we just created. These plots include a check for normal distributions; if the sampled fluxes for a reaction are normal distributed, we see a green histogram with a kernel density distribution in red. If they are not then the colors are inverted. Here are some examples:"
]
},
{
"cell_type": "markdown",
"id": "fbc499a2",
"metadata": {},
"source": [
"Reaction with normally distributed sampled fluxes:"
]
},
{
"cell_type": "code",
"execution_count": 60,
"id": "86a2d882",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[]"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_sampled_reaction_fluxes(relaxed_sampled_fluxes, reactions, reaction_id=0)"
]
},
{
"cell_type": "markdown",
"id": "7c4854c1",
"metadata": {},
"source": [
"We can also produce a summary plot for all the sampled reactions in a selected subsystem:"
]
},
{
"cell_type": "code",
"execution_count": 62,
"id": "f38406e8",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"_ = plot_all_subsystem_fluxes(relaxed_sampled_fluxes, reactions, bins=10)"
]
},
{
"cell_type": "markdown",
"id": "24bd1c14",
"metadata": {},
"source": [
"#### Box plots for several reactions of interest to visualize the distribution of points"
]
},
{
"cell_type": "markdown",
"id": "fc6d74f5",
"metadata": {},
"source": [
"This is a different way to have a look at the distributions of sampled values for a selected subsystem"
]
},
{
"cell_type": "markdown",
"id": "23b5b974",
"metadata": {},
"source": [
"We can exclude some reactions if their sampled fluxes are very small in order not to crowd the plot. Here we exclude every reaction whose max value does not exceed 1 and whose min value does not go below -1"
]
},
{
"cell_type": "code",
"execution_count": 63,
"id": "d03322fd",
"metadata": {},
"outputs": [],
"source": [
"reduced_relaxed_sampled_fluxes = sampled_fluxes_minrange(relaxed_sampled_fluxes, min_val=-1, max_val=1)"
]
},
{
"cell_type": "code",
"execution_count": 64,
"id": "1079b5ab",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_subsystem_fluxes(model, reduced_relaxed_sampled_fluxes, subsystem_id=14, no_zero_cols=True)"
]
},
{
"cell_type": "markdown",
"id": "330a64bd",
"metadata": {},
"source": [
"#### Calculating the flux splits at key branch points"
]
},
{
"cell_type": "markdown",
"id": "24da995a",
"metadata": {},
"source": [
"One important piece of information that can be extracted from calculated fluxes are the flux splits at branching points (e.g., glycolysis vs. PPP, TCA vs. acetate secretion, glyoxylate shunt vs. full TCA, etc.). This will provide information about which of the optional pathways branching off of a given intermediate will carry a higher flux that potentially interferes with a mapped out production strategy. Escher Maps as seen above can be used in order to identify the reactions leading to- and branching off these intermediates. Here we present the following splits as examples:"
]
},
{
"cell_type": "markdown",
"id": "b7251f86",
"metadata": {},
"source": [
"- Glycolysis/PPP: `EX_glc__D` compared to `PGI` and `G6PDH2r`\n",
"- Glyoxylate shunt/full TCA: `ACONTb` compared to `ICDHyr` and `ICL`\n",
"- TCA/acetate secretion: (`ACALD`, `PFL`, `PDH`) compared to `PTAr` and `CS`"
]
},
{
"cell_type": "markdown",
"id": "35ef5235",
"metadata": {},
"source": [
"These fluxes can either be single fluxes, selected by their IDs (see the first two examples) or a combination of multiple fluxes (see last example)"
]
},
{
"cell_type": "code",
"execution_count": 66,
"id": "80ad0eec",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"