From bdf2d24e103ce9757ac03f50c3154a7c0d4986f2 Mon Sep 17 00:00:00 2001 From: James Date: Tue, 9 Jan 2024 14:08:21 -0500 Subject: [PATCH 1/5] Adding gapfilling code and optknock removal of reactions to optimize sucrose (compress_model.ipynb) --- syn_elong/data/experiments.yml | 8 +- syn_elong/media.py | 16 + syn_elong/model_changes.py | 25 +- ...r_essential_improvement_with_gapfill.ipynb | 1794 + .../optimize_sucrose_via_optknock.ipynb | 2120 + syn_elong/notebooks/rxns_to_add_for_ge.txt | 23 + syn_elong/syn_elong.xml | 51540 +++++++--------- syn_elong/tests/run_essentiality_test.py | 6 +- syn_elong/tests/run_growth_test.py | 4 +- 9 files changed, 25767 insertions(+), 29769 deletions(-) create mode 100644 syn_elong/media.py create mode 100644 syn_elong/notebooks/add_reactions_for_essential_improvement_with_gapfill.ipynb create mode 100644 syn_elong/notebooks/optimize_sucrose_via_optknock.ipynb create mode 100644 syn_elong/notebooks/rxns_to_add_for_ge.txt diff --git a/syn_elong/data/experiments.yml b/syn_elong/data/experiments.yml index c6ecc55..d422082 100644 --- a/syn_elong/data/experiments.yml +++ b/syn_elong/data/experiments.yml @@ -5,11 +5,15 @@ medium: model_min_media: filename: "syn_min_media.csv" label: "Minimal" + no_carbon: + filename: "min_media_all_wavelength.csv" + label: "No Carbon" essentiality: path: "essentiality/" experiments: knockouts: - medium: model_min_media + medium: no_carbon filename: "syn_elo_knockdown.csv" label: "knock-out library" -minimal_growth_rate: 0.05 \ No newline at end of file + +#minimal_growth_rate: 0.05 \ No newline at end of file diff --git a/syn_elong/media.py b/syn_elong/media.py new file mode 100644 index 0000000..81403e4 --- /dev/null +++ b/syn_elong/media.py @@ -0,0 +1,16 @@ +import pathlib +import pandas as pd + +path = pathlib.Path(__file__).parent + + +m9_path = path.joinpath('data', 'media', 'min_media_all_wavelength.csv').__str__() +m9_media = pd.read_csv(m9_path) + +m9_media = m9_media.set_index('exchange')['uptake'].to_dict() + + +syn_min_media_path = path.joinpath('data', 'media', 'syn_min_media.csv').__str__() +syn_min_media = pd.read_csv(syn_min_media_path) + +syn_min_media = syn_min_media.set_index('exchange')['uptake'].to_dict() diff --git a/syn_elong/model_changes.py b/syn_elong/model_changes.py index a38b938..41b0798 100644 --- a/syn_elong/model_changes.py +++ b/syn_elong/model_changes.py @@ -23,6 +23,9 @@ s_model_path = os.path.join(_file_path, starting_model_f_name) starting_model = cobra.io.read_sbml_model(s_model_path) +# starting_model = cobra.io.load_json_model('iMS837.json') +# cobra.io.write_sbml_model(starting_model, 'iMS837.xml') +# starting_model = cobra.io.read_sbml_model('iMS837.xml') starting_model.id = "syn_elong" output_model_name = 'syn_elong.xml' @@ -56,35 +59,17 @@ def update_2(model): # Add the gene name of the sucrose transporter to the model gene_add = cobra.core.Gene(id='cscB', name='cscB', functional=True) + model.genes.add(gene_add) + model.reactions.SUCRt2.gene_reaction_rule = '( cscB )' return model -def update_3(model): - # adds reactions from iMS837 - updated_model = model.copy() - new_model = cobra.io.load_json_model('iMS837.json') - rxns_to_add = [] - rxns_to_remove = [] - for i in new_model.reactions: - if i not in model.reactions: - rxns_to_add.append(i) - - for i in model.reactions: - if i not in new_model.reactions: - rxns_to_remove.append(i) - - updated_model.add_reactions(set(rxns_to_add)) - updated_model.remove_reactions(set(rxns_to_remove), remove_orphans=True) - return updated_model - - def process_model_steps(): # Fix compartments model = update_1(starting_model) model = update_2(model) - model = update_3(model) write_model(model) diff --git a/syn_elong/notebooks/add_reactions_for_essential_improvement_with_gapfill.ipynb b/syn_elong/notebooks/add_reactions_for_essential_improvement_with_gapfill.ipynb new file mode 100644 index 0000000..447acde --- /dev/null +++ b/syn_elong/notebooks/add_reactions_for_essential_improvement_with_gapfill.ipynb @@ -0,0 +1,1794 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "cf8248f8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Set parameter Username\n", + "Set parameter GURO_PAR_SPECIAL\n", + "Set parameter TokenServer to value \"leghorn\"\n" + ] + } + ], + "source": [ + "from concerto.utils import universal_model\n", + "from cobra.flux_analysis.gapfilling import gapfill\n", + "from memote.experimental.config import ExperimentConfiguration\n", + "from concerto.utils.gene_essentiality import create_ge_confusion_matrix\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a29b5793", + "metadata": {}, + "outputs": [], + "source": [ + "from syn_elong import model, exp_file_path as syn_pathfrom\n", + "from syn_elong.media import m9_media, syn_min_media" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "99f803b2", + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "b2311be1", + "metadata": {}, + "outputs": [], + "source": [ + "model.medium = m9_media" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "f522ce3f", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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x1lZWYqKivLudAAAAL/idrz07NlTr7/+epn7X3/9dfXs2dMrQwEAAJTF7Xh54okntHTpUt16661at26djh49qqNHjyotLU39+/fXsmXL9MQTT/hyVgAAAPc/Kv2HP/xBCxYs0IgRI5ScnOyyr0aNGpo/f77++Mc/en1AAACAs3l8b6OCggJ98cUXysrKkiS1atVKV199tapVq+aTAS8E9zYCKi/ubQRUYr66t1HVqlXVr18/j+cBAADwBrfXvAAAAFQExAsAADAK8QIAAIxCvAAAAKO4tWD32LFjbr9heHj4BQ8DAADwW9yKl8jISNlsNrfesKSk5HcNBAAAcD5uxUtKSorz+927d2vs2LEaOnSounXrJklas2aNZs+eraSkJN9MCQAA8F8eX6SuV69eGjFihAYOHOiy/f3339eMGTO0YsUKb853QaydG/w9AgAfub9lgr9HAOAj0y33lql4vGB3zZo1io2NLbU9NjZWaWlpnr4dAACARzyOl0aNGumtt94qtX3mzJlq1KiRV4YCAAAoi8e3B5g8ebL69++vJUuWqGvXrpKktLQ0ZWVlaeHChV4fEAAA4GweH3lJTEzU9u3bdcMNNygvL095eXm64YYbtH37diUmJvpiRgAAACePF+yagAW7QOXFgl2g8vLZgl1JWrVqle644w51795de/fulSS99957Sk1NvZC3AwAAcJvH8bJw4UJdc801Cg0N1YYNG1RUVCRJOnr0qCZMmOD1AQEAAM7mcbz89a9/1fTp0/XWW28pKCjIuT0uLk4bNnC6BgAA+JbH8ZKZmamePXuW2h4REaGff/7ZGzMBAACUyeN4qVu3rnbs2FFqe2pqqpo3b+6VoQAAAMricbzcfffdGjVqlNauXSubzaZ9+/Zp7ty5GjNmjO6//35fzAgAAODk8UXqxo4dK4fDoV69eqmgoEA9e/aU3W7XmDFj9NBDD/liRgAAAKcLvs7LqVOntGPHDuXn56tdu3YKCwvz9mwXjOu8AJUX13kBKi+fXedl2LBhOn78uIKDg9WuXTt16dJFYWFhOnHihIYNG+bxoAAAAJ7wOF5mz56twsLCUtsLCws1Z84crwwFAABQFrfXvBw7dkyWZcmyLB0/flwhISHOfSUlJfrss89Uu3ZtnwwJAADwC7fjJTIyUjabTTabTTExMaX222w2Pf/8814dDgAA4NfcjpeUlBRZlqUrr7xSCxcuVFRUlHNfcHCwmjRpovr16/tkSAAAgF+4HS/x8fGSpF27dqlx48ay2Ww+GwoAAKAsHi/Y/fLLL/Xhhx+W2v7BBx9o9uzZXhkKAACgLB7HS1JSkqKjo0ttr127NneVBgAAPudxvGRnZ6tZs2altjdp0kTZ2dleGQoAAKAsHsdL7dq1tXnz5lLb09PTVbNmTa8MBQAAUBaP42XgwIF6+OGHlZKSopKSEpWUlOjLL7/UqFGjdPvtt/tiRgAAACePb8z44osvavfu3erVq5cCA8+83OFwaPDgwax5AQAAPnfBN2bcvn270tPTFRoaqg4dOqhJkybenu2CcWNGoPLixoxA5eXujRk9PvLyi5iYmHNeaRcAAMCX3IqXxx57TC+++KKqVaumxx577LzPnTRpklcGAwAAOBe34mXjxo06ffq08/uycNVdAADga27FS0pKyjm/BwAAKG8ef1QaAADAn9w68nLzzTe7/YbJyckXPAwAAMBvcevIS0REhPMrPDxcy5cv1/r16537v/32Wy1fvlwRERE+GxQAAEBy88jLO++84/z+iSee0G233abp06crICBAklRSUqIHHnhA4eHhvpkSAADgvzy+SF2tWrWUmpqq1q1bu2zPzMxU9+7ddfjwYa8OeCG4SB1QeXGROqDycvcidR4v2C0uLta2bdtKbd+2bZscDoenbwcAAOARj6+we9ddd2n48OHauXOnunTpIklau3atXnrpJd11111eHxAAAOBsHsfLK6+8orp16+rVV19Vbm6uJKlevXp6/PHHNXr0aK8PCAAAcLYLvjGjJB07dubcVEVbqMuaF6DyYs0LUHn5bM2LdGbdy7JlyzRv3jznLQH27dun/Pz8C3k7AAAAt3l82ujHH3/Utddeq+zsbBUVFal3796qXr26Jk6cqKKiIk2fPt0XcwIAAEi6gCMvo0aNUmxsrI4cOaLQ0FDn9n79+mn58uVeHQ4AAODXPD7ysmrVKn399dcKDg522d60aVPt3bvXa4MBAACci8dHXhwOh0pKSkpt37Nnj6pXr+6VoQAAAMricbxcffXVmjJlivOxzWZTfn6+xo0bp8TERG/OBgAAUIrHH5XOycnRtddeK8uylJWVpdjYWGVlZSk6OlorV65U7dq1fTWr2/ioNFB58VFpoPJy96PSHq95adSokdLT07Vg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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "results = create_ge_confusion_matrix(model, syn_pathfrom)\n", + "plt.savefig(\"before_gapfill.png\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "85f10cb9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['SYNPCC7942_RS00005', 'SYNPCC7942_RS00015', 'SYNPCC7942_RS00345',\n", + " 'SYNPCC7942_RS00575', 'SYNPCC7942_RS00685', 'SYNPCC7942_RS00790',\n", + " 'SYNPCC7942_RS00985', 'SYNPCC7942_RS01045', 'SYNPCC7942_RS01140',\n", + " 'SYNPCC7942_RS01500', 'SYNPCC7942_RS01505', 'SYNPCC7942_RS01750',\n", + " 'SYNPCC7942_RS01885', 'SYNPCC7942_RS02010', 'SYNPCC7942_RS02075',\n", + " 'SYNPCC7942_RS02165', 'SYNPCC7942_RS02185', 'SYNPCC7942_RS02255',\n", + " 'SYNPCC7942_RS13675', 'SYNPCC7942_RS02490', 'SYNPCC7942_RS02765',\n", + " 'SYNPCC7942_RS02940', 'SYNPCC7942_RS02945', 'SYNPCC7942_RS03055',\n", + " 'SYNPCC7942_RS03095', 'SYNPCC7942_RS03120', 'SYNPCC7942_RS03225',\n", + " 'SYNPCC7942_RS03355', 'SYNPCC7942_RS03380', 'SYNPCC7942_RS03485',\n", + " 'SYNPCC7942_RS03570', 'SYNPCC7942_RS04180', 'SYNPCC7942_RS04290',\n", + " 'SYNPCC7942_RS04440', 'SYNPCC7942_RS04735', 'SYNPCC7942_RS04750',\n", + " 'SYNPCC7942_RS04830', 'SYNPCC7942_RS04890', 'SYNPCC7942_RS05155',\n", + " 'SYNPCC7942_RS05285', 'SYNPCC7942_RS05330', 'SYNPCC7942_RS05635',\n", + " 'SYNPCC7942_RS05765', 'SYNPCC7942_RS13745', 'SYNPCC7942_RS06065',\n", + " 'SYNPCC7942_RS06375', 'SYNPCC7942_RS06405', 'SYNPCC7942_RS06760',\n", + " 'SYNPCC7942_RS06820', 'SYNPCC7942_RS06825', 'SYNPCC7942_RS07015',\n", + " 'SYNPCC7942_RS07410', 'Synpcc7942_1478', 'SYNPCC7942_RS08000',\n", + " 'SYNPCC7942_RS08150', 'SYNPCC7942_RS08350', 'SYNPCC7942_RS08550',\n", + " 'SYNPCC7942_RS08555', 'SYNPCC7942_RS13795', 'SYNPCC7942_RS09115',\n", + " 'SYNPCC7942_RS09235', 'SYNPCC7942_RS09260', 'SYNPCC7942_RS09540',\n", + " 'SYNPCC7942_RS09545', 'SYNPCC7942_RS09570', 'SYNPCC7942_RS09640',\n", + " 'SYNPCC7942_RS09645', 'SYNPCC7942_RS09650', 'SYNPCC7942_RS09705',\n", + " 'SYNPCC7942_RS09735', 'SYNPCC7942_RS09955', 'SYNPCC7942_RS10100',\n", + " 'SYNPCC7942_RS10105', 'SYNPCC7942_RS10110', 'SYNPCC7942_RS10140',\n", + " 'SYNPCC7942_RS10225', 'SYNPCC7942_RS10815', 'SYNPCC7942_RS10975',\n", + " 'SYNPCC7942_RS11400', 'SYNPCC7942_RS11630', 'SYNPCC7942_RS11775',\n", + " 'SYNPCC7942_RS11900', 'SYNPCC7942_RS11905', 'SYNPCC7942_RS12090',\n", + " 'SYNPCC7942_RS12325', 'SYNPCC7942_RS12420', 'SYNPCC7942_RS12425',\n", + " 'Synpcc7942_2454', 'SYNPCC7942_RS12590', 'SYNPCC7942_RS12670',\n", + " 'SYNPCC7942_RS12715', 'SYNPCC7942_RS12725', 'SYNPCC7942_RS12785',\n", + " 'SYNPCC7942_RS13245', 'SYNPCC7942_RS13310'], dtype=object)" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results['FP'].index.values" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "da8845c4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpd869hr6d.lp\n", + "Reading time = 0.01 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmppzjhxdg4.lp\n", + "Reading time = 0.18 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS00005 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpb9_41qax.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpnlfrd2e3.lp\n", + "Reading time = 0.22 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "PRFGS_1\n", + "---- Run 2 ----\n", + "PRFGS_1\n", + "---- Run 3 ----\n", + "PRFGS_1\n", + "---- Run 4 ----\n", + "PRFGS_1\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpf7qyo1kt.lp\n", + "Reading time = 0.01 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpxfkroc52.lp\n", + "Reading time = 0.15 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS00345 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpjx5r_2nv.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpui6h6sqh.lp\n", + "Reading time = 0.24 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "GLGB\n", + "---- Run 2 ----\n", + "SUCptspp_1\n", + "---- Run 3 ----\n", + "FPRA\n", + "---- Run 4 ----\n", + "GLYOX_2\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpiqrvh2dw.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpeecuxnxt.lp\n", + "Reading time = 0.20 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS00685 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpiggdd_mk.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpce07m7db.lp\n", + "Reading time = 0.26 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "UGP_PGM_c\n", + "---- Run 2 ----\n", + "UGP_PGM_c\n", + "---- Run 3 ----\n", + "SUCptspp_1\n", + "SUCP\n", + "---- Run 4 ----\n", + "UGP_PGM_c\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmps0t1dydy.lp\n", + "Reading time = 0.01 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpcbxc_ewz.lp\n", + "Reading time = 0.23 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS00985 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpmb267qgt.lp\n", + "Reading time = 0.01 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpfrt1r3v4.lp\n", + "Reading time = 0.22 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS01045 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpqxkiqmjz.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpx3cyu_qa.lp\n", + "Reading time = 0.20 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "FASC161ACP\n", + "GLYOX_2\n", + "---- Run 2 ----\n", + "AACPS4\n", + "HDECH\n", + "---- Run 3 ----\n", + "SUCptspp_1\n", + "C161SN\n", + "---- Run 4 ----\n", + "PYDXO\n", + "PDYXPT_c\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpjfaqysup.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp1ou_8_wy.lp\n", + "Reading time = 0.22 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "FASC161ACP\n", + "GLYOX_2\n", + "---- Run 2 ----\n", + "AACPS4\n", + "HDECH\n", + "---- Run 3 ----\n", + "SUCptspp_1\n", + "C161SN\n", + "---- Run 4 ----\n", + "PYDXO\n", + "PDYXPT_c\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpyb9_do_2.lp\n", + "Reading time = 0.01 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpnsvxys0l.lp\n", + "Reading time = 0.22 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "SADT2\n", + "---- Run 2 ----\n", + "SLFAT\n", + "---- Run 3 ----\n", + "PAPSSH\n", + "---- Run 4 ----\n", + "PAPSSH\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpgi8oauzi.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp3o06rst7.lp\n", + "Reading time = 0.23 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "FASC161ACP\n", + "GLYOX_2\n", + "---- Run 2 ----\n", + "AACPS4\n", + "HDECH\n", + "---- Run 3 ----\n", + "SUCptspp_1\n", + "C161SN\n", + "---- Run 4 ----\n", + "PYDXO\n", + "PDYXPT_c\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpox5856uf.lp\n", + "Reading time = 0.00 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp_dpplj27.lp\n", + "Reading time = 0.18 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "AHSERL2\n", + "---- Run 2 ----\n", + "AHSERL2\n", + "---- Run 3 ----\n", + "CYSTL\n", + "METB1\n", + "---- Run 4 ----\n", + "AHSERL2\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp2u204_lw.lp\n", + "Reading time = 0.01 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp9hr2dz3f.lp\n", + "Reading time = 0.21 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "CDPDAGS1819Z160\n", + "---- Run 2 ----\n", + "CDPDAGS1819Z160\n", + "---- Run 3 ----\n", + "CDPDAGS1819Z160\n", + "---- Run 4 ----\n", + "CDPDAGS1819Z160\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp9rj1oz87.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmph20dae_s.lp\n", + "Reading time = 0.20 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "FRDO\n", + "---- Run 2 ----\n", + "GLYOX_2\n", + "---- Run 3 ----\n", + "GLGB\n", + "---- Run 4 ----\n", + "SUCptspp_1\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpxcoypk1r.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp8izez315.lp\n", + "Reading time = 0.30 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "FASC161ACP\n", + "GLYOX_2\n", + "---- Run 2 ----\n", + "AACPS4\n", + "HDECH\n", + "---- Run 3 ----\n", + "SUCptspp_1\n", + "C161SN\n", + "---- Run 4 ----\n", + "PYDXO\n", + "PDYXPT_c\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp08ov00qx.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp4befp2g1.lp\n", + "Reading time = 0.22 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS02185 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpu41g80s4.lp\n", + "Reading time = 0.00 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpspi_yx6k.lp\n", + "Reading time = 0.18 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "AIRC1\n", + "---- Run 2 ----\n", + "PRAIC\n", + "---- Run 3 ----\n", + "AIRCr\n", + "---- Run 4 ----\n", + "AIRC4\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpe4h6v18s.lp\n", + "Reading time = 0.01 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp3j810nl6.lp\n", + "Reading time = 0.29 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "FASC161ACP\n", + "GLYOX_2\n", + "---- Run 2 ----\n", + "AACPS4\n", + "HDECH\n", + "---- Run 3 ----\n", + "SUCptspp_1\n", + "C161SN\n", + "---- Run 4 ----\n", + "PYDXO\n", + "PDYXPT_c\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpvln6g6i2.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp1q4ep4wn.lp\n", + "Reading time = 0.26 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS02490 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpmr2qugrh.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp1ls_53n8.lp\n", + "Reading time = 0.20 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS02765 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp05okecpi.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpbyo8cw25.lp\n", + "Reading time = 0.25 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS02940 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpyximhkge.lp\n", + "Reading time = 0.01 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmptgiw49fp.lp\n", + "Reading time = 0.22 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS02945 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp4yyxk8hg.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpjmmuhu2b.lp\n", + "Reading time = 0.23 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS03055 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp0z2dgjti.lp\n", + "Reading time = 0.01 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpz2dmf_cr.lp\n", + "Reading time = 0.24 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "GLCS2\n", + "---- Run 2 ----\n", + "GLCS2\n", + "---- Run 3 ----\n", + "GBEZY\n", + "GLYGS\n", + "---- Run 4 ----\n", + "GLCS2\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpfmt6knrc.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp_rnjwrvf.lp\n", + "Reading time = 0.18 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS03120 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpxjvz46cx.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpnjgeff15.lp\n", + "Reading time = 0.19 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS03225 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpgb6r1idt.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpvhrx1y2a.lp\n", + "Reading time = 0.21 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "FASC161ACP\n", + "GLYOX_2\n", + "---- Run 2 ----\n", + "AACPS4\n", + "HDECH\n", + "---- Run 3 ----\n", + "SUCptspp_1\n", + "C161SN\n", + "---- Run 4 ----\n", + "PYDXO\n", + "PDYXPT_c\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpmh1rnqzw.lp\n", + "Reading time = 0.01 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp27na2m8e.lp\n", + "Reading time = 0.30 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "PPND2\n", + "---- Run 2 ----\n", + "PPND2\n", + "---- Run 3 ----\n", + "AROAT\n", + "ARNO\n", + "---- Run 4 ----\n", + "PHETHPTOX3\n", + "DHMPTR\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmprq6il4gd.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpgxvscm6d.lp\n", + "Reading time = 0.24 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS03485 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp1legws4g.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp0_y85f1z.lp\n", + "Reading time = 0.19 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "FASC161ACP\n", + "GLYOX_2\n", + "---- Run 2 ----\n", + "AACPS4\n", + "HDECH\n", + "---- Run 3 ----\n", + "SUCptspp_1\n", + "C161SN\n", + "---- Run 4 ----\n", + "PYDXO\n", + "PDYXPT_c\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpz310jm0p.lp\n", + "Reading time = 0.00 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpn3n8wf0a.lp\n", + "Reading time = 0.17 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS04180 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp9fa8eq_x.lp\n", + "Reading time = 0.00 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpqzjhnety.lp\n", + "Reading time = 0.17 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "ASNTRS_1\n", + "---- Run 2 ----\n", + "ASNTRS_1\n", + "---- Run 3 ----\n", + "ASPTRA\n", + "ASPTRS2\n", + "---- Run 4 ----\n", + "ASNTRAT\n", + "ASPTRS_Asn\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpea_ukp9b.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpys0w7h3m.lp\n", + "Reading time = 0.17 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS04440 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpds4l9bje.lp\n", + "Reading time = 0.03 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmppld9aqit.lp\n", + "Reading time = 0.17 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "FRDO\n", + "---- Run 2 ----\n", + "GLYOX_2\n", + "---- Run 3 ----\n", + "GLGB\n", + "---- Run 4 ----\n", + "SUCptspp_1\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpe6lakuvn.lp\n", + "Reading time = 0.01 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpefny1d0c.lp\n", + "Reading time = 0.17 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS04750 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp_pjkr9pw.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmph6vz7brs.lp\n", + "Reading time = 0.31 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "PAPSSH\n", + "---- Run 2 ----\n", + "APSR\n", + "---- Run 3 ----\n", + "APSR\n", + "---- Run 4 ----\n", + "PAPSSH\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp6w1iuzt4.lp\n", + "Reading time = 0.03 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp62yh4ezu.lp\n", + "Reading time = 0.16 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS04890 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp_4lb5tix.lp\n", + "Reading time = 0.01 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp6yuu5u5q.lp\n", + "Reading time = 0.17 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS05155 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp9c12ekzs.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpvy8dr0_n.lp\n", + "Reading time = 0.18 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "ILETA2\n", + "aratyr1\n", + "---- Run 2 ----\n", + "LEUTAi\n", + "araphe2\n", + "---- Run 3 ----\n", + "araphe1\n", + "aratyr2\n", + "---- Run 4 ----\n", + "aratry1\n", + "aratry2\n", + "aratyr4\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpxamhcto8.lp\n", + "Reading time = 0.01 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpbkl30chw.lp\n", + "Reading time = 0.17 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "FASC161ACP\n", + "GLYOX_2\n", + "---- Run 2 ----\n", + "AACPS4\n", + "HDECH\n", + "---- Run 3 ----\n", + "SUCptspp_1\n", + "C161SN\n", + "---- Run 4 ----\n", + "PYDXO\n", + "PDYXPT_c\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpra1ea212.lp\n", + "Reading time = 0.01 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp46b2lj_q.lp\n", + "Reading time = 0.17 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS05635 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp3rbgbc_b.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp1clxtp7u.lp\n", + "Reading time = 0.18 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS05765 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp_q8gkhqd.lp\n", + "Reading time = 0.01 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpcm6p4fy2.lp\n", + "Reading time = 0.18 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---- Run 1 ----\n", + "FASC161ACP\n", + "GLYOX_2\n", + "---- Run 2 ----\n", + "AACPS4\n", + "HDECH\n", + "---- Run 3 ----\n", + "SUCptspp_1\n", + "C161SN\n", + "---- Run 4 ----\n", + "PYDXO\n", + "PDYXPT_c\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp7rn928k_.lp\n", + "Reading time = 0.01 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpgcs5t9ba.lp\n", + "Reading time = 0.18 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS06065 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpgtdae56r.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp1vxrsqwh.lp\n", + "Reading time = 0.17 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS06375 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpzddleflb.lp\n", + "Reading time = 0.01 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpj23q4y8z.lp\n", + "Reading time = 0.18 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "FRDO\n", + "---- Run 2 ----\n", + "GLYOX_2\n", + "---- Run 3 ----\n", + "GLGB\n", + "---- Run 4 ----\n", + "SUCptspp_1\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpchl1hkr8.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpfre8hvcl.lp\n", + "Reading time = 0.19 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "FRDO\n", + "---- Run 2 ----\n", + "GLYOX_2\n", + "---- Run 3 ----\n", + "GLGB\n", + "---- Run 4 ----\n", + "SUCptspp_1\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpj5a6uvou.lp\n", + "Reading time = 0.01 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp4_2t3ehz.lp\n", + "Reading time = 0.18 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS06820 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpbi0bqtyd.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpm_ud1k1u.lp\n", + "Reading time = 0.19 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS06825 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp06v25xjo.lp\n", + "Reading time = 0.01 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpj_598vp2.lp\n", + "Reading time = 0.20 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS07015 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpu0_ghjyg.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp04j5n02f.lp\n", + "Reading time = 0.20 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS07410 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpxec50ez4.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpjt_2ximt.lp\n", + "Reading time = 0.19 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "GLGB\n", + "---- Run 2 ----\n", + "SUCptspp_1\n", + "---- Run 3 ----\n", + "FPRA\n", + "---- Run 4 ----\n", + "GLYOX_2\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp0yunezw1.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmplmwnz_w9.lp\n", + "Reading time = 0.21 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS08000 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpygi4dpuw.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpd8vq4mde.lp\n", + "Reading time = 0.26 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS08150 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp6vqiexf7.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpcky1mgcy.lp\n", + "Reading time = 0.26 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "FASC161ACP\n", + "GLYOX_2\n", + "---- Run 2 ----\n", + "AACPS4\n", + "HDECH\n", + "---- Run 3 ----\n", + "SUCptspp_1\n", + "C161SN\n", + "---- Run 4 ----\n", + "PYDXO\n", + "PDYXPT_c\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpljry38_f.lp\n", + "Reading time = 0.01 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp2u88snhl.lp\n", + "Reading time = 0.20 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "FASC161ACP\n", + "GLYOX_2\n", + "---- Run 2 ----\n", + "AACPS4\n", + "HDECH\n", + "---- Run 3 ----\n", + "SUCptspp_1\n", + "C161SN\n", + "---- Run 4 ----\n", + "PYDXO\n", + "PDYXPT_c\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpwvt95zgt.lp\n", + "Reading time = 0.04 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpbdbik0u3.lp\n", + "Reading time = 0.23 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "FASC161ACP\n", + "GLYOX_2\n", + "---- Run 2 ----\n", + "AACPS4\n", + "HDECH\n", + "---- Run 3 ----\n", + "SUCptspp_1\n", + "C161SN\n", + "---- Run 4 ----\n", + "PYDXO\n", + "PDYXPT_c\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpu4_m25ur.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp335woz7o.lp\n", + "Reading time = 0.27 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "FASC161ACP\n", + "GLYOX_2\n", + "---- Run 2 ----\n", + "AACPS4\n", + "HDECH\n", + "---- Run 3 ----\n", + "SUCptspp_1\n", + "C161SN\n", + "---- Run 4 ----\n", + "PYDXO\n", + "PDYXPT_c\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp63t4l5o2.lp\n", + "Reading time = 0.03 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpwnna3k5g.lp\n", + "Reading time = 0.21 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS09115 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp4dho1dy4.lp\n", + "Reading time = 0.01 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpy1urh5t1.lp\n", + "Reading time = 0.23 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS09235 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpy8ac9_75.lp\n", + "Reading time = 0.03 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpcgph0d3l.lp\n", + "Reading time = 0.23 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "PGPS1819Z160\n", + "---- Run 2 ----\n", + "PGPS1819Z160\n", + "---- Run 3 ----\n", + "PGPS1819Z160\n", + "---- Run 4 ----\n", + "PGPS1819Z160\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmphvk5uifa.lp\n", + "Reading time = 0.01 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp9wyaai62.lp\n", + "Reading time = 0.30 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS09540 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpyjn9_2kg.lp\n", + "Reading time = 0.03 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpdkv9esrd.lp\n", + "Reading time = 0.21 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "FASC161ACP\n", + "GLYOX_2\n", + "---- Run 2 ----\n", + "AACPS4\n", + "HDECH\n", + "---- Run 3 ----\n", + "SUCptspp_1\n", + "C161SN\n", + "---- Run 4 ----\n", + "PYDXO\n", + "PDYXPT_c\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp18to3pf_.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpfenoqxkn.lp\n", + "Reading time = 0.23 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS09570 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp9arlzbfl.lp\n", + "Reading time = 0.03 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpjx_gud2l.lp\n", + "Reading time = 0.23 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS09640 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpaq78dm4u.lp\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpgqqj0nqo.lp\n", + "Reading time = 0.28 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS09645 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpxd8o_ha3.lp\n", + "Reading time = 0.03 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp1rt6cm62.lp\n", + "Reading time = 0.31 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS09650 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpt5n7zl49.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp72pzmulv.lp\n", + "Reading time = 0.27 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "FRDO\n", + "---- Run 2 ----\n", + "GLYOX_2\n", + "---- Run 3 ----\n", + "GLGB\n", + "---- Run 4 ----\n", + "SUCptspp_1\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp_77df3kc.lp\n", + "Reading time = 0.03 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpzebq_m9n.lp\n", + "Reading time = 0.22 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS09735 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpv_lb54v7.lp\n", + "Reading time = 0.03 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpkb2l07wc.lp\n", + "Reading time = 0.20 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "FASC161ACP\n", + "GLYOX_2\n", + "---- Run 2 ----\n", + "AACPS4\n", + "HDECH\n", + "---- Run 3 ----\n", + "SUCptspp_1\n", + "C161SN\n", + "---- Run 4 ----\n", + "PYDXO\n", + "PDYXPT_c\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp20pj382e.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpub8f0wh1.lp\n", + "Reading time = 0.26 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS10100 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp5mzi8bg8.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpiqktmc1l.lp\n", + "Reading time = 0.29 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS10105 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpbvzcukps.lp\n", + "Reading time = 0.03 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpmlh1b633.lp\n", + "Reading time = 0.34 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS10110 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpi_wdyfbq.lp\n", + "Reading time = 0.03 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp7pzk7t62.lp\n", + "Reading time = 0.26 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS10140 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmptnqapeo7.lp\n", + "Reading time = 0.03 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpc5tlqdxn.lp\n", + "Reading time = 0.28 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "FASC161ACP\n", + "GLYOX_2\n", + "---- Run 2 ----\n", + "AACPS4\n", + "HDECH\n", + "---- Run 3 ----\n", + "SUCptspp_1\n", + "C161SN\n", + "---- Run 4 ----\n", + "PYDXO\n", + "PDYXPT_c\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpihdp5twj.lp\n", + "Reading time = 0.01 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpuefyn35i.lp\n", + "Reading time = 0.35 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "ACGAM6PS\n", + "UAGDP_c\n", + "---- Run 2 ----\n", + "ACGAM6PS\n", + "ACGAMPM\n", + "---- Run 3 ----\n", + "ACGAM6PS\n", + "ACGAMPM\n", + "---- Run 4 ----\n", + "ACGAM6PS\n", + "UAGDP_c\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpwc65q9em.lp\n", + "Reading time = 0.03 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpk0m4nhz9.lp\n", + "Reading time = 0.27 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS10975 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpggilju08.lp\n", + "Reading time = 0.04 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmptogb3538.lp\n", + "Reading time = 0.28 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "FASC161ACP\n", + "GLYOX_2\n", + "---- Run 2 ----\n", + "AACPS4\n", + "HDECH\n", + "---- Run 3 ----\n", + "SUCptspp_1\n", + "C161SN\n", + "---- Run 4 ----\n", + "PYDXO\n", + "PDYXPT_c\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp9u6_afp9.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpoioob8lk.lp\n", + "Reading time = 0.33 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS11630 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpvwaiydyo.lp\n", + "Reading time = 0.03 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpbpq0ovlr.lp\n", + "Reading time = 0.31 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "ATPSu\n", + "---- Run 2 ----\n", + "ATPSu\n", + "---- Run 3 ----\n", + "FASC161ACP\n", + "GLGB\n", + "---- Run 4 ----\n", + "SUCptspp_1\n", + "C161SN\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpjwg9y2a4.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpn8slkt76.lp\n", + "Reading time = 0.31 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "FRDO\n", + "---- Run 2 ----\n", + "GLYOX_2\n", + "---- Run 3 ----\n", + "GLGB\n", + "---- Run 4 ----\n", + "SUCptspp_1\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpy1m9vl5h.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp5t6pyp6q.lp\n", + "Reading time = 0.28 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "FRDO\n", + "---- Run 2 ----\n", + "GLYOX_2\n", + "---- Run 3 ----\n", + "GLGB\n", + "---- Run 4 ----\n", + "SUCptspp_1\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp2pvcgnzt.lp\n", + "Reading time = 0.03 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp3ng00qqu.lp\n", + "Reading time = 0.45 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS12090 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp3d0558dr.lp\n", + "Reading time = 0.03 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpcv0hw0vr.lp\n", + "Reading time = 0.32 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "GLGB\n", + "---- Run 2 ----\n", + "SUCptspp_1\n", + "---- Run 3 ----\n", + "FPRA\n", + "---- Run 4 ----\n", + "GLYOX_2\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp6qenda_1.lp\n", + "Reading time = 0.03 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpb7f80op8.lp\n", + "Reading time = 0.36 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "P5CCD\n", + "---- Run 2 ----\n", + "PIt8\n", + "---- Run 3 ----\n", + "PIabc\n", + "---- Run 4 ----\n", + "r2136\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp8nti9u5r.lp\n", + "Reading time = 0.03 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp7ajsbsfp.lp\n", + "Reading time = 0.32 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "P5CCD\n", + "---- Run 2 ----\n", + "PIt8\n", + "---- Run 3 ----\n", + "PIabc\n", + "---- Run 4 ----\n", + "r2136\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpmiagqdxk.lp\n", + "Reading time = 0.04 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpxplsux0w.lp\n", + "Reading time = 0.29 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "Synpcc7942_2454 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp_d3541ky.lp\n", + "Reading time = 0.03 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpkj0tm18s.lp\n", + "Reading time = 0.40 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "FASC161ACP\n", + "GLYOX_2\n", + "---- Run 2 ----\n", + "AACPS4\n", + "HDECH\n", + "---- Run 3 ----\n", + "SUCptspp_1\n", + "C161SN\n", + "---- Run 4 ----\n", + "PYDXO\n", + "PDYXPT_c\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpj12z2ec3.lp\n", + "Reading time = 0.03 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp5ce783ww.lp\n", + "Reading time = 0.31 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS12670 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp_wv86lhq.lp\n", + "Reading time = 0.02 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmps9wgjwdu.lp\n", + "Reading time = 0.33 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "APSR\n", + "---- Run 2 ----\n", + "APSR\n", + "---- Run 3 ----\n", + "GRXR\n", + "APSR2\n", + "---- Run 4 ----\n", + "APSR\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpudd7tlwb.lp\n", + "Reading time = 0.03 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpb4t77jve.lp\n", + "Reading time = 0.29 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS12725 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpnqxw6sjp.lp\n", + "Reading time = 0.04 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpacx9tf3v.lp\n", + "Reading time = 0.32 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "GLCS1\n", + "---- Run 2 ----\n", + "GLCS2\n", + "---- Run 3 ----\n", + "AMYL2\n", + "---- Run 4 ----\n", + "AMYL2\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpv5aekg2i.lp\n", + "Reading time = 0.03 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp6ez9bhu6.lp\n", + "Reading time = 0.31 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "SYNPCC7942_RS13245 no go\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp_19cm43g.lp\n", + "Reading time = 0.03 seconds\n", + ": 884 rows, 1936 columns, 7886 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmplid1nta6.lp\n", + "Reading time = 0.29 seconds\n", + ": 15638 rows, 56602 columns, 243784 nonzeros\n", + "---- Run 1 ----\n", + "GLYOX_2\n", + "---- Run 2 ----\n", + "PGLYCP_1\n", + "---- Run 3 ----\n", + "SUCptspp_1\n", + "---- Run 4 ----\n", + "GLGB\n" + ] + } + ], + "source": [ + "def find_rxns(model, universal_model, gene):\n", + " with model:\n", + " model.genes.get_by_id(gene).knock_out()\n", + " try:\n", + " result = gapfill(\n", + " model, \n", + " universal_model,\n", + " demand_reactions=False, \n", + " exchange_reactions =False,\n", + " iterations=4\n", + " )\n", + " for i, entries in enumerate(result):\n", + " print(\"---- Run %d ----\" % (i + 1))\n", + " for e in entries:\n", + " print(e.id)\n", + " except:\n", + " print(f'{gene} no go')\n", + " return [{gene:None}]\n", + " return [{gene:result}]\n", + "\n", + "rxns = []\n", + "for gene in results['FP'].index.values:\n", + " rxns += find_rxns(model, universal_model, gene)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "29167a02", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'SYNPCC7942_RS00005': None},\n", + " {'SYNPCC7942_RS00015': [[],\n", + " [],\n", + " [],\n", + " []]},\n", + " {'SYNPCC7942_RS00345': None},\n", + " {'SYNPCC7942_RS00575': [[],\n", + " [],\n", + " [],\n", + " []]},\n", + " {'SYNPCC7942_RS00685': None},\n", + " {'SYNPCC7942_RS00790': [[],\n", + " [],\n", + " [, ],\n", + " []]},\n", + " {'SYNPCC7942_RS00985': None},\n", + " {'SYNPCC7942_RS01045': None},\n", + " {'SYNPCC7942_RS01140': [[,\n", + " ],\n", + " [, ],\n", + " [,\n", + " ],\n", + " [, ]]},\n", + " {'SYNPCC7942_RS01500': [[,\n", + " ],\n", + " [, ],\n", + " [,\n", + " ],\n", + " [, ]]},\n", + " {'SYNPCC7942_RS01505': [[],\n", + " [],\n", + " [],\n", + " []]},\n", + " {'SYNPCC7942_RS01750': [[,\n", + " ],\n", + " [, ],\n", + " [,\n", + " ],\n", + " [, ]]},\n", + " {'SYNPCC7942_RS01885': [[],\n", + " [],\n", + " [, ],\n", + " []]},\n", + " {'SYNPCC7942_RS02010': [[],\n", + " [],\n", + " [],\n", + " []]},\n", + " {'SYNPCC7942_RS02075': [[],\n", + " [],\n", + " [],\n", + " []]},\n", + " {'SYNPCC7942_RS02165': [[,\n", + " ],\n", + " [, ],\n", + " [,\n", + " ],\n", + " [, ]]},\n", + " {'SYNPCC7942_RS02185': None},\n", + " {'SYNPCC7942_RS02255': [[],\n", + " [],\n", + " [],\n", + " []]},\n", + " {'SYNPCC7942_RS13675': [[,\n", + " ],\n", + " [, ],\n", + " [,\n", + " ],\n", + " [, ]]},\n", + " {'SYNPCC7942_RS02490': None},\n", + " {'SYNPCC7942_RS02765': None},\n", + " {'SYNPCC7942_RS02940': None},\n", + " {'SYNPCC7942_RS02945': None},\n", + " {'SYNPCC7942_RS03055': None},\n", + " {'SYNPCC7942_RS03095': [[],\n", + " [],\n", + " [, ],\n", + " []]},\n", + " {'SYNPCC7942_RS03120': None},\n", + " {'SYNPCC7942_RS03225': None},\n", + " {'SYNPCC7942_RS03355': [[,\n", + " ],\n", + " [, ],\n", + " [,\n", + " ],\n", + " [, ]]},\n", + " {'SYNPCC7942_RS03380': [[],\n", + " [],\n", + " [, ],\n", + " [,\n", + " ]]},\n", + " {'SYNPCC7942_RS03485': None},\n", + " {'SYNPCC7942_RS03570': [[,\n", + " ],\n", + " [, ],\n", + " [,\n", + " ],\n", + " [, ]]},\n", + " {'SYNPCC7942_RS04180': None},\n", + " {'SYNPCC7942_RS04290': [[],\n", + " [],\n", + " [, ],\n", + " [,\n", + " ]]},\n", + " {'SYNPCC7942_RS04440': None},\n", + " {'SYNPCC7942_RS04735': [[],\n", + " [],\n", + " [],\n", + " []]},\n", + " {'SYNPCC7942_RS04750': None},\n", + " {'SYNPCC7942_RS04830': [[],\n", + " [],\n", + " [],\n", + " []]},\n", + " {'SYNPCC7942_RS04890': None},\n", + " {'SYNPCC7942_RS05155': None},\n", + " {'SYNPCC7942_RS05285': [[,\n", + " ],\n", + " [, ],\n", + " [, ],\n", + " [,\n", + " ,\n", + " ]]},\n", + " {'SYNPCC7942_RS05330': [[,\n", + " ],\n", + " [, ],\n", + " [,\n", + " ],\n", + " [, ]]},\n", + " {'SYNPCC7942_RS05635': None},\n", + " {'SYNPCC7942_RS05765': None},\n", + " {'SYNPCC7942_RS13745': [[,\n", + " ],\n", + " [, ],\n", + " [,\n", + " ],\n", + " [, ]]},\n", + " {'SYNPCC7942_RS06065': None},\n", + " {'SYNPCC7942_RS06375': None},\n", + " {'SYNPCC7942_RS06405': [[],\n", + " [],\n", + " [],\n", + " []]},\n", + " {'SYNPCC7942_RS06760': [[],\n", + " [],\n", + " [],\n", + " []]},\n", + " {'SYNPCC7942_RS06820': None},\n", + " {'SYNPCC7942_RS06825': None},\n", + " {'SYNPCC7942_RS07015': None},\n", + " {'SYNPCC7942_RS07410': None},\n", + " {'Synpcc7942_1478': [[],\n", + " [],\n", + " [],\n", + " []]},\n", + " {'SYNPCC7942_RS08000': None},\n", + " {'SYNPCC7942_RS08150': None},\n", + " {'SYNPCC7942_RS08350': [[,\n", + " ],\n", + " [, ],\n", + " [,\n", + " ],\n", + " [, ]]},\n", + " {'SYNPCC7942_RS08550': [[,\n", + " ],\n", + " [, ],\n", + " [,\n", + " ],\n", + " [, ]]},\n", + " {'SYNPCC7942_RS08555': [[,\n", + " ],\n", + " [, ],\n", + " [,\n", + " ],\n", + " [, ]]},\n", + " {'SYNPCC7942_RS13795': [[,\n", + " ],\n", + " [, ],\n", + " [,\n", + " ],\n", + " [, ]]},\n", + " {'SYNPCC7942_RS09115': None},\n", + " {'SYNPCC7942_RS09235': None},\n", + " {'SYNPCC7942_RS09260': [[],\n", + " [],\n", + " [],\n", + " []]},\n", + " {'SYNPCC7942_RS09540': None},\n", + " {'SYNPCC7942_RS09545': [[,\n", + " ],\n", + " [, ],\n", + " [,\n", + " ],\n", + " [, ]]},\n", + " {'SYNPCC7942_RS09570': None},\n", + " {'SYNPCC7942_RS09640': None},\n", + " {'SYNPCC7942_RS09645': None},\n", + " {'SYNPCC7942_RS09650': None},\n", + " {'SYNPCC7942_RS09705': [[],\n", + " [],\n", + " [],\n", + " []]},\n", + " {'SYNPCC7942_RS09735': None},\n", + " {'SYNPCC7942_RS09955': [[,\n", + " ],\n", + " [, ],\n", + " [,\n", + " ],\n", + " [, ]]},\n", + " {'SYNPCC7942_RS10100': None},\n", + " {'SYNPCC7942_RS10105': None},\n", + " {'SYNPCC7942_RS10110': None},\n", + " {'SYNPCC7942_RS10140': None},\n", + " {'SYNPCC7942_RS10225': [[,\n", + " ],\n", + " [, ],\n", + " [,\n", + " ],\n", + " [, ]]},\n", + " {'SYNPCC7942_RS10815': [[,\n", + " ],\n", + " [, ],\n", + " [, ],\n", + " [,\n", + " ]]},\n", + " {'SYNPCC7942_RS10975': None},\n", + " {'SYNPCC7942_RS11400': [[,\n", + " ],\n", + " [, ],\n", + " [,\n", + " ],\n", + " [, ]]},\n", + " {'SYNPCC7942_RS11630': None},\n", + " {'SYNPCC7942_RS11775': [[],\n", + " [],\n", + " [, ],\n", + " [,\n", + " ]]},\n", + " {'SYNPCC7942_RS11900': [[],\n", + " [],\n", + " [],\n", + " []]},\n", + " {'SYNPCC7942_RS11905': [[],\n", + " [],\n", + " [],\n", + " []]},\n", + " {'SYNPCC7942_RS12090': None},\n", + " {'SYNPCC7942_RS12325': [[],\n", + " [],\n", + " [],\n", + " []]},\n", + " {'SYNPCC7942_RS12420': [[],\n", + " [],\n", + " [],\n", + " []]},\n", + " {'SYNPCC7942_RS12425': [[],\n", + " [],\n", + " [],\n", + " []]},\n", + " {'Synpcc7942_2454': None},\n", + " {'SYNPCC7942_RS12590': [[,\n", + " ],\n", + " [, ],\n", + " [,\n", + " ],\n", + " [, ]]},\n", + " {'SYNPCC7942_RS12670': None},\n", + " {'SYNPCC7942_RS12715': [[],\n", + " [],\n", + " [, ],\n", + " []]},\n", + " {'SYNPCC7942_RS12725': None},\n", + " {'SYNPCC7942_RS12785': [[],\n", + " [],\n", + " [],\n", + " []]},\n", + " {'SYNPCC7942_RS13245': None},\n", + " {'SYNPCC7942_RS13310': [[],\n", + " [],\n", + " [],\n", + " []]}]" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rxns" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "e5f61cbe", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SYNPCC7942_RS00015 ['PRFGS_1']\n", + "SYNPCC7942_RS00575 ['GLGB']\n", + "SYNPCC7942_RS00790 ['UGP_PGM_c']\n", + "SYNPCC7942_RS01140 ['FASC161ACP', 'GLYOX_2']\n", + "SYNPCC7942_RS01500 ['FASC161ACP', 'GLYOX_2']\n", + "SYNPCC7942_RS01505 ['SADT2']\n", + "SYNPCC7942_RS01750 ['FASC161ACP', 'GLYOX_2']\n", + "SYNPCC7942_RS01885 ['AHSERL2']\n", + "SYNPCC7942_RS02010 ['CDPDAGS1819Z160']\n", + "SYNPCC7942_RS02075 ['FRDO']\n", + "SYNPCC7942_RS02165 ['FASC161ACP', 'GLYOX_2']\n", + "SYNPCC7942_RS02255 ['AIRC1']\n", + "SYNPCC7942_RS13675 ['FASC161ACP', 'GLYOX_2']\n", + "SYNPCC7942_RS03095 ['GLCS2']\n", + "SYNPCC7942_RS03355 ['FASC161ACP', 'GLYOX_2']\n", + "SYNPCC7942_RS03380 ['PPND2']\n", + "SYNPCC7942_RS03570 ['FASC161ACP', 'GLYOX_2']\n", + "SYNPCC7942_RS04290 ['ASNTRS_1']\n", + "SYNPCC7942_RS04735 ['FRDO']\n", + "SYNPCC7942_RS04830 ['PAPSSH']\n", + "SYNPCC7942_RS05285 ['ILETA2', 'aratyr1']\n", + "SYNPCC7942_RS05330 ['FASC161ACP', 'GLYOX_2']\n", + "SYNPCC7942_RS13745 ['FASC161ACP', 'GLYOX_2']\n", + "SYNPCC7942_RS06405 ['FRDO']\n", + "SYNPCC7942_RS06760 ['FRDO']\n", + "Synpcc7942_1478 ['GLGB']\n", + "SYNPCC7942_RS08350 ['FASC161ACP', 'GLYOX_2']\n", + "SYNPCC7942_RS08550 ['FASC161ACP', 'GLYOX_2']\n", + "SYNPCC7942_RS08555 ['FASC161ACP', 'GLYOX_2']\n", + "SYNPCC7942_RS13795 ['FASC161ACP', 'GLYOX_2']\n", + "SYNPCC7942_RS09260 ['PGPS1819Z160']\n", + "SYNPCC7942_RS09545 ['FASC161ACP', 'GLYOX_2']\n", + "SYNPCC7942_RS09705 ['FRDO']\n", + "SYNPCC7942_RS09955 ['FASC161ACP', 'GLYOX_2']\n", + "SYNPCC7942_RS10225 ['FASC161ACP', 'GLYOX_2']\n", + "SYNPCC7942_RS10815 ['ACGAM6PS', 'UAGDP_c']\n", + "SYNPCC7942_RS11400 ['FASC161ACP', 'GLYOX_2']\n", + "SYNPCC7942_RS11775 ['ATPSu']\n", + "SYNPCC7942_RS11900 ['FRDO']\n", + "SYNPCC7942_RS11905 ['FRDO']\n", + "SYNPCC7942_RS12325 ['GLGB']\n", + "SYNPCC7942_RS12420 ['P5CCD']\n", + "SYNPCC7942_RS12425 ['P5CCD']\n", + "SYNPCC7942_RS12590 ['FASC161ACP', 'GLYOX_2']\n", + "SYNPCC7942_RS12715 ['APSR']\n", + "SYNPCC7942_RS12785 ['GLCS1']\n", + "SYNPCC7942_RS13310 ['GLYOX_2']\n" + ] + } + ], + "source": [ + "rxns_to_add = set()\n", + "for i in rxns:\n", + "# print(i)\n", + " for gene, rxn in i.items():\n", + " if rxn is not None:\n", + " good_rxns = [j.id for j in rxn[0]]\n", + " print(gene, good_rxns)\n", + " rxns_to_add.update(good_rxns)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ad8211e0", + "metadata": {}, + "outputs": [], + "source": [ + "len(rxns_to_add)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "6fe453f0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "GLCS1\n", + "GLCS1: adpglc_c --> adp_c + glycogen_c + h_c\n", + "SADT2\n", + "SADT2: atp_c + gtp_c + h2o_c + so4_c --> aps_c + gdp_c + pi_c + ppi_c\n", + "ATPSu\n", + "ATPSu: 3.0 adp_c + 14.0 h_u + 3.0 pi_c --> 3.0 atp_c + 3.0 h2o_c + 11.0 h_c\n", + "PPND2\n", + "PPND2: nadp_c + pphn_c --> 34hpp_c + co2_c + nadph_c\n", + "aratyr1\n", + "aratyr1: 4mop_c + tyr__L_c --> 34hpp_c + leu__L_c\n", + "CDPDAGS1819Z160\n", + "CDPDAGS1819Z160: ctp_c + 3.0 h_c + pa1819Z160_c --> cdp12dgr1819Z160_c + ppi_c\n", + "ASNTRS_1\n", + "ASNTRS_1: asn__L_c + atp_c + trnaasn_c --> amp_c + asntrna_c + h_c + ppi_c\n", + "GLGB\n", + "GLGB: 14glucan_c --> glycogen_c\n", + "FRDO\n", + "FRDO: fdxrd_c + nadp_c --> fdxox_c + h_c + nadph_c\n", + "ACGAM6PS\n", + "ACGAM6PS: accoa_c + gam6p_c --> acgam6p_c + coa_c + h_c\n", + "PGPS1819Z160\n", + "PGPS1819Z160: cdp12dgr1819Z160_c + glyc3p_c --> cmp_c + pgp1819Z160_c\n", + "PAPSSH\n", + "PAPSSH: 2.0 h_c + pap_c + so4_c --> h2o_c + paps_c\n", + "GLYOX_2\n", + "GLYOX_2: h2o_c + lgt__S_c --> gthrd_c + h_c + lac__D_c + mthgxl_c\n", + "APSR\n", + "APSR: aps_c + trdrd_c --> amp_c + 2.0 h_c + so3_c + trdox_c\n", + "AIRC1\n", + "AIRC1: air_c + atp_c + co2_c + h2o_c --> 5aizc_c + adp_c + 2.0 h_c + pi_c\n", + "ILETA2\n", + "ILETA2: 3mop_c + glu__L_c --> akg_c + ile__L_c\n", + "PRFGS_1\n", + "PRFGS_1: atp_c + fgam_c + gln__L_c + h2o_c --> adp_c + fpram_c + glu__L_c + 2.0 h_c + pi_c\n", + "AHSERL2\n", + "AHSERL2: achms_c + h2s_c --> ac_c + h_c + hcys__L_c\n", + "FASC161ACP\n", + "FASC161ACP: 2.0 h_c + malACP_c + myrsACP_c + nadph_c --> ACP_c + co2_c + h2o_c + hdeACP_c + nadp_c\n", + "GLCS2\n", + "GLCS2: udpg_c --> glycogen_c + h_c + udp_c\n", + "UAGDP_c\n", + "UAGDP_c: acgam6p_c + h_c + utp_c --> ppi_c + uacgam_c\n", + "P5CCD\n", + "P5CCD: glu__L_c + h_c + nadh_c --> glu5sa_c + nad_c + pi_c\n", + "UGP_PGM_c\n", + "UGP_PGM_c: g6p_c + h_c + utp_c --> ppi_c + udpg_c\n" + ] + } + ], + "source": [ + "with open('rxns_to_add_for_ge.txt', 'w') as f:\n", + " for i in rxns_to_add:\n", + " f.writelines(i+'\\n')\n", + " print(i)\n", + " print(universal_model.reactions.get_by_id(i))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "41621c28", + "metadata": {}, + "outputs": [], + "source": [ + "actual_rxns = [universal_model.reactions.get_by_id(i) for i in rxns_to_add]" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "d4025267", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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TZs2zWmbK2deLlVUVGRVqVLF+s9//uPYpl848/Ltt99akqzk5GSn7dWrV7dCQkKskJAQ64knnnA61mOPPeb03I4dO1rDhw932nbXXXdZCQkJlmVZ1smTJy0/Pz9r/fr1VnFxsRUREWElJSVZN998s2VZlvXee+9Z9erVc7x20KBB1p133ul0vJ/PvMyZM8exbevWrZYkKz09vdQ/DwCu4cwL8BuTkZGhdevWqV+/fpKkgIAA9e3bV3PnznU8Jy0tTZ07d/b473348GENHz5czZs3V3h4uMLCwpSXl6esrKwrOu66deuUlpama6+9Vvn5+U77oqOjnR6np6crJibGaVtMTIzS09MlSVWrVlW7du20YsUKbdmyRUFBQfrzn/+sTZs2KS8vT19//bXi4uJcmqtt27aOX9epU0eSdOTIEbffHwBnLNgFfmPmzp2rwsJCpwW6lmXJbrfrtddeU3h4uIKDg90+rp+fn9OlJ+nCAtmLDRo0SMePH9err76qyMhI2e12dejQQefPn3fp92jWrJlsNpsyMjKctjdp0kSSLjt3aZeXfkl8fLxWrFghu92uuLg4RUREqFWrVkpNTdXXX3+tMWPGuHScixcH/3w5q7i42O15ADjjzAvwG1JYWKh3331Xr7zyitLS0hw/mzdvVt26dbVgwQJJF84YLFu2rNTjBAUFOdaE/KxmzZo6dOiQU8Bc+jknq1at0qOPPqqEhARde+21stvtOnbsmMvzV69eXV27dtVrr72m06dPu/y6i7Vq1UqrVq0qMVfr1q0dj39e97Js2TLFx8dLuhA0CxYs0I4dOxzbpMv/WQDwLuIF+A1ZvHixTp48qaFDh+q6665z+unTp4/j0lFiYqIWLFigxMREpaena8uWLZoyZYrjOI0aNdLKlSt14MABR3zEx8fr6NGjevHFF7Vr1y69/vrr+uKLL5x+/+bNm+uf//yn0tPTtXbtWvXv39/tszxvvPGGCgsLFR0drYULFyo9PV0ZGRl67733tH37dvn7+//i6x9//HG98847mjlzpjIzMzV16lQlJydr7NixjufExsYqNzdXixcvdoqX+fPnq06dOoqKinL6s/j++++VkZGhY8eOlTjbBMALfLzmBsBV9Mc//tGxMPVSa9eutSRZmzdvtizLshYtWmRdf/31VlBQkFWjRg2rd+/ejueuWbPGatu2rWW3262L/xqZOXOm1aBBAyskJMQaOHCgNWnSJKcFuxs3brSio6OtSpUqWc2bN7c++uijEot/9Su3SluWZR08eNB6+OGHrcaNG1uBgYFWaGio1b59e+ull16yTp8+/avH+qVbpX/Wrl07q3bt2o7Hx48ft2w2m3XPPfc4Pe/IkSNW165drdDQ0BK3Sm/atMnxvJMnTzr2A7gyNsu65CI1AABAOcZlIwAAYBTiBQAAGIV4AQAARiFeAACAUYgXAABgFOIFAAAYhXgBAABGIV4AAIBRiBcAAGAU4gUAABiFeAEAAEb5f9FWmIcwADvmAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "with model:\n", + " model.add_reactions(actual_rxns)\n", + " create_ge_confusion_matrix(model, syn_pathfrom)\n", + " plt.savefig(\"after_gapfill.png\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "007b501e", + "metadata": {}, + "outputs": [], + "source": [ + "results = create_ge_confusion_matrix(model, syn_pathfrom)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "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.10.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/syn_elong/notebooks/optimize_sucrose_via_optknock.ipynb b/syn_elong/notebooks/optimize_sucrose_via_optknock.ipynb new file mode 100644 index 0000000..dafc5ca --- /dev/null +++ b/syn_elong/notebooks/optimize_sucrose_via_optknock.ipynb @@ -0,0 +1,2120 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import os\n", + "os.environ['JAVA_HOME'] = r'C:\\Program Files\\Java\\jdk-21'\n", + "from straindesign import compress_model, remove_dummy_bounds\n", + "import cobra\n", + "import logging\n", + "logging.basicConfig(level=logging.INFO)\n", + "import cobra\n", + "import numpy as np\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "import straindesign as sd\n", + "import straindesign.names as names" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Set parameter Username\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:gurobipy.gurobipy:Set parameter Username\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Set parameter GURO_PAR_SPECIAL\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:gurobipy.gurobipy:Set parameter GURO_PAR_SPECIAL\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Set parameter TokenServer to value \"leghorn\"\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:gurobipy.gurobipy:Set parameter TokenServer to value \"leghorn\"\n" + ] + } + ], + "source": [ + "from syn_elong import model\n", + "from syn_elong.media import m9_media, syn_min_media" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:cobra.medium.boundary_types:Compartment `e` sounds like an external compartment. Using this one without counting boundary reactions.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'EX_hco3_e': 1.99,\n", + " 'EX_mn2_e': 0.0009,\n", + " 'EX_mg2_e': 0.03,\n", + " 'EX_ca2_e': 0.024,\n", + " 'EX_nh4_e': 0.0031,\n", + " 'EX_cu2_e': 3e-05,\n", + " 'EX_k_e': 0.046,\n", + " 'EX_h2o_e': 100.0,\n", + " 'EX_o2_e': 100.0,\n", + " 'EX_co2_e': 1.99,\n", + " 'EX_leu__L_e': 1000.0,\n", + " 'EX_cobalt2_e': 1.7e-05,\n", + " 'EX_no3_e': 1.76,\n", + " 'EX_zn2_e': 7.7e-05,\n", + " 'EX_fe3_e': 0.001,\n", + " 'EX_so4_e': 0.03,\n", + " 'EX_mobd_e': 0.00016,\n", + " 'EX_na1_e': 1.79854,\n", + " 'EX_h_e': 100.0,\n", + " 'EX_photon410_e': 1000.0,\n", + " 'EX_photon430_e': 1000.0,\n", + " 'EX_photon450_e': 1000.0,\n", + " 'EX_photon470_e': 1000.0,\n", + " 'EX_photon490_e': 1000.0,\n", + " 'EX_photon510_e': 1000.0,\n", + " 'EX_photon530_e': 1000.0,\n", + " 'EX_photon550_e': 1000.0,\n", + " 'EX_photon570_e': 1000.0,\n", + " 'EX_photon590_e': 1000.0,\n", + " 'EX_photon610_e': 1000.0,\n", + " 'EX_photon630_e': 1000.0,\n", + " 'EX_photon650_e': 1000.0,\n", + " 'EX_photon670_e': 1000.0,\n", + " 'EX_photon690_e': 1000.0,\n", + " 'EX_pi_e': 0.023,\n", + " 'EX_tre_e': 1000.0,\n", + " 'EX_man_e': 1000.0,\n", + " 'EX_galt_e': 1000.0,\n", + " 'EX_arab__L_e': 1000.0,\n", + " 'EX_acgam_e': 1000.0,\n", + " 'EX_glcr_e': 1000.0,\n", + " 'EX_succ_e': 1000.0,\n", + " 'EX_gal_e': 1000.0,\n", + " 'EX_asp__L_e': 1000.0,\n", + " 'EX_pro__L_e': 1000.0,\n", + " 'EX_ala__D_e': 1000.0,\n", + " 'EX_ser__D_e': 1000.0,\n", + " 'EX_for_e': 1000.0,\n", + " 'EX_mnl_e': 1000.0,\n", + " 'EX_glu__L_e': 1000.0,\n", + " 'EX_sbt__D_e': 1000.0,\n", + " 'EX_glyc_e': 1000.0,\n", + " 'EX_fuc__L_e': 1000.0,\n", + " 'EX_glcur_e': 1000.0,\n", + " 'EX_glcn_e': 1000.0,\n", + " 'EX_glyc3p_e': 1000.0,\n", + " 'EX_xyl__D_e': 1000.0,\n", + " 'EX_lac__L_e': 1000.0,\n", + " 'EX_g6p_e': 1000.0,\n", + " 'EX_malt_e': 1000.0,\n", + " 'EX_melib_e': 1000.0,\n", + " 'EX_thymd_e': 1000.0,\n", + " 'EX_galctn__D_e': 1000.0,\n", + " 'EX_rib__D_e': 1000.0,\n", + " 'EX_rmn_e': 1000.0,\n", + " 'EX_fru_e': 1000.0,\n", + " 'EX_ac_e': 1000.0,\n", + " 'EX_glc__D_e': 1000.0,\n", + " 'EX_asn__L_e': 1000.0,\n", + " 'EX_uri_e': 1000.0,\n", + " 'EX_12ppd__S_e': 1000.0,\n", + " 'EX_akg_e': 1000.0,\n", + " 'EX_lcts_e': 1000.0,\n", + " 'EX_malttr_e': 1000.0,\n", + " 'EX_dad_2_e': 1000.0,\n", + " 'EX_adn_e': 1000.0,\n", + " 'EX_g1p_e': 1000.0,\n", + " 'EX_f6p_e': 1000.0,\n", + " 'EX_ins_e': 1000.0,\n", + " 'EX_cit_e': 1000.0,\n", + " 'EX_inost_e': 1000.0,\n", + " 'EX_fum_e': 1000.0,\n", + " 'EX_ppa_e': 1000.0,\n", + " 'EX_galct__D_e': 1000.0,\n", + " 'EX_glyclt_e': 1000.0,\n", + " 'EX_mal__D_e': 1000.0,\n", + " 'EX_mal__L_e': 1000.0,\n", + " 'EX_ser__L_e': 1000.0,\n", + " 'EX_thr__L_e': 1000.0,\n", + " 'EX_ala__L_e': 1000.0,\n", + " 'EX_acac_e': 1000.0,\n", + " 'EX_acmana_e': 1000.0,\n", + " 'EX_galur_e': 1000.0,\n", + " 'EX_peamn_e': 1000.0,\n", + " 'EX_etha_e': 1000.0,\n", + " 'EX_tym_e': 1000.0,\n", + " 'EX_lyx__L_e': 1000.0,\n", + " 'EX_pyr_e': 1000.0,\n", + " 'EX_galctn__L_e': 1000.0,\n", + " 'EX_acnam_e': 1000.0,\n", + " 'EX_all__D_e': 1000.0,\n", + " 'EX_4abut_e': 1000.0,\n", + " 'EX_but_e': 1000.0,\n", + " 'EX_dca_e': 1000.0,\n", + " 'EX_5dglcn_e': 1000.0,\n", + " 'EX_hxa_e': 1000.0,\n", + " 'EX_tartr__L_e': 1000.0,\n", + " 'EX_lys__L_e': 1000.0,\n", + " 'EX_met__L_e': 1000.0,\n", + " 'EX_gly_e': 1000.0,\n", + " 'EX_his__L_e': 1000.0,\n", + " 'EX_hom__L_e': 1000.0,\n", + " 'EX_ile__L_e': 1000.0,\n", + " 'EX_orn_e': 1000.0,\n", + " 'EX_phe__L_e': 1000.0,\n", + " 'EX_val__L_e': 1000.0,\n", + " 'EX_dha_e': 1000.0,\n", + " 'EX_cys__L_e': 1000.0,\n", + " 'EX_no2_e': 1000.0,\n", + " 'EX_urea_e': 1000.0,\n", + " 'EX_trp__L_e': 1000.0,\n", + " 'EX_tyr__L_e': 1000.0,\n", + " 'EX_agm_e': 1000.0,\n", + " 'EX_acgal_e': 1000.0,\n", + " 'EX_gam_e': 1000.0,\n", + " 'EX_ura_e': 1000.0,\n", + " 'EX_ade_e': 1000.0,\n", + " 'EX_cytd_e': 1000.0,\n", + " 'EX_csn_e': 1000.0,\n", + " 'EX_gua_e': 1000.0,\n", + " 'EX_gsn_e': 1000.0,\n", + " 'EX_thym_e': 1000.0,\n", + " 'EX_xan_e': 1000.0,\n", + " 'EX_xtsn_e': 1000.0,\n", + " 'EX_alltn_e': 1000.0,\n", + " 'EX_23camp_e': 1000.0,\n", + " 'EX_3amp_e': 1000.0,\n", + " 'EX_gmp_e': 1000.0,\n", + " 'EX_23cgmp_e': 1000.0,\n", + " 'EX_3gmp_e': 1000.0,\n", + " 'EX_cmp_e': 1000.0,\n", + " 'EX_23ccmp_e': 1000.0,\n", + " 'EX_gam6p_e': 1000.0,\n", + " 'EX_3cmp_e': 1000.0,\n", + " 'EX_ump_e': 1000.0,\n", + " 'EX_23cump_e': 1000.0,\n", + " 'EX_man6p_e': 1000.0,\n", + " 'EX_pser__L_e': 1000.0,\n", + " 'EX_thrp_e': 1000.0,\n", + " 'EX_3ump_e': 1000.0,\n", + " 'EX_tyrp_e': 1000.0,\n", + " 'EX_minohp_e': 1000.0}" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.medium" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'EX_h2o_e': 100.0,\n", + " 'EX_h_e': 100.0,\n", + " 'EX_no3_e': 100.0,\n", + " 'EX_pi_e': 100.0,\n", + " 'EX_so4_e': 100.0,\n", + " 'EX_nh4_e': 100.0,\n", + " 'EX_mg2_e': 100.0,\n", + " 'EX_fe3_e': 100.0,\n", + " 'EX_cobalt2_e': 100.0,\n", + " 'EX_k_e': 100.0,\n", + " 'EX_na1_e': 100.0,\n", + " 'EX_hco3_e': 100.0,\n", + " 'EX_co2_e': 100.0,\n", + " 'EX_photon430_e': 1000.0,\n", + " 'EX_photon450_e': 1000.0,\n", + " 'EX_photon470_e': 1000.0,\n", + " 'EX_photon410_e': 1000.0,\n", + " 'EX_photon490_e': 1000.0,\n", + " 'EX_photon510_e': 1000.0,\n", + " 'EX_photon530_e': 1000.0,\n", + " 'EX_photon550_e': 1000.0,\n", + " 'EX_photon570_e': 1000.0,\n", + " 'EX_photon590_e': 1000.0,\n", + " 'EX_photon610_e': 1000.0,\n", + " 'EX_photon630_e': 1000.0,\n", + " 'EX_photon650_e': 1000.0,\n", + " 'EX_photon670_e': 1000.0,\n", + " 'EX_photon690_e': 1000.0}" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m9_media" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'EX_hco3_e': 1.455174283140397,\n", + " 'EX_mg2_e': 0.0006043083928022,\n", + " 'EX_nh4_e': 0.0031,\n", + " 'EX_co2_e': 0.7190666730577998,\n", + " 'EX_leu__L_e': 0.0283647410545166,\n", + " 'EX_cobalt2_e': 2.758158572551524e-07,\n", + " 'EX_no3_e': 0.4029488349165458,\n", + " 'EX_fe3_e': 8.634960628764796e-05,\n", + " 'EX_so4_e': 0.0083942782543118,\n", + " 'EX_h_e': 1.8823881901014008,\n", + " 'EX_photon650_e': 0.0006043083928022,\n", + " 'EX_photon670_e': 11.697656196156876,\n", + " 'EX_photon690_e': 18.200781855573425,\n", + " 'EX_pi_e': 0.0230000000000021}" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "syn_min_media" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.053901867745774316\n" + ] + } + ], + "source": [ + "with model:\n", + " print(model.slim_optimize())" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:cobra.medium.boundary_types:Compartment `e` sounds like an external compartment. Using this one without counting boundary reactions.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.04942837294924107\n" + ] + } + ], + "source": [ + "with model:\n", + " model.medium = syn_min_media\n", + " print(model.slim_optimize())" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:cobra.medium.boundary_types:Compartment `e` sounds like an external compartment. Using this one without counting boundary reactions.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2.0\n" + ] + } + ], + "source": [ + "with model:\n", + " model.medium = m9_media\n", + " print(model.slim_optimize())" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:cobra.medium.boundary_types:Compartment `e` sounds like an external compartment. Using this one without counting boundary reactions.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Maximum possible BIOMASS__1 synthesis rate: 2.0.\n", + "Maximum possible EX_sucr_e synthesis rate: 16.389121923937367.\n" + ] + } + ], + "source": [ + "with model:\n", + " model.medium = m9_media\n", + " sol = sd.fba(model, obj='BIOMASS__1', obj_sense='max')\n", + " print(f\"Maximum possible BIOMASS__1 synthesis rate: {sol.objective_value}.\")\n", + " sol = sd.fba(model, obj='EX_sucr_e', obj_sense='max')\n", + " print(f\"Maximum possible EX_sucr_e synthesis rate: {sol.objective_value}.\")" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:cobra.medium.boundary_types:Compartment `e` sounds like an external compartment. Using this one without counting boundary reactions.\n" + ] + } + ], + "source": [ + "model.medium = m9_media" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "968" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(model.reactions)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:cobra.summary.model_summary:Generating new parsimonious flux distribution.\n" + ] + }, + { + "data": { + "text/html": [ + "

Objective

1.0 BIOMASS__1 = 2.0

Uptake

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
MetaboliteReactionFluxC-NumberC-Flux
co2_eEX_co2_e42.7149.01%
cobalt2_eEX_cobalt2_e1.023E-0500.00%
fe3_eEX_fe3_e0.00320400.00%
h_eEX_h_e29.3300.00%
hco3_eEX_hco3_e44.42150.99%
k_eEX_k_e3.094E-0600.00%
mg2_eEX_mg2_e0.0224200.00%
na1_eEX_na1_e2.38E-0700.00%
nh4_eEX_nh4_e16.1200.00%
photon650_eEX_photon650_e0.0224200.00%
photon670_eEX_photon670_e346.200.00%
photon690_eEX_photon690_e634.600.00%
pi_eEX_pi_e0.853400.00%
so4_eEX_so4_e0.311500.00%
amylose_cSK_amylose_c1.02700.00%

Secretion

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
MetaboliteReactionFluxC-NumberC-Flux
5drib_cDM_5drib_c-0.0002078526.10%
amob_cDM_amob_c-5.236E-051519.73%
co_cDM_co_c-0.002115153.14%
dialurate_cDM_dialurate_c-1.023E-0541.03%
pho_loss_cDM_pho_loss_c-17.3100.00%
o2_eEX_o2_e-95.0300.00%
sucr_eEX_sucr_e-0.01100.00%
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "fluxes = model.optimize().fluxes\n", + "fluxes = fluxes[np.abs(fluxes)>0]" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "ex = [i for i in fluxes.index if i.startswith('EX_')]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "pd.set_option('display.float_format', lambda x: f'{x:.3f}')" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "EX_photon690_e -734.760\n", + "EX_photon670_e -400.139\n", + "EX_co2_e -87.123\n", + "EX_h2o_e -51.971\n", + "EX_nh4_e -8.573\n", + "EX_no3_e -7.545\n", + "EX_pi_e -0.853\n", + "EX_so4_e -0.311\n", + "EX_mg2_e -0.022\n", + "EX_photon650_e -0.022\n", + "EX_fe3_e -0.003\n", + "EX_cobalt2_e -0.000\n", + "EX_k_e -0.000\n", + "EX_hco3_e -0.000\n", + "EX_na1_e -0.000\n", + "EX_h_e 0.011\n", + "EX_sucr_e 0.011\n", + "EX_o2_e 110.129\n", + "Name: fluxes, dtype: float64" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# fluxes.style.format('{:.2f}', na_rep='MISS')\n", + "fluxes.loc[ex].sort_values()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAGwCAYAAABcnuQpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAABBeUlEQVR4nO3dd3hUdd7+8XtIB1JIIHUChC4BAglFECkauggSVnCVRVn3UWRXWXctPNejiKgB11UsrKwKBF0FWZeiIB1C6CAQpUkNEEoINQ0IKef3B8v8jAkhgUlmTvJ+XddcOud8z8znm5Nyc8p8LIZhGAIAADCpGo4uAAAA4E4QZgAAgKkRZgAAgKkRZgAAgKkRZgAAgKkRZgAAgKkRZgAAgKm5OrqAilZYWKhTp07J29tbFovF0eUAAIAyMAxDWVlZCg0NVY0apR97qfJh5tSpUwoPD3d0GQAA4DakpqbKarWWOqbKhxlvb29J178YPj4+Dq4GAACURWZmpsLDw21/x0tT5cPMjVNLPj4+hBkAAEymLJeIcAEwAAAwNcIMAAAwNcIMAAAwNcIMAAAwNcIMAAAwNcIMAAAwNcIMAAAwNcIMAAAwNcIMAAAwNcIMAAAwNcIMAAAwNcIMAAAwNcIMAAAwNcIMAAAwNcIMAAAwtWoTZv4w6wfN33lCV64VOLoUAABgR66OLqCybDpyXltO/qhXPPaoX6tgDY2xqmOEvywWi6NLAwAAd6DahJkbsnPz9e/tJ/Tv7ScU7u+lIe2siou2qn5ATUeXBgAAbkO1CzO/lHrhit5fdVAfrD6oDg38FRcTpv6tQ+Tt6ebo0gAAQBk59JqZpKQkDRw4UKGhobJYLFqwYEGxMfv27dODDz4oX19f1apVSx06dNDx48ftWodhSFuPXtBL/9mlDm+u1HNzdirpwFkVFhp2fR8AAGB/Dg0zOTk5ioqK0tSpU0tcf/jwYXXt2lUtWrRQYmKifvrpJ73yyivy9PSssJqu5hVqYfIp/W7GVt0zebUmL/1Zh9KzK+z9AADAnbEYhuEUhx8sFovmz5+vwYMH25YNHz5cbm5u+uKLL277dTMzM+Xr66vwsXNVw+P2r4uJCvfT0OgwPRgVJt+anIYCAKAi3fj7nZGRIR8fn1LHOu2t2YWFhVq8eLGaNWumPn36KDAwUJ06dSrxVNQv5ebmKjMzs8jDHn5MvaRXFu5Rh7dW6pkvt2vVvjPKLyi0y2sDAIDb57RhJj09XdnZ2Zo0aZL69u2r5cuX66GHHtKQIUO0du3am24XHx8vX19f2yM8PNyudV3LL9T3u9L0+1k/6O741Zq4aK/2nbZPYAIAAOXntKeZTp06pbCwMD3yyCP66quvbOMefPBB1apVS7Nnzy7xdXJzc5Wbm2t7npmZqfDw8Ds+zXQrLUN8FBdj1aC2oapb26PC3gcAgOqgPKeZnPbW7Lp168rV1VUtW7Yssvyuu+7S+vXrb7qdh4eHPDwqP0zsPZ2pvYv2Kv77ferRvJ7ioq26/64gubs67cEvAACqBKcNM+7u7urQoYP2799fZPmBAwfUoEEDB1V1a/mFhlbuS9fKfenyq+mmgW1CFRdjVdtwP0eXBgBAleTQMJOdna1Dhw7ZnqekpCg5OVn+/v6qX7++XnjhBQ0bNkzdunVTz549tXTpUn333XdKTEx0XNHlcOlynr7YfExfbD6mJoG1FRdt1UPtwhTsW3G3lgMAUN049JqZxMRE9ezZs9jykSNHKiEhQZI0Y8YMxcfH68SJE2revLkmTJigQYMGlfk97HVrtr3UsEj3NKmroTFW9YkMlqebi6NLAgDA6ZTnmhmnuQC4ojhbmPklbw9XDWgTorgYqzo09Hd0OQAAOI0qcQFwdZCVm68521I1Z1uqGgTU1JB2Vg2JDlO4v3OFLgAAnBlhxkkcO39Z7608oCmrDqhjQ3/FxVg1oHWIanmwiwAAKA1/KZ2MYUhbUi5oS8oFjV+4R31bBSsu2qoujQNUo4bF0eUBAOB0CDNO7EpegebvPKn5O08q1NdTD0WHKS7aqkb1aju6NAAAnAZhxiROZVzV1DWHNXXNYbWr76e4aKsGRoXK14umlwCA6o0wY0I7j1/SzuOX9PqiverVMkhDo63q1qyeXDgNBQCohggzJnYtv1CLfzqtxT+dVj1vDw1ue/3ThlsEl34LGwAAVQlhpoo4m5WrT9el6NN1KWoV5qO4aKsGtQ2Tfy13R5cGAECFIsxUQbtPZmr3yb166/t96tE88L9NLwPl5kLTSwBA1UOYqcLyCgyt2HtGK/aeUZ2abnow6vppqDZWP0eXBgCA3RBmqomLl/M0a9Mxzdp0TM2C/n/Ty0Afml4CAMyN3kzVmEsNi7o2qau4GKt6twyi6SUAwGnQmwllUlBoaO2Bs1p74Ky8PV31QJsQxUVb1Z6mlwAAEyHMQJKUdTVfs7emavbWVDUMqKkh0debXlrrcDQLAODcCDMo5uj5y3p3xQG9t/KA7o4IUFyMVf1aBdP0EgDglPjrhJsyDGnTkfPadOS8Xl24W31bBWtotFWdGwfIYuHThgEAzoEwgzK5fK1A83ac1LwdJxXm56WH2oVpaIxVDevWcnRpAIBqjjCDcjt56Yo+WnNIH605pJgGdRQXbdUDUSHy8aTpJQCg8hFmcEe2H7uo7ccuasJ3e643vYyx6t6mNL0EAFQewgzsIje/UIt+Oq1FP51WoLeHHmoXprgYq5oFeTu6NABAFUeYgd2lZ+Xqn0lH9M+kI2od5quhMVY9GBWqOjS9BABUAMIMKtSukxnadTJDby7ep54t6iku2qqeLWh6CQCwH8IMKsW1gkIt23NGy/acUUAtdw2MCtXQGKtahfk6ujQAgMkRZlDpzudcU8LGo0rYeFTNg7wVFxOmwe3CFOhN00sAQPnRaBJOwaWGRd2aXm962atlkDxcaXoJANUZjSZhOgWFhtbsP6s1+8/Kx9NVD0SFKi7aqpgGdRxdGgDAyRFm4HQyr+brqy3H9dWW42pUt5aGRIdpSLRVoX5eji4NAOCECDNwakfO5eid5Qf07ooD6tw4QHHRVvVrFSIvd05DAQCuI8zAFAoNacOh89pw6LxeWbBb/VqHaGiMVZ0i/Gl6CQDVHGEGppNzrUDfbD+hb7afULi/lx5qZ9XQaKvqB3CBNwBUR4QZmFrqhSv6YNVBfbDqoDo0vN70ckCbEHnT9BIAqg3CDKqMbUcvatvRi3rtuz3qExmsuGirujapqxo0vQSAKs2hnymflJSkgQMHKjQ0VBaLRQsWLLjp2KeffloWi0VTpkyptPpgTlfzCrUw+ZR+N2OrukxarUlLftah9CxHlwUAqCAODTM5OTmKiorS1KlTSx03f/58bd68WaGhoZVUGaqKtMyrmrb2sGLfTdKgqRv0xaajunT5mqPLAgDYkUNPM/Xr10/9+vUrdczJkyf1pz/9ScuWLdOAAQMqqTJURT+mXtKPqZc0cdE+3X9XoOKirerRvJ5caXoJAKbm1NfMFBYWasSIEXrhhRcUGRlZpm1yc3OVm5tre56ZmVlR5cGkrhUUasnuNC3Znaa6td31YFSY4mLCFBlK00sAMCOn/ifp5MmT5erqqmeffbbM28THx8vX19f2CA8Pr8AKYXbnsq9pxoYUDfhgvfpOSdJn647obFburTcEADgNpw0z27dv1/vvv6+EhIRyfSjauHHjlJGRYXukpqZWYJWoSn5Oy9Ibi/epc/wqjUrYpu93nVZufoGjywIA3ILTnmZat26d0tPTVb9+fduygoIC/eUvf9GUKVN09OjRErfz8PCQh4dHJVWJqii/0NDqn9O1+ud0+Xq5aWBUiOKirWpXn6aXAOCMnDbMjBgxQrGxsUWW9enTRyNGjNATTzzhoKpQ3WRcydO/Nh/XvzYfV+N6tTQk2qq4aKuCfT0dXRoA4L8cGmays7N16NAh2/OUlBQlJyfL399f9evXV0BAQJHxbm5uCg4OVvPmzSu7VECHz+bob8v26+/L9+ueJnUVF21Vn8hgml4CgIM5NMz88MMP6tmzp+35888/L0kaOXKkEhISHFQVULpCQ1p38JzWHTyn2h6u6t/6+qcNd6TpJQA4hMUwDMPRRVSkzMzM63c1jZ2rGh40IkTFqe9fU0OiwxQXbVW4P99rAHAnbvz9zsjIkI+PT6ljnfaaGcBsjl+4rCkrD+r9VQfVoaG/hkZb1b9NiGp78GMGABWJ37KAnRmGtDXlgramXND4b/eoT2SQhsaEq0vjAJpeAkAFIMwAFehKXoEWJJ/SguRTCvH11EPtwhQXY1XjerUdXRoAVBmEGaCSnM64qn8kHtY/Eg+rbbif4mKserBNqHxrujm6NAAwNcIM4ADJqZeUnHpJExftVexdgRoaY1W3pjS9BIDbQZgBHOhafqG+35Wm73elqW5tDw1uG6q4GKvuCin9yn0AwP9HmAGcxLnsXH22PkWfrU9RyxAfxcVYNbhtqAJq054DAEpDmAGc0N7Tmdq7aK/iv9+nHs3rKS7aqvvvCpK7K6ehAODXCDOAE8svNLRyX7pW7kuXX003PRgVqrhoq6LC/RxdGgA4DcIMYBKXLufp803H9PmmY2oaWFtDoq0aEh2mIB+aXgKo3mhnAJiYSw3Lf5tehqlPZLA83Wh6CaBqoJ0BUE0UFBpKOnBWSQfOytvDVQPahCguxqoODf0dXRoAVBrCDFBFZOXma862VM3ZlqqGATVtp6GsdTgiCaBqI8wAVdDR85f17ooDem/lAXWK8FdctFX9W4eoFk0vAVRB/GYDqjDDkDYfuaDNR643vezbKlhDo63q3DhAFgtNLwFUDYQZoJq4fK1A83ac1LwdJxXm52VrehlRt5ajSwOAO0KYAaqhk5eu6KM1h/TRmkOKrn+96eUDbULl60XTSwDmQ5gBqrkdxy9px/FLev27vYptGaSh0VZ1a1ZPLjU4DQXAHAgzACRJufmFWvzTaS3+6bQCvT00qG2ohsaEq3mwt6NLA4BSEWYAFJOelatP16Xo03UpahXmo7hoqwa1DZN/LXdHlwYAxRBmAJRq98lM7T65V299v089mwcqLsaq+1oEys2FppcAnANhBkCZ5BUYWr73jJbvPSP/Wu62ppetrb6OLg1ANUeYAVBuF3KuKWHjUSVsPKrmQd6KiwnT4HZhCvSm6SWAykejSQB24VLDonub1lVctFW9WgbR9BLAHaHRJIBKV1BoKHH/WSXuPysfT1cNaBOqoTFhimlA00sAFYswA8DuMq/ma/bW45q99bga1a2lIdFheijaqjA/L0eXBqAKIswAqFBHzuXoneUH9PcVB9S5UYDioq3q1zpYNd359QPAPvhtAqBSGIa08fB5bTx8Xq8u3K1+rUMUF23V3Y38aXoJ4I4QZgBUupxrBfpm+wl9s/2ErHW8NOS/TS8bBND0EkD5EWYAONSJi1f0wepD+mD1IbVvUEdxMVYNaBMiH0+aXgIoG8IMAKfxw7GL+uHYRb327R71jgxWXHSY7m1K00sApSPMAHA6ufmF+u7HU/rux1MK8vHQ4LZhGhpjVdMgml4CKM6hzVWSkpI0cOBAhYaGymKxaMGCBbZ1eXl5eumll9S6dWvVqlVLoaGh+t3vfqdTp045rmAAle5MZq7+mXREvd5L0oMfrdesjUd1Meeao8sC4EQcGmZycnIUFRWlqVOnFlt3+fJl7dixQ6+88op27NihefPmaf/+/XrwwQcdUCkAZ/DTiQyN/3aPOr21Sk998YNW7D2jvIJCR5cFwMGcpp2BxWLR/PnzNXjw4JuO2bZtmzp27Khjx46pfv36ZXpd2hkAVVtALXc92PZ608tWYTS9BKqKKtvOICMjQxaLRX5+fjcdk5ubq9zcXNvzzMzMSqgMgKOcz7mmmRuOauaGo2oR7K2hMVYNahumet4eji4NQCVx6Gmm8rh69apeeuklPfLII6UmtPj4ePn6+toe4eHhlVglAEf6OS1Lbyzep87xqzQqYZsW/3RaufkFji4LQAUzxWmmvLw8xcXF6cSJE0pMTCw1zJR0ZCY8PJzTTEA15evlpgfahCguxqro+nUcXQ6AMqpSp5ny8vL08MMP69ixY1q9evUtJ+Th4SEPDw4vA7gu40qevtxyXF9uOa5G9WopLtqqIdFhCvGl6SVQVTh1mLkRZA4ePKg1a9YoICDA0SUBMLEjZ3P0t2X79ffl+9WlcV3FxYSpb2SIvNxdHF0agDvg0DCTnZ2tQ4cO2Z6npKQoOTlZ/v7+CgkJ0dChQ7Vjxw4tWrRIBQUFSktLkyT5+/vL3d3dUWUDMLlCQ1p/6JzWHzqnVzz2qF+rYMXFWNUpgqaXgBk59JqZxMRE9ezZs9jykSNH6rXXXlNERESJ261Zs0Y9evQo03twazaAsgr399JD7awaGm1V/QB+XwCOVJ5rZpzmAuCKQpgBUF4Wi9Shgb/iYsLUv3WIvGl6CVS6KnUBMABUNsOQth69oK1HL2j8t3vUJzJYcdFWdW1SVzVoegk4HcIMAJTial6hFiaf0sLkUwr28dTgdmEaGhOmJoE0vQScBWEGAMooLfOqpq09rGlrDyvK6qu4GKsejAqVX01uSAAciTADALfhxxMZ+vFEht5YtE/33xWouGirejSvJ1cX03ywOlBlEGYA4A5cKyjUkt1pWrI7TXVru2tQ2zDFRVvVMrT0CxYB2A9hBgDs5Fz2NU1fn6Lp61N0V4iP4qLDNLhdmOrW5lPJgYrErdkAUIFca1jUo3k9xUVbdf9dQXJ35TQUUBbcmg0ATiK/0NDKfelauS9dfjXdNLBNqOJirGob7ufo0oAqgzADAJXk0uU8fbH5mL7YfExNAmtrSHSYhrSzKtjX09GlAabGaSYAcKAaFumeJnU1NMaqPpHB8nSj6SUgcZoJAEyj0JDWHTyndQfPydvDVf1bhyguxqqOEf6OLg0wDcIMADiJrNx8ff1Dqr7+IVUNAmrqoXbXb/MO9+eoMlAawgwAOKFj5y9rysqDen/VQXVo6K+hMVb1bx2i2h782gZ+jZ8KAHBihiFtTbmgrSkXNH7hHvVtdb3pZZfGATS9BP6LMAMAJnElr0Dzd57U/J0nFep7vellXIxVjevVdnRpgEMRZgDAhE5lXNU/Eg/rH4mH1Tbc73rTyzah8q3p5ujSgEpHmAEAk0tOvaTk1EuauGivet0VpLiYMHVrStNLVB+EGQCoIq7lF2rxrtNavOu06tb20OC2oRra3qoWwTS9RNVGmAGAKuhcdq4+W5+iz9anKDLUR3HRVg1qG6oAml6iCiLMAEAVt+dUpvac2qv4JfvUvVmghsaE6b4WNL1E1XFbYebw4cOaOXOmDh8+rPfff1+BgYFasmSJ6tevr8jISHvXCACwg7wCQyv3ndHKfWdUp6abHoy63vSyjdXP0aUBd6TcsXzt2rVq3bq1tmzZonnz5ik7O1uS9OOPP2r8+PF2LxAAYH8XL+dp1qZjevCjDer17lpNW3tYZzKvOros4LaUO8y8/PLLeuONN7RixQq5u7vblt93333avHmzXYsDAFS8g+nZmrTkZ3WZtFq/m7FV3/54SlfzChxdFlBm5T7NtGvXLn311VfFlgcGBurcuXN2KQoAUPkKCg0lHTirpANn5e3pqgfahCgu2qr2DWl6CedW7jDj5+en06dPKyIiosjynTt3KiwszG6FAQAcJ+tqvmZvTdXsralqGFBTQ6KtGhIdJmsdml7C+ZT7NNPw4cP10ksvKS0tTRaLRYWFhdqwYYP++te/6ne/+11F1AgAcKCj5y/r3RUHdO/bazT8k036ZvsJ5eTmO7oswMZiGIZRng2uXbumMWPGKCEhQQUFBXJ1dVVBQYF++9vfKiEhQS4uLhVV623JzMyUr6+vwsfOVQ0P/kUBAPZQ091FfVsFa2i0VZ0bB8hioekl7OvG3++MjAz5+JT+wY/lDjM3pKamateuXcrOzla7du3UtGnT2yq2ohFmAKBihfl5aUh0mOKirWpYt5ajy0EVUSlh5lZ8fHyUnJysRo0aVcTLlxlhBgAqT0yDOoqLtuqBqBD5eNL0ErevPGGmwj4BuIIyEgDAiW0/dlHbj13UhO/2qFfLIMXFWNWtaT251OA0FCoO7QwAAHaXm1+oRT+d1qKfTivQ20MPtQtTXIxVzYK8HV0aqiDCDACgQqVn5eqfSUf0z6Qjah3mq7joMA1qG6Y6tdxvvTFQBg7tMpaUlKSBAwcqNDRUFotFCxYsKLLeMAy9+uqrCgkJkZeXl2JjY3Xw4EHHFAsAuGO7Tmbote/2quNbK/U/n/+gZXvSlFdQ6OiyYHIVFmbKcpteTk6OoqKiNHXq1BLXv/322/rggw80bdo0bdmyRbVq1VKfPn109Sr9QwDAzPIKDC3fe0ZPfbFdnd5apde+3aPdJzMcXRZMyqEXAPfr10/9+vW76fZTpkzR//3f/2nQoEGSpM8//1xBQUFasGCBhg8fbtd6AQCOcSHnmhI2HlXCxqNqHuStuJgwDW4XpkBvT0eXBpMo15GZvLw8NW7cWPv27bvl2CVLltxRe4OUlBSlpaUpNjbWtszX11edOnXSpk2bbrpdbm6uMjMzizwAAOaw/0yW3vr+Z3WOX63HZ27VdzS9RBmU68iMm5tbmU/xdO3a9bYKuiEtLU2SFBQUVGR5UFCQbV1J4uPjNWHChDt6bwCAYxUUGkrcf1aJ+8/Kx9NVD0SFKi7aqpgGdRxdGpxQua+ZGTNmjCZPnqz8fOfsyzFu3DhlZGTYHqmpqY4uCQBwBzKv5uurLccV9/FG3fdOoj5afVAnL11xdFlwIuW+Zmbbtm1atWqVli9frtatW6tWraIfXT1v3jy7FBYcHCxJOnPmjEJCQmzLz5w5o7Zt2950Ow8PD3l4eNilBgCAczlyLkfvLD+gv684oM6NAhQXbVW/1sGq6c4njVRn5d77fn5+iouLq4haioiIiFBwcLBWrVplCy+ZmZnasmWLRo8eXeHvDwBwXoYhbTx8XhsPn9erC3erX+sQxUVbdXcjf5peVkPlDjMzZ86025tnZ2fr0KFDtucpKSlKTk6Wv7+/6tevr7Fjx+qNN95Q06ZNFRERoVdeeUWhoaEaPHiw3WoAAJhbzrUCfbP9hL7ZfkLWOl4a8t9PG24QQNPL6qLcjSZTUlKUn59frEv2wYMH5ebmpoYNG5b5tRITE9WzZ89iy0eOHKmEhAQZhqHx48frk08+0aVLl9S1a1f94x//ULNmzcr8HjSaBIDqqUPD600vB7QJkTdNL02nQrtmd+/eXaNGjdLIkSOLLP/Xv/6lzz77TImJieUuuCIRZgCgevN0q6HeLYM1NMaqrk3qqgZNL02hQsOMj4+PduzYoSZNmhRZfujQIbVv316XLl0qd8EViTADALgh2MdTg9uFaWhMmJoE0vTSmZUnzJT7mhmLxaKsrKxiyzMyMlRQwAcbAQCcV1rmVU1be1jT1h5WlNVXcTFWPRgVKr+aNL00s3IfmRk4cKC8vLw0e/Zsubi4SJIKCgo0bNgw5eTkaMmSJRVS6O3iyAwAoDTuLjV0X4tAxcVY1bN5Pbm6OLQHM/6rQo/MTJ48Wd26dVPz5s117733SpLWrVunzMxMrV69+vYqBgDAQa4VFGrpnjQt3ZOmurXd9WBUmOJiwhQZ6uvo0lBG5T4yI0mnTp3SRx99pB9//FFeXl5q06aN/vjHP8rf378iarwjHJkBANyOFsHeGhpj1aC2YarnzYexVrYKvQDYbAgzAIA74VrDom7N6iku2qrYloHycHVxdEnVQoWeZkpKSip1fbdu3cr7kgAAOK38QkOrf07X6p/T5evlpgfahGhojFXt6tP00lmU+8hMjRrFL4z65UdHO9sdTRyZAQBUhEb1aiku2qoh0WEK8fVydDlVTnmOzJT7ku2LFy8WeaSnp2vp0qXq0KGDli9ffttFAwBgJkfO5uhvy/brnkmr9dhnWzR/5wldueZc/6CvLsp9msnXt/jV3b169ZK7u7uef/55bd++3S6FAQBgBoWGtP7QOa0/dE6veOxRv1bXP224YwRNLyuL3XqmBwUFaf/+/fZ6OQAATCc7N1//3n5C/95+QuH+XhrSzqq4aKvqB3CZQ0Uqd5j56aefijw3DEOnT5/WpEmT1LZtW3vVBQCAqaVeuKL3Vx3UB6sPqkMDf8XFhGlAm1DV9rDbcQT8V7m/om3btpXFYtGvrxu+++67NWPGDLsVBgBAVWAY0tajF7T16AW99u1e9YkMUlyMVfc0pumlvZQ7zKSkpBR5XqNGDdWrV0+enp52KwoAgKroSl6BFiSf0oLkUwrxvd70Mi7aqiaBtR1dmqnZ5UPzLl26JD8/PzuUY3/cmg0AcHZtw/2uN71sEyrfmm6OLscpVOit2ZMnT9bXX39te/7www/L399fYWFh+vHHH8tfLQAA1Vxy6iW9smC3Ory1Us98uV2r9p1RfkGho8syjXKHmWnTpik8PFyStGLFCq1YsUJLly5Vv3799MILL9i9QAAAqotr+YX6fleafj/rB90dv1oTF+3VvtOZji7L6ZX7mpm0tDRbmFm0aJEefvhh9e7dWw0bNlSnTp3sXiAAANXRuexcTV+founrU9QyxEdxMVYNbhuqgNo0vfy1ch+ZqVOnjlJTUyVJS5cuVWxsrKTrt2g7WysDAACqgr2nMzVx0V51emuVnpy1TUt2nda1fE5D3VDuIzNDhgzRb3/7WzVt2lTnz59Xv379JEk7d+5UkyZN7F4gAAC4Lr/Q0Mp96Vq5L11+Nd30YFSo4qKtigr3c3RpDlXuMPPee++pYcOGSk1N1dtvv63ata/fTnb69Gk988wzdi8QAAAUd+lynj7fdEyfbzqmJoG1bU0vg3yq30el2OXW7JIMGDBAn332mUJCQiri5cuMW7MBANWFSw2L7mlSV3HRYeoTGSxPNxdHl3TbynNrdoV9pnJSUpKuXLlSUS8PAAB+paDQUNKBs0o6cFbeHq4a0CZEcTFWdWjo7+jSKhQNIgAAqIKycvM1Z1uq5mxLVcOAmhry39NQ1jpV7ywFYQYAgCru6PnLenfFAb238oA6RfgrLtqq/q1DVKuKNL2sGrMAAAC3ZBjS5iMXtPnIBY3/do/6RgYrLsaqzo0CTN30kjADAEA1dPlagebtPKl5O08q1NdTD0Vfb3rZqJ75ml4SZgAAqOZOZVzV1DWHNXXNYUXXv9708oE2ofL1MkfTS7uGmby8PLm5XZ/4//7v/8rfv2pfPQ0AQFWz4/gl7Th+Sa9/t1exLYM0NNqqbs3qycWJT0OVuZ3BiBEjlJl582ZXP/zwg9q1a2d7Pm7cOPn5+d1RcQAAwDFy8wu1+KfTeiJhm+6OX6U3F+/Vz2nO2fSyzGFm7969atmypZYtW1ZkeV5ensaNG6cuXbqoa9eudi8QAAA41tmsXH26LkV9p6zTgA/WaeaGFF3IuebosmzKHGa2bNmiUaNGaeDAgXrqqaeUnZ2tH374QW3bttVXX32lRYsWadq0aRVZKwAAcLA9pzI14bu96vTWSi3ZddrR5UgqR5hxdXXV66+/ro0bN2rDhg1q1qyZunTporvvvlu7du1S79697V5cQUGBXnnlFUVERMjLy0uNGzfWxIkTVUEdGAAAQBnlFRg65yRHZ8p9AbCnp6fc3NyUkZEhd3d39ezZ85Y9E27X5MmT9fHHH2vWrFmKjIzUDz/8oCeeeEK+vr569tlnK+Q9AQCAuZT5yIxhGIqPj1f79u3Vtm1bnTx5Um+//bZGjx6tIUOG6OzZs3YvbuPGjRo0aJAGDBighg0baujQoerdu7e2bt1q9/cCAADmVOYwc/fdd+vDDz/Uv//9b82cOVN+fn565pln9OOPP+rcuXNq2bKlvv76a7sW16VLF61atUoHDhyQJP34449av369+vXrd9NtcnNzlZmZWeQBAACqrjKfZoqIiNCSJUuKfXZMo0aNtHbtWk2ZMkW///3vNWzYMLsV9/LLLyszM1MtWrSQi4uLCgoK9Oabb+rRRx+96Tbx8fGaMGGC3WoAAADOrcxHZubMmXPTD8GzWCz685//rJ07d9qtMEmaO3euvvzyS3311VfasWOHZs2apXfeeUezZs266Tbjxo1TRkaG7ZGammrXmgAAgHMp85GZ9PR0BQYG3nR9fn6+Ll68aJeibnjhhRf08ssva/jw4ZKk1q1b69ixY4qPj9fIkSNL3MbDw0MeHh52rQMAADivMh+ZCQkJUXp6uu1569atixz1OH/+vDp37mzX4i5fvqwaNYqW6OLiosLCQru+DwAAMK8yH5n59We7HD16VHl5eaWOuVMDBw7Um2++qfr16ysyMlI7d+7Uu+++q1GjRtn1fQAAgHnZtdGkxWLfJlQffvihXnnlFT3zzDNKT09XaGionnrqKb366qt2fR8AAGBedg0z9ubt7a0pU6ZoypQpji4FAAA4qTKHGYvFoqysLHl6esowDFksFmVnZ9s+x4XPcwEAAI5QrmtmmjVrVuR5u3btijy392kmAACAWylzmFmzZk1F1gEAAHBbyhxmunfvXpF1AAAA3JYyf84MAACAMyLMAAAAUyPMAAAAUyPMAAAAU7vtMJObm6vc3Fx71gIAAFBu5QozK1asUP/+/VWnTh3VrFlTNWvWVJ06ddS/f3+tXLmyomoEAAC4qTKHmVmzZql///7y9fXVe++9p0WLFmnRokV677335Ofnp/79++uLL76oyFoBAACKKfPnzLz55puaMmWKxowZU2zd448/rq5du+r111/XiBEj7FogAABAacp8ZOb48eOKjY296fr7779fJ06csEtRAAAAZVXmMBMZGanp06ffdP2MGTPUsmVLuxQFAABQVmU+zfT3v/9dDzzwgJYuXarY2FgFBQVJks6cOaNVq1bpyJEjWrx4cYUVCgAAUJIyh5kePXpo9+7d+vjjj7V582alpaVJkoKDg9WvXz89/fTTatiwYUXVCQAAUKIyhxlJatiwoSZPnlxRtQAAAJQbnwAMAABMzW5hZuTIkbrvvvvs9XIAAABlUq7TTKUJCwtTjRoc6AEAAJXLbmHmrbfestdLAQAAlBmHUgAAgKnZLcykpqZq1KhR9no5AACAMrFbmLlw4YJmzZplr5cDAAAokzJfM/Ptt9+Wuv7IkSN3XAwAAEB5lTnMDB48WBaLRYZh3HSMxWKxS1EAAABlVebTTCEhIZo3b54KCwtLfOzYsaMi6wQAAChRmcNMTEyMtm/fftP1tzpqAwAAUBHKfJrphRdeUE5Ozk3XN2nSRGvWrLFLUQAAAGVV5jBz7733lrq+Vq1a6t69+x0XBAAAUB58aB4AADA1wgwAADA1pw8zJ0+e1GOPPaaAgAB5eXmpdevW+uGHHxxdFgAAcBJ2azRZES5evKh77rlHPXv21JIlS1SvXj0dPHhQderUcXRpAADASTh1mJk8ebLCw8M1c+ZM27KIiAgHVgQAAJyNU59m+vbbb9W+fXv95je/UWBgoNq1a6dPP/201G1yc3OVmZlZ5AEAAKoupw4zR44c0ccff6ymTZtq2bJlGj16tJ599tlSG1rGx8fL19fX9ggPD6/EigEAQGWzGE78sb3u7u5q3769Nm7caFv27LPPatu2bdq0aVOJ2+Tm5io3N9f2PDMzU+Hh4QofO1c1PGpWeM0AAFQXEwe30oi7G1TIa2dmZsrX11cZGRny8fEpdaxTH5kJCQlRy5Ytiyy76667dPz48Ztu4+HhIR8fnyIPAABQdTl1mLnnnnu0f//+IssOHDigBg0qJgUCAADzceow8+c//1mbN2/WW2+9pUOHDumrr77SJ598ojFjxji6NAAA4CScOsx06NBB8+fP1+zZs9WqVStNnDhRU6ZM0aOPPuro0gAAgJNw6s+ZkaQHHnhADzzwgKPLAAAATsqpj8wAAADcCmEGAACYGmEGAACYGmEGAACYGmEGAACYGmEGAACYGmEGAACYGmEGAACYGmEGAACYGmEGAACYGmEGAACYGmEGAACYGmEGAACYGmEGAACYGmEGAACYGmEGAACYGmEGAACYGmEGAACYGmEGAACYGmEGAACYGmEGAACYGmEGAACYGmEGAACYGmEGAACYGmEGAACYGmEGAACYGmEGAACYGmEGAACYGmEGAACYGmEGAACYGmEGAACYGmEGAACYmqnCzKRJk2SxWDR27FhHlwIAAJyEacLMtm3b9M9//lNt2rRxdCkAAMCJmCLMZGdn69FHH9Wnn36qOnXqOLocAADgREwRZsaMGaMBAwYoNjb2lmNzc3OVmZlZ5AEAAKouV0cXcCtz5szRjh07tG3btjKNj4+P14QJEyq4KgAA4Cyc+shMamqqnnvuOX355Zfy9PQs0zbjxo1TRkaG7ZGamlrBVQIAAEdy6iMz27dvV3p6uqKjo23LCgoKlJSUpI8++ki5ublycXEpso2Hh4c8PDwqu1QAAOAgTh1m7r//fu3atavIsieeeEItWrTQSy+9VCzIAACA6sepw4y3t7datWpVZFmtWrUUEBBQbDkAAKienPqaGQAAgFtx6iMzJUlMTHR0CQAAwIlwZAYAAJgaYQYAAJgaYQYAAJgaYQYAAJgaYQYAAJgaYQYAAJgaYQYAAJgaYQYAAJgaYQYAAJgaYQYAAJgaYQYAAJgaYQYAAJgaYQYAAJgaYQYAAJgaYQYAAJgaYQYAAJgaYQYAAJgaYQYAAJgaYQYAAJgaYQYAAJgaYQYAAJgaYQYAAJgaYQYAAJgaYQYAAJgaYQYAAJgaYQYAAJgaYQYAAJgaYQYAAJgaYQYAAJgaYQYAAJgaYQYAAJgaYQYAAJia04eZ+Ph4dejQQd7e3goMDNTgwYO1f/9+R5cFAACchNOHmbVr12rMmDHavHmzVqxYoby8PPXu3Vs5OTmOLg0AADgBV0cXcCtLly4t8jwhIUGBgYHavn27unXr5qCqAACAs3D6MPNrGRkZkiR/f/8S1+fm5io3N9f2PDMzs1LqAgAAjuH0p5l+qbCwUGPHjtU999yjVq1alTgmPj5evr6+tkd4eHglVwkAACqTqcLMmDFjtHv3bs2ZM+emY8aNG6eMjAzbIzU1tRIrBAAAlc00p5n++Mc/atGiRUpKSpLVar3pOA8PD3l4eFRiZQAAwJGcPswYhqE//elPmj9/vhITExUREeHokgAAgBNx+jAzZswYffXVV1q4cKG8vb2VlpYmSfL19ZWXl5eDqwMAAI7m9NfMfPzxx8rIyFCPHj0UEhJie3z99deOLg0AADgBpz8yYxiGo0sAAABOzOmPzAAAAJSGMAMAAEyNMAMAAEyNMAMAAEyNMAMAAEyNMAMAAEyNMAMAAEyNMAMAAEyNMAMAAEyNMAMAAEyNMAMAAEyNMAMAAEyNMAMAAEyNMAMAAEyNMAMAAEyNMAMAAEyNMAMAAEyNMAMAAEyNMAMAAEyNMAMAAEyNMAMAAEyNMAMAAEyNMAMAAEyNMAMAAEyNMAMAAEyNMAMAAEyNMAMAAEyNMAMAAEyNMAMAAEyNMAMAAEyNMAMAAEyNMAMAAEzNFGFm6tSpatiwoTw9PdWpUydt3brV0SUBAAAn4fRh5uuvv9bzzz+v8ePHa8eOHYqKilKfPn2Unp7u6NIAAIATcPow8+677+oPf/iDnnjiCbVs2VLTpk1TzZo1NWPGDEeXBgAAnICrowsozbVr17R9+3aNGzfOtqxGjRqKjY3Vpk2bStwmNzdXubm5tucZGRmSpCc7BcuzZu2KLRgAgGqkqV8NZWZmVshr33hdwzBuOdapw8y5c+dUUFCgoKCgIsuDgoL0888/l7hNfHy8JkyYUGz5+Ee6VUiNAACg4mRlZcnX17fUMU4dZm7HuHHj9Pzzz9ueX7p0SQ0aNNDx48dv+cUwu8zMTIWHhys1NVU+Pj6OLqdCMdeqiblWTcy1aqrouRqGoaysLIWGht5yrFOHmbp168rFxUVnzpwpsvzMmTMKDg4ucRsPDw95eHgUW+7r61vlv7Fu8PHxYa5VEHOtmphr1cRc7aOsByGc+gJgd3d3xcTEaNWqVbZlhYWFWrVqlTp37uzAygAAgLNw6iMzkvT8889r5MiRat++vTp27KgpU6YoJydHTzzxhKNLAwAATsDpw8ywYcN09uxZvfrqq0pLS1Pbtm21dOnSYhcF34yHh4fGjx9f4qmnqoa5Vk3MtWpirlUTc3UMi1GWe54AAACclFNfMwMAAHArhBkAAGBqhBkAAGBqhBkAAGBqpgwzU6dOVcOGDeXp6alOnTpp69atpY7/97//rRYtWsjT01OtW7fW999/X2S9YRh69dVXFRISIi8vL8XGxurgwYMVOYUyK89cP/30U917772qU6eO6tSpo9jY2GLjH3/8cVksliKPvn37VvQ0yqQ8c01ISCg2D09PzyJjqsp+7dGjR7G5WiwWDRgwwDbGGfdrUlKSBg4cqNDQUFksFi1YsOCW2yQmJio6OloeHh5q0qSJEhISio0p789/ZSjvXOfNm6devXqpXr168vHxUefOnbVs2bIiY1577bVi+7RFixYVOIuyK+98ExMTS/weTktLKzKuKuzbkn4WLRaLIiMjbWOccd/Gx8erQ4cO8vb2VmBgoAYPHqz9+/ffcjtn+ftqujDz9ddf6/nnn9f48eO1Y8cORUVFqU+fPkpPTy9x/MaNG/XII4/o97//vXbu3KnBgwdr8ODB2r17t23M22+/rQ8++EDTpk3Tli1bVKtWLfXp00dXr16trGmVqLxzTUxM1COPPKI1a9Zo06ZNCg8PV+/evXXy5Mki4/r27avTp0/bHrNnz66M6ZSqvHOVrn/q5C/ncezYsSLrq8p+nTdvXpF57t69Wy4uLvrNb35TZJyz7decnBxFRUVp6tSpZRqfkpKiAQMGqGfPnkpOTtbYsWP15JNPFvkjfzvfJ5WhvHNNSkpSr1699P3332v79u3q2bOnBg4cqJ07dxYZFxkZWWSfrl+/viLKL7fyzveG/fv3F5lPYGCgbV1V2bfvv/9+kTmmpqbK39+/2M+rs+3btWvXasyYMdq8ebNWrFihvLw89e7dWzk5OTfdxqn+vhom07FjR2PMmDG25wUFBUZoaKgRHx9f4viHH37YGDBgQJFlnTp1Mp566inDMAyjsLDQCA4ONv72t7/Z1l+6dMnw8PAwZs+eXQEzKLvyzvXX8vPzDW9vb2PWrFm2ZSNHjjQGDRpk71LvWHnnOnPmTMPX1/emr1eV9+t7771neHt7G9nZ2bZlzrpfb5BkzJ8/v9QxL774ohEZGVlk2bBhw4w+ffrYnt/p164ylGWuJWnZsqUxYcIE2/Px48cbUVFR9iusgpRlvmvWrDEkGRcvXrzpmKq6b+fPn29YLBbj6NGjtmVm2Lfp6emGJGPt2rU3HeNMf19NdWTm2rVr2r59u2JjY23LatSoodjYWG3atKnEbTZt2lRkvCT16dPHNj4lJUVpaWlFxvj6+qpTp043fc3KcDtz/bXLly8rLy9P/v7+RZYnJiYqMDBQzZs31+jRo3X+/Hm71l5etzvX7OxsNWjQQOHh4Ro0aJD27NljW1eV9+v06dM1fPhw1apVq8hyZ9uv5XWrn1V7fO2cVWFhobKysor9rB48eFChoaFq1KiRHn30UR0/ftxBFdpH27ZtFRISol69emnDhg225VV5306fPl2xsbFq0KBBkeXOvm8zMjIkqdj35C85099XU4WZc+fOqaCgoNin/wYFBRU793pDWlpaqeNv/Lc8r1kZbmeuv/bSSy8pNDS0yDdS37599fnnn2vVqlWaPHmy1q5dq379+qmgoMCu9ZfH7cy1efPmmjFjhhYuXKh//etfKiwsVJcuXXTixAlJVXe/bt26Vbt379aTTz5ZZLkz7tfyutnPamZmpq5cuWKXnwln9c477yg7O1sPP/ywbVmnTp2UkJCgpUuX6uOPP1ZKSoruvfdeZWVlObDS2xMSEqJp06bpP//5j/7zn/8oPDxcPXr00I4dOyTZ5/edMzp16pSWLFlS7OfV2fdtYWGhxo4dq3vuuUetWrW66Thn+vvq9O0McHsmTZqkOXPmKDExsciFscOHD7f9f+vWrdWmTRs1btxYiYmJuv/++x1R6m3p3LlzkWajXbp00V133aV//vOfmjhxogMrq1jTp09X69at1bFjxyLLq8p+rY6++uorTZgwQQsXLixyDUm/fv1s/9+mTRt16tRJDRo00Ny5c/X73//eEaXetubNm6t58+a25126dNHhw4f13nvv6YsvvnBgZRVr1qxZ8vPz0+DBg4ssd/Z9O2bMGO3evdvh1/GUh6mOzNStW1cuLi46c+ZMkeVnzpxRcHBwidsEBweXOv7Gf8vzmpXhduZ6wzvvvKNJkyZp+fLlatOmTaljGzVqpLp16+rQoUN3XPPtupO53uDm5qZ27drZ5lEV92tOTo7mzJlTpl92zrBfy+tmP6s+Pj7y8vKyy/eJs5kzZ46efPJJzZ07t9jh+l/z8/NTs2bNTLVPS9OxY0fbXKrivjUMQzNmzNCIESPk7u5e6lhn2rd//OMftWjRIq1Zs0ZWq7XUsc7099VUYcbd3V0xMTFatWqVbVlhYaFWrVpV5F/pv9S5c+ci4yVpxYoVtvEREREKDg4uMiYzM1Nbtmy56WtWhtuZq3T9yvGJEydq6dKlat++/S3f58SJEzp//rxCQkLsUvftuN25/lJBQYF27dplm0dV26/S9Vsgc3Nz9dhjj93yfZxhv5bXrX5W7fF94kxmz56tJ554QrNnzy5ym/3NZGdn6/Dhw6bap6VJTk62zaWq7Vvp+t1Bhw4dKtM/Ppxh3xqGoT/+8Y+aP3++Vq9erYiIiFtu41R/X+16OXElmDNnjuHh4WEkJCQYe/fuNf7nf/7H8PPzM9LS0gzDMIwRI0YYL7/8sm38hg0bDFdXV+Odd94x9u3bZ4wfP95wc3Mzdu3aZRszadIkw8/Pz1i4cKHx008/GYMGDTIiIiKMK1euVPr8fqm8c500aZLh7u5ufPPNN8bp06dtj6ysLMMwDCMrK8v461//amzatMlISUkxVq5caURHRxtNmzY1rl696pA53lDeuU6YMMFYtmyZcfjwYWP79u3G8OHDDU9PT2PPnj22MVVlv97QtWtXY9iwYcWWO+t+zcrKMnbu3Gns3LnTkGS8++67xs6dO41jx44ZhmEYL7/8sjFixAjb+CNHjhg1a9Y0XnjhBWPfvn3G1KlTDRcXF2Pp0qW2Mbf62jlKeef65ZdfGq6ursbUqVOL/KxeunTJNuYvf/mLkZiYaKSkpBgbNmwwYmNjjbp16xrp6emVPr9fK+9833vvPWPBggXGwYMHjV27dhnPPfecUaNGDWPlypW2MVVl397w2GOPGZ06dSrxNZ1x344ePdrw9fU1EhMTi3xPXr582TbGmf++mi7MGIZhfPjhh0b9+vUNd3d3o2PHjsbmzZtt67p3726MHDmyyPi5c+cazZo1M9zd3Y3IyEhj8eLFRdYXFhYar7zyihEUFGR4eHgY999/v7F///7KmMotlWeuDRo0MCQVe4wfP94wDMO4fPmy0bt3b6NevXqGm5ub0aBBA+MPf/iDw39Z3FCeuY4dO9Y2NigoyOjfv7+xY8eOIq9XVfarYRjGzz//bEgyli9fXuy1nHW/3rgd99ePG3MbOXKk0b1792LbtG3b1nB3dzcaNWpkzJw5s9jrlva1c5TyzrV79+6ljjeM67elh4SEGO7u7kZYWJgxbNgw49ChQ5U7sZso73wnT55sNG7c2PD09DT8/f2NHj16GKtXry72ulVh3xrG9duPvby8jE8++aTE13TGfVvSHCUV+Rl05r+vlv9OAgAAwJRMdc0MAADArxFmAACAqRFmAACAqRFmAACAqRFmAACAqRFmAACAqRFmAACAqRFmAACAqRFmAACAqRFmgGogKSlJAwcOVGhoqCwWixYsWFCm7RITExUdHS0PDw81adJECQkJtxxvsVhsDy8vL0VGRuqTTz4pMu7xxx/X4MGDiyxLTU3VqFGjFBoaKnd3dzVo0EDPPfeczp8/X2Rcjx49ZLFYNGnSpGLvP2DAAFksFr322mvF1s2ePVsuLi4aM2ZMibV/+umnioqKUu3ateXn56d27dopPj7etv7y5csaN26cGjduLE9PT9WrV0/du3fXwoULS/2alMW8efPUu3dvBQQEyGKxKDk5+Y5fE6hOCDNANZCTk6OoqChNnTq1zNukpKRowIAB6tmzp5KTkzV27Fg9+eSTWrZs2S233b9/v06fPq29e/fqqaee0ujRo4t11/2lI0eOqH379jp48KBmz56tQ4cOadq0abauyRcuXCgyPjw8vFiwOnnypFatWnXTzsPTp0/Xiy++qNmzZ+vq1atF1s2YMUNjx47Vs88+q+TkZG3YsEEvvviisrOzbWOefvppzZs3Tx9++KF+/vlnLV26VEOHDi0Wtm5HTk6OunbtqsmTJ9/xawHVkt27PQFwapKM+fPn33Lciy++aERGRhZZNmzYMKNPnz433eZGU76LFy8WWd64cWPj7bfftj0fOXKkMWjQINvzvn37GlartUiHXsMwjNOnTxs1a9Y0nn76aduy7t27G6NHjzYCAgKM9evX25a/+eabxsCBA42oqChbc9Ubjhw5Ynh5eRmXLl0yOnXqZHz55ZdF1g8aNMh4/PHHbzovwzAMX19fIyEhodQxdyolJcWQZOzcubNC3weoajgyA6BEmzZtUmxsbJFlffr00aZNm8r8GoZhaOnSpTp+/Lg6depU4pgLFy5o2bJleuaZZ+Tl5VVkXXBwsB599FF9/fXXMn7RE9fd3V2PPvqoZs6caVuWkJCgUaNGlfgeM2fO1IABA+Tr66vHHntM06dPL/Y+mzdv1rFjx246l+DgYH3//ffKysq65bwBVC7CDIASpaWlKSgoqMiyoKAgZWZm6sqVK6Vua7VaVbt2bbm7u2vAgAEaP368unXrVuLYgwcPyjAM3XXXXSWuv+uuu3Tx4kWdPXu2yPJRo0Zp7ty5ysnJUVJSkjIyMvTAAw8U276wsFAJCQl67LHHJEnDhw/X+vXrlZKSYhszfvx4+fn5qWHDhmrevLkef/xxzZ07V4WFhbYxn3zyiTZu3KiAgAB16NBBf/7zn7Vhw4ZSvw4AKgdhBoDdrVu3TsnJyUpOTtZnn32mt956Sx9//HGp2/zyyEtZREVFqWnTpvrmm280Y8YMjRgxQq6ursXGrVixQjk5Oerfv78kqW7duurVq5dmzJhhGxMSEqJNmzZp165deu6555Sfn6+RI0eqb9++tkDTrVs3HTlyRKtWrdLQoUO1Z88e3XvvvZo4cWK56gZgf4QZACUKDg7WmTNniiw7c+aMfHx8ip0O+rWIiAg1adJEkZGReuKJJzRixAi9+eabJY5t0qSJLBaL9u3bV+L6ffv2qU6dOqpXr16xdaNGjdLUqVP1zTff3PQU0/Tp03XhwgV5eXnJ1dVVrq6u+v777zVr1qwiR14kqVWrVnrmmWf0r3/9SytWrNCKFSu0du1a23o3Nzfde++9eumll7R8+XK9/vrrmjhxoq5du1bq1wNAxSLMAChR586di92BtGLFCnXu3Lncr+Xi4nLTU1MBAQHq1auX/vGPfxQbk5aWpi+//FLDhg2TxWIptu1vf/tb7dq1S61atVLLli2LrT9//rwWLlyoOXPm2I4UJScna+fOnbp48aKWL19+05pvvF5OTk6pY/Lz84vdHQWgchU/JgugysnOztahQ4dsz1NSUpScnCx/f3/Vr19fkjRu3DidPHlSn3/+uaTrtyJ/9NFHevHFFzVq1CitXr1ac+fO1eLFi2/5funp6bp69apyc3O1detWffHFFxo6dOhNx3/00Ufq0qWL+vTpozfeeEMRERHas2ePXnjhBYWFhd30qE6dOnV0+vRpubm5lbj+iy++UEBAgB5++OFiYah///6aPn26+vbtq9GjRys0NFT33XefrFarTp8+rTfeeEP16tWzhbcePXrokUceUfv27RUQEKC9e/fqf//3f9WzZ0/5+Pjc8mtSmgsXLuj48eM6deqUpOu3tkvXj44FBwff0WsD1YJjb6YCUBlu3DL968fIkSNtY0aOHGl079692HZt27Y13N3djUaNGhkzZ84s1/u4uroaERERxl//+lcjOzu7yHv98tZswzCMo0ePGiNHjjSCgoIMNzc3Izw83PjTn/5knDt3rsi47t27G88999xNa/jlrdmtW7c2nnnmmRLHff3114a7u7tx9uxZ45tvvjH69+9vhISEGO7u7kZoaKgRFxdn/PTTT7bxb731ltG5c2fD39/f8PT0NBo1amQ8++yzxeq7HTNnzixx//z6FnMAJbMYRjmvugMAAHAiXDMDAABMjWtmAOAOrVu3Tv369Stx3ZUrV0q9++uXLRMA3B5OMwHAHbpy5YpOnjx503WlhZkmTZpUVFlAtUGYAQAApsY1MwAAwNQIMwAAwNQIMwAAwNQIMwAAwNQIMwAAwNQIMwAAwNQIMwAAwNT+HyQu/R3hmLXxAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "datapoints, triang, plot1 = sd.plot_flux_space(\n", + " model,\n", + " ('BIOMASS__1','EX_sucr_e'),\n", + " show=False\n", + ");" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "blocked_reactions = cobra.flux_analysis.find_blocked_reactions(model)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "228" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(blocked_reactions)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp84_tgn6y.lp\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:gurobipy.gurobipy:Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp84_tgn6y.lp\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Reading time = 0.03 seconds\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:gurobipy.gurobipy:Reading time = 0.03 seconds\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + ": 884 rows, 1936 columns, 7886 nonzeros\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:gurobipy.gurobipy:: 884 rows, 1936 columns, 7886 nonzeros\n" + ] + } + ], + "source": [ + "consistent_model = cobra.flux_analysis.fastcc(model)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:cobra.summary.model_summary:Generating new parsimonious flux distribution.\n", + "INFO:cobra.summary.model_summary:Performing flux variability analysis.\n" + ] + }, + { + "data": { + "text/html": [ + "

Objective

1.0 BIOMASS__1 = 2.0

Uptake

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
MetaboliteReactionFluxRangeC-NumberC-Flux
co2_eEX_co2_e72.03[-21.58; 100]182.67%
cobalt2_eEX_cobalt2_e1.023E-05[9.211E-06; 1.023E-05]00.00%
fe3_eEX_fe3_e0.003204[0.002884; 0.003204]00.00%
h2o_eEX_h2o_e29.33[-60.01; 100]00.00%
hco3_eEX_hco3_e15.09[-21.58; 100]117.33%
k_eEX_k_e3.094E-06[2.785E-06; 3.094E-06]00.00%
mg2_eEX_mg2_e0.02242[0.02018; 0.02242]00.00%
na1_eEX_na1_e2.38E-07[2.142E-07; 2.38E-07]00.00%
nh4_eEX_nh4_e16.12[0; 16.12]00.00%
photon650_eEX_photon650_e0.02242[0; 1000]00.00%
photon670_eEX_photon670_e346.2[0; 1000]00.00%
photon690_eEX_photon690_e634.6[0; 1000]00.00%
pi_eEX_pi_e0.8534[0.7681; 0.8534]00.00%
so4_eEX_so4_e0.3115[0.2803; 0.3115]00.00%
amylose_cSK_amylose_c1.027[0.9247; 1.027]00.00%

Secretion

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
MetaboliteReactionFluxRangeC-NumberC-Flux
5drib_cDM_5drib_c-0.0002078[-0.0002078; -0.000187]526.10%
ac_cDM_ac_c0[-54.13; 0]20.00%
amob_cDM_amob_c-5.236E-05[-5.236E-05; -4.712E-05]1519.73%
co_cDM_co_c-0.002115[-0.002115; -0.001904]153.14%
dialurate_cDM_dialurate_c-1.023E-05[-1.023E-05; -9.211E-06]41.03%
h2_cDM_h2_c0[-160; 0]00.00%
lac__D_cDM_lac__D_c0[-36.09; 0]30.00%
pho_loss_cDM_pho_loss_c-17.31[-1000; -13.53]00.00%
succ_cDM_succ_c0[-30.39; 0]40.00%
h_eEX_h_e0[-35.23; 100]00.00%
meoh_eEX_meoh_e0[-5.236E-05; 0]10.00%
no3_eEX_no3_e0[0; 16.12]00.00%
o2_eEX_o2_e-95.03[-228.1; -85.54]00.00%
photon410_eEX_photon410_e0[0; 1000]00.00%
photon430_eEX_photon430_e0[0; 1000]00.00%
photon450_eEX_photon450_e0[0; 1000]00.00%
photon470_eEX_photon470_e0[0; 1000]00.00%
photon490_eEX_photon490_e0[0; 1000]00.00%
photon510_eEX_photon510_e0[0; 1000]00.00%
photon530_eEX_photon530_e0[0; 1000]00.00%
photon550_eEX_photon550_e0[0; 1000]00.00%
photon570_eEX_photon570_e0[0; 1000]00.00%
photon590_eEX_photon590_e0[0; 1000]00.00%
photon610_eEX_photon610_e0[0; 1000]00.00%
photon630_eEX_photon630_e0[0; 1000]00.00%
sucr_eEX_sucr_e-0.011[-9.033; -0.011]00.00%
akg_cSK_akg_c0[-23.18; 0]50.00%
for_cSK_for_c0[-121.6; 0]10.00%
fum_cSK_fum_c0[-30.39; 0]40.00%
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "consistent_model.summary(fva=.9)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "2.0" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "consistent_model.slim_optimize()" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "2.0" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.slim_optimize()" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SUCR: h2o_c + sucr_c --> fru_c + glc__D_c\n", + "SUCRt2: h_e + sucr_e <=> h_c + sucr_c\n", + "SPP: h2o_c + suc6p_c --> pi_c + sucr_c\n" + ] + } + ], + "source": [ + "for rxn in consistent_model.metabolites.sucr_c.reactions:\n", + " print(rxn)\n", + " # print(consistent_model.reactions.get_by_id(rxn.id))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "consistent_model.metabolites.suc6p_c" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SPS: f6p_c + udpg_c --> h_c + suc6p_c + udp_c\n", + "SPP: h2o_c + suc6p_c --> pi_c + sucr_c\n" + ] + } + ], + "source": [ + "for rxn in consistent_model.metabolites.suc6p_c.reactions:\n", + " print(rxn)" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "module_optknock = sd.SDModule(\n", + " consistent_model,\n", + " names.OPTKNOCK,\n", + " inner_objective='BIOMASS__1',\n", + " outer_objective='EX_sucr_e',\n", + " constraints=['EX_sucr_e >= 11.1', 'BIOMASS__1 >= 1.']\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:root:Preparing strain design computation.\n", + "INFO:root: Using gurobi for solving LPs during preprocessing.\n", + "WARNING:root: Removing reaction bounds when larger than the cobra-threshold of 1000.\n", + "INFO:root: FVA to identify blocked reactions and irreversibilities.\n", + "INFO:root: FVA(s) to identify essential reactions.\n", + "INFO:root:Compressing Network (739 reactions).\n", + "INFO:root: Removing blocked reactions.\n", + "INFO:root: Translating stoichiometric coefficients to rationals.\n", + "INFO:root: Removing conservation relations.\n", + "INFO:root: Compression 1: Applying compression from EFM-tool module.\n", + "INFO:root: Reduced to 238 reactions.\n", + "INFO:root: Compression 2: Lumping parallel reactions.\n", + "INFO:root: Last step could not reduce size further (238 reactions).\n", + "INFO:root: Network compression completed. (1 compression iterations)\n", + "INFO:root: Translating stoichiometric coefficients back to float.\n", + "INFO:root: FVA(s) in compressed model to identify essential reactions.\n", + "INFO:root:Finished preprocessing:\n", + "INFO:root: Model size: 238 reactions, 137 metabolites\n", + "INFO:root: 165 targetable reactions\n", + "WARNING:root: Removing reaction bounds when larger than the cobra-threshold of 1000.\n", + "INFO:root:Constructing strain design MILP for solver: gurobi.\n", + "INFO:root: Bounding MILP.\n", + "INFO:root:Finding optimal strain designs ...\n", + "INFO:root:Found solution with objective value 12.722685307715523\n", + "INFO:root:Minimizing number of interventions in subspace with 4 possible targets.\n", + "INFO:root:Strain design with cost 4.0: {'GND*G6PDH2r*PGL': -1, 'PSP_L*PGCD*PSERT': -1, 'GART': -1, 'PDH': -1}\n", + "INFO:root:Found solution with objective value 12.694849747117823\n", + "INFO:root:Minimizing number of interventions in subspace with 4 possible targets.\n", + "INFO:root:Strain design with cost 4.0: {'GND*G6PDH2r*PGL': -1, 'PSP_L*PGCD*PSERT': -1, 'PDH': -1, 'FALGTHLs*FALDH2*ALCD1*SFGTHi': -1}\n", + "INFO:root:Found solution with objective value 12.694796303959036\n", + "INFO:root:Minimizing number of interventions in subspace with 4 possible targets.\n", + "INFO:root:Strain design with cost 3.0: {'GND*G6PDH2r*PGL': -1, 'PSP_L*PGCD*PSERT': -1, 'PDH': -1}\n", + "INFO:root:Finished solving strain design MILP. \n", + "INFO:root:3 solutions to MILP found.\n", + "INFO:root: Decompressing.\n", + "INFO:root:54 solutions found.\n" + ] + } + ], + "source": [ + "import logging\n", + "logging.basicConfig(level=logging.INFO)\n", + "\n", + "sols = sd.compute_strain_designs(\n", + " consistent_model,\n", + " sd_modules = module_optknock,\n", + " max_solutions = 3,\n", + " max_cost = 4,\n", + " solution_approach = 'best',\n", + " time_limit=300,\n", + "\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0},\n", + " {'GART': -1.0, 'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0},\n", + " {'GART': -1.0, 'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0},\n", + " {'GART': -1.0, 'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0},\n", + " {'GART': -1.0, 'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0},\n", + " {'GART': -1.0, 'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0},\n", + " {'GART': -1.0, 'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0},\n", + " {'GART': -1.0, 'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0},\n", + " {'GART': -1.0, 'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0},\n", + " {'GART': -1.0, 'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0, 'FALGTHLs': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0, 'FALDH2': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0, 'ALCD1': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0, 'SFGTHi': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0, 'FALGTHLs': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0, 'FALDH2': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0, 'ALCD1': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0, 'SFGTHi': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0, 'FALGTHLs': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0, 'FALDH2': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0, 'ALCD1': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0, 'SFGTHi': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0, 'FALGTHLs': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0, 'FALDH2': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0, 'ALCD1': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0, 'SFGTHi': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0, 'FALGTHLs': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0, 'FALDH2': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0, 'ALCD1': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0, 'SFGTHi': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0, 'FALGTHLs': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0, 'FALDH2': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0, 'ALCD1': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0, 'SFGTHi': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0, 'FALGTHLs': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0, 'FALDH2': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0, 'ALCD1': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0, 'SFGTHi': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0, 'FALGTHLs': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0, 'FALDH2': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0, 'ALCD1': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0, 'SFGTHi': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0, 'FALGTHLs': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0, 'FALDH2': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0, 'ALCD1': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0, 'SFGTHi': -1.0}]" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sols.reaction_sd" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "datapoints, triang, plot1 = sd.plot_flux_space(\n", + " consistent_model,\n", + " ('BIOMASS__1', 'EX_sucr_e'),\n", + " show=False\n", + ");\n", + "\n", + "plot1.set_facecolor('#70AD47')\n", + "plot1.set_edgecolor('#70AD47')\n", + "\n", + "# OptKnock design plot\n", + "# interventions = [[{s:1.0},'=',0.0] for rxn in sols.reaction_sd for s,v in rxn.items() if v < 1]\n", + "interventions = [[{s:1.0},'=',0.0] for s,v in sols.reaction_sd[0].items() if v < 1]\n", + "_, _,plot3 = sd.plot_flux_space(\n", + " consistent_model,\n", + " ('BIOMASS__1','EX_sucr_e'),\n", + " # The sign of the glucose exchange reaction is flipped since\n", + " # reaction is defined in the direction of secretion.\n", + " constraints=interventions,\n", + " # constraints='EX_sucr_e >= 15.5',\n", + " show=False\n", + ");\n", + "plot3.set_facecolor('red')\n", + "plot3.set_edgecolor('red')\n", + "# adjust axes limits and show plot\n", + "plot3.axes.set_xlim(0, 1.05*max([a[0] for a in datapoints]))\n", + "plot3.axes.set_ylim(0, 1.05*max([a[1] for a in datapoints]))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[{'ALAD_L': 1.0}, '=', 0.0], [{'VALTA': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'ALAD_L': 1.0}, '=', 0.0], [{'VALTA': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'ALAD_L': 1.0}, '=', 0.0], [{'VALTA': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0]]\n" + ] + } + ], + "source": [ + "print(interventions)" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'PSERT', 'ALCD1', 'PGL', 'SFGTHi', 'G6PDH2r', 'FALDH2', 'PSP_L', 'GART', 'PGCD', 'GND', 'FALGTHLs', 'PDH'}\n" + ] + } + ], + "source": [ + "rxns = set()\n", + "for i in sols.reaction_sd:\n", + " for j in i:\n", + " rxns.add(j)\n", + "print(rxns)" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'ALCD1',\n", + " 'FALDH2',\n", + " 'FALGTHLs',\n", + " 'G6PDH2r',\n", + " 'GART',\n", + " 'GND',\n", + " 'PDH',\n", + " 'PGCD',\n", + " 'PGL',\n", + " 'PSERT',\n", + " 'PSP_L',\n", + " 'SFGTHi'}" + ] + }, + "execution_count": 103, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rxn_to_remove = {'PSERT', 'ALCD1', 'PGL', 'SFGTHi', 'G6PDH2r', 'FALDH2', 'PSP_L', 'GART', 'PGCD', 'GND', 'FALGTHLs', 'PDH'}\n", + "rxn_to_remove" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "ex=ex+['BIOMASS__1']" + ] + }, + { + "cell_type": "code", + "execution_count": 148, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.0881347815856224\n", + "22.529422792735037\n", + "\n" + ] + } + ], + "source": [ + "# print(model.slim_optimize())\n", + "pfba_solution = cobra.flux_analysis.pfba(model, reactions=ex)\n", + "fluxes = pfba_solution.fluxes\n", + "# print(fluxes.loc[ex].sort_values())\n", + "with model:\n", + " for i in rxn_to_remove:\n", + " model.remove_reactions([model.reactions.get_by_id(i)])\n", + " # model.remove_reactions([model.reactions.get_by_id('VALTA')])\n", + " # model.remove_reactions([model.reactions.get_by_id('PSP_L')])\n", + "\n", + " # model.remove_reactions([model.reactions.get_by_id('PGCD')])\n", + " # model.remove_reactions([model.reactions.get_by_id('PSERT')])\n", + " # model.remove_reactions([model.reactions.get_by_id('PDH')])\n", + " # model.remove_reactions([model.reactions.get_by_id('G6PDH2r')])\n", + " # model.remove_reactions([model.reactions.get_by_id('GND')])\n", + " print(model.slim_optimize())\n", + " model.objective = {model.reactions.get_by_id('EX_sucr_e'): 1, model.reactions.get_by_id('BIOMASS__1'):10}\n", + " print(model.slim_optimize())\n", + " pfba_solution = cobra.flux_analysis.pfba(model)\n", + " print(pfba_solution)\n", + " fluxes = pfba_solution.fluxes\n", + " prices = pfba_solution.shadow_prices\n", + "builder.metabolite_data = pfba_solution.shadow_prices\n", + "builder.reaction_data = pfba_solution.fluxes" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "cobra.io.write_sbml_model( consistent_model, 'condensed_syn.xml',)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "import escher\n", + "from escher import Builder" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "builder = Builder()" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "builder.model = consistent_model" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "with model:\n", + " model.objective = {model.reactions.get_by_id('EX_sucr_e'): 1, model.reactions.get_by_id('BIOMASS__1'):5}\n", + " pfba_solution = cobra.flux_analysis.pfba(model)\n", + "builder.metabolite_data = pfba_solution.shadow_prices\n", + "builder.reaction_data = pfba_solution.fluxes" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": { + "pycharm": { + "name": "#%%\n" + }, + "scrolled": true + }, + "outputs": [], + "source": [ + "flux = pfba_solution.fluxes.to_dict()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "source": [ + "## Auto escher map\n", + "\n", + "This code is based on https://github.com/johncthomas/Auto-Escher-map-for-CobraPy.\n", + "It doesn't quite do the visualization as wanted, but I'll keep it here until I get a defined escher map working right." + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "import generate_emap" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Of 92 reactions 44 have a link\n", + "The following are only connected to other reactions by common intermediates\n", + "Aspartate kinase [ASPK]:: asp__L_c + atp_c --> 4pasp_c + adp_c\n", + "Adenylate kinase [ADK1]:: amp_c + atp_c <=> 2.0 adp_c\n", + "NAD transhydrogenase [NADTRHD]:: nad_c + nadph_c <=> nadh_c + nadp_c\n", + "Phosphoglycerate mutase [PGM]:: 2pg_c <=> 3pg_c\n", + "Acetate kinase [ACKr]:: ac_c + atp_c <=> actp_c + adp_c\n", + "Nucleoside-diphosphate kinase (ATP:GDP) [NDPK1]:: atp_c + gdp_c <=> adp_c + gtp_c\n", + "L-alanine dehydrogenase [ALAD_L]:: ala__L_c + h2o_c + nad_c <=> h_c + nadh_c + nh4_c + pyr_c\n", + "Sedoheptulose 1,7-bisphosphate D-glyceraldehyde-3-phosphate-lyase [FBA3]:: s17bp_c <=> dhap_c + e4p_c\n", + "Nucleoside-diphosphate kinase (ATP:UDP) [NDPK2]:: atp_c + udp_c <=> adp_c + utp_c\n", + "Polyphosphate kinase [PPK]:: atp_c + pi_c <=> adp_c + ppi_c\n", + "UTP-glucose-1-phosphate uridylyltransferase (irreversible) [GALUi]:: g1p_c + h_c + utp_c <=> ppi_c + udpg_c\n", + "Sucrose transport in via proton symport [SUCRt2]:: h_e + sucr_e <=> h_c + sucr_c\n", + "Sedoheptulose-bisphosphatase [SBP]:: h2o_c + s17bp_c --> pi_c + s7p_c\n", + "Ferredoxin:NADPH oxidoreductase [FNOR_1]:: 2.0 fdxrd_c + h_c + nadp_c <=> 2.0 fdxox_c + nadph_c\n", + "Dihydroxy-acid dehydratase (2,3-dihydroxy-3-methylbutanoate) [DHAD1]:: 23dhmb_c --> 3mob_c + h2o_c\n", + "NAD(P)H dehydrogenase, carbon dioxide coupled (plastoquinone-8 & 4 protons)( Thylakoid) [NDH_1_4_um_copy1]:: co2_c + 2.0 fdxrd_c + h2o_c + 4.0 h_c + pq_um --> 2.0 fdxox_c + 3.0 h_u + hco3_c + pqh2_um\n", + "ATP synthase (thylakoid membrane) [ATPSum]:: 3.0 adp_c + 13.0 h_u + 3.0 pi_c <=> 3.0 atp_c + 3.0 h2o_c + 10.0 h_c\n", + "Triose-phosphate isomerase [TPI]:: dhap_c <=> g3p_c\n", + "Glutamine synthetase [GLNS]:: atp_c + glu__L_c + nh4_c --> adp_c + gln__L_c + h_c + pi_c\n", + "Catalase [CAT]:: 2.0 h2o2_c --> 2.0 h2o_c + o2_c\n", + "Glucose-1-phosphate adenylyltransferase [GLGC]:: atp_c + g1p_c + h_c --> adpglc_c + ppi_c\n", + "Ketol-acid reductoisomerase (2,3-dihydroxy-3-methylbutanoate) [KARA1]:: 23dhmb_c + nadp_c <-- alac__S_c + h_c + nadph_c\n", + "Ribose-5-phosphate isomerase [RPI]:: r5p_c <=> ru5p__D_c\n", + "Fructose-bisphosphate aldolase [FBA]:: fdp_c <=> dhap_c + g3p_c\n", + "Aspartate-semialdehyde dehydrogenase [ASAD]:: aspsa_c + nadp_c + pi_c <-- 4pasp_c + h_c + nadph_c\n", + "H2O transport via diffusion (tilacoid) [H2Otu_syn]:: h2o_u <=> h2o_c\n", + "Unconnected count = 26\n" + ] + } + ], + "source": [ + "excluded_reactions = set(ex)\n", + "\n", + "common_mets = set()\n", + "rxn_with_flux = set()\n", + "rxn_with_greater_flux = set()\n", + "\n", + "threshold_flux = 1.1\n", + "\n", + "# Get a list of reactions with flux and those where flux exceeds the threshold\n", + "# The rxn_with_flux will be used to determine what's a common metabolite\n", + "# rxn_with_greater flux used to draw the map\n", + "for rxn_name in flux:\n", + " if flux[rxn_name] != 0 and rxn_name not in excluded_reactions:\n", + " rxn = consistent_model.reactions.get_by_id(rxn_name)\n", + " rxn_with_flux.add(rxn)\n", + " if 0-threshold_flux > flux[rxn_name] or threshold_flux < flux[rxn_name]:\n", + " rxn_with_greater_flux.add(rxn)\n", + "\n", + "# Get a dictionary of metabolite frequency\n", + "# (keys are the Cobra metabolite objects)\n", + "met_count = generate_emap.metabolite_occurence(rxn_with_flux)\n", + "\n", + "# Get common metabolites.\n", + "# included_common_m will be used be treated as uncommon whatever their occurence\n", + "included_common_m = ('accoa_c', 'pry_c', 'g3p_c', 'acald_c', 'f6p_c', 'pep_c')\n", + "for met in met_count:\n", + " if met_count[met] > 3 and met.id not in included_common_m:\n", + " common_mets.add(met)\n", + "\n", + "# Convert the sets to lists so that they can be iterated over\n", + "common_mets, rxn_with_flux, rxn_with_greater_flux = \\\n", + " list(common_mets), list(rxn_with_flux), list(rxn_with_greater_flux)\n", + "\n", + "\n", + "# Get the Escher JSON\n", + "escher_map = generate_emap.gen_map(\n", + " consistent_model, rxn_with_greater_flux, common_mets, 400, met_count\n", + ")\n", + "escher_json = escher_map.dump_json()\n", + "# Currently Escher doesn't accept json strings, needs a file, i assume that's a bug\n", + "with open('escher.json', 'w') as f:\n", + " f.write(escher_json)" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "builder.hide_secondary_metabolites = True" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'ALCD1',\n", + " 'FALDH2',\n", + " 'FALGTHLs',\n", + " 'G6PDH2r',\n", + " 'GART',\n", + " 'GND',\n", + " 'PDH',\n", + " 'PGCD',\n", + " 'PGL',\n", + " 'PSERT',\n", + " 'PSP_L',\n", + " 'SFGTHi'}" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rxn_to_remove" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "7578b72c940a4daca54323af8888c1c3", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Builder(allow_building_duplicate_reactions=False, and_method_in_gene_reaction_rule='mean', cofactors=['atp', '…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "builder" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "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.10.6" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/syn_elong/notebooks/rxns_to_add_for_ge.txt b/syn_elong/notebooks/rxns_to_add_for_ge.txt new file mode 100644 index 0000000..7b44f41 --- /dev/null +++ b/syn_elong/notebooks/rxns_to_add_for_ge.txt @@ -0,0 +1,23 @@ +GLCS1 +SADT2 +ATPSu +PPND2 +aratyr1 +CDPDAGS1819Z160 +ASNTRS_1 +GLGB +FRDO +ACGAM6PS +PGPS1819Z160 +PAPSSH +GLYOX_2 +APSR +AIRC1 +ILETA2 +PRFGS_1 +AHSERL2 +FASC161ACP +GLCS2 +UAGDP_c +P5CCD +UGP_PGM_c diff --git a/syn_elong/syn_elong.xml b/syn_elong/syn_elong.xml index 95c8dfa..7a1a7a7 100644 --- a/syn_elong/syn_elong.xml +++ b/syn_elong/syn_elong.xml @@ -18,7 +18,6 @@ - @@ -23665,2337 +23664,2764 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - + + + + + - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - + + + + + - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - - + + + + + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + - - + + + + + - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - + - - + + + + + + + + - + - - - - - - - - - - + - - + + + + + + + + + + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - + + + + + + + + + + - + - - - - - - - - - + - - + + + + + + + + + + + + + + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - + + + + + + + + + + + + + - + - - - - - - + - - + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - + + + + + + + + + + - + - - - + + + + + + + + + - - + + + + + + + + + + + + - + - - - - - - - - - - - + + + + + + - - + + + + + + + + + + + + + + - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + - + - - - - - - - - - + - - + + + + + + + + + + + + + + - + - - - - - - - - - + + + + + + + + + + + - - + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - + + + + + + + + + + + + + - + - + + - - + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + - + - - - - - - - - + - - + + + + + + + + + + + + + + + - + - - - - - - - - - + - - + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - + - - + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + - + - - + - - + + + + + + + + + + + + + + - + - + + + + + + + + + + - - + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - + - - + + + + + + + + + + + + + + + - + - - + - - + + + + + + + + + + + + + + - + - - + - - + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + - + - - - - - + - - + + + + + + + + + + + + + + - + - - - - - + - - + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - + + + + + + - + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - + + + + + + + + + - + - + - - - - - - - - - - + + + + + + + + + + - + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - + + + + + + + + + + - + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - + + - - + + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - + + + + + + - + - + - + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - + + + + + - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + - + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + + - + + + + + - + - + - - - - - - - - - - - - + + + + + + + + + + - - + - - + - + - + - + - + - - - - - - - - - - + + + + - - - + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - - + + - - + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - - + + - - - + + + + + + + + + - + - + - - - - - - - - - - - - + - - + + + - - + + + - + - + - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + + + + - + - + - - - - - - - - - + + + + + + + + - + + - - + + + - + - + - + - - - - - - + - - + + + - - - + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + - + - + - - - - - - - - - - - + - - - + + - - - + + + - - - - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - + + - + - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - - + + - - - - + - + - + - + + + + + + + + + + + + - - - - + + - - - - - + + + - - + + - + - + - - - - - - - - - - - + + + + + + - - + + + - - + + + + - + - + - + - - + + + + + + + + + + @@ -26003,2469 +26429,2403 @@ - - - + + - - - + + - - - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - + + - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - + + - - - + + - + - + - + - + + + + + + + + + + + - - - + + - - - + + - + - + - + - + + + + + + + + + + + + - - + + - + - + - + - + - + - + + + + + + + + + + + - - - - + + - - - - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + - - + + - - + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - - + - - - + + - + - + - + - + + + + - - - + - - + - + - + - + - - - - - - - - - - + + + + + + + + + + + - + + + - - + + + - + - + - + - + + + + + + + + + + - - - + + - - - + + - + - + - + - + - - + - - - + - - - - + - + - + + + + + + + + - - - - + - - - + - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - + - + - - - - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + - - + - - - - + - + - + + + + + + + + + + + + + - - - + - - - - - - - - - + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + - - - - - - - - + - + - - - - - - + + + + + + + + + + + - - + - - + - + - + - + - - - - - - - - - + + + + + + + + - - + + + - - + + - + - + - + - - - - - - - - - - + + + + + + + + + + + - - - + + + - - - - + + - - - - - + - + - + - - - - - - - - - - + - + + - + + - + - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + - - - + + - + - + - + - - - - - - - + + + + + + + + + + - - - + - - - - + + - + - + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - - + + + - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - + + + + - - - + + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + - - + + + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + - - + + + - - + + + - + - + - + - + + + + + + + + + + + - - + + + - + - + - + - + - - - - - - - - - - + + + + + + + + + + + + - + + + - + + + + - + - + - + - + + + + + + + + - - - - + + - - - - + + + - - - - + - + - + - - - - - - - - - - + + + + + + + + + + - - + - + - + - + - + - + - - - - - - - - - - + + + + + + + + + + + - - + + - - - + + - - - - + - + - + - + + + + + + + + + + - - - + + - - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + + + - - + + + + - + + + + + + + + + + + + + + + + + - + - + - - - - - - - - + + + + + + + + + + - - + + + - + + - + - + - + - + - + + + + + + + - - - + + + - - - + + + + - + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - + + - + + + - + - + - + - + + + + + + + + + + - - + + - - - + + - + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - - + + + + - - + + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - + + - - + + - + - + - + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + - - - + + - - - - + - + - + - - - - - - + - - - + + + - - - - + + - + + + + - + - + - - - - - - - - - - + + + + + + + + + + + - - - + - - + - + - + - + - - - - - - - - - - - - + + + - - + + + - - + + + - + - + - + - - - - - - - + - - + + - - + + - + - + - + - - - - - - - - - - - + + + + - - + + + - - + + + - + - + - + - - - - - - - - - - - - + - - + + + - + - + + - + - + - + - - - - - - - - - - - + + + + + + + + + + + + - - + + - - + + - + - + - + - - - - - - + - - + + - - + + - + - + - + - - - + - - - - - + - + + + - - + + - + - + - + - - - - + + + + + + + + + + + - + + + - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + - - + + - - - + + - + - + - + - - - - - - - - - - + + + + + + + + + - - + - - + + - + - + - + - + + + + + + + + + + - + + + - + + + + + + - + - + - - - - - - - - + + + + + + + + + + + - + + - + + + + + + + + + + - + - + - - - - - - - - + + + + + + + + + + - + + + - + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + - + - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - + + + + + + + + + + - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + + - + - + - + - - - - - - - - + + + + + + - - - + + - - + + + - + - + - + - - - - - - - - - - - + + + + + + + + + + - - - + + - - + + + - + + + + + + + - + - + - + + + + + + + + + + + @@ -28473,480 +28833,398 @@ - + + - - + + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - + - + - - + + - - - - + - + - + - + + - - + + + - + - + - + - - - - - - - - - - + + + + + + + + - + - - + - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - + + - - + + + + - + - + - + - - - - - - - - - - + + + + + + + + + + - - - + + + - - + + + + - + - + - + - + + + + - - + - - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - + - - - - - + + - - - - + - + - - - - - - + + + + + + + + + + + - - - + - - - + - + - + - + - - - - - - - - - - - + + + + + + + + + + + + - - - + - - + + + - - - - + - + - - - - - - - - - - - - + - - - + + - - - - + + - + - + - + - - - - - - - - + - - + + - - - + + - + - + - + - - - - - - - - - - + - + + - - + + - + - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + @@ -28954,184 +29232,168 @@ - + + - + - + - + - + - - - - - - - - - - + + + + + + + + + + + - + + - - + + - + - + - + - + + + + - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - + + + - - - + + + - - - - + + - + - + - + - - - - - - - + + + + + + + + + + + + - - - + + + - - - - + + - - - - - + - + - + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -29139,405 +29401,511 @@ - + + - - - + + - + + + + - + - + - - - - - - - - - - + + + + + + + + + - - + + - - + + - - - - + - + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + - - - + - + - + - + - - - - - + + + + + - - + + - - + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - + + + - - + + + + - + - + - + - - - - - - + + + + + + + + + + + + + + + + - - - + - - + + - - - - + - + - + - - - - - - - - - - - + - + + + - + + + - + + + + - + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - + + + + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + - - + + + - + - + - + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - + + - + - + - + - + + + + + + + + + + + - - + - - + - + - + - + - - - - - - - - - - - - + + + + + + + + + + + + + - - + + + - - + + - + - + - + - + + + + + + + + + + + - - + + - - - + + - + + + + - + - + - - - + @@ -29545,1116 +29913,1115 @@ - - + + + - - + + + - + - + - + - - - - - - - - - - - + - - - + + - - - - + + - - - - - - - - - - - - + - + - + - - - - - - - - - - - + - - - + + + + - - + + - + + + + + + + + + - + - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - - + + - + - + - + - - - - - - - - - - + + + + + - - - + + - - + + - + - + - + - - - - - - - - - - - + + + + + + + + + + - - + + - - + - + - - - - + - + - + - - - - - - - - - - + - - - + + - - - + - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - + - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + - - + - - - - - - - + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - + + + - - - + + - + - + - + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + - - + + - - - - + - + - - - - - - - - - - + + + + + + + + + + - - + - - - + + - - - - - - - + - + - + - - - - - - - - - - - + + + + + + + + + + + - + - - - - + - - - - + - + - - - - - - - - - - + + + + + + + + + + + - - - + + + - - + + + + + + - + - + - + + + + + + + + + + + + - + + - - + - + - + - - - - - - - - + + + + + + + + + + + + - + + - + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - + - + - + - + - - - - - - - - - - + + + + + + + + + + + - - - + + - - - - + + - + - + - + - - - - + + + + + + + - - + - - + + - + - + - + - - - - - - - - - - - + + + + + + + + + - + - - + + + + + + - + - + - - - - - - - - - - - + + + + + + + + + + + + + - + + + - + + + - + - + - + - - - - - - - - - - - - + + + - + + + - - - + + + + + + - + - + - + + + + + + + + + + + + - - + + - - + + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + - - + + + + + - + + + + - + - + - + + + + + + + + + + + + - - + + - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - + + + - - - + + - + - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + - - + + - + - + - + - - - - + + + + + + + + + - + + + + + + + + - + - + - - - + + + + + + + + + + + - - - + + + - - + + + + - + - + - + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + - - + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + @@ -30662,2079 +31029,1920 @@ - - + + - - + + + + - - - - + - + - + - - - - - - - - - + + + + + + + + + + + + + - - + + - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - - + + - - + + + - + - + - + - - - - - + + + + + + + + + + - - + + - - + + - + - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + - - - - + + - + - + - + - - - - - - - - - - - + + + + + + + + + + + + - + + - - + + - + + + + - + - + - + + + + + + + - - - + + - - - + + + + - - - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - - - + + - - - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + + - - - + + + + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - + + - - + + - + - + - + - - - - - - - - - - - + + + + + + + + + + - - + + + - - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - + + - + - - - - + - + - + - + + + + + + + + + + - - - - + + - - - + + - + - + - + - + + + + + + + + + + + - - + + + - - + + + + - + - + - + - + + + + + + + + + + + - - - - + + - - + + - - - - - - - - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - + - - + + - + - + - + - - - - - + - - + + - - - + + - + - + - + - - - - - - - - - - + - + + - - + + + - + + + + - + - + - + + + + + + + + + + - - + + - + + + + + + - + - + - - - - - - - - - - - - + - + + + + - - + + + + + - + - + - + - + + + + + + + + + + - + + + - + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - + + - - + + - + - + - + - - - - - - - - + + + + + + + + + + + + - - - + + - - + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - + + - - - + + + + + - + - + - - - - - - - - - - + + + + + + + + + + - + + + - - + + - + - + - + - - - - - - - - - - - + + + + + + + + + + + - - + + - - + + + + + + - + - + - - - - - - - - - - - + - - - + - - - + - - - - + - + - - - - - - - - - - - + + + + + + + + + + + + - - - + - - - + + - + - + - + - - - - - - - - - - - - + + + + + + - - + + - - + + + + - - - - - - + - + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + - + + - + - + - + - - - - - - - - - - - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - + - - - - + - + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - - + + + - + - + - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + - - - + - + + + + - + - + - - - - - - - - - - - - - + - - - + - - - - - - - - - + - + - - - + + + + + + + + + + - - - + + - - - + + + - + - + - + - - - - - - - - - - - - + - - + + + + - - + + + + - + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - + - - - - - + + - - - - + - + - + - - - - - - - - - - - - + + + + + + + + + + + - - + + + - - + - + - + - + - - - - - - - - - - - + + + + + + + + - - - + + - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - + + - - + + - + - + - + - - - - - - - - - + + + + + + + + + + + - + + + - - + + + + - + + + + + + - + - + - - - - - - - - - - - + + + + + + + + + + - - - + - - - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + + - - - + + + - + - + - + - - - - - - - - - - - + + + + + + + + + + - - - + - - - - + - + - + - + - - - - - - - - - - - - - + + - - + + + + - - + + + - + - + - + - - - - - - - - - - + + - - + + - + + - - + - + - + - - - - - - - - - - + + + + + + + + + + + - - + + + + + - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - + - + - + - - - - - - - - - - - - + + + + + + + + + + + + + - - + + - - + + + - - - - + - + - + - - - - - - - + + + + + + + + + + + - - + + + - - - - + + + + - + - + - + - - - - - - - - - - + + - - + + - + + + + - + - + - + - + - - + + - - - - - - + + + - + + + + - + - + - - - - - - - + + + + + + - - - + - - + + + - + - + - + - - - - - - - - - - + + + + + + + + + + + - - + + - - + + - + - + - + - - - - - - - - - - + + + + + + + + + + + + - - - + - - + + - + - + - + - - - - - - - - - - + + + + + + + - - + + - - + + + - + - + - + - - - - - - - - - - - + + + + + + + + + + @@ -32742,624 +32950,657 @@ - - + + - - - - + + + - + - + - + - - - - - - - - - - - + + + + + + + + + - - + + + + - - + + + - + - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + - - + + + - + - + - + - + + + - - + + + - - + + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + - - - - + + - - - - + - + - + - - - - - - - - - - + - - + + - + - + + - + - + - + - + - - - - + + + - - - - - + + - + - + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + - - + + - + - + - + - - - - - - - - - - - - - + + + + + + + + + + + + + + - + + - - + + + - + - + - + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - + + - - - + + - + - + - + - - - - - - - - - - - + + + + + + + + + + - - + - - + - + - + - + - - - - - - - - - - + + + + + + + + + + + + + - - - + + - - + + - + - + - + - - - - - - - - - - - + - - + + + - - - + + - + - + - + - + - + - + + + + + + - + - + - - - - - - - - - - - - + - + + - - + + - + + + + + - + - + - - - - - - + + + + + + + + - - + + - - - - + + - + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - - - + + - - + - + + + + - + - + - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + @@ -33367,1299 +33608,1320 @@ - + - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - + + + - + + + - - - - + - + - + - + + + + + + + + + + - + + + + + + + + + + - + - + - - - - - - - - - - + + + + + + + + + + - - + + - + + - - + - + - + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + - - - - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + - - + + - + - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + - - - + - + - + - + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + - - + - + - + - + - - - - - - - - - - - + - - + + - - + + - + - + - + - - - - - - - - - - - + + + + + + + + + + + - - - + + - - - - + + + + - - - - - - + - + - + - - - - - - - - - - + - + + - - + + + - + - + - + - + + + + + + + + + + + - - - + + + - - - + + + + - + - + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + + + - + + + + - + - + - + - - + - - - + + - - - + + - + + + + - + - + - - + - - + + + - - - + + - + - + - + - - - - - - - - - - - + + + + + + + + + + - - - + + + - - - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + + - - + + + - + + + + + - + - + - - - - - - - - - - - - - + + + + + + + + - - + + - - - + + - + + + + - + - + - - - - - - - - - - - + + + + + + + + + - - - + + - - - - + + - + - + - + - - + + + + + + + + + + + - - + + - - - - + + + - + - + - + - + - - + + + - - - + + - - - - + - + - + - - - - - - + + + + + + + + + + + - + + + - - + + + - + - + - + - - - - - - - - - - - + + + + + + + + + + - - - + + - - + - + + + + - + - + - - - - - - - - - - - - + + + + + - + + - - + + + - + - + - + - - - - - - - + - - + + - - - + + + + - + - + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + - - - + + - + - + - + - - - - - - - - - + + + + + + + + + + + + - - - - + + + - - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + - + + - - + + + + - + - + - - - + + + + + + + + + + - - - + + - - + + - + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - + - - - + + - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + + - - + + - + + + + + - + - + - - - - - - - - - - - - + - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - + - + - + - - - - - - - - - - + - + - + - - - - + - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + - - + - - - - + - + - + + + + + + + + + + @@ -34667,2897 +34929,2907 @@ - - + - - + + - - - - + - + - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + + - - - - + - + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + - - - - - - - - - - + - + - - - - - - - - - + - - - + - - - - + + - - - - - - - - - - - - + - + - + - - - - - - - - - - - + + - - + + + + - - + + + - + - + - + - - - - - - - - - - + + - - - + + - + - + - - - - + - + - - - - - - - - - - + - - + + + + + + + + + + + - - - + - - - - + - + - - - - - - - - - - + - - + - - - + - - - - + - + - + - - - + + + - - + + + - + - + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - + + - + + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - + - + - + - - + + - - + + + - + - + - + - - - - - - - - - - - + + + + + + - - + + - - - - + + + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - + + - + - + - + - - - - - - - - - - - + - - - + + - - - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - + + + - - - + + + - - - - + + + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + - - + + - - - - + - + - + - + + + + + - - - + - - + - + - + - + - - - - - - - - - - + + + + + + - - - + + + - - + + - + - + - + - + + + - - - + + + - - - + + + - - - - - + - + - + - - - - - - - - + + + + + + + + + + + + + + - - - + + + - - - - + - + - + - - - - - - - - - + + + - - + + + - - + + - + - + - + - - - - - - - - - - - + + + + + + + + + + + - - + - - - + + - + - + - + - - + + + + - + - + - - + + + - + - + - + - - - - - - - - - - - + + + - - - + + + - - - - + + - + - + - + - - - - - - - - - - + + + + + + + + + + + - + + - + + + + - - - - + - + - + - - - - - + + + + + + + + + + - - + + - + - + - + - + - + - + + + - - + + - - - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - + + - + + + - + - + - + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + - - - + + + - - - - + - + - + - - - - - - - - - - + + + + + + + + + + + + - - + + - - + + - - + + - + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + - - + + + + + - + - + - - - + - - + + - - + + - - - + + - + - + - + + + + + + + + + - - - + + + - - - + + + + - + + + + - + - + - + + + + + + + + + + + + + + + - + + + - + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + + + + + + + + + + - + + - - + + - + - + - + - - + + + + + + + + + + + - - - - + - - - + + - + - + - + - - + + + + + + + + + + + + + + + + + + + + + + - - + + + - + + - + + + + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + - + + + + + + + + + + + + - + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + - + - + - + + + + + + + + + + + - - - + + - - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - + + + - + + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - + + + + + + + + - + - + - + + + + + + + + + + + - - + + + + - - - + + + + + - + - + - + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + + - - + + + - + - + - + - + + + + + + + + + + - - + + - - + + + - + - + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + + - - + + - + - + - + - - - - - + + + + + + + + + + - + + - + + - + - + - + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + - - + + - + - + - + - - - + + + + + + + + + + + + + + + + + + + + - - - + + + - - - + + + + - + - + - + - - - - - - - - - - - - - + - - + + - - - + + + - + - + - + - - - + + + + - - - + + - - + + - + - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - - + + - + - + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - + + - + - + - + - - - + + + + + + + + + + + - - - + + - - + + - + - + - + - - - - - - - - - - - + - - - + + - + - - + - + - + - + - - - - - - - - - - + - - + + - - - + + - + + + + - + - + - - - + + + + + + + + + + + - - + + - - + + - + - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - + - + - + + + + - + - + - + + + + + + + + + + + + + - - + + + - - - + + - + - + - + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + + - - + + + - + - + - + - + + - - - + + + - - + + + - - + + - + - + - - - - - - - - - + + @@ -37566,592 +37838,534 @@ - + - + - - - - + + + + + + - + - + - - - - - - - - - - - - - - - + + + + + + + + + - - - + + - - - - + + - - - - - - + - + - + - - - - - - - - - - + - - - + + + - - + + - + + + + - + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - + + + + - + - + - - - - - - - - - - - + + + + + + + + + + + + - + + - - + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - + - - - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + - - - - - + + + - - - - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - + + + - + - + - + - - - - - - - - - - - + + + + + + + + + + - - + - - + + - + - + - + - - - - - - - - + + + + + + + + + - - - + + - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - - + - - - + + - + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - + - + - + - - - - - - - - - - + + + + - - + + + + - - - - + + + + + + + + - + - + - - - - - - - - - - - + + + + + + + + + + @@ -38159,53 +38373,33 @@ - - - + - - - - + - + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + @@ -38213,2186 +38407,1948 @@ - + + - + + - + + + + - + - + - + + + + + + + + + + + - - - + - - - + + - + - + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - + + - + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - - - + + - - + - + - + - + - - + - - + + - - + + + - + - + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - - + - - + - + - + - + - - - - - - - - - - - - - - - - - - - - + - - - + + + - - - - + + - + - + - + - + - - + + + - - - + + + + - + + + + + - + - + - - - - + - - + + + + - - + + + - + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - + - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - + - - + + - + - + - + - - - - - - - - - - - + + + + + + + + + + + - + + - + + + - + + + + + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + - + - + - - - - - - - - - - - + - - + + + + - - + + - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - + - + - + + + + + - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - + + - + - + - - - - - - - - - - - - - + + + + + + + + + + - - - + + + - - + + + + - + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + - - - - - - - - + - + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + - - - + - - - - + - + - - + - - + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - + - + - + - - + - + + - + - + + + - - + - - - - + + + - + - + - - - - - - - - - + - - + - - - - - - - - + - + - + - - - + + - - + + - - + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + + + - - + + + - - - - + - + - + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - + + + - - - + + - + - + - + - - - - - - - - - - - + - + + - + - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - + - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + - - - + - - - - + - + - - - - - - - - - - + - + - - + - - - - + - + - - - - - - - - - + - - + + - - + + + - + - + - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - + + - - + + - + - + - + - - - - + + + - - - - + + + - - - - - + + + - + - + - + - - - - - - - - - - + + + - - + + + - - + + - - - - + - + - + - - - - - - - - + + - - - + - - - - - - - - - - - - - + - + - - - - - - - - - - - + - + - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - + + + - - + + - - - - + - + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + - - - - - - - - + - + - + + + + + + + + + + + + + + + + + + + + + + - - + + - - - + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + + - + + + - + + + + - + - + - - - - - - - - - - + + - + + + - + + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + + - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - + + + - - - - - - - - - - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - + - + - - + - + - - - - - - - - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - + - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -40465,1502 +40421,1649 @@ - - - - + - + - + + + + + + - - + - - - - - - + - + - - + - - + + + + - - - + + + - + - + - + - + - - - + - - + - - - - - - + - + - + - + + + + + + + + + + + - + - + - + - + + + + + + + + - - + - - - - - - - - - - - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + - - - - - - - - + - + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - + + + + + + + + + - + - + - + - + + + + + + + - + - - - - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - + + + + + - + - + - + + + + + + + + + + - - + - - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - + - + - + - - - - - - - - - - - + + + - - + + + - - + + + + - + - + - + - - - + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + - + - + - + - - - + + + + + + + + + - - + - - + + - + - + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + + + + + + + + + + - + + + + + + + + + + + + + + + + + - + - + - - - + - - - + + + - - + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - + + - - + + - + - + - + - + + + + - - - + + + - - - + + + - - - - + - + - + - - + + + + + + + - - - + + - - + + + + - + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - + + + - - + + - - + + + - + - + - + - - + - - - - + + - - - + + - + + + + - + - + - + + + + + + + + + + - + + + + + + + + + + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - + + + + + + + + + - + - + - - - - - - - - + - + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - + - + - + - - - - - - + + + + + + + + + + + - + + + + + + + + + + + - + - + - + + + + + + + + + + + - - - - + + - - - + + + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + - + + + + - + - + - - - - - - - - - - - + + + + + + + + + + - + + + + + + + + + + - + - + - - - - - - - - + + + + + + + + - + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -41984,4094 +42087,3974 @@ + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + + - - + + - + - + - + - - - - - - - - - + - + + + + + + + + + - + - + - - - - - - - + + + + + + + + + + + - + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + + - - + + + - + - + - + - - - - - - - - - - + + + + + + + + + + + - + - + - - - - + - + - - - - - - - + + + + + - + + + + + + + + + - + - + - - - + + + + + + + + + + + - - + + + - + + - - + + + + + - + - + - - - - - - - - - - - - - - + - - + + - - - + + - + + + + - + - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + - - + + + - + + + + + + - + - + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - + + + + + + + + + + + + + + - + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + - + - - - - - - - + + + + - + - + - + + + + + + + + + + - - - + + + - - - + + + - + - + - + - - - - - - - - - - - - - - - + + + + + + + + + + - - + - - + - + - + - + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + - - - + + - + - + - + - - - - + + + + + + + + + + + - - - + - - - + - + - + - + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + - + - - - - + - + - + - - - + + + + + + + - - - + - - - + - - - - + - + - + + + + + + + + + + + + - - + + + - - + + - - - - + - + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + - - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + - - - - + - + - + - + - - - - - - - - - - + + + + + + + + + + + - - + - - + - + - + - + - + - - - - + + + - - - + + + - + - + - + - - - - + + + + + + + + + + + - + + + + + + + + + - + - + - - - - - - - - - - - + + + + - + + + - - + + + + - - - - + - + - + - - - - - - - - - - - + - - + + - - - + + - + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - + - - + - - - - + - + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - + + - + + + + + + + + + - + - + - - - - - - - - + + + + + + + + + + - - - - + - - - + - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - + + + - - + + - + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + + + - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - - - + + - - - - - + + + - + - + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + + - - - + - - - - + - + - + + + + + + + + + + + + + + + + + + + + + + - - + - - + - - - - + - + - - - - - - - - - + + + + + + + + + + + + + + + - - + - - - - + - + - - - - - - - - - - - + + + + + + + + - + - + - - - - + - + - + - - - + - - - + - - - - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - - - - - + - - + - - - - - - - - + - + - - - - - - - - - - - + - - - - + - - - - - - - - - - - - - - + - + - + - - + - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - + - + - - - - - - - - - - - + - - - + - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - + - - - - - - - - - - - - + - + - - - - - - - - - - + + + + + + + + + + + + - - - + + - - - + + + - - - - + - + - - - - - - - - - - + + + + + - + - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + + + - - + + - + - + - + - - - - - - - - - - - + - + - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + - + - + - + - - - - - - - + + + + + + + + + - + - + - + - + - - - - - - - - - - - - + + + - - - + + - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + - - - - - - - - + - + - + - + - - - - - - - + - + - - - - - - - - - - - + - + - - - - - - - + - + - + - - - + + - - - + + - + - + - + - - - - - - - - - - - + + + + + + - - + - - + - - - - + - + - - - - + - - - + + + - + + + - - + - + + + + + + + + + - + - + - + - - + - - + - - - - + - + - + - - - - - - - - - - - - - + - - + - - - - - - - - - - - - - + - + - - - + - + - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + - - - - - - - - - - - - - - - - + - + - - - - - - - - - - + - + - - - - + - + - - - - - - - - - - - - - + + + + + - - - + + - - + + - - - - - - - - + - + - + - + + + - - - + + - - + + - + + + + - + - + - - - - - - - - + - - + - - - + - + - + - + - - - - - - - - - - - + + + - + + - + + + + + + + + - + - + - + + + + + + + + + + + + + + + + + + + + - - + - - + - + - + - - - - - - - - - - - - - - - - - - - - - - + - + + - + + + + + + + + - + - + - - - - - - - - + + + + - + + + - + + + + + - + - + - - - - - - - - + - + - + + + + - + - + - + - + - + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + + + + - + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + + + + - + - + - + + + - + + + + + + + + + - + - + - + - + + + + + + + + + - + - + - + - + + + + + + + + + - + - + - + - + + + + + + + + + + - + - + - - + + + + - + + + + - + - + - - - - - - - - - - - - + - - + + - - + + + + + - + - + - - - - - + - + + - - + + + - + - + - + - - + + + + + + + + + + - - - + - - + - - - - + - + - + - + + + + + + + + + + - + - + - + + + + + + + + - + + + + + + + + + + + - + - + - - - - - - - - - - - - + + + - - + + - - + + + - + - + - + - - - - - - - - - + + + + + + + - + - + - + - + - - - + - - + + - - + + + - + - + - + - + + - + + + + + + + + + + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + - + - + - + - + + + + + + + + + + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + - - + - - + - - - - + - + - - - - - - + - + + - + + + + + + - + - + - + - - - + + - - - + - + - - - - - - - - - + - + - + - + - + + - + + + - + - + - + - + + + + - + + + + - + - + - + - + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - + - - + - - - - + - + - - - + - - + + - - + + + - - - - + - + - + - + - + + - + + + - + - + - + - - - + - - + + + - - + + - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + + + + + + + + - - + + + - - + + + - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + + + + + + - + + + - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - + + + + + - - + + + - - + + + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + - - + - - - - + - + - + + + + + + + + - - + + + - - + + + - + - + - + - + + + + + + + - - + + + - - - + + + - + + + + - - - - - - - - - - - - - - - - - - - - - - - + - + - + + + + + + + + + - - + + + - - - + + + - + - + - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + - - - - + - + - - - - - - - - - - + + + + + + + + - + + + - + + + + + + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + - - - + - - - - + - + - - - - - - - - + + + + + + + + @@ -46079,650 +46062,745 @@ - - + + - + - + - + - + - - - + + + + + + + + - + + - - - + + + - + - + - + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + + + + + + + + - + + - - - + + + - + + + + - + - + - - + + + + + + + + + + + + - - + - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - + + + - + + + + + + - + - + - + + + + + + + - - + + + - - - + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - + + - + + + + + - + - + - + + + + + + + + + + + + - - + - - - + - - - - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - + + - + - + - + - + + + + + + + + + + + - - + + + - - - + + + + - + - + - + - - - - + + + + + + + + - + + + - + + + + + + - + - + - + + + + + + + + - - + + + - - - + + + - + - + - + - - - - - - - - + + + + + + + + - + + + - + + + + + + - + - + - + - - + + - - - + + - - - - + - + - - + + + + + + + + + + - - + + + - - - + + + - + - + - + - + + + + + - - - + + - - + + + - + - + - + - - - - - - - - + + + + + + + + + + + - - - + + - - - + + - - - - - - + - + - + - - - - - - + - - - + + + + - - - + + + + + - + + + + + - + - + - - - - - + + + + + + + - - + + - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + + - + + + - + - + - - - - - - - - + + + + + + + @@ -46730,68 +46808,60 @@ - - + + - + - + - + - + - - - - - - - + + + + - - - + + - - - + + + - - - - + - + - + - - - - - - - - - + + + + + + + + @@ -46799,523 +46869,100 @@ - - + + - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + + - + + + + + + - + - + - - - - - - - - + - - - + - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + + - + + + + + + + + - + - + - - - - - - - - + @@ -47323,409 +46970,267 @@ - - + + - + - - + - + - + - - - - - - - - + - - - + + + + - - - + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + + + + - + + + - + - + - - - - - - - - + - - - + + + + - - - + + + - - - - - - - + - + - - - - - - - - - - - - + + + + + + + + + - + + + + + + + + + + + - + - + - - - - - - - - + + - - - + + + - - - + + - + - + - + - - - - - - - + + + + + + + + + - - - + + - - - + + - + - + - + - - - - - - - - - - - + - - + + + + - - + + + - - - - + - + - - - - - - - - - - - - + - + + + - + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + + - - + + - - - - + - + - - - - - - - - - - - + + + + + + + + + @@ -47733,1171 +47238,1133 @@ - - + + - - + + + - + - + - + - - - - - - - - + + + + + + + + + + - - - + + + - - - + + - + - + - + - - - - - - - - + - - - + + + - - - + + - - - - + - + - - - - - - - - + - - - + + - - - + - - - - + - + - + - - + - - + + + + + + + + - + - + - - - - - - - - - + - - - + + - - - + - - - - + - + - - - - - + - - + + - - - + + + + - + - + - + - - - - - - - - - - - + - - + + + - - + + + - + - + - + - + + + + + + + + + + + + - - - - + + - - - - - + + - - - - - + - + - + - - - - - - + - - - + + - - - + - - - - + - + - + - - + + - - - + - + - + - - - - - - - + - - - + + - - - + - - - - + - + - - - - + - - + + - - - + + - + - + - + - - - - - - - - + - - - + + - - + - - - - + - + - + - - + + - - - + - - - - + - + - + - + + - - + - - - - + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + - - + + + - - - - + - + - + - + + + + + + + + + + + - - - + - - + + - + - + - + - + + + + + + + + + + + - - - - + - + - + - + - + - - - - + + - - - + + - + - + - + + + + + + + + + + + + + - - - - + + - - - + + + + + + - + - + - - - - - - - - - + - - + - - - - - - - - - - + - + - - + - - - + - - + + + + - - - - + - + - - - - - - - - - + - - + + - - + + + - - - - + - + - + - - - - + + + - - - + + + + - + - + - + + + + - - - + + - - + + - + - + - + + + + + + - - - + - - + + + + + - + - + - - - - - - - - - + + + + - - + - - - - - + + + - + - + - + - - - - - - - - - - + - - - + + + - - + + + - + - + - + - + - - - + + + + - - + + + + + + + - + - + - + + + + + + + + + + - - + + + - + + + + + + + + - + - + - + - + - + - - - - - + - + - + - + + + + - - + + - + + - + - + - + - - + + - - - - + + - + - + - + - + + + + - - - + + - - - + + - - - - + - + - - - - - - - - - - - - + + + + - - + + - - + + - - - - + - + - + + + + + + + + + - - + + - + + + + + - + - + - + + + - - + + - + + - + - + - + + + - - + + - + + - + - + - + - - + + + + - - + + + - + - + - + - + + - - + + + - + + + + + + - + - + - + + + + + + + + + + - - + - + + + + - + - + - + + + + + + + + + + - - + + + - + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + @@ -48905,210 +48372,250 @@ - - + - - - + + - + - + - + - - - - - - - - - - - + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - - + - - - - + - + - - - - - - - - - - + + + + + + + + - - - + + - - + + - + - + - + - + + + + - - + + + - - + + + + + - + - + - - - - - - - - - - - - - + - - + + + - - - + + + + - + - + - + - + + + + + + + + + + + - + + + + + + + - + - + - + - + + + - - - - + + + + + + + + + + + + + - + - + - + + + - - + + - - - + + + + + - + - + - + @@ -49116,3070 +48623,3184 @@ - + - - + - + - + - - - - + - - + + - - + + + - + - + - - - - - - + - + - - + + + - - - - + - + - - - + - - - + - - - + + - - - - + - + - + + + + + + + + - - + - - - + + + - + - + - + - + - - - - + + - - - - + + + - + - + - + - - - - - - - - - - + - - - + + + - - + + + + - - - - + - + - + - + - + + + - + + + - + + + + + + + + - + - + - - - - + - - + + - - + + + + + + + + - + - + - + + - - + - - + + + - + + + + - + - + - - - - + + - + - - + + + + + + + + + - + - + - - - - + + + + + + + + + + + - - + + - - + + + + + + - + - + - - - - - - - - - + - - + + - - + + - + - + - + - - - + + + - - + + + - + + + + + + - + - + - - - + + - - + + + - + + + + + + - + - + - + + + + - - - - + + - - - + + - + - + - + - - + - - - + + + - - - + + + + - + + + + - + - + - - - - - - - - - - + - + + - + + - + + + + - + - + - - - - - - - - - - + + + + - - - + + - - + + - + + + + - + - + - - - - - - - - + + + + - - + + - - + + - + + + + - + - + - - - - - - - - + - + + + + + + + + + + - + - + - - - - - - - - - + + + + + + + - + + - + + + + + + - + - + - - - - - - - - + + + - - + - - + - + - + - + - - - - + - - - + + - - + + - + + + + + + + + + + + + + + + - + - + - + - + - - - - - + + - + - + - + - - - - - - - - - - - + - + + + - + + + + - + + + + + - + - + - + + + - - - + - - - - + + - - - - - - - + - + - + - - - + + + - - + - - + - + - + - + - + + + - - - + - - - + + + + + - + - + - + + + - - + + - - - + + + + + - + - + - + + + + + + + + + + + + - + + - - - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + - + - + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + - - - - - - - - - + - + - + + + - - + + - - - + + - + - + - + - + + + - + - - - - - + + - + - + - + - + + + + + - - - + - - - - - - - - - - - - - - - - + - + - + + + + + + - - + + - - + + - - - - + - + - + - - + + + + + - + - - - - - - - - - - - - + - + - - + + + - - + + - - - + + - - - - + - + - + - - - - - - - - - - - + + + - - + + - - - + + - + - + - + - + + - - + + - - + + - + - + - + - - - + + + + + + - - - + - - - - - - - - - - + - + - - + + + + + + + + + + + + - - - + - - - - + + - + - + - + - - - - + - - + + + + - - + + + + + - - - - + - + - + - - - + + + - - - - + + + - - - - - - - + - + - + + + - - + + - - + + - - - - + - + - + - - - - + + + - - + + - - + + - - - - + - + - + - - - - + + + - - + + - - + + - - - - + - + - + - + + + - - + + - - - + + - + - + - + - - - - - - - + - - + + - - - + + - - - - + - + - - - + - + - - - - - - - + - + - + + + - - + + - - + + - - - - - - - - - - - - - - - + - + - + - + - - + - - - - - - - - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - + - - - - - + - + - + - - - + - + + - - + + - - - - + - + - - - + + + + + + + + + + - + + - + + + - + - + - + - - - + + + - + + - - + + - + - + - + - - - + + + - + - - + + - + - + - + - - - - - - - - - - - - + + + + + + + + + + + - - + + - + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - + - + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + + + + + + + + + + + + + + + - + - + - - - + + + - + + - - + + + + - + + + + + + + + - + - + - - - + + + + + + + + + + + + + - - + + - - + + - + - + - + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + - + - - - - - - + + + + + + + + + + + + - - + + - - + + - + - + - + - - - - - + + + + + + + + + + - + + + + + + + + + - + - + - - - + + + + + + + + + + + - - + + - - + + - + - + - + - - - + + + + + + + + + + + - - + + - - + + - + - + - + - - + + + + + - - - + + + + - + + + + + + + + - + - + - - - - - - + + + + + + + + + + + - + + + + + + + + - + - + - - - - - - - - - - - - + + + + + + + + + + - + + - - + + + - + - + - + - + + + + + + + + + + - - - - + + - - - - - + + + + + - + - + - + + + + + + + + + + + - - - + + - - - + + + + + - + - + - - - + + + + + + + + + + + - - + + - - + + - + - + - + - - - + - + + - + + + - + + + + + + + + - + - + - - - + + + + + + + + + + + - - + + - - + + - + - + - + - - - + - - + - - + - + - + - + - + + + + + + + + + + + - - + + - - + + + + + - + - + - + + + + - + + + + + + + + + + - + - + - - - + + + + + + + + + - - + + + - - + + - + - + - + - + + + - + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - + + + - + - + - + - + - - + + - - + + + + + - + - + - - - - - - - - - - + + - - + + - + - - + - + - + - - - + - + - - + + - + - + - + - - - + + + + + + + + + + + - - + + - - + + - + - + - + - - - - - - - - - - - + + + - - + - - + + - + + + + - + - + - - - - - - - - - - - + + + - + - + + - + + + + - + - + - + + + - - + - - - - + + - - - - - + + + + - + - + - - - + + + + + + + + + - + - + - - - - - - + + + + + - + - + - - - - - - - - - - - - - + - - + + + - - + + - + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - + + + - - - + + + + - + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - + - - + + - - + + - + - + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - + - + - + - - - - - - - - - - - + - - + + - - + + - + + + + - + - + - - - - - - - - - - - + - - + + + + - - + + - + - + - + - - - + + - - - + + + - - - - + + + - - - - - - - - + - + - + - - - - - - - - - - - + + + - - + + + - + + - + - + - + - - - - - - - - - - + + + + - - + + - - - + + - + - + - + - - - - - - - - - - + + + + + + - - + + + - - + + + - + - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + + - + - + - + - - - - - - - - - - - + @@ -52187,3291 +51808,2409 @@ - + + - + + + - + - + - + - + - - + + + + - - - - + + + + - - - - - - + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - + - - + - - + - + - + - + - + + + + + + + + + + + - + - + + - + - + - + - - - - - - - - - - - + + + + + - - + - - + + - + - + - + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - + + + + - + + + + + + - + - + - - - - - - - - - + + + + + + + + + - - - + + - - + + + - + - + - + - - - + + + + + + + + + + + - - + - - + + - + - + - + - + + - - + - - - + + - + + + + - + - + - + - - + + - - + + + - + - + - + - - + - - + + - - + + + - + - + - + - + + + + + + + + + + + - - + - - + + - + - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + - + - + - + - - - + + + + + + + + - + + + - - + + - - - - + - + - + - - - + + + + + + + + - + + + - - + + - - - - + - + - + - - - + + + + + + + + + - + + + - - + + - - - - + - + - + - - - - - - - - - + + + + + + + + + - - - + + + - - - - - + + + - - - - - - - + - + - + - + + + + + + + + + + + - - - + + - - + + + - - - - + + + + - + - + - - - - - - - - - - - + - - - + + + - - - - + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - + - + - + + + - + + - - + + + + - + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + - - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + + - - - - + - + - + - + - - - - + + - - + - + - + - + - - + - - - + - - - + + - + - + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - + + - + - + - + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + - + + + - + - + - + - - - - - - + + + + + + + + + + + - - - + + - - - + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - - + - - - + - + - + - + - + + + + + + + + + + + - - - + + - - - - + + - + - + - + - + + + - - + + - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - + - + - + - + + + + + + - + + - + + + - + - + - + - - - - - - - - - - - + + + + + + + + + + + + - + + - + - + + + + - + - + - - - - - + - + + - - + + - + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - + + - - - - + + - - - - + + + + + + + + + - + - + - - - - - - - - - + + + + + + + + + + + - - + + - - - + + + - + - + - + - - - - - - - - - - - + - + + + - - + + + - + + + + + + + + + + + + + + - + - + - - + + + + + + + + + - + + - - + + - - - - + - + - + - + + + + + + + + + + + + + - - + + - - - + + - + - + - + - + - - + + - - - + + - + + + + + - + - + - - - - - - - - - - - + - + - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + - - + + - + - + - + - - - - - - - - + - - - + + + - - + + - + - + - + - - - - - - - - + - - - - + - + - + - + - - - - - - - - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + + + + - + - + - - - - - - - - - - - + - - + + + + + - - - + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - + - + - + - - - - - + + - - - - + + + - - - - - - - - - - - - - - - - - - - - + + - + - + - + + + + + + + + + - - + + + - + + + + - + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - + + - - + + + - + + + + + + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + - + + + + - + + + + + - + - + - + + + - + + - - + - + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + + + - - + + + + - + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + + + + - - - - + + + + - + + + + - + - + - - - - - - - - - - - + - - + + - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - + - - + + + - - + + + - + + + + + + + + + + + + + + + + + + + + + + - + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - - + + + + - + + + + + + - + - + - - - - - - + + + + - - + + - - - + + - + + + + - + - + - - - - - - - - - - - - + + + + - - + + - - + + - - - - + + + + - + - + - + + + + - - + + - - + + - - - - - - - - - - - - - - - - - + + + + - + - + - - - - - - - - - - - + + + - - + + - - + - - - - - - - - - - - + + + + + - + - + - - - - - - - - - - - + + + - - + + - - - + - + + + + + - + - + - + + + - - - + + - - - + - - - - - - - - - - - - - - + + + + + - + - + - - - - - - - - - + - - + + + + - - + + + - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + - - + - - - - - - - - - - - - - - - - - - - + - - + - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - + - - + - - - - - - - - - - - - - - - - - - - - + - - - + - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - + - - - + - - - - - - - - - - - - - - - - - - - - - - + - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + - - - - - - - - - - - - - - - - - - - - - - + - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -55956,18411 +54695,11724 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - -

original_bigg_ids: ['SUCRt2']

- -
- - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + +
+ + + + + + + + + + + + + + + + + + + + + + + +

original_bigg_ids: ['SUCRt2']

+ +
- + - - - + + + - - + + + + + + + + + + + +
+
+ + + + + + + + + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - - + - + - - - + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - - + + + - + - + - - - + + + - + - + - - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + + - + - + - - - + + + - - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + + - + - + - - - + + + - + - + - - - + + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - - + + + - + - + - - - + + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - - + + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + + - + - + - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - - + - + - - - + + + - + - + - - - + + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - - + + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - + + + - + - + - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - + + + - + - + - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - + + + - + - + - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - + + + - + - + - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + - + - + - - - - - - + + + - + - + - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + + - + - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - + + + - + - + - - - - - + + + - + + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - + + + - + - + - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - + + + - + - + - - - - - - + + + - + - + - - - - - - + + + + diff --git a/syn_elong/tests/run_essentiality_test.py b/syn_elong/tests/run_essentiality_test.py index 3b0e719..811a14a 100644 --- a/syn_elong/tests/run_essentiality_test.py +++ b/syn_elong/tests/run_essentiality_test.py @@ -7,8 +7,12 @@ '../syn_elong.xml', '--filename', 'essential_only_report.html', + # '../new_syn.xml', + # '--filename', 'essential_only_report2.html', + + '--experimental', '../data/experiments.yml', - '--exclusive', 'test_essentiality', + # '--exclusive', 'test_essentiality', '--pytest-args', '--tb=long' diff --git a/syn_elong/tests/run_growth_test.py b/syn_elong/tests/run_growth_test.py index 6697b16..296e7c3 100644 --- a/syn_elong/tests/run_growth_test.py +++ b/syn_elong/tests/run_growth_test.py @@ -4,8 +4,8 @@ if __name__ == '__main__': args = [ - '../Rhodo_Toru.xml', - '--filename', 'growth_report.html', + '../new_syn.xml', + '--filename', 'growth_report_new.html', '--experimental', '../data/experiments.yml', '--exclusive', 'test_growth', From 686d74cf15d09db44cd292304325fdc4e0272ee1 Mon Sep 17 00:00:00 2001 From: James Date: Tue, 9 Jan 2024 17:09:50 -0500 Subject: [PATCH 2/5] Adding reactions from ijb792, removing reactions added from gapfill. Keeping those separate until additional evidence is found to support addition. --- syn_elong/model_changes.py | 45 +- ...r_essential_improvement_with_gapfill.ipynb | 18 +- .../optimize_sucrose_via_optknock.ipynb | 724 ++++++++---------- syn_elong/syn_elong.xml | 447 +++++++++++ 4 files changed, 796 insertions(+), 438 deletions(-) diff --git a/syn_elong/model_changes.py b/syn_elong/model_changes.py index 41b0798..96cd819 100644 --- a/syn_elong/model_changes.py +++ b/syn_elong/model_changes.py @@ -23,9 +23,7 @@ s_model_path = os.path.join(_file_path, starting_model_f_name) starting_model = cobra.io.read_sbml_model(s_model_path) -# starting_model = cobra.io.load_json_model('iMS837.json') -# cobra.io.write_sbml_model(starting_model, 'iMS837.xml') -# starting_model = cobra.io.read_sbml_model('iMS837.xml') +# starting_model = cobra.io.load_json_model('iJB792.json') starting_model.id = "syn_elong" output_model_name = 'syn_elong.xml' @@ -49,14 +47,11 @@ def update_2(model): # Copy sucrose transport from universal model sucr_transport = universal_model.reactions.SUCRt2.copy() - - # Set the lower bounds for the sucrose reactions - sucr_transport.lower_bound = -1000.0 - model.reactions.EX_sucr_e.lower_bound = 0.011 - + sucr_transport.lower_bound = -1000 # Add the transport reaction to the model model.add_reactions([sucr_transport]) - + # Set the lower bounds for the sucrose reactions + model.reactions.EX_sucr_e.lower_bound = 0.011 # Add the gene name of the sucrose transporter to the model gene_add = cobra.core.Gene(id='cscB', name='cscB', functional=True) model.genes.add(gene_add) @@ -66,10 +61,40 @@ def update_2(model): return model +def update_3(model): + # updates the model to add the reactions from ijb792 + rxns = ['MPTSS', 'MOADSUx', 'GTPC', 'CPMPS', 'MPTS', 'MPTAT', 'MOCOS', 'MDH'] + reactions_to_add = set() + for reaction_id in rxns: + reaction = universal_model.reactions.get_by_id(reaction_id) + reactions_to_add.add(reaction.copy()) + model.add_reactions(reactions_to_add) + model.remove_reactions([universal_model.reactions.get_by_id('ORNTA')]) + return model + + +def update_4(model): + # adding reactions from gapfilling + reaction_ids = { + 'GLCS1', 'SADT2', 'ATPSu', 'PPND2', 'aratyr1', 'CDPDAGS1819Z160', + 'ASNTRS_1', 'GLGB', 'FRDO', 'ACGAM6PS', 'PGPS1819Z160', 'PAPSSH', 'GLYOX_2', + 'APSR', 'AIRC1', 'ILETA2', 'PRFGS_1', 'AHSERL2', 'FASC161ACP', 'GLCS2', 'UAGDP_c', 'P5CCD', 'UGP_PGM_c', + } + reactions_to_add = set() + for reaction_id in reaction_ids: + reaction = universal_model.reactions.get_by_id(reaction_id) + reactions_to_add.add(reaction.copy()) + model.add_reactions(reactions_to_add) + return model + + def process_model_steps(): # Fix compartments model = update_1(starting_model) model = update_2(model) + model = update_3(model) + # don't add these reactions yet + # model = update_4(model) write_model(model) @@ -80,5 +105,5 @@ def process_model_steps(): [ *model_paths, '--filename', os.path.join(_file_path, 'model_differences.html') - ] + ] ) diff --git a/syn_elong/notebooks/add_reactions_for_essential_improvement_with_gapfill.ipynb b/syn_elong/notebooks/add_reactions_for_essential_improvement_with_gapfill.ipynb index 447acde..4cb9163 100644 --- a/syn_elong/notebooks/add_reactions_for_essential_improvement_with_gapfill.ipynb +++ b/syn_elong/notebooks/add_reactions_for_essential_improvement_with_gapfill.ipynb @@ -1650,10 +1650,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "ad8211e0", "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'rxns_to_add' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn [1], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[38;5;28mlen\u001b[39m(\u001b[43mrxns_to_add\u001b[49m)\n", + "\u001b[1;31mNameError\u001b[0m: name 'rxns_to_add' is not defined" + ] + } + ], "source": [ "len(rxns_to_add)" ] @@ -1762,7 +1774,7 @@ { "cell_type": "code", "execution_count": null, - "id": "007b501e", + "id": "a53caaa1", "metadata": {}, "outputs": [], "source": [ diff --git a/syn_elong/notebooks/optimize_sucrose_via_optknock.ipynb b/syn_elong/notebooks/optimize_sucrose_via_optknock.ipynb index dafc5ca..4652334 100644 --- a/syn_elong/notebooks/optimize_sucrose_via_optknock.ipynb +++ b/syn_elong/notebooks/optimize_sucrose_via_optknock.ipynb @@ -23,7 +23,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 5, "metadata": { "pycharm": { "name": "#%%\n" @@ -37,64 +37,21 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 6, "metadata": { "pycharm": { "name": "#%%\n" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Set parameter Username\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:gurobipy.gurobipy:Set parameter Username\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Set parameter GURO_PAR_SPECIAL\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:gurobipy.gurobipy:Set parameter GURO_PAR_SPECIAL\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Set parameter TokenServer to value \"leghorn\"\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:gurobipy.gurobipy:Set parameter TokenServer to value \"leghorn\"\n" - ] - } - ], + "outputs": [], "source": [ "from syn_elong import model\n", - "from syn_elong.media import m9_media, syn_min_media" + "from syn_elong.media import m9_media" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 7, "metadata": { "pycharm": { "name": "#%%\n" @@ -265,7 +222,7 @@ " 'EX_minohp_e': 1000.0}" ] }, - "execution_count": 4, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -274,116 +231,6 @@ "model.medium" ] }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "{'EX_h2o_e': 100.0,\n", - " 'EX_h_e': 100.0,\n", - " 'EX_no3_e': 100.0,\n", - " 'EX_pi_e': 100.0,\n", - " 'EX_so4_e': 100.0,\n", - " 'EX_nh4_e': 100.0,\n", - " 'EX_mg2_e': 100.0,\n", - " 'EX_fe3_e': 100.0,\n", - " 'EX_cobalt2_e': 100.0,\n", - " 'EX_k_e': 100.0,\n", - " 'EX_na1_e': 100.0,\n", - " 'EX_hco3_e': 100.0,\n", - " 'EX_co2_e': 100.0,\n", - " 'EX_photon430_e': 1000.0,\n", - " 'EX_photon450_e': 1000.0,\n", - " 'EX_photon470_e': 1000.0,\n", - " 'EX_photon410_e': 1000.0,\n", - " 'EX_photon490_e': 1000.0,\n", - " 'EX_photon510_e': 1000.0,\n", - " 'EX_photon530_e': 1000.0,\n", - " 'EX_photon550_e': 1000.0,\n", - " 'EX_photon570_e': 1000.0,\n", - " 'EX_photon590_e': 1000.0,\n", - " 'EX_photon610_e': 1000.0,\n", - " 'EX_photon630_e': 1000.0,\n", - " 'EX_photon650_e': 1000.0,\n", - " 'EX_photon670_e': 1000.0,\n", - " 'EX_photon690_e': 1000.0}" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "m9_media" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "{'EX_hco3_e': 1.455174283140397,\n", - " 'EX_mg2_e': 0.0006043083928022,\n", - " 'EX_nh4_e': 0.0031,\n", - " 'EX_co2_e': 0.7190666730577998,\n", - " 'EX_leu__L_e': 0.0283647410545166,\n", - " 'EX_cobalt2_e': 2.758158572551524e-07,\n", - " 'EX_no3_e': 0.4029488349165458,\n", - " 'EX_fe3_e': 8.634960628764796e-05,\n", - " 'EX_so4_e': 0.0083942782543118,\n", - " 'EX_h_e': 1.8823881901014008,\n", - " 'EX_photon650_e': 0.0006043083928022,\n", - " 'EX_photon670_e': 11.697656196156876,\n", - " 'EX_photon690_e': 18.200781855573425,\n", - " 'EX_pi_e': 0.0230000000000021}" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "syn_min_media" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.053901867745774316\n" - ] - } - ], - "source": [ - "with model:\n", - " print(model.slim_optimize())" - ] - }, { "cell_type": "code", "execution_count": 8, @@ -393,24 +240,16 @@ } }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:cobra.medium.boundary_types:Compartment `e` sounds like an external compartment. Using this one without counting boundary reactions.\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "0.04942837294924107\n" + "0.19263788778299723\n" ] } ], "source": [ "with model:\n", - " model.medium = syn_min_media\n", " print(model.slim_optimize())" ] }, @@ -465,7 +304,7 @@ "output_type": "stream", "text": [ "Maximum possible BIOMASS__1 synthesis rate: 2.0.\n", - "Maximum possible EX_sucr_e synthesis rate: 16.389121923937367.\n" + "Maximum possible EX_sucr_e synthesis rate: 502.3691291212896.\n" ] } ], @@ -511,7 +350,7 @@ { "data": { "text/plain": [ - "968" + "999" ] }, "execution_count": 12, @@ -554,13 +393,6 @@ " \n", " \n", " \n", - " co2_e\n", - " EX_co2_e\n", - " 42.7\n", - " 1\n", - " 49.01%\n", - " \n", - " \n", " cobalt2_e\n", " EX_cobalt2_e\n", " 1.023E-05\n", @@ -575,20 +407,6 @@ " 0.00%\n", " \n", " \n", - " h_e\n", - " EX_h_e\n", - " 29.33\n", - " 0\n", - " 0.00%\n", - " \n", - " \n", - " hco3_e\n", - " EX_hco3_e\n", - " 44.42\n", - " 1\n", - " 50.99%\n", - " \n", - " \n", " k_e\n", " EX_k_e\n", " 3.094E-06\n", @@ -624,23 +442,9 @@ " 0.00%\n", " \n", " \n", - " photon670_e\n", - " EX_photon670_e\n", - " 346.2\n", - " 0\n", - " 0.00%\n", - " \n", - " \n", " photon690_e\n", " EX_photon690_e\n", - " 634.6\n", - " 0\n", - " 0.00%\n", - " \n", - " \n", - " pi_e\n", - " EX_pi_e\n", - " 0.8534\n", + " 150\n", " 0\n", " 0.00%\n", " \n", @@ -651,13 +455,6 @@ " 0\n", " 0.00%\n", " \n", - " \n", - " amylose_c\n", - " SK_amylose_c\n", - " 1.027\n", - " 0\n", - " 0.00%\n", - " \n", " \n", "

Secretion

\n", " \n", @@ -675,44 +472,72 @@ " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -723,7 +548,7 @@ "
DM_5drib_c-0.0002078526.10%0.01%
ac_cDM_ac_c-3.246231.62%
amob_cDM_amob_c-5.236E-051519.73%0.00%
co_cDM_co_c-0.002115153.14%0.01%
dialurate_cDM_dialurate_c-1.023E-0541.03%0.00%
pho_loss_cDM_pho_loss_c-17.31h2_cDM_h2_c-12.2500.00%
o2_eEX_o2_e-95.03h2o_eEX_h2o_e-0.366300.00%
h_eEX_h_e-32.9300.00%
hco3_eEX_hco3_e-14.03168.36%
meoh_eEX_meoh_e-5.236E-0510.00%
sucr_eEX_sucr_e-0.011
" ], "text/plain": [ - "" + "" ] }, "execution_count": 13, @@ -788,24 +613,20 @@ { "data": { "text/plain": [ - "EX_photon690_e -734.760\n", - "EX_photon670_e -400.139\n", - "EX_co2_e -87.123\n", - "EX_h2o_e -51.971\n", - "EX_nh4_e -8.573\n", - "EX_no3_e -7.545\n", - "EX_pi_e -0.853\n", - "EX_so4_e -0.311\n", - "EX_mg2_e -0.022\n", - "EX_photon650_e -0.022\n", - "EX_fe3_e -0.003\n", - "EX_cobalt2_e -0.000\n", - "EX_k_e -0.000\n", - "EX_hco3_e -0.000\n", - "EX_na1_e -0.000\n", - "EX_h_e 0.011\n", - "EX_sucr_e 0.011\n", - "EX_o2_e 110.129\n", + "EX_h2o_e -34.182\n", + "EX_nh4_e -16.119\n", + "EX_hco3_e -13.543\n", + "EX_so4_e -0.311\n", + "EX_mg2_e -0.022\n", + "EX_photon650_e -0.022\n", + "EX_fe3_e -0.003\n", + "EX_cobalt2_e -0.000\n", + "EX_k_e -0.000\n", + "EX_na1_e -0.000\n", + "EX_meoh_e 0.000\n", + "EX_sucr_e 0.011\n", + "EX_co2_e 40.773\n", + "EX_h_e 121.651\n", "Name: fluxes, dtype: float64" ] }, @@ -830,7 +651,7 @@ "outputs": [ { "data": { - "image/png": "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4nLTU1MBAQHq1auX/vGPfxQbk5aWpi+//FLDhg2TxWIptu1vf/tb7dq1S61atVLLli2LrT9//rwWLlyoOXPm2I4UJScna+fOnbp48aKWL19+05pvvF5OTk6pY/Lz84vdHQWgchU/JgugysnOztahQ4dsz1NSUpScnCx/f3/Vr19fkjRu3DidPHlSn3/+uaTrtyJ/9NFHevHFFzVq1CitXr1ac+fO1eLFi2/5funp6bp69apyc3O1detWffHFFxo6dOhNx3/00Ufq0qWL+vTpozfeeEMRERHas2ePXnjhBYWFhd30qE6dOnV0+vRpubm5lbj+iy++UEBAgB5++OFiYah///6aPn26+vbtq9GjRys0NFT33XefrFarTp8+rTfeeEP16tWzhbcePXrokUceUfv27RUQEKC9e/fqf//3f9WzZ0/5+Pjc8mtSmgsXLuj48eM6deqUpOu3tkvXj44FBwff0WsD1YJjb6YCUBlu3DL968fIkSNtY0aOHGl079692HZt27Y13N3djUaNGhkzZ84s1/u4uroaERERxl//+lcjOzu7yHv98tZswzCMo0ePGiNHjjSCgoIMNzc3Izw83PjTn/5knDt3rsi47t27G88999xNa/jlrdmtW7c2nnnmmRLHff3114a7u7tx9uxZ45tvvjH69+9vhISEGO7u7kZoaKgRFxdn/PTTT7bxb731ltG5c2fD39/f8PT0NBo1amQ8++yzxeq7HTNnzixx//z6FnMAJbMYRjmvugMAAHAiXDMDAABMjWtmAOAOrVu3Tv369Stx3ZUrV0q9++uXLRMA3B5OMwHAHbpy5YpOnjx503WlhZkmTZpUVFlAtUGYAQAApsY1MwAAwNQIMwAAwNQIMwAAwNQIMwAAwNQIMwAAwNQIMwAAwNQIMwAAwNT+HyQu/R3hmLXxAAAAAElFTkSuQmCC\n", + "image/png": "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goODtWrVKk2cOFFffvmlwsPD9e9//1uDBg2SJG3ZskVjx47Vt99+q9DQ0BrtOzc3VwEBAQqbsV5efi0aZHwAAFyPjiwYLX+fZg2y7Yq/3zk5ObLb7dW2a7L37Jw4cULp6emKjIx0lQUEBCgiIkJJSUmSpKSkJAUGBrqCjiRFRkbKy8tLe/furXbbTqdTubm5bh8AAGBNTTbspKenS5KCg4PdyoODg1116enpat++vVu9t7e3goKCXG2qEh8fr4CAANcnLCysnnsPAACaiiYbdhrSnDlzlJOT4/qkpqY2dpcAAEADabJhJyQkRJKUkZHhVp6RkeGqCwkJUWZmplt9aWmpsrOzXW2q4ufnJ7vd7vYBAADW1GTDTteuXRUSEqLExERXWW5urvbu3SuHwyFJcjgcOnfunPbt2+dq88knn6i8vFwRERFXvc8AAKDp8W7Mnefn5+v48eOu5RMnTig5OVlBQUHq1KmTZsyYoZdeekk333yzunbtql//+tcKDQ11PbHVq1cvjR49Wj/5yU+0bNkylZSUaPr06Zo4cWKNn8QCAADW1qhh5z//+Y/uuusu1/KsWbMkSTExMVq1apWeffZZFRQU6Kc//anOnTunoUOHasuWLfL393et8/bbb2v69Om655575OXlpQkTJujVV1+96mMBAABNU5OZZ6cxMc8OAAANg3l2AAAAGhhhBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWJplws7SpUvVpUsX+fv7KyIiQp999lljdwkAADQB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YsQIff7555Lq59+7pujUqVP66KOPKv2+XgvHtby8XDNmzNCPfvQj3XrrrdW2ayp/Yy3xugh4buHChVq3bp22b9/uduPuxIkTXV/36dNHffv21U033aTt27frnnvuaYyu1orD4XB7EeyQIUPUq1cv/elPf9KCBQsasWcNa/ny5erTp4/uuOMOt3KrHNfr1Zo1azRv3jy9//77bvexjBkzxvV13759FRERoc6dO2v9+vWaNm1aY3S1Vnr06KEePXq4locMGaKvvvpKS5Ys0VtvvdWIPWtYq1evVmBgoMaPH+9Wfi0c17i4OB08eLBJ3EtUE5Y6s3PDDTeoWbNmysjIcCvPyMhQSEhIleuEhIRctn3Ffz3Z5tVQm7FW+O1vf6uFCxdq27Zt6tu372XbduvWTTfccIOOHz9e5z7XVl3GWsHHx0cDBgxwjcOKx7WgoEDr1q2r0T+GTeG41kZ1v692u13Nmzevl5+VpmbdunV6/PHHtX79+kqXAy4VGBioW2655Zo7rlW54447XOOw4nE1xmjFihWaPHmyfH19L9u2qR3X6dOna/Pmzfr000/VsWPHy7ZtKn9jLRV2fH19NXDgQCUmJrrKysvLlZiY6PZ/+RdzOBxu7SUpISHB1b5r164KCQlxa5Obm6u9e/dWu82roTZjlS7c9b5gwQJt2bJFgwYNuuJ+vv32W2VlZalDhw710u/aqO1YL1ZWVqYDBw64xmG14ypdeLzT6XTqkUceueJ+msJxrY0r/b7Wx89KU7J27Vo99thjWrt2rdtUAtXJz8/XV199dc0d16okJye7xmG14ypdeLLp+PHjNfqfk6ZyXI0xmj59ujZt2qRPPvlEXbt2veI6TeZvbL3d6txErFu3zvj5+ZlVq1aZw4cPm5/+9KcmMDDQpKenG2OMmTx5svnlL3/par9r1y7j7e1tfvvb35ovv/zSzJ071/j4+JgDBw642ixcuNAEBgaa999/3/z3v/819913n+natas5f/78VR/fxTwd68KFC42vr6959913TVpamuuTl5dnjDEmLy/PPPPMMyYpKcmcOHHCfPzxx+a2224zN998sykqKmqUMVbwdKzz5s0zW7duNV999ZXZt2+fmThxovH39zeHDh1ytbHKca0wdOhQ89BDD1Uqb8rHNS8vz+zfv9/s37/fSDK/+93vzP79+83JkyeNMcb88pe/NJMnT3a1//rrr02LFi3M7NmzzZdffmmWLl1qmjVrZrZs2eJqc6XvX2PxdKxvv/228fb2NkuXLnX7fT137pyrzS9+8Quzfft2c+LECbNr1y4TGRlpbrjhBpOZmXnVx3cxT8e6ZMkS895775ljx46ZAwcOmKefftp4eXmZjz/+2NXGKse1wiOPPGIiIiKq3GZTPa6xsbEmICDAbN++3e1nsrCw0NWmqf6NtVzYMcaYP/7xj6ZTp07G19fX3HHHHWbPnj2uuuHDh5uYmBi39uvXrze33HKL8fX1Nb179zYffPCBW315ebn59a9/bYKDg42fn5+55557zNGjR6/GUK7Ik7F27tzZSKr0mTt3rjHGmMLCQjNq1CjTrl074+PjYzp37mx+8pOfNPo/JhU8GeuMGTNcbYODg83YsWPN559/7rY9qxxXY4w5cuSIkWS2bdtWaVtN+bhWPHJ86adifDExMWb48OGV1unfv7/x9fU13bp1MytXrqy03ct9/xqLp2MdPnz4Zdsbc+Gx+w4dOhhfX19z4403moceesgcP3786g6sCp6OddGiReamm24y/v7+JigoyIwYMcJ88sknlbZrheNqzIVHq5s3b27+/Oc/V7nNpnpcqxqnJLffwab6N9b2/QAAAAAsyVL37AAAAFyKsAMAACyNsAMAACyNsAMAACyNsAMAACyNsAMAACyNsAMAACyNsAMAACyNsAMAACyNsANAO3fu1Lhx4xQaGiqbzab33nuvRutt375dt912m/z8/NS9e3etWrXqiu1tNpvr07x5c/Xu3Vt//vOf3dpNmTJF48ePdytLTU3V1KlTFRoaKl9fX3Xu3FlPP/20srKy3NqNGDFCNptNCxcurLT/6Oho2Ww2vfjii5Xq1q5dq2bNmikuLq7Kvr/55pvq16+fWrVqpcDAQA0YMEDx8fGu+sLCQs2ZM0c33XST/P391a5dOw0fPlzvv//+Zb8nNbFx40aNGjVKbdu2lc1mU3Jycp23CVxPCDsAVFBQoH79+mnp0qU1XufEiROKjo7WXXfdpeTkZM2YMUOPP/64tm7desV1jx49qrS0NB0+fFg/+9nPFBsbW+nNyBf7+uuvNWjQIB07dkxr167V8ePHtWzZMtdbr7Ozs93ah4WFVQpe3333nRITE6t9c/Ty5cv17LPPau3atSoqKnKrW7FihWbMmKGf//znSk5O1q5du/Tss88qPz/f1eaJJ57Qxo0b9cc//lFHjhzRli1b9MADD1QKY7VRUFCgoUOHatGiRXXeFnBdqtc3bQG45kkymzZtumK7Z5991vTu3dut7KGHHjJRUVHVrlPx0sSzZ8+6ld90001m8eLFruWYmBhz3333uZZHjx5tOnbs6PZ2ZWOMSUtLMy1atDBPPPGEq2z48OEmNjbWtG3b1vzrX/9ylb/88stm3Lhxpl+/fq6X31b4+uuvTfPmzc25c+dMRESEefvtt93q77vvPjNlypRqx2WMMQEBAWbVqlWXbVNXJ06cMJLM/v37G3Q/gNVwZgdArSQlJSkyMtKtLCoqSklJSTXehjFGW7ZsUUpKiiIiIqpsk52dra1bt+rJJ59U8+bN3epCQkI0adIkvfPOOzIXvdPY19dXkyZN0sqVK11lq1at0tSpU6vcx8qVKxUdHa2AgAA98sgjWr58eaX97NmzRydPnqx2LCEhIfrwww+Vl5d3xXEDuLoIOwBqJT09XcHBwW5lwcHBys3N1fnz5y+7bseOHdWqVSv5+voqOjpac+fO1Z133lll22PHjskYo169elVZ36tXL509e1anT592K586darWr1+vgoIC7dy5Uzk5Obr33nsrrV9eXq5Vq1bpkUcekSRNnDhR//rXv3TixAlXm7lz5yowMFBdunRRjx49NGXKFK1fv17l5eWuNn/+85+1e/dutW3bVrfffrtmzpypXbt2Xfb7AODqIOwAuOr++c9/Kjk5WcnJyfrLX/6iV155RW+88cZl17n4zE1N9OvXTzfffLPeffddrVixQpMnT5a3t3eldgkJCSooKNDYsWMlSTfccINGjhypFStWuNp06NBBSUlJOnDggJ5++mmVlpYqJiZGo0ePdgWeO++8U19//bUSExP1wAMP6NChQxo2bJgWLFjgUb8B1D/CDoBaCQkJUUZGhltZRkaG7HZ7pctNl+ratau6d++u3r1767HHHtPkyZP18ssvV9m2e/fustls+vLLL6us//LLL9WmTRu1a9euUt3UqVO1dOlSvfvuu9Vewlq+fLmys7PVvHlzeXt7y9vbWx9++KFWr17tduZGkm699VY9+eST+tvf/qaEhAQlJCRox44drnofHx8NGzZMzz33nLZt26b58+drwYIFKi4uvuz3A0DDIuwAqBWHw1HpCaqEhAQ5HA6Pt9WsWbNqL321bdtWI0eO1Ouvv16pTXp6ut5++2099NBDstlsldb98Y9/rAMHDujWW29VeHh4pfqsrCy9//77WrdunetMU3Jysvbv36+zZ89q27Zt1fa5YnsFBQWXbVNaWlrp6S4AV1flc7oArjv5+fk6fvy4a/nEiRNKTk5WUFCQOnXqJEmaM2eOvvvuO/31r3+VdOFR69dee03PPvuspk6dqk8++UTr16/XBx98cMX9ZWZmqqioSE6nU5999pneeustPfDAA9W2f+211zRkyBBFRUXppZdeUteuXXXo0CHNnj1bN954Y7Vnhdq0aaO0tDT5+PhUWf/WW2+pbdu2evDBByuFpbFjx2r58uUaPXq0YmNjFRoaqrvvvlsdO3ZUWlqaXnrpJbVr184V7kaMGKGHH35YgwYNUtu2bXX48GH96le/0l133SW73X7F78nlZGdnKyUlRadOnZJ04dF96cLZtZCQkDptG7guNO7DYACagopHwi/9xMTEuNrExMSY4cOHV1qvf//+xtfX13Tr1s2sXLnSo/14e3ubrl27mmeeecbk5+e77eviR8+NMeabb74xMTExJjg42Pj4+JiwsDDz1FNPmTNnzri1Gz58uHn66aer7cPFj5736dPHPPnkk1W2e+edd4yvr685ffq0effdd83YsWNNhw4djK+vrwkNDTUTJkww//3vf13tX3nlFeNwOExQUJDx9/c33bp1Mz//+c8r9a82Vq5cWeXxufQRegBVsxnj4V1/AAAA1xDu2QEAAJbGPTsA0MD++c9/asyYMVXWnT9//rJPr138SgoAtcNlLABoYOfPn9d3331Xbd3lwk737t0bqlvAdYOwAwAALI17dgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKX9/x7qN1b72hnKAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] @@ -873,7 +694,7 @@ { "data": { "text/plain": [ - "228" + "234" ] }, "execution_count": 20, @@ -898,42 +719,42 @@ "name": "stdout", "output_type": "stream", "text": [ - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp84_tgn6y.lp\n" + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp_36irrhy.lp\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "INFO:gurobipy.gurobipy:Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp84_tgn6y.lp\n" + "INFO:gurobipy.gurobipy:Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp_36irrhy.lp\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Reading time = 0.03 seconds\n" + "Reading time = 0.02 seconds\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "INFO:gurobipy.gurobipy:Reading time = 0.03 seconds\n" + "INFO:gurobipy.gurobipy:Reading time = 0.02 seconds\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - ": 884 rows, 1936 columns, 7886 nonzeros\n" + ": 893 rows, 1998 columns, 8228 nonzeros\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "INFO:gurobipy.gurobipy:: 884 rows, 1936 columns, 7886 nonzeros\n" + "INFO:gurobipy.gurobipy:: 893 rows, 1998 columns, 8228 nonzeros\n" ] } ], @@ -974,14 +795,6 @@ " \n", " \n", " \n", - " co2_e\n", - " EX_co2_e\n", - " 72.03\n", - " [-21.58; 100]\n", - " 1\n", - " 82.67%\n", - " \n", - " \n", " cobalt2_e\n", " EX_cobalt2_e\n", " 1.023E-05\n", @@ -998,22 +811,6 @@ " 0.00%\n", " \n", " \n", - " h2o_e\n", - " EX_h2o_e\n", - " 29.33\n", - " [-60.01; 100]\n", - " 0\n", - " 0.00%\n", - " \n", - " \n", - " hco3_e\n", - " EX_hco3_e\n", - " 15.09\n", - " [-21.58; 100]\n", - " 1\n", - " 17.33%\n", - " \n", - " \n", " k_e\n", " EX_k_e\n", " 3.094E-06\n", @@ -1054,30 +851,14 @@ " 0.00%\n", " \n", " \n", - " photon670_e\n", - " EX_photon670_e\n", - " 346.2\n", - " [0; 1000]\n", - " 0\n", - " 0.00%\n", - " \n", - " \n", " photon690_e\n", " EX_photon690_e\n", - " 634.6\n", + " 146.1\n", " [0; 1000]\n", " 0\n", " 0.00%\n", " \n", " \n", - " pi_e\n", - " EX_pi_e\n", - " 0.8534\n", - " [0.7681; 0.8534]\n", - " 0\n", - " 0.00%\n", - " \n", - " \n", " so4_e\n", " EX_so4_e\n", " 0.3115\n", @@ -1085,14 +866,6 @@ " 0\n", " 0.00%\n", " \n", - " \n", - " amylose_c\n", - " SK_amylose_c\n", - " 1.027\n", - " [0.9247; 1.027]\n", - " 0\n", - " 0.00%\n", - " \n", " \n", "

Secretion

\n", " \n", @@ -1112,15 +885,15 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1128,7 +901,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1136,7 +909,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1144,13 +917,13 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1158,15 +931,15 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1174,22 +947,46 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1205,8 +1002,8 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1307,10 +1104,26 @@ " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1318,15 +1131,23 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1334,7 +1155,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1342,7 +1163,7 @@ "
-0.0002078[-0.0002078; -0.000187]526.10%0.00%
ac_cDM_ac_c0[-54.13; 0]-6.352[-914.3; 0]20.00%47.51%
amob_c-5.236E-05[-5.236E-05; -4.712E-05]1519.73%0.00%
co_c-0.002115[-0.002115; -0.001904]153.14%0.01%
dialurate_c-1.023E-05[-1.023E-05; -9.211E-06]41.03%0.00%
h2_cDM_h2_c0[-160; 0]-12.25[-971.2; 0]00.00%
lac__D_cDM_lac__D_c0[-36.09; 0][-721.8; 0]30.00%
pho_loss_cDM_pho_loss_c-17.31[-1000; -13.53]0[-1000; 0]00.00%
succ_cDM_succ_c0[-30.39; 0][-558.7; 0]40.00%
co2_eEX_co2_e-14.03[-350.6; 100]152.48%
h2o_eEX_h2o_e-13.36[-416.3; 100]00.00%
h_eEX_h_e-22[-1000; 100]0[-35.23; 100]0.00%
hco3_eEX_hco3_e0[-142.6; 100]10.00%
meoh_eEX_meoh_e0-5.236E-05[-5.236E-05; 0]10.00%
o2_eEX_o2_e-95.03[-228.1; -85.54]0[-244.8; 0]00.00%
0.00%
photon670_eEX_photon670_e0[0; 1000]00.00%
pi_eEX_pi_e0[0; 0.8534]00.00%
sucr_eEX_sucr_e-0.011[-9.033; -0.011][-502.4; -0.011]00.00%
akg_cSK_akg_c0[-23.18; 0][-558.7; 0]50.00%
amylose_cSK_amylose_c0[0; 1.027]00.00%
for_cSK_for_c0[-121.6; 0][-450.6; 0]10.00%
fum_cSK_fum_c0[-30.39; 0][-558.7; 0]40.00%
" ], "text/plain": [ - "" + "" ] }, "execution_count": 22, @@ -1380,7 +1201,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 24, "metadata": { "pycharm": { "name": "#%%\n" @@ -1393,7 +1214,7 @@ "2.0" ] }, - "execution_count": 29, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -1404,7 +1225,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 25, "metadata": { "pycharm": { "name": "#%%\n" @@ -1415,9 +1236,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "SUCR: h2o_c + sucr_c --> fru_c + glc__D_c\n", "SUCRt2: h_e + sucr_e <=> h_c + sucr_c\n", - "SPP: h2o_c + suc6p_c --> pi_c + sucr_c\n" + "SPP: h2o_c + suc6p_c --> pi_c + sucr_c\n", + "SUCR: h2o_c + sucr_c --> fru_c + glc__D_c\n" ] } ], @@ -1429,20 +1250,51 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "metadata": { "pycharm": { "name": "#%%\n" } }, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Metabolite identifiersuc6p_c
NameSucrose 6-phosphate
Memory address0x02345264e440
FormulaC12H21O14P
Compartmentc
In 2 reaction(s)\n", + " SPP, SPS
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "consistent_model.metabolites.suc6p_c" ] }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 27, "metadata": { "pycharm": { "name": "#%%\n" @@ -1453,8 +1305,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "SPS: f6p_c + udpg_c --> h_c + suc6p_c + udp_c\n", - "SPP: h2o_c + suc6p_c --> pi_c + sucr_c\n" + "SPP: h2o_c + suc6p_c --> pi_c + sucr_c\n", + "SPS: f6p_c + udpg_c --> h_c + suc6p_c + udp_c\n" ] } ], @@ -1473,13 +1325,13 @@ }, "outputs": [], "source": [ - "module_optknock = sd.SDModule(\n", - " consistent_model,\n", - " names.OPTKNOCK,\n", - " inner_objective='BIOMASS__1',\n", - " outer_objective='EX_sucr_e',\n", - " constraints=['EX_sucr_e >= 11.1', 'BIOMASS__1 >= 1.']\n", - ")" + "# module_optknock = sd.SDModule(\n", + "# consistent_model,\n", + "# names.OPTKNOCK,\n", + "# inner_objective='BIOMASS__1',\n", + "# outer_objective='EX_sucr_e',\n", + "# constraints=['EX_sucr_e >= 11.1', 'BIOMASS__1 >= 1.']\n", + "# )" ] }, { @@ -1535,18 +1387,18 @@ } ], "source": [ - "import logging\n", - "logging.basicConfig(level=logging.INFO)\n", + "# import logging\n", + "# logging.basicConfig(level=logging.INFO)\n", "\n", - "sols = sd.compute_strain_designs(\n", - " consistent_model,\n", - " sd_modules = module_optknock,\n", - " max_solutions = 3,\n", - " max_cost = 4,\n", - " solution_approach = 'best',\n", - " time_limit=300,\n", + "# sols = sd.compute_strain_designs(\n", + "# consistent_model,\n", + "# sd_modules = module_optknock,\n", + "# max_solutions = 3,\n", + "# max_cost = 4,\n", + "# solution_approach = 'best',\n", + "# time_limit=300,\n", "\n", - ")" + "# )" ] }, { @@ -1623,7 +1475,7 @@ } ], "source": [ - "sols.reaction_sd" + "#sols.reaction_sd" ] }, { @@ -1677,27 +1529,6 @@ "plt.show()" ] }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[{'ALAD_L': 1.0}, '=', 0.0], [{'VALTA': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'ALAD_L': 1.0}, '=', 0.0], [{'VALTA': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'ALAD_L': 1.0}, '=', 0.0], [{'VALTA': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0]]\n" - ] - } - ], - "source": [ - "print(interventions)" - ] - }, { "cell_type": "code", "execution_count": 47, @@ -1716,6 +1547,7 @@ } ], "source": [ + "print(interventions)\n", "rxns = set()\n", "for i in sols.reaction_sd:\n", " for j in i:\n", @@ -1725,7 +1557,7 @@ }, { "cell_type": "code", - "execution_count": 103, + "execution_count": 28, "metadata": { "pycharm": { "name": "#%%\n" @@ -1749,7 +1581,7 @@ " 'SFGTHi'}" ] }, - "execution_count": 103, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -1761,7 +1593,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 29, "metadata": { "pycharm": { "name": "#%%\n" @@ -1774,7 +1606,7 @@ }, { "cell_type": "code", - "execution_count": 148, + "execution_count": 32, "metadata": { "pycharm": { "name": "#%%\n" @@ -1785,18 +1617,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "1.0881347815856224\n", - "22.529422792735037\n", - "\n" + "1.0881347815856053\n", + "490.1227594944903\n", + "\n" ] } ], "source": [ - "# print(model.slim_optimize())\n", - "pfba_solution = cobra.flux_analysis.pfba(model, reactions=ex)\n", - "fluxes = pfba_solution.fluxes\n", - "# print(fluxes.loc[ex].sort_values())\n", - "with model:\n", + "with model as model:\n", " for i in rxn_to_remove:\n", " model.remove_reactions([model.reactions.get_by_id(i)])\n", " # model.remove_reactions([model.reactions.get_by_id('VALTA')])\n", @@ -1813,14 +1641,12 @@ " pfba_solution = cobra.flux_analysis.pfba(model)\n", " print(pfba_solution)\n", " fluxes = pfba_solution.fluxes\n", - " prices = pfba_solution.shadow_prices\n", - "builder.metabolite_data = pfba_solution.shadow_prices\n", - "builder.reaction_data = pfba_solution.fluxes" + " prices = pfba_solution.shadow_prices" ] }, { "cell_type": "code", - "execution_count": 83, + "execution_count": null, "metadata": { "pycharm": { "name": "#%%\n" @@ -1833,7 +1659,20 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 43, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "cobra.io.save_json_model( model, 'name_for_now.json',)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, "metadata": { "pycharm": { "name": "#%%\n" @@ -1847,7 +1686,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 35, "metadata": { "pycharm": { "name": "#%%\n" @@ -1860,7 +1699,7 @@ }, { "cell_type": "code", - "execution_count": 77, + "execution_count": 40, "metadata": { "pycharm": { "name": "#%%\n" @@ -1868,12 +1707,54 @@ }, "outputs": [], "source": [ - "builder.model = consistent_model" + "builder.model = model" ] }, { "cell_type": "code", - "execution_count": 90, + "execution_count": 44, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "builder.metabolite_data = pfba_solution.shadow_prices\n", + "builder.reaction_data = pfba_solution.fluxes" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "ec43269ff6914f1f8fbb812de4512787", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Builder(allow_building_duplicate_reactions=False, and_method_in_gene_reaction_rule='mean', cofactors=['atp', '…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "builder" + ] + }, + { + "cell_type": "code", + "execution_count": 58, "metadata": { "pycharm": { "name": "#%%\n" @@ -1890,7 +1771,7 @@ }, { "cell_type": "code", - "execution_count": 91, + "execution_count": 47, "metadata": { "pycharm": { "name": "#%%\n" @@ -1918,7 +1799,7 @@ }, { "cell_type": "code", - "execution_count": 92, + "execution_count": 45, "metadata": { "pycharm": { "name": "#%%\n" @@ -1931,7 +1812,7 @@ }, { "cell_type": "code", - "execution_count": 102, + "execution_count": 56, "metadata": { "pycharm": { "name": "#%%\n" @@ -1942,35 +1823,21 @@ "name": "stdout", "output_type": "stream", "text": [ - "Of 92 reactions 44 have a link\n", + "Of 98 reactions 75 have a link\n", "The following are only connected to other reactions by common intermediates\n", - "Aspartate kinase [ASPK]:: asp__L_c + atp_c --> 4pasp_c + adp_c\n", - "Adenylate kinase [ADK1]:: amp_c + atp_c <=> 2.0 adp_c\n", - "NAD transhydrogenase [NADTRHD]:: nad_c + nadph_c <=> nadh_c + nadp_c\n", - "Phosphoglycerate mutase [PGM]:: 2pg_c <=> 3pg_c\n", - "Acetate kinase [ACKr]:: ac_c + atp_c <=> actp_c + adp_c\n", + "Modeling: demand reaction (succ c) [DM_succ_c]:: succ_c --> \n", + "Nitrate exchange [EX_no3_e]:: no3_e <=> \n", "Nucleoside-diphosphate kinase (ATP:GDP) [NDPK1]:: atp_c + gdp_c <=> adp_c + gtp_c\n", - "L-alanine dehydrogenase [ALAD_L]:: ala__L_c + h2o_c + nad_c <=> h_c + nadh_c + nh4_c + pyr_c\n", - "Sedoheptulose 1,7-bisphosphate D-glyceraldehyde-3-phosphate-lyase [FBA3]:: s17bp_c <=> dhap_c + e4p_c\n", - "Nucleoside-diphosphate kinase (ATP:UDP) [NDPK2]:: atp_c + udp_c <=> adp_c + utp_c\n", + "Adenylate kinase [ADK1]:: amp_c + atp_c <=> 2.0 adp_c\n", "Polyphosphate kinase [PPK]:: atp_c + pi_c <=> adp_c + ppi_c\n", - "UTP-glucose-1-phosphate uridylyltransferase (irreversible) [GALUi]:: g1p_c + h_c + utp_c <=> ppi_c + udpg_c\n", + "Modeling: exchange reaction, photon absorption (680-700nm) [EX_photon690_e]:: photon690_e <=> \n", + "Modeling: exchange reaction, photon absorption (660nm-680nm) [EX_photon670_e]:: photon670_e <=> \n", + "H2O transport via diffusion (tilacoid) [H2Otu_syn]:: h2o_u <=> h2o_c\n", + "Modeling: exchange reaction, photon absorption (500nm-520nm) [EX_photon510_e]:: photon510_e <=> \n", + "Acetate kinase [ACKr]:: ac_c + atp_c <=> actp_c + adp_c\n", "Sucrose transport in via proton symport [SUCRt2]:: h_e + sucr_e <=> h_c + sucr_c\n", "Sedoheptulose-bisphosphatase [SBP]:: h2o_c + s17bp_c --> pi_c + s7p_c\n", - "Ferredoxin:NADPH oxidoreductase [FNOR_1]:: 2.0 fdxrd_c + h_c + nadp_c <=> 2.0 fdxox_c + nadph_c\n", - "Dihydroxy-acid dehydratase (2,3-dihydroxy-3-methylbutanoate) [DHAD1]:: 23dhmb_c --> 3mob_c + h2o_c\n", - "NAD(P)H dehydrogenase, carbon dioxide coupled (plastoquinone-8 & 4 protons)( Thylakoid) [NDH_1_4_um_copy1]:: co2_c + 2.0 fdxrd_c + h2o_c + 4.0 h_c + pq_um --> 2.0 fdxox_c + 3.0 h_u + hco3_c + pqh2_um\n", - "ATP synthase (thylakoid membrane) [ATPSum]:: 3.0 adp_c + 13.0 h_u + 3.0 pi_c <=> 3.0 atp_c + 3.0 h2o_c + 10.0 h_c\n", - "Triose-phosphate isomerase [TPI]:: dhap_c <=> g3p_c\n", - "Glutamine synthetase [GLNS]:: atp_c + glu__L_c + nh4_c --> adp_c + gln__L_c + h_c + pi_c\n", - "Catalase [CAT]:: 2.0 h2o2_c --> 2.0 h2o_c + o2_c\n", - "Glucose-1-phosphate adenylyltransferase [GLGC]:: atp_c + g1p_c + h_c --> adpglc_c + ppi_c\n", - "Ketol-acid reductoisomerase (2,3-dihydroxy-3-methylbutanoate) [KARA1]:: 23dhmb_c + nadp_c <-- alac__S_c + h_c + nadph_c\n", - "Ribose-5-phosphate isomerase [RPI]:: r5p_c <=> ru5p__D_c\n", - "Fructose-bisphosphate aldolase [FBA]:: fdp_c <=> dhap_c + g3p_c\n", - "Aspartate-semialdehyde dehydrogenase [ASAD]:: aspsa_c + nadp_c + pi_c <-- 4pasp_c + h_c + nadph_c\n", - "H2O transport via diffusion (tilacoid) [H2Otu_syn]:: h2o_u <=> h2o_c\n", - "Unconnected count = 26\n" + "Unconnected count = 12\n" ] } ], @@ -1988,7 +1855,7 @@ "# rxn_with_greater flux used to draw the map\n", "for rxn_name in flux:\n", " if flux[rxn_name] != 0 and rxn_name not in excluded_reactions:\n", - " rxn = consistent_model.reactions.get_by_id(rxn_name)\n", + " rxn = model.reactions.get_by_id(rxn_name)\n", " rxn_with_flux.add(rxn)\n", " if 0-threshold_flux > flux[rxn_name] or threshold_flux < flux[rxn_name]:\n", " rxn_with_greater_flux.add(rxn)\n", @@ -2001,7 +1868,7 @@ "# included_common_m will be used be treated as uncommon whatever their occurence\n", "included_common_m = ('accoa_c', 'pry_c', 'g3p_c', 'acald_c', 'f6p_c', 'pep_c')\n", "for met in met_count:\n", - " if met_count[met] > 3 and met.id not in included_common_m:\n", + " if met_count[met] > 25 and met.id not in included_common_m:\n", " common_mets.add(met)\n", "\n", "# Convert the sets to lists so that they can be iterated over\n", @@ -2021,7 +1888,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 53, "metadata": { "pycharm": { "name": "#%%\n" @@ -2034,7 +1901,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 54, "metadata": { "pycharm": { "name": "#%%\n" @@ -2058,7 +1925,7 @@ " 'SFGTHi'}" ] }, - "execution_count": 45, + "execution_count": 54, "metadata": {}, "output_type": "execute_result" } @@ -2069,7 +1936,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 51, "metadata": { "pycharm": { "name": "#%%\n" @@ -2079,7 +1946,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "7578b72c940a4daca54323af8888c1c3", + "model_id": "ec43269ff6914f1f8fbb812de4512787", "version_major": 2, "version_minor": 0 }, @@ -2094,6 +1961,13 @@ "source": [ "builder" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/syn_elong/syn_elong.xml b/syn_elong/syn_elong.xml index 7a1a7a7..29b2ea5 100644 --- a/syn_elong/syn_elong.xml +++ b/syn_elong/syn_elong.xml @@ -23664,6 +23664,179 @@ + + + +

original_bigg_ids: ['moadamp', 'moadamp_c']

+ +
+ + + + + + + + + + + +
+ + + +

original_bigg_ids: ['moadcoo', 'moadcoo_c']

+ +
+ + + + + + + + + + + +
+ + + +

original_bigg_ids: ['moco', 'moco_c']

+ +
+ + + + + + + + + + + + + +
+ + + +

original_bigg_ids: ['mptamp', 'mptamp_c']

+ +
+ + + + + + + + + + + + + + + + + + +
+ + + +

original_bigg_ids: ['mpt', 'mpt_c']

+ +
+ + + + + + + + + + + + + + + + + + + + + +
+ + + +

original_bigg_ids: ['cpmp', 'cpmp_c']

+ +
+ + + + + + + + + + + + + + +
+ + + +

original_bigg_ids: ['moadcosh', 'moadcosh_c']

+ +
+ + + + + + + + + + + +
+ + + +

original_bigg_ids: ['iscs', 'iscs_c']

+ +
+ + + + + + + + + + + +
+ + + +

original_bigg_ids: ['38ch2gtp', '38ch2gtp_c']

+ +
+
@@ -54749,6 +54922,280 @@ + + + +

original_bigg_ids: ['MPTSS']

+ +
+ + + + + + + + + + + + + + + + + + + + +
+ + + +

original_bigg_ids: ['MOCOS']

+ +
+ + + + + + + + + + + + + + + + + + + + + + +
+ + + +

original_bigg_ids: ['MPTAT']

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +

original_bigg_ids: ['MDH']

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +

original_bigg_ids: ['MPTS']

+ +
+ + + + + + + + + + + + + + + + + + + + + +
+ + + +

original_bigg_ids: ['CPMPS', 'MBP_1']

+ +
+ + + + + + + + + + + + + + + + + + + + +
+ + + +

original_bigg_ids: ['MOADSUx']

+ +
+ + + + + + + + + + + + + + + + + + + + + + +
+ + + +

original_bigg_ids: ['GTPC']

+ +
+ + + + + + + + + +
From 6247d6a425772210ee5533714c28af7a2748b7ba Mon Sep 17 00:00:00 2001 From: James Date: Tue, 16 Jan 2024 15:49:16 -0500 Subject: [PATCH 3/5] Adding gapfilling code and optknock removal of reactions to optimize sucrose (compress_model.ipynb) Updating model to not limit biomass (currently set at 2). --- .../data/media/min_media_all_wavelength.csv | 29 + syn_elong/model_changes.py | 3 + .../optimize_sucrose_via_optknock.ipynb | 1193 +++++++++-------- syn_elong/syn_elong.xml | 313 +++-- 4 files changed, 818 insertions(+), 720 deletions(-) create mode 100644 syn_elong/data/media/min_media_all_wavelength.csv diff --git a/syn_elong/data/media/min_media_all_wavelength.csv b/syn_elong/data/media/min_media_all_wavelength.csv new file mode 100644 index 0000000..e817340 --- /dev/null +++ b/syn_elong/data/media/min_media_all_wavelength.csv @@ -0,0 +1,29 @@ +exchange,uptake +EX_h2o_e,100 +EX_h_e,100 +EX_no3_e,100 +EX_pi_e,100 +EX_so4_e,100 +EX_nh4_e,100 +EX_mg2_e,100 +EX_fe3_e,100 +EX_cobalt2_e,100 +EX_k_e,100 +EX_na1_e,100 +EX_hco3_e,100 +EX_co2_e,100 +EX_photon430_e,1000.0 +EX_photon450_e,1000.0 +EX_photon470_e,1000.0 +EX_photon410_e,1000.0 +EX_photon490_e,1000.0 +EX_photon510_e,1000.0 +EX_photon530_e,1000.0 +EX_photon550_e,1000.0 +EX_photon570_e,1000.0 +EX_photon590_e,1000.0 +EX_photon610_e,1000.0 +EX_photon630_e,1000.0 +EX_photon650_e,1000.0 +EX_photon670_e,1000.0 +EX_photon690_e,1000.0 \ No newline at end of file diff --git a/syn_elong/model_changes.py b/syn_elong/model_changes.py index 96cd819..f62ede9 100644 --- a/syn_elong/model_changes.py +++ b/syn_elong/model_changes.py @@ -58,6 +58,9 @@ def update_2(model): model.reactions.SUCRt2.gene_reaction_rule = '( cscB )' + # upper bound of biomass shoul dnot be limited + model.reactions.BIOMASS__1.upper_bound = 1000 + return model diff --git a/syn_elong/notebooks/optimize_sucrose_via_optknock.ipynb b/syn_elong/notebooks/optimize_sucrose_via_optknock.ipynb index 4652334..93fad3e 100644 --- a/syn_elong/notebooks/optimize_sucrose_via_optknock.ipynb +++ b/syn_elong/notebooks/optimize_sucrose_via_optknock.ipynb @@ -23,7 +23,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 2, "metadata": { "pycharm": { "name": "#%%\n" @@ -37,203 +37,64 @@ }, { "cell_type": "code", - "execution_count": 6, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "from syn_elong import model\n", - "from syn_elong.media import m9_media" - ] - }, - { - "cell_type": "code", - "execution_count": 7, + "execution_count": 3, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Set parameter Username\n" + ] + }, { "name": "stderr", "output_type": "stream", "text": [ - "INFO:cobra.medium.boundary_types:Compartment `e` sounds like an external compartment. Using this one without counting boundary reactions.\n" + "INFO:gurobipy.gurobipy:Set parameter Username\n" ] }, { - "data": { - "text/plain": [ - "{'EX_hco3_e': 1.99,\n", - " 'EX_mn2_e': 0.0009,\n", - " 'EX_mg2_e': 0.03,\n", - " 'EX_ca2_e': 0.024,\n", - " 'EX_nh4_e': 0.0031,\n", - " 'EX_cu2_e': 3e-05,\n", - " 'EX_k_e': 0.046,\n", - " 'EX_h2o_e': 100.0,\n", - " 'EX_o2_e': 100.0,\n", - " 'EX_co2_e': 1.99,\n", - " 'EX_leu__L_e': 1000.0,\n", - " 'EX_cobalt2_e': 1.7e-05,\n", - " 'EX_no3_e': 1.76,\n", - " 'EX_zn2_e': 7.7e-05,\n", - " 'EX_fe3_e': 0.001,\n", - " 'EX_so4_e': 0.03,\n", - " 'EX_mobd_e': 0.00016,\n", - " 'EX_na1_e': 1.79854,\n", - " 'EX_h_e': 100.0,\n", - " 'EX_photon410_e': 1000.0,\n", - " 'EX_photon430_e': 1000.0,\n", - " 'EX_photon450_e': 1000.0,\n", - " 'EX_photon470_e': 1000.0,\n", - " 'EX_photon490_e': 1000.0,\n", - " 'EX_photon510_e': 1000.0,\n", - " 'EX_photon530_e': 1000.0,\n", - " 'EX_photon550_e': 1000.0,\n", - " 'EX_photon570_e': 1000.0,\n", - " 'EX_photon590_e': 1000.0,\n", - " 'EX_photon610_e': 1000.0,\n", - " 'EX_photon630_e': 1000.0,\n", - " 'EX_photon650_e': 1000.0,\n", - " 'EX_photon670_e': 1000.0,\n", - " 'EX_photon690_e': 1000.0,\n", - " 'EX_pi_e': 0.023,\n", - " 'EX_tre_e': 1000.0,\n", - " 'EX_man_e': 1000.0,\n", - " 'EX_galt_e': 1000.0,\n", - " 'EX_arab__L_e': 1000.0,\n", - " 'EX_acgam_e': 1000.0,\n", - " 'EX_glcr_e': 1000.0,\n", - " 'EX_succ_e': 1000.0,\n", - " 'EX_gal_e': 1000.0,\n", - " 'EX_asp__L_e': 1000.0,\n", - " 'EX_pro__L_e': 1000.0,\n", - " 'EX_ala__D_e': 1000.0,\n", - " 'EX_ser__D_e': 1000.0,\n", - " 'EX_for_e': 1000.0,\n", - " 'EX_mnl_e': 1000.0,\n", - " 'EX_glu__L_e': 1000.0,\n", - " 'EX_sbt__D_e': 1000.0,\n", - " 'EX_glyc_e': 1000.0,\n", - " 'EX_fuc__L_e': 1000.0,\n", - " 'EX_glcur_e': 1000.0,\n", - " 'EX_glcn_e': 1000.0,\n", - " 'EX_glyc3p_e': 1000.0,\n", - " 'EX_xyl__D_e': 1000.0,\n", - " 'EX_lac__L_e': 1000.0,\n", - " 'EX_g6p_e': 1000.0,\n", - " 'EX_malt_e': 1000.0,\n", - " 'EX_melib_e': 1000.0,\n", - " 'EX_thymd_e': 1000.0,\n", - " 'EX_galctn__D_e': 1000.0,\n", - " 'EX_rib__D_e': 1000.0,\n", - " 'EX_rmn_e': 1000.0,\n", - " 'EX_fru_e': 1000.0,\n", - " 'EX_ac_e': 1000.0,\n", - " 'EX_glc__D_e': 1000.0,\n", - " 'EX_asn__L_e': 1000.0,\n", - " 'EX_uri_e': 1000.0,\n", - " 'EX_12ppd__S_e': 1000.0,\n", - " 'EX_akg_e': 1000.0,\n", - " 'EX_lcts_e': 1000.0,\n", - " 'EX_malttr_e': 1000.0,\n", - " 'EX_dad_2_e': 1000.0,\n", - " 'EX_adn_e': 1000.0,\n", - " 'EX_g1p_e': 1000.0,\n", - " 'EX_f6p_e': 1000.0,\n", - " 'EX_ins_e': 1000.0,\n", - " 'EX_cit_e': 1000.0,\n", - " 'EX_inost_e': 1000.0,\n", - " 'EX_fum_e': 1000.0,\n", - " 'EX_ppa_e': 1000.0,\n", - " 'EX_galct__D_e': 1000.0,\n", - " 'EX_glyclt_e': 1000.0,\n", - " 'EX_mal__D_e': 1000.0,\n", - " 'EX_mal__L_e': 1000.0,\n", - " 'EX_ser__L_e': 1000.0,\n", - " 'EX_thr__L_e': 1000.0,\n", - " 'EX_ala__L_e': 1000.0,\n", - " 'EX_acac_e': 1000.0,\n", - " 'EX_acmana_e': 1000.0,\n", - " 'EX_galur_e': 1000.0,\n", - " 'EX_peamn_e': 1000.0,\n", - " 'EX_etha_e': 1000.0,\n", - " 'EX_tym_e': 1000.0,\n", - " 'EX_lyx__L_e': 1000.0,\n", - " 'EX_pyr_e': 1000.0,\n", - " 'EX_galctn__L_e': 1000.0,\n", - " 'EX_acnam_e': 1000.0,\n", - " 'EX_all__D_e': 1000.0,\n", - " 'EX_4abut_e': 1000.0,\n", - " 'EX_but_e': 1000.0,\n", - " 'EX_dca_e': 1000.0,\n", - " 'EX_5dglcn_e': 1000.0,\n", - " 'EX_hxa_e': 1000.0,\n", - " 'EX_tartr__L_e': 1000.0,\n", - " 'EX_lys__L_e': 1000.0,\n", - " 'EX_met__L_e': 1000.0,\n", - " 'EX_gly_e': 1000.0,\n", - " 'EX_his__L_e': 1000.0,\n", - " 'EX_hom__L_e': 1000.0,\n", - " 'EX_ile__L_e': 1000.0,\n", - " 'EX_orn_e': 1000.0,\n", - " 'EX_phe__L_e': 1000.0,\n", - " 'EX_val__L_e': 1000.0,\n", - " 'EX_dha_e': 1000.0,\n", - " 'EX_cys__L_e': 1000.0,\n", - " 'EX_no2_e': 1000.0,\n", - " 'EX_urea_e': 1000.0,\n", - " 'EX_trp__L_e': 1000.0,\n", - " 'EX_tyr__L_e': 1000.0,\n", - " 'EX_agm_e': 1000.0,\n", - " 'EX_acgal_e': 1000.0,\n", - " 'EX_gam_e': 1000.0,\n", - " 'EX_ura_e': 1000.0,\n", - " 'EX_ade_e': 1000.0,\n", - " 'EX_cytd_e': 1000.0,\n", - " 'EX_csn_e': 1000.0,\n", - " 'EX_gua_e': 1000.0,\n", - " 'EX_gsn_e': 1000.0,\n", - " 'EX_thym_e': 1000.0,\n", - " 'EX_xan_e': 1000.0,\n", - " 'EX_xtsn_e': 1000.0,\n", - " 'EX_alltn_e': 1000.0,\n", - " 'EX_23camp_e': 1000.0,\n", - " 'EX_3amp_e': 1000.0,\n", - " 'EX_gmp_e': 1000.0,\n", - " 'EX_23cgmp_e': 1000.0,\n", - " 'EX_3gmp_e': 1000.0,\n", - " 'EX_cmp_e': 1000.0,\n", - " 'EX_23ccmp_e': 1000.0,\n", - " 'EX_gam6p_e': 1000.0,\n", - " 'EX_3cmp_e': 1000.0,\n", - " 'EX_ump_e': 1000.0,\n", - " 'EX_23cump_e': 1000.0,\n", - " 'EX_man6p_e': 1000.0,\n", - " 'EX_pser__L_e': 1000.0,\n", - " 'EX_thrp_e': 1000.0,\n", - " 'EX_3ump_e': 1000.0,\n", - " 'EX_tyrp_e': 1000.0,\n", - " 'EX_minohp_e': 1000.0}" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "Set parameter GURO_PAR_SPECIAL\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:gurobipy.gurobipy:Set parameter GURO_PAR_SPECIAL\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Set parameter TokenServer to value \"leghorn\"\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:gurobipy.gurobipy:Set parameter TokenServer to value \"leghorn\"\n" + ] } ], "source": [ - "model.medium" + "from syn_elong import model\n", + "from syn_elong.media import m9_media" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 4, "metadata": { "pycharm": { "name": "#%%\n" @@ -244,7 +105,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "0.19263788778299723\n" + "0.05390186774577662\n" ] } ], @@ -255,7 +116,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 5, "metadata": { "pycharm": { "name": "#%%\n" @@ -273,7 +134,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "2.0\n" + "4.088280273582626\n" ] } ], @@ -285,7 +146,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 12, "metadata": { "pycharm": { "name": "#%%\n" @@ -303,23 +164,35 @@ "name": "stdout", "output_type": "stream", "text": [ - "Maximum possible BIOMASS__1 synthesis rate: 2.0.\n", - "Maximum possible EX_sucr_e synthesis rate: 502.3691291212896.\n" + "Maximum possible BIOMASS__1 synthesis rate: 4.088280273582666.\n", + "Maximum possible EX_sucr_e synthesis rate: 16.389121923937367.\n" ] } ], "source": [ "with model:\n", " model.medium = m9_media\n", - " sol = sd.fba(model, obj='BIOMASS__1', obj_sense='max')\n", + "# model.reactions.BIOMASS__1.upper_bound = 1000\n", + "# model.objective = 'BIOMASS__1'\n", + "# sol = model.optimize()\n", + " sol = sd.fba(model, obj='BIOMASS__1', obj_sense='max', pfba =False)\n", " print(f\"Maximum possible BIOMASS__1 synthesis rate: {sol.objective_value}.\")\n", - " sol = sd.fba(model, obj='EX_sucr_e', obj_sense='max')\n", - " print(f\"Maximum possible EX_sucr_e synthesis rate: {sol.objective_value}.\")" + "# x = sol.to_frame()\n", + "# display(x.sort_values(by='reduced_costs', ascending=True))\n", + "# print(x.loc['EX_sucr_e'])\n", + " sol = sd.fba(model, obj='EX_sucr_e', obj_sense='max', pfba =False)\n", + " print(f\"Maximum possible EX_sucr_e synthesis rate: {sol.objective_value}.\")\n", + "# model.objective = 'EX_sucr_e'\n", + "# sol = model.optimize()\n", + " \n", + "# x = sol.to_frame()\n", + "# display(x.sort_values(by='reduced_costs', ascending=True))\n", + "# print(x.loc['BIOMASS__1'])" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 28, "metadata": { "pycharm": { "name": "#%%\n" @@ -338,6 +211,25 @@ "model.medium = m9_media" ] }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:cobra.medium.boundary_types:Compartment `e` sounds like an external compartment. Using this one without counting boundary reactions.\n" + ] + } + ], + "source": [] + }, { "cell_type": "code", "execution_count": 12, @@ -364,7 +256,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 29, "metadata": { "pycharm": { "name": "#%%\n" @@ -381,7 +273,7 @@ { "data": { "text/html": [ - "

Objective

1.0 BIOMASS__1 = 2.0

Uptake

\n", + "

Objective

1.0 BIOMASS__1 = 4.088280273582626

Uptake

\n", " \n", " \n", " \n", @@ -393,65 +285,114 @@ " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -470,74 +411,53 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", @@ -548,10 +468,10 @@ "
Metabolite
co2_eEX_co2_e77.95143.80%
cobalt2_eEX_cobalt2_e1.023E-052.092E-0500.00%
fe3_eEX_fe3_e0.0032040.00654900.00%
h_eEX_h_e69.1300.00%
hco3_eEX_hco3_e100156.20%
k_eEX_k_e3.094E-066.325E-0600.00%
mg2_eEX_mg2_e0.022420.0458300.00%
na1_eEX_na1_e2.38E-074.865E-0700.00%
nh4_eEX_nh4_e16.1232.9500.00%
photon510_eEX_photon510_e13.4600.00%
photon650_eEX_photon650_e0.022420.0458300.00%
photon670_eEX_photon670_e100000.00%
photon690_eEX_photon690_e150100000.00%
pi_eEX_pi_e1.74400.00%
so4_eEX_so4_e0.31150.636700.00%
amylose_cSK_amylose_c2.100.00%
5drib_cDM_5drib_c-0.0002078-0.000424750.01%
ac_cDM_ac_c-3.246231.62%26.10%
amob_cDM_amob_c-5.236E-05-0.000107150.00%19.73%
co_cDM_co_c-0.002115-0.00432410.01%53.14%
dialurate_cDM_dialurate_c-1.023E-05-2.092E-0540.00%1.03%
h2_cDM_h2_c-12.25pho_loss_cDM_pho_loss_c-59.2100.00%
h2o_eEX_h2o_e-0.3663-9.31600.00%
h_eEX_h_e-32.93o2_eEX_o2_e-194.100.00%
hco3_eEX_hco3_e-14.03168.36%
meoh_eEX_meoh_e-5.236E-0510.00%
sucr_eEX_sucr_e-0.011
" ], "text/plain": [ - "" + "" ] }, - "execution_count": 13, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -562,7 +482,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 30, "metadata": { "pycharm": { "name": "#%%\n" @@ -576,7 +496,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 31, "metadata": { "pycharm": { "name": "#%%\n" @@ -589,7 +509,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 32, "metadata": { "pycharm": { "name": "#%%\n" @@ -603,7 +523,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 33, "metadata": { "pycharm": { "name": "#%%\n" @@ -613,24 +533,28 @@ { "data": { "text/plain": [ - "EX_h2o_e -34.182\n", - "EX_nh4_e -16.119\n", - "EX_hco3_e -13.543\n", - "EX_so4_e -0.311\n", - "EX_mg2_e -0.022\n", - "EX_photon650_e -0.022\n", - "EX_fe3_e -0.003\n", - "EX_cobalt2_e -0.000\n", - "EX_k_e -0.000\n", - "EX_na1_e -0.000\n", - "EX_meoh_e 0.000\n", - "EX_sucr_e 0.011\n", - "EX_co2_e 40.773\n", - "EX_h_e 121.651\n", + "EX_photon690_e -1000.000\n", + "EX_photon670_e -1000.000\n", + "EX_hco3_e -100.000\n", + "EX_co2_e -77.949\n", + "EX_h_e -69.129\n", + "EX_nh4_e -32.949\n", + "EX_photon470_e -13.457\n", + "EX_pi_e -1.744\n", + "EX_so4_e -0.637\n", + "EX_mg2_e -0.046\n", + "EX_photon650_e -0.046\n", + "EX_fe3_e -0.007\n", + "EX_cobalt2_e -0.000\n", + "EX_k_e -0.000\n", + "EX_na1_e -0.000\n", + "EX_sucr_e 0.011\n", + "EX_h2o_e 9.316\n", + "EX_o2_e 194.131\n", "Name: fluxes, dtype: float64" ] }, - "execution_count": 17, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -642,7 +566,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 34, "metadata": { "pycharm": { "name": "#%%\n" @@ -651,7 +575,7 @@ "outputs": [ { "data": { - "image/png": "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goODtWrVKk2cOFFffvmlwsPD9e9//1uDBg2SJG3ZskVjx47Vt99+q9DQ0BrtOzc3VwEBAQqbsV5efi0aZHwAAFyPjiwYLX+fZg2y7Yq/3zk5ObLb7dW2a7L37Jw4cULp6emKjIx0lQUEBCgiIkJJSUmSpKSkJAUGBrqCjiRFRkbKy8tLe/furXbbTqdTubm5bh8AAGBNTTbspKenS5KCg4PdyoODg1116enpat++vVu9t7e3goKCXG2qEh8fr4CAANcnLCysnnsPAACaiiYbdhrSnDlzlJOT4/qkpqY2dpcAAEADabJhJyQkRJKUkZHhVp6RkeGqCwkJUWZmplt9aWmpsrOzXW2q4ufnJ7vd7vYBAADW1GTDTteuXRUSEqLExERXWW5urvbu3SuHwyFJcjgcOnfunPbt2+dq88knn6i8vFwRERFXvc8AAKDp8W7Mnefn5+v48eOu5RMnTig5OVlBQUHq1KmTZsyYoZdeekk333yzunbtql//+tcKDQ11PbHVq1cvjR49Wj/5yU+0bNkylZSUaPr06Zo4cWKNn8QCAADW1qhh5z//+Y/uuusu1/KsWbMkSTExMVq1apWeffZZFRQU6Kc//anOnTunoUOHasuWLfL393et8/bbb2v69Om655575OXlpQkTJujVV1+96mMBAABNU5OZZ6cxMc8OAAANg3l2AAAAGhhhBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWJplws7SpUvVpUsX+fv7KyIiQp999lljdwkAADQB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YsQIff7555Lq59+7pujUqVP66KOPKv2+XgvHtby8XDNmzNCPfvQj3XrrrdW2ayp/Yy3xugh4buHChVq3bp22b9/uduPuxIkTXV/36dNHffv21U033aTt27frnnvuaYyu1orD4XB7EeyQIUPUq1cv/elPf9KCBQsasWcNa/ny5erTp4/uuOMOt3KrHNfr1Zo1azRv3jy9//77bvexjBkzxvV13759FRERoc6dO2v9+vWaNm1aY3S1Vnr06KEePXq4locMGaKvvvpKS5Ys0VtvvdWIPWtYq1evVmBgoMaPH+9Wfi0c17i4OB08eLBJ3EtUE5Y6s3PDDTeoWbNmysjIcCvPyMhQSEhIleuEhIRctn3Ffz3Z5tVQm7FW+O1vf6uFCxdq27Zt6tu372XbduvWTTfccIOOHz9e5z7XVl3GWsHHx0cDBgxwjcOKx7WgoEDr1q2r0T+GTeG41kZ1v692u13Nmzevl5+VpmbdunV6/PHHtX79+kqXAy4VGBioW2655Zo7rlW54447XOOw4nE1xmjFihWaPHmyfH19L9u2qR3X6dOna/Pmzfr000/VsWPHy7ZtKn9jLRV2fH19NXDgQCUmJrrKysvLlZiY6PZ/+RdzOBxu7SUpISHB1b5r164KCQlxa5Obm6u9e/dWu82roTZjlS7c9b5gwQJt2bJFgwYNuuJ+vv32W2VlZalDhw710u/aqO1YL1ZWVqYDBw64xmG14ypdeLzT6XTqkUceueJ+msJxrY0r/b7Wx89KU7J27Vo99thjWrt2rdtUAtXJz8/XV199dc0d16okJye7xmG14ypdeLLp+PHjNfqfk6ZyXI0xmj59ujZt2qRPPvlEXbt2veI6TeZvbL3d6txErFu3zvj5+ZlVq1aZw4cPm5/+9KcmMDDQpKenG2OMmTx5svnlL3/par9r1y7j7e1tfvvb35ovv/zSzJ071/j4+JgDBw642ixcuNAEBgaa999/3/z3v/819913n+natas5f/78VR/fxTwd68KFC42vr6959913TVpamuuTl5dnjDEmLy/PPPPMMyYpKcmcOHHCfPzxx+a2224zN998sykqKmqUMVbwdKzz5s0zW7duNV999ZXZt2+fmThxovH39zeHDh1ytbHKca0wdOhQ89BDD1Uqb8rHNS8vz+zfv9/s37/fSDK/+93vzP79+83JkyeNMcb88pe/NJMnT3a1//rrr02LFi3M7NmzzZdffmmWLl1qmjVrZrZs2eJqc6XvX2PxdKxvv/228fb2NkuXLnX7fT137pyrzS9+8Quzfft2c+LECbNr1y4TGRlpbrjhBpOZmXnVx3cxT8e6ZMkS895775ljx46ZAwcOmKefftp4eXmZjz/+2NXGKse1wiOPPGIiIiKq3GZTPa6xsbEmICDAbN++3e1nsrCw0NWmqf6NtVzYMcaYP/7xj6ZTp07G19fX3HHHHWbPnj2uuuHDh5uYmBi39uvXrze33HKL8fX1Nb179zYffPCBW315ebn59a9/bYKDg42fn5+55557zNGjR6/GUK7Ik7F27tzZSKr0mTt3rjHGmMLCQjNq1CjTrl074+PjYzp37mx+8pOfNPo/JhU8GeuMGTNcbYODg83YsWPN559/7rY9qxxXY4w5cuSIkWS2bdtWaVtN+bhWPHJ86adifDExMWb48OGV1unfv7/x9fU13bp1MytXrqy03ct9/xqLp2MdPnz4Zdsbc+Gx+w4dOhhfX19z4403moceesgcP3786g6sCp6OddGiReamm24y/v7+JigoyIwYMcJ88sknlbZrheNqzIVHq5s3b27+/Oc/V7nNpnpcqxqnJLffwab6N9b2/QAAAAAsyVL37AAAAFyKsAMAACyNsAMAACyNsAMAACyNsAMAACyNsAMAACyNsAMAACyNsAMAACyNsAMAACyNsANAO3fu1Lhx4xQaGiqbzab33nuvRutt375dt912m/z8/NS9e3etWrXqiu1tNpvr07x5c/Xu3Vt//vOf3dpNmTJF48ePdytLTU3V1KlTFRoaKl9fX3Xu3FlPP/20srKy3NqNGDFCNptNCxcurLT/6Oho2Ww2vfjii5Xq1q5dq2bNmikuLq7Kvr/55pvq16+fWrVqpcDAQA0YMEDx8fGu+sLCQs2ZM0c33XST/P391a5dOw0fPlzvv//+Zb8nNbFx40aNGjVKbdu2lc1mU3Jycp23CVxPCDsAVFBQoH79+mnp0qU1XufEiROKjo7WXXfdpeTkZM2YMUOPP/64tm7desV1jx49qrS0NB0+fFg/+9nPFBsbW+nNyBf7+uuvNWjQIB07dkxr167V8ePHtWzZMtdbr7Ozs93ah4WFVQpe3333nRITE6t9c/Ty5cv17LPPau3atSoqKnKrW7FihWbMmKGf//znSk5O1q5du/Tss88qPz/f1eaJJ57Qxo0b9cc//lFHjhzRli1b9MADD1QKY7VRUFCgoUOHatGiRXXeFnBdqtc3bQG45kkymzZtumK7Z5991vTu3dut7KGHHjJRUVHVrlPx0sSzZ8+6ld90001m8eLFruWYmBhz3333uZZHjx5tOnbs6PZ2ZWOMSUtLMy1atDBPPPGEq2z48OEmNjbWtG3b1vzrX/9ylb/88stm3Lhxpl+/fq6X31b4+uuvTfPmzc25c+dMRESEefvtt93q77vvPjNlypRqx2WMMQEBAWbVqlWXbVNXJ06cMJLM/v37G3Q/gNVwZgdArSQlJSkyMtKtLCoqSklJSTXehjFGW7ZsUUpKiiIiIqpsk52dra1bt+rJJ59U8+bN3epCQkI0adIkvfPOOzIXvdPY19dXkyZN0sqVK11lq1at0tSpU6vcx8qVKxUdHa2AgAA98sgjWr58eaX97NmzRydPnqx2LCEhIfrwww+Vl5d3xXEDuLoIOwBqJT09XcHBwW5lwcHBys3N1fnz5y+7bseOHdWqVSv5+voqOjpac+fO1Z133lll22PHjskYo169elVZ36tXL509e1anT592K586darWr1+vgoIC7dy5Uzk5Obr33nsrrV9eXq5Vq1bpkUcekSRNnDhR//rXv3TixAlXm7lz5yowMFBdunRRjx49NGXKFK1fv17l5eWuNn/+85+1e/dutW3bVrfffrtmzpypXbt2Xfb7AODqIOwAuOr++c9/Kjk5WcnJyfrLX/6iV155RW+88cZl17n4zE1N9OvXTzfffLPeffddrVixQpMnT5a3t3eldgkJCSooKNDYsWMlSTfccINGjhypFStWuNp06NBBSUlJOnDggJ5++mmVlpYqJiZGo0ePdgWeO++8U19//bUSExP1wAMP6NChQxo2bJgWLFjgUb8B1D/CDoBaCQkJUUZGhltZRkaG7HZ7pctNl+ratau6d++u3r1767HHHtPkyZP18ssvV9m2e/fustls+vLLL6us//LLL9WmTRu1a9euUt3UqVO1dOlSvfvuu9Vewlq+fLmys7PVvHlzeXt7y9vbWx9++KFWr17tduZGkm699VY9+eST+tvf/qaEhAQlJCRox44drnofHx8NGzZMzz33nLZt26b58+drwYIFKi4uvuz3A0DDIuwAqBWHw1HpCaqEhAQ5HA6Pt9WsWbNqL321bdtWI0eO1Ouvv16pTXp6ut5++2099NBDstlsldb98Y9/rAMHDujWW29VeHh4pfqsrCy9//77WrdunetMU3Jysvbv36+zZ89q27Zt1fa5YnsFBQWXbVNaWlrp6S4AV1flc7oArjv5+fk6fvy4a/nEiRNKTk5WUFCQOnXqJEmaM2eOvvvuO/31r3+VdOFR69dee03PPvuspk6dqk8++UTr16/XBx98cMX9ZWZmqqioSE6nU5999pneeustPfDAA9W2f+211zRkyBBFRUXppZdeUteuXXXo0CHNnj1bN954Y7Vnhdq0aaO0tDT5+PhUWf/WW2+pbdu2evDBByuFpbFjx2r58uUaPXq0YmNjFRoaqrvvvlsdO3ZUWlqaXnrpJbVr184V7kaMGKGHH35YgwYNUtu2bXX48GH96le/0l133SW73X7F78nlZGdnKyUlRadOnZJ04dF96cLZtZCQkDptG7guNO7DYACagopHwi/9xMTEuNrExMSY4cOHV1qvf//+xtfX13Tr1s2sXLnSo/14e3ubrl27mmeeecbk5+e77eviR8+NMeabb74xMTExJjg42Pj4+JiwsDDz1FNPmTNnzri1Gz58uHn66aer7cPFj5736dPHPPnkk1W2e+edd4yvr685ffq0effdd83YsWNNhw4djK+vrwkNDTUTJkww//3vf13tX3nlFeNwOExQUJDx9/c33bp1Mz//+c8r9a82Vq5cWeXxufQRegBVsxnj4V1/AAAA1xDu2QEAAJbGPTsA0MD++c9/asyYMVXWnT9//rJPr138SgoAtcNlLABoYOfPn9d3331Xbd3lwk737t0bqlvAdYOwAwAALI17dgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKX9/x7qN1b72hnKAAAAAElFTkSuQmCC\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -671,7 +595,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 35, "metadata": { "pycharm": { "name": "#%%\n" @@ -684,7 +608,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 36, "metadata": { "pycharm": { "name": "#%%\n" @@ -694,10 +618,10 @@ { "data": { "text/plain": [ - "234" + "235" ] }, - "execution_count": 20, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -708,7 +632,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 37, "metadata": { "pycharm": { "name": "#%%\n" @@ -719,52 +643,53 @@ "name": "stdout", "output_type": "stream", "text": [ - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp_36irrhy.lp\n" + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpm59iakji.lp\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "INFO:gurobipy.gurobipy:Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp_36irrhy.lp\n" + "INFO:gurobipy.gurobipy:Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpm59iakji.lp\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Reading time = 0.02 seconds\n" + "Reading time = 0.03 seconds\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "INFO:gurobipy.gurobipy:Reading time = 0.02 seconds\n" + "INFO:gurobipy.gurobipy:Reading time = 0.03 seconds\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - ": 893 rows, 1998 columns, 8228 nonzeros\n" + ": 893 rows, 1952 columns, 7974 nonzeros\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "INFO:gurobipy.gurobipy:: 893 rows, 1998 columns, 8228 nonzeros\n" + "INFO:gurobipy.gurobipy:: 893 rows, 1952 columns, 7974 nonzeros\n" ] } ], "source": [ - "consistent_model = cobra.flux_analysis.fastcc(model)" + "consistent_model = cobra.flux_analysis.fastcc(model)\n", + "cobra.io.write_sbml_model( consistent_model, 'condensed_syn.xml',)" ] }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 38, "metadata": { "pycharm": { "name": "#%%\n" @@ -782,7 +707,7 @@ { "data": { "text/html": [ - "

Objective

1.0 BIOMASS__1 = 2.0

Uptake

\n", + "

Objective

1.0 BIOMASS__1 = 4.088280273582649

Uptake

\n", " \n", " \n", " \n", @@ -795,57 +720,97 @@ " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -853,16 +818,32 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -882,48 +863,48 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -931,15 +912,15 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -947,47 +928,23 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -995,15 +952,15 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1032,14 +989,6 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", @@ -1104,26 +1053,10 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1131,23 +1064,15 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1155,7 +1080,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1163,10 +1088,10 @@ "
Metabolite
co2_eEX_co2_e77.95[60.17; 100]143.80%
cobalt2_eEX_cobalt2_e1.023E-05[9.211E-06; 1.023E-05]2.092E-05[1.883E-05; 2.076E-05]00.00%
fe3_eEX_fe3_e0.003204[0.002884; 0.003204]0.006549[0.005894; 0.006549]00.00%
h_eEX_h_e69.13[32.37; 100]00.00%
hco3_eEX_hco3_e100[60.17; 100]156.20%
k_eEX_k_e3.094E-06[2.785E-06; 3.094E-06]6.325E-06[5.692E-06; 6.325E-06]00.00%
mg2_eEX_mg2_e0.02242[0.02018; 0.02242]0.04583[0.04125; 0.04583]00.00%
na1_eEX_na1_e2.38E-07[2.142E-07; 2.38E-07]4.865E-07[4.379E-07; 4.865E-07]00.00%
nh4_eEX_nh4_e16.12[0; 16.12]32.95[15.11; 32.95]00.00%
photon470_eEX_photon470_e13.46[0; 1000]00.00%
photon650_eEX_photon650_e0.022420.04583[0; 1000]00.00%
photon670_eEX_photon670_e1000[0; 1000]00.00%
photon690_eEX_photon690_e146.11000[0; 1000]00.00%
pi_eEX_pi_e1.744[1.57; 1.744]00.00%
so4_eEX_so4_e0.3115[0.2803; 0.3115]0.6367[0.573; 0.6367]00.00%
amylose_cSK_amylose_c2.1[1.89; 2.1]00.00%
5drib_cDM_5drib_c-0.0002078[-0.0002078; -0.000187]-0.0004247[-0.0004247; -0.0003822]50.00%26.10%
ac_cDM_ac_c-6.352[-914.3; 0]0[-9.827; 0]247.51%0.00%
amob_cDM_amob_c-5.236E-05[-5.236E-05; -4.712E-05]-0.000107[-0.000107; -9.633E-05]150.00%19.73%
co_cDM_co_c-0.002115[-0.002115; -0.001904]-0.004324[-0.004324; -0.003891]10.01%53.14%
dialurate_cDM_dialurate_c-1.023E-05[-1.023E-05; -9.211E-06]-2.092E-05[-2.092E-05; -1.883E-05]40.00%1.03%
h2_cDM_h2_c-12.25[-971.2; 0]0[-59.46; 0]00.00%
lac__D_cDM_lac__D_c0[-721.8; 0][-6.551; 0]30.00%
pho_loss_cDM_pho_loss_c0[-1000; 0]-59.21[-1000; -39.94]00.00%
succ_cDM_succ_c0[-558.7; 0][-6.551; 0]40.00%
co2_eEX_co2_e-14.03[-350.6; 100]152.48%
h2o_eEX_h2o_e-13.36[-416.3; 100]00.00%
h_eEX_h_e-22[-1000; 100]00.00%
hco3_eEX_hco3_e-9.316[-18.38; 41.1]0[-142.6; 100]10.00%
meoh_eEX_meoh_e-5.236E-05[-5.236E-05; 0]0[-0.000107; 0]10.00%
no3_eEX_no3_e0[0; 16.12][0; 14.54]00.00%
o2_eEX_o2_e0[-244.8; 0]-194.1[-204.5; -174.7]00.00%
0.00%
photon470_eEX_photon470_e0[0; 1000]00.00%
photon490_eEX_photon490_e00.00%
photon670_eEX_photon670_e0[0; 1000]00.00%
pi_eEX_pi_e0[0; 0.8534]00.00%
sucr_eEX_sucr_e-0.011[-502.4; -0.011][-1.649; -0.011]00.00%
akg_cSK_akg_c0[-558.7; 0][-4.53; 0]50.00%
amylose_cSK_amylose_c0[0; 1.027]00.00%
for_cSK_for_c0[-450.6; 0][-23.43; 0]10.00%
fum_cSK_fum_c0[-558.7; 0][-6.551; 0]40.00%
" ], "text/plain": [ - "" + "" ] }, - "execution_count": 22, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } @@ -1177,7 +1102,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 39, "metadata": { "pycharm": { "name": "#%%\n" @@ -1187,10 +1112,10 @@ { "data": { "text/plain": [ - "2.0" + "4.088280273582658" ] }, - "execution_count": 23, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } @@ -1201,7 +1126,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 40, "metadata": { "pycharm": { "name": "#%%\n" @@ -1211,10 +1136,10 @@ { "data": { "text/plain": [ - "2.0" + "4.088280273582654" ] }, - "execution_count": 24, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -1225,7 +1150,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 41, "metadata": { "pycharm": { "name": "#%%\n" @@ -1236,8 +1161,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "SUCRt2: h_e + sucr_e <=> h_c + sucr_c\n", "SPP: h2o_c + suc6p_c --> pi_c + sucr_c\n", + "SUCRt2: h_e + sucr_e <=> h_c + sucr_c\n", "SUCR: h2o_c + sucr_c --> fru_c + glc__D_c\n" ] } @@ -1250,7 +1175,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 42, "metadata": { "pycharm": { "name": "#%%\n" @@ -1268,7 +1193,7 @@ " NameSucrose 6-phosphate\n", " \n", " Memory address\n", - " 0x02345264e440\n", + " 0x01babb3f1330\n", " \n", " FormulaC12H21O14P\n", " \n", @@ -1280,10 +1205,10 @@ " " ], "text/plain": [ - "" + "" ] }, - "execution_count": 26, + "execution_count": 42, "metadata": {}, "output_type": "execute_result" } @@ -1294,7 +1219,21 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "for rxn in consistent_model.metabolites.suc6p_c.reactions:\n", + " print(rxn)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, "metadata": { "pycharm": { "name": "#%%\n" @@ -1302,22 +1241,28 @@ }, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "SPP: h2o_c + suc6p_c --> pi_c + sucr_c\n", - "SPS: f6p_c + udpg_c --> h_c + suc6p_c + udp_c\n" - ] + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ - "for rxn in consistent_model.metabolites.suc6p_c.reactions:\n", - " print(rxn)" + "\n", + "datapoints, triang, plot1 = sd.plot_flux_space(\n", + " consistent_model,\n", + " ('BIOMASS__1','EX_sucr_e'),\n", + " show=False\n", + ");" ] }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 45, "metadata": { "pycharm": { "name": "#%%\n" @@ -1325,18 +1270,18 @@ }, "outputs": [], "source": [ - "# module_optknock = sd.SDModule(\n", - "# consistent_model,\n", - "# names.OPTKNOCK,\n", - "# inner_objective='BIOMASS__1',\n", - "# outer_objective='EX_sucr_e',\n", - "# constraints=['EX_sucr_e >= 11.1', 'BIOMASS__1 >= 1.']\n", - "# )" + "module_optknock = sd.SDModule(\n", + " consistent_model,\n", + " names.OPTKNOCK,\n", + " inner_objective='BIOMASS__1',\n", + " outer_objective='EX_sucr_e',\n", + " constraints=['EX_sucr_e >= 5', 'BIOMASS__1 >= 1.']\n", + ")" ] }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 49, "metadata": { "pycharm": { "name": "#%%\n" @@ -1350,60 +1295,163 @@ "INFO:root:Preparing strain design computation.\n", "INFO:root: Using gurobi for solving LPs during preprocessing.\n", "WARNING:root: Removing reaction bounds when larger than the cobra-threshold of 1000.\n", - "INFO:root: FVA to identify blocked reactions and irreversibilities.\n", - "INFO:root: FVA(s) to identify essential reactions.\n", - "INFO:root:Compressing Network (739 reactions).\n", - "INFO:root: Removing blocked reactions.\n", - "INFO:root: Translating stoichiometric coefficients to rationals.\n", - "INFO:root: Removing conservation relations.\n", - "INFO:root: Compression 1: Applying compression from EFM-tool module.\n", - "INFO:root: Reduced to 238 reactions.\n", - "INFO:root: Compression 2: Lumping parallel reactions.\n", - "INFO:root: Last step could not reduce size further (238 reactions).\n", - "INFO:root: Network compression completed. (1 compression iterations)\n", - "INFO:root: Translating stoichiometric coefficients back to float.\n", - "INFO:root: FVA(s) in compressed model to identify essential reactions.\n", - "INFO:root:Finished preprocessing:\n", - "INFO:root: Model size: 238 reactions, 137 metabolites\n", - "INFO:root: 165 targetable reactions\n", - "WARNING:root: Removing reaction bounds when larger than the cobra-threshold of 1000.\n", - "INFO:root:Constructing strain design MILP for solver: gurobi.\n", - "INFO:root: Bounding MILP.\n", - "INFO:root:Finding optimal strain designs ...\n", - "INFO:root:Found solution with objective value 12.722685307715523\n", - "INFO:root:Minimizing number of interventions in subspace with 4 possible targets.\n", - "INFO:root:Strain design with cost 4.0: {'GND*G6PDH2r*PGL': -1, 'PSP_L*PGCD*PSERT': -1, 'GART': -1, 'PDH': -1}\n", - "INFO:root:Found solution with objective value 12.694849747117823\n", - "INFO:root:Minimizing number of interventions in subspace with 4 possible targets.\n", - "INFO:root:Strain design with cost 4.0: {'GND*G6PDH2r*PGL': -1, 'PSP_L*PGCD*PSERT': -1, 'PDH': -1, 'FALGTHLs*FALDH2*ALCD1*SFGTHi': -1}\n", - "INFO:root:Found solution with objective value 12.694796303959036\n", - "INFO:root:Minimizing number of interventions in subspace with 4 possible targets.\n", - "INFO:root:Strain design with cost 3.0: {'GND*G6PDH2r*PGL': -1, 'PSP_L*PGCD*PSERT': -1, 'PDH': -1}\n", - "INFO:root:Finished solving strain design MILP. \n", - "INFO:root:3 solutions to MILP found.\n", - "INFO:root: Decompressing.\n", - "INFO:root:54 solutions found.\n" + "INFO:root: FVA to identify blocked reactions and irreversibilities.\n" + ] + }, + { + "ename": "Exception", + "evalue": "Status code 12 not yet handeld.", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mRemoteTraceback\u001b[0m Traceback (most recent call last)", + "\u001b[1;31mRemoteTraceback\u001b[0m: \n\"\"\"\nTraceback (most recent call last):\n File \"C:\\Users\\pino216\\Miniconda3\\envs\\whole-cell-gemm\\lib\\multiprocessing\\pool.py\", line 125, in worker\n result = (True, func(*args, **kwds))\n File \"C:\\Users\\pino216\\Miniconda3\\envs\\whole-cell-gemm\\lib\\multiprocessing\\pool.py\", line 48, in mapstar\n return list(map(*args))\n File \"C:\\Users\\pino216\\Miniconda3\\envs\\whole-cell-gemm\\lib\\site-packages\\straindesign\\lptools.py\", line 166, in fva_worker_compute\n min_cx = lp_glob.backend.slim_solve()\n File \"C:\\Users\\pino216\\Miniconda3\\envs\\whole-cell-gemm\\lib\\site-packages\\straindesign\\gurobi_interface.py\", line 218, in slim_solve\n raise Exception('Status code ' + str(status) + \" not yet handeld.\")\nException: Status code 12 not yet handeld.\n\"\"\"", + "\nThe above exception was the direct cause of the following exception:\n", + "\u001b[1;31mException\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn [49], line 4\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mlogging\u001b[39;00m\n\u001b[0;32m 2\u001b[0m logging\u001b[38;5;241m.\u001b[39mbasicConfig(level\u001b[38;5;241m=\u001b[39mlogging\u001b[38;5;241m.\u001b[39mINFO)\n\u001b[1;32m----> 4\u001b[0m sols \u001b[38;5;241m=\u001b[39m \u001b[43msd\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcompute_strain_designs\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 5\u001b[0m \u001b[43m \u001b[49m\u001b[43mconsistent_model\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 6\u001b[0m \u001b[43m \u001b[49m\u001b[43msd_modules\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mmodule_optknock\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 7\u001b[0m \u001b[43m \u001b[49m\u001b[43mmax_solutions\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 8\u001b[0m \u001b[43m \u001b[49m\u001b[43mmax_cost\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m3\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 9\u001b[0m \u001b[43m \u001b[49m\u001b[43msolution_approach\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mbest\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 10\u001b[0m \u001b[43m \u001b[49m\u001b[43mtime_limit\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m300\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 11\u001b[0m \n\u001b[0;32m 12\u001b[0m \u001b[43m)\u001b[49m\n", + "File \u001b[1;32m~\\Miniconda3\\envs\\whole-cell-gemm\\lib\\site-packages\\straindesign\\compute_strain_designs.py:286\u001b[0m, in \u001b[0;36mcompute_strain_designs\u001b[1;34m(model, **kwargs)\u001b[0m\n\u001b[0;32m 284\u001b[0m \u001b[38;5;66;03m# FVAs to identify blocked, irreversible and essential reactions, as well as non-bounding bounds\u001b[39;00m\n\u001b[0;32m 285\u001b[0m logging\u001b[38;5;241m.\u001b[39minfo(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m FVA to identify blocked reactions and irreversibilities.\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m--> 286\u001b[0m \u001b[43mbound_blocked_or_irrevers_fva\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msolver\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m[\u001b[49m\u001b[43mSOLVER\u001b[49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 287\u001b[0m logging\u001b[38;5;241m.\u001b[39minfo(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m FVA(s) to identify essential reactions.\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 288\u001b[0m essential_reacs \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mset\u001b[39m()\n", + "File \u001b[1;32m~\\Miniconda3\\envs\\whole-cell-gemm\\lib\\site-packages\\straindesign\\networktools.py:966\u001b[0m, in \u001b[0;36mbound_blocked_or_irrevers_fva\u001b[1;34m(model, solver)\u001b[0m\n\u001b[0;32m 959\u001b[0m \u001b[38;5;124;03m\"\"\"Use FVA to determine the flux ranges. Use this information to update the model bounds\u001b[39;00m\n\u001b[0;32m 960\u001b[0m \u001b[38;5;124;03m\u001b[39;00m\n\u001b[0;32m 961\u001b[0m \u001b[38;5;124;03mIf flux ranges for a reaction are narrower than its bounds in the mode, these bounds can be omitted, \u001b[39;00m\n\u001b[0;32m 962\u001b[0m \u001b[38;5;124;03msince other reactions must constrain the reaction flux. If (upper or lower) flux bounds are found to \u001b[39;00m\n\u001b[0;32m 963\u001b[0m \u001b[38;5;124;03mbe zero, the model bounds are updated to reduce the model complexity.\u001b[39;00m\n\u001b[0;32m 964\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 965\u001b[0m \u001b[38;5;66;03m# FVAs to identify blocked and irreversible reactions, as well as non-bounding bounds\u001b[39;00m\n\u001b[1;32m--> 966\u001b[0m flux_limits \u001b[38;5;241m=\u001b[39m \u001b[43mfva\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 967\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m select_solver(solver) \u001b[38;5;129;01min\u001b[39;00m [SCIP, GLPK]:\n\u001b[0;32m 968\u001b[0m tol \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1e-10\u001b[39m \u001b[38;5;66;03m# use tolerance for tightening problem bounds\u001b[39;00m\n", + "File \u001b[1;32m~\\Miniconda3\\envs\\whole-cell-gemm\\lib\\site-packages\\straindesign\\lptools.py:305\u001b[0m, in \u001b[0;36mfva\u001b[1;34m(model, **kwargs)\u001b[0m\n\u001b[0;32m 303\u001b[0m chunk_size \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlen\u001b[39m(reaction_ids) \u001b[38;5;241m/\u001b[39m\u001b[38;5;241m/\u001b[39m processes\n\u001b[0;32m 304\u001b[0m \u001b[38;5;66;03m# x = pool.imap_unordered(worker_compute, range(2*numr), chunksize=chunk_size)\u001b[39;00m\n\u001b[1;32m--> 305\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, value \u001b[38;5;129;01min\u001b[39;00m pool\u001b[38;5;241m.\u001b[39mimap_unordered(fva_worker_compute, \u001b[38;5;28mrange\u001b[39m(\u001b[38;5;241m2\u001b[39m \u001b[38;5;241m*\u001b[39m numr), chunksize\u001b[38;5;241m=\u001b[39mchunk_size):\n\u001b[0;32m 306\u001b[0m x[i] \u001b[38;5;241m=\u001b[39m value\n\u001b[0;32m 307\u001b[0m \u001b[38;5;66;03m# GLPK works better when reinitializing the LP in every iteration. Unfortunately, this is slow\u001b[39;00m\n\u001b[0;32m 308\u001b[0m \u001b[38;5;66;03m# but for now by far the most stable solution.\u001b[39;00m\n", + "File \u001b[1;32m~\\Miniconda3\\envs\\whole-cell-gemm\\lib\\multiprocessing\\pool.py:451\u001b[0m, in \u001b[0;36m\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m 443\u001b[0m result \u001b[38;5;241m=\u001b[39m IMapUnorderedIterator(\u001b[38;5;28mself\u001b[39m)\n\u001b[0;32m 444\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_taskqueue\u001b[38;5;241m.\u001b[39mput(\n\u001b[0;32m 445\u001b[0m (\n\u001b[0;32m 446\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_guarded_task_generation(result\u001b[38;5;241m.\u001b[39m_job,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 449\u001b[0m result\u001b[38;5;241m.\u001b[39m_set_length\n\u001b[0;32m 450\u001b[0m ))\n\u001b[1;32m--> 451\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m (item \u001b[38;5;28;01mfor\u001b[39;00m chunk \u001b[38;5;129;01min\u001b[39;00m result \u001b[38;5;28;01mfor\u001b[39;00m item \u001b[38;5;129;01min\u001b[39;00m chunk)\n", + "File \u001b[1;32m~\\Miniconda3\\envs\\whole-cell-gemm\\lib\\multiprocessing\\pool.py:873\u001b[0m, in \u001b[0;36mIMapIterator.next\u001b[1;34m(self, timeout)\u001b[0m\n\u001b[0;32m 871\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m success:\n\u001b[0;32m 872\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m value\n\u001b[1;32m--> 873\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m value\n", + "\u001b[1;31mException\u001b[0m: Status code 12 not yet handeld." ] } ], "source": [ - "# import logging\n", - "# logging.basicConfig(level=logging.INFO)\n", + "import logging\n", + "logging.basicConfig(level=logging.INFO)\n", "\n", - "# sols = sd.compute_strain_designs(\n", - "# consistent_model,\n", - "# sd_modules = module_optknock,\n", - "# max_solutions = 3,\n", - "# max_cost = 4,\n", - "# solution_approach = 'best',\n", - "# time_limit=300,\n", + "sols = sd.compute_strain_designs(\n", + " consistent_model,\n", + " sd_modules = module_optknock,\n", + " max_solutions = 1,\n", + " max_cost = 3,\n", + " solution_approach = 'best',\n", + " time_limit=300,\n", "\n", - "# )" + ")" ] }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 83, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "import networkx as nx" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "rxn_graph = nx.DiGraph()\n", + "for i in reaction_sd:\n", + " prev = None\n", + " for j in i:\n", + " if prev is not None:\n", + " rxn_graph.add_edge(prev, j)\n", + " prev = j\n", + " \n", + "# print(i)\n", + "nx.draw_networkx(rxn_graph, pos=nx.layout.kamada_kawai_layout(rxn_graph, rxn_graph.nodes))" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "nx.write_gml(rxn_graph, 'reaction_graph.gml')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "reaction_sd = [\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0},\n", + " {'GART': -1.0, 'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0},\n", + " {'GART': -1.0, 'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0},\n", + " {'GART': -1.0, 'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0},\n", + " {'GART': -1.0, 'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0},\n", + " {'GART': -1.0, 'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0},\n", + " {'GART': -1.0, 'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0},\n", + " {'GART': -1.0, 'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0},\n", + " {'GART': -1.0, 'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0},\n", + " {'GART': -1.0, 'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0, 'FALGTHLs': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0, 'FALDH2': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0, 'ALCD1': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0, 'SFGTHi': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0, 'FALGTHLs': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0, 'FALDH2': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0, 'ALCD1': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0, 'SFGTHi': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0, 'FALGTHLs': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0, 'FALDH2': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0, 'ALCD1': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0, 'SFGTHi': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0, 'FALGTHLs': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0, 'FALDH2': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0, 'ALCD1': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0, 'SFGTHi': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0, 'FALGTHLs': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0, 'FALDH2': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0, 'ALCD1': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0, 'SFGTHi': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0, 'FALGTHLs': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0, 'FALDH2': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0, 'ALCD1': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0, 'SFGTHi': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0, 'FALGTHLs': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0, 'FALDH2': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0, 'ALCD1': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0, 'SFGTHi': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0, 'FALGTHLs': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0, 'FALDH2': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0, 'ALCD1': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0, 'SFGTHi': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0, 'FALGTHLs': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0, 'FALDH2': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0, 'ALCD1': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0, 'SFGTHi': -1.0}\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 142, "metadata": { "pycharm": { "name": "#%%\n" @@ -1413,74 +1461,21 @@ { "data": { "text/plain": [ - "[{'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0},\n", - " {'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0},\n", - " {'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0},\n", - " {'GART': -1.0, 'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0},\n", - " {'GART': -1.0, 'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0},\n", - " {'GART': -1.0, 'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0},\n", - " {'GART': -1.0, 'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0},\n", - " {'GART': -1.0, 'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0},\n", - " {'GART': -1.0, 'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0},\n", - " {'GART': -1.0, 'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0},\n", - " {'GART': -1.0, 'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0},\n", - " {'GART': -1.0, 'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0},\n", - " {'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0, 'FALGTHLs': -1.0},\n", - " {'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0, 'FALDH2': -1.0},\n", - " {'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0, 'ALCD1': -1.0},\n", - " {'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0, 'SFGTHi': -1.0},\n", - " {'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0, 'FALGTHLs': -1.0},\n", - " {'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0, 'FALDH2': -1.0},\n", - " {'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0, 'ALCD1': -1.0},\n", - " {'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0, 'SFGTHi': -1.0},\n", - " {'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0, 'FALGTHLs': -1.0},\n", - " {'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0, 'FALDH2': -1.0},\n", - " {'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0, 'ALCD1': -1.0},\n", - " {'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0, 'SFGTHi': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0, 'FALGTHLs': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0, 'FALDH2': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0, 'ALCD1': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0, 'SFGTHi': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0, 'FALGTHLs': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0, 'FALDH2': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0, 'ALCD1': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0, 'SFGTHi': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0, 'FALGTHLs': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0, 'FALDH2': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0, 'ALCD1': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0, 'SFGTHi': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0, 'FALGTHLs': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0, 'FALDH2': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0, 'ALCD1': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0, 'SFGTHi': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0, 'FALGTHLs': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0, 'FALDH2': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0, 'ALCD1': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0, 'SFGTHi': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0, 'FALGTHLs': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0, 'FALDH2': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0, 'ALCD1': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0, 'SFGTHi': -1.0}]" + "{'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0}" ] }, - "execution_count": 38, + "execution_count": 142, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "#sols.reaction_sd" + "reaction_sd[0]" ] }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 143, "metadata": { "pycharm": { "name": "#%%\n" @@ -1489,7 +1484,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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AAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAszdSws379ek2ePFlxcXGy2Wx6++2367UbhqH7779fsbGxCggI0Pjx47Vnz556fY4cOaIbbrhBLpdLYWFhmjVrlsrKyi7gpwAAAC2ZqWGnvLxc/fv31+LFi0/ZvmjRIj311FNasmSJNm3apKCgICUnJ6uystLT54YbbtCOHTuUkZGhlStXav369brlllsu1EcAAAAtnK+ZO584caImTpx4yjbDMPTkk0/qvvvu09VXXy1J+vvf/67o6Gi9/fbbuu666/TNN99o9erV+uKLLzRkyBBJ0tNPP61Jkybpf/7nfxQXF3fBPgsAAGiZWuycnQMHDigvL0/jx4/3rAsNDdXQoUOVmZkpScrMzFRYWJgn6EjS+PHj5ePjo02bNp122263WyUlJfVeAADAmlps2MnLy5MkRUdH11sfHR3tacvLy1NUVFS9dl9fX4WHh3v6nEp6erpCQ0M9r/j4eC9XDwAAWooWG3aa04IFC1RcXOx55eTkmF0SAABoJi027MTExEiS8vPz663Pz8/3tMXExKigoKBee01NjY4cOeLpcypOp1Mul6veCwAAWFOLDTudOnVSTEyM1q5d61lXUlKiTZs2KSkpSZKUlJSkoqIiZWVlefp8+OGHqqur09ChQy94zQAAoOUx9WqssrIy7d2717N84MABbdmyReHh4UpISNCdd96phx9+WN26dVOnTp30+9//XnFxcbrmmmskSb169dKVV16pm2++WUuWLFF1dbXmzJmj6667jiuxAACAJJPDzpdffqmxY8d6lufNmydJSk1N1bJly3T33XervLxct9xyi4qKijRixAitXr1a/v7+nve8/PLLmjNnjsaNGycfHx9NnTpVTz311AX/LAAAoGWyGYZhmF2E2UpKShQaGqpiSd6avVMQG6j0Z0Z6aWsAAFycpg24XcM7pzTLtj1/v4uLzzj/tsXO2QEAAPAGwg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0y4SdxYsXq2PHjvL399fQoUP1+eefm10SAABoASwRdl577TXNmzdPCxcu1FdffaX+/fsrOTlZBQUFZpcGAABMZomw86c//Uk333yzbrrpJiUmJmrJkiUKDAzUCy+8YHZpAADAZL5mF3C+qqqqlJWVpQULFnjW+fj4aPz48crMzDzle9xut9xut2e5uLhYkvRjmFMlNptX6qqWj5x1Lq9sCwCAi1F1rVvVFbUqKSlplu2f3K5hGGfsd9GHncOHD6u2tlbR0dH11kdHR2vXrl2nfE96eroefPDBBusTi9yn6H0e/muFd7cHAMBF5k/6V7Pvo7S0VKGhoadtv+jDzrlYsGCB5s2b51kuKipShw4dlJ2dfcaDBe8rKSlRfHy8cnJy5HIxEnYhcezNw7E3D8feXN4+/oZhqLS0VHFxcWfsd9GHnbZt28putys/P7/e+vz8fMXExJzyPU6nU06ns8H60NBQvvwmcblcHHuTcOzNw7E3D8feXN48/o0ZpLjoJyg7HA4NHjxYa9eu9ayrq6vT2rVrlZSUZGJlAACgJbjoR3Ykad68eUpNTdWQIUN06aWX6sknn1R5ebluuukms0sDAAAms0TYufbaa3Xo0CHdf//9ysvL04ABA7R69eoGk5ZPx+l0auHChac8tYXmxbE3D8fePBx783DszWXW8bcZZ7teCwAA4CJ20c/ZAQAAOBPCDgAAsDTCDgAAsDTCDgAAsLRWH3YWL16sjh07yt/fX0OHDtXnn39udkmtwgMPPCCbzVbv1bNnT7PLsqT169dr8uTJiouLk81m09tvv12v3TAM3X///YqNjVVAQIDGjx+vPXv2mFOsxZzt2M+YMaPB78GVV15pTrEWk56erksuuUQhISGKiorSNddco927d9frU1lZqbS0NEVERCg4OFhTp05tcINaNF1jjv2YMWMafPdvvfXWZqupVYed1157TfPmzdPChQv11VdfqX///kpOTlZBQYHZpbUKvXv3Vm5uruf16aefml2SJZWXl6t///5avHjxKdsXLVqkp556SkuWLNGmTZsUFBSk5ORkVVZWXuBKredsx16Srrzyynq/B6+88soFrNC61q1bp7S0NG3cuFEZGRmqrq7WhAkTVF5e7ukzd+5c/fvf/9aKFSu0bt06HTx4UFOmTDGxamtozLGXpJtvvrned3/RokXNV5TRil166aVGWlqaZ7m2ttaIi4sz0tPTTayqdVi4cKHRv39/s8todSQZb731lme5rq7OiImJMf74xz961hUVFRlOp9N45ZVXTKjQun5+7A3DMFJTU42rr77alHpam4KCAkOSsW7dOsMwjn/P/fz8jBUrVnj6fPPNN4YkIzMz06wyLennx94wDGP06NHGHXfcccFqaLUjO1VVVcrKytL48eM963x8fDR+/HhlZmaaWFnrsWfPHsXFxalz58664YYblJ2dbXZJrc6BAweUl5dX7/cgNDRUQ4cO5ffgAvn4448VFRWlHj16aPbs2SosLDS7JEsqLi6WJIWHh0uSsrKyVF1dXe+737NnTyUkJPDd97KfH/uTXn75ZbVt21Z9+vTRggULdOzYsWarwRJ3UD4Xhw8fVm1tbYO7LEdHR2vXrl0mVdV6DB06VMuWLVOPHj2Um5urBx98UCNHjtT27dsVEhJidnmtRl5eniSd8vfgZBuaz5VXXqkpU6aoU6dO2rdvn+69915NnDhRmZmZstvtZpdnGXV1dbrzzjs1fPhw9enTR9Lx777D4VBYWFi9vnz3vetUx16Sfv3rX6tDhw6Ki4vT119/rXvuuUe7d+/Wm2++2Sx1tNqwA3NNnDjR83O/fv00dOhQdejQQa+//rpmzZplYmXAhXPdddd5fu7bt6/69eunLl266OOPP9a4ceNMrMxa0tLStH37duYFmuB0x/6WW27x/Ny3b1/FxsZq3Lhx2rdvn7p06eL1Olrtaay2bdvKbrc3mHmfn5+vmJgYk6pqvcLCwtS9e3ft3bvX7FJalZPfdX4PWobOnTurbdu2/B540Zw5c7Ry5Up99NFHat++vWd9TEyMqqqqVFRUVK8/333vOd2xP5WhQ4dKUrN991tt2HE4HBo8eLDWrl3rWVdXV6e1a9cqKSnJxMpap7KyMu3bt0+xsbFml9KqdOrUSTExMfV+D0pKSrRp0yZ+D0zwww8/qLCwkN8DLzAMQ3PmzNFbb72lDz/8UJ06darXPnjwYPn5+dX77u/evVvZ2dl898/T2Y79qWzZskWSmu2736pPY82bN0+pqakaMmSILr30Uj355JMqLy/XTTfdZHZplnfXXXdp8uTJ6tChgw4ePKiFCxfKbrfr+uuvN7s0yykrK6v3/5YOHDigLVu2KDw8XAkJCbrzzjv18MMPq1u3burUqZN+//vfKy4uTtdcc415RVvEmY59eHi4HnzwQU2dOlUxMTHat2+f7r77bnXt2lXJyckmVm0NaWlpWr58ud555x2FhIR45uGEhoYqICBAoaGhmjVrlubNm6fw8HC5XC7dfvvtSkpK0rBhw0yu/uJ2tmO/b98+LV++XJMmTVJERIS+/vprzZ07V6NGjVK/fv2ap6gLdt1XC/X0008bCQkJhsPhMC699FJj48aNZpfUKlx77bVGbGys4XA4jHbt2hnXXnutsXfvXrPLsqSPPvrIkNTglZqaahjG8cvPf//73xvR0dGG0+k0xo0bZ+zevdvcoi3iTMf+2LFjxoQJE4zIyEjDz8/P6NChg3HzzTcbeXl5ZpdtCac67pKMpUuXevpUVFQYt912m9GmTRsjMDDQ+OUvf2nk5uaaV7RFnO3YZ2dnG6NGjTLCw8MNp9NpdO3a1Zg/f75RXFzcbDXZThQGAABgSa12zg4AAGgdCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAtH79ek2ePFlxcXGy2Wx6++23G/W+jz/+WIMGDZLT6VTXrl21bNmys/a32WyeV0BAgHr37q2//OUv9frNmDGjwbO5cnJyNHPmTMXFxcnhcKhDhw664447VFhYWK/fmDFjZLPZ9NhjjzXYf0pKimw2mx544IEGba+88orsdrvS0tJOWftf//pX9e/fX8HBwQoLC9PAgQOVnp7uaT927JgWLFigLl26yN/fX5GRkRo9erTeeeedMx6TxnjzzTc1YcIERUREyGazeR6aCKBxCDsAVF5erv79+2vx4sWNfs+BAweUkpKisWPHasuWLbrzzjv13//931qzZs1Z37t7927l5uZq586d+u1vf6vZs2fXe/r0z+3fv19DhgzRnj179Morr2jv3r1asmSJ1q5dq6SkJB05cqRe//j4+AbB68cff9TatWtP+1Tl559/XnfffbdeeeUVVVZW1mt74YUXdOedd+p3v/udtmzZos8++0x33323ysrKPH1uvfVWvfnmm3r66ae1a9curV69WtOmTWsQxs5FeXm5RowYoccff/y8twW0Ss321C0AFyVJxltvvXXWfnfffbfRu3fveuuuvfZaIzk5+bTvOflgzKNHj9Zb36VLF2PRokWe5dTUVOPqq6/2LF955ZVG+/btjWPHjtV7X25urhEYGGjceuutnnWjR482Zs+ebURERBiffvqpZ/0jjzxiTJ482ejfv7+xcOHCetvZv3+/ERAQYBQVFRlDhw41Xn755XrtV199tTFjxozTfi7DMIzQ0FBj2bJlZ+xzvg4cOGBIMjZv3tys+wGshpEdAOckMzNT48ePr7cuOTlZmZmZjd6GYRhavXq1srOzNXTo0FP2OXLkiNasWaPbbrtNAQEB9dpiYmJ0ww036LXXXpPxk2caOxwO3XDDDVq6dKln3bJlyzRz5sxT7mPp0qVKSUlRaGiofvOb3+j5559vsJ+NGzfq+++/P+1niYmJ0XvvvafS0tKzfm4AFxZhB8A5ycvLU3R0dL110dHRKikpUUVFxRnf2759ewUHB8vhcCglJUULFy7UqFGjTtl3z549MgxDvXr1OmV7r169dPToUR06dKje+pkzZ+r1119XeXm51q9fr+LiYl111VUN3l9XV6dly5bpN7/5jSTpuuuu06effqoDBw54+ixcuFBhYWHq2LGjevTooRkzZuj1119XXV2dp89f/vIXbdiwQREREbrkkks0d+5cffbZZ2c8DgAuDMIOgAvuk08+0ZYtW7Rlyxb97W9/06OPPqrnnnvujO/56chNY/Tv31/dunXTG2+8oRdeeEHTp0+Xr69vg34ZGRkqLy/XpEmTJElt27bVFVdcoRdeeMHTJzY2VpmZmdq2bZvuuOMO1dTUKDU1VVdeeaUn8IwaNUr79+/X2rVrNW3aNO3YsUMjR47UH/7whybVDcD7CDsAzklMTIzy8/PrrcvPz5fL5WpwuunnOnXqpK5du6p379666aabNH36dD3yyCOn7Nu1a1fZbDZ98803p2z/5ptv1KZNG0VGRjZomzlzphYvXqw33njjtKewnn/+eR05ckQBAQHy9fWVr6+v3nvvPb344ov1Rm4kqU+fPrrtttv0j3/8QxkZGcrIyNC6des87X5+fho5cqTuuecevf/++3rooYf0hz/8QVVVVWc8HgCaF2EHwDlJSkpqcAVVRkaGkpKSmrwtu91+2lNfERERuuKKK/Tss8826JOXl6eXX35Z1157rWw2W4P3/vrXv9a2bdvUp08fJSYmNmgvLCzUO++8o1dffdUz0rRlyxZt3rxZR48e1fvvv3/amk9ur7y8/Ix9ampqGlzdBeDCajimC6DVKSsr0969ez3LBw4c0JYtWxQeHq6EhARJ0oIFC/Tjjz/q73//u6Tjl1o/88wzuvvuuzVz5kx9+OGHev311/Xuu++edX8FBQWqrKyU2+3W559/rpdeeknTpk07bf9nnnlGl112mZKTk/Xwww+rU6dO2rFjh+bPn6927dqddlSoTZs2ys3NlZ+f3ynbX3rpJUVEROhXv/pVg7A0adIkPf/887ryyis1e/ZsxcXF6fLLL1f79u2Vm5urhx9+WJGRkZ5wN2bMGF1//fUaMmSIIiIitHPnTt17770aO3asXC7XWY/JmRw5ckTZ2dk6ePCgpOOX7kvHR9diYmLOa9tAq2DuxWAAWoKTl4T//JWamurpk5qaaowePbrB+wYMGGA4HA6jc+fOxtKlS5u0H19fX6NTp07GXXfdZZSVldXb108vPTcMw/juu++M1NRUIzo62vDz8zPi4+ON22+/3Th8+HC9fqNHjzbuuOOO09bw00vP+/bta9x2222n7Pfaa68ZDofDOHTokPHGG28YkyZNMmJjYw2Hw2HExcUZU6dONb7++mtP/0cffdRISkoywsPDDX9/f6Nz587G7373uwb1nYulS5ee8n+fn19CD+DUbIbRxFl/AAAAFxHm7AAAAEtjzg4ANLNPPvlEEydOPGVbRUXFGa9e++kjKQCcG05jAUAzq6io0I8//njatjOFna5duzZXWUCrQdgBAACWxpwdAABgaYQdAABgaYQdAABgaYQdAABgaYQdAABgaYQdAABgaYQdAABgaf8fi8/1rfmWmCQAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] @@ -1499,7 +1494,7 @@ } ], "source": [ - "\n", + "consistent_model.reactions.BIOMASS__1.upper_bound = 10000\n", "datapoints, triang, plot1 = sd.plot_flux_space(\n", " consistent_model,\n", " ('BIOMASS__1', 'EX_sucr_e'),\n", @@ -1510,15 +1505,14 @@ "plot1.set_edgecolor('#70AD47')\n", "\n", "# OptKnock design plot\n", - "# interventions = [[{s:1.0},'=',0.0] for rxn in sols.reaction_sd for s,v in rxn.items() if v < 1]\n", - "interventions = [[{s:1.0},'=',0.0] for s,v in sols.reaction_sd[0].items() if v < 1]\n", + "# interventions = [[{s:1.0},'=',0.0] for rxn in reaction_sd for s,v in rxn.items() if v < 1]\n", + "interventions = [[{s:1.0},'=', 0.0] for s,v in reaction_sd[2].items() if v < 1]\n", "_, _,plot3 = sd.plot_flux_space(\n", " consistent_model,\n", - " ('BIOMASS__1','EX_sucr_e'),\n", + " ('BIOMASS__1', 'EX_sucr_e'),\n", " # The sign of the glucose exchange reaction is flipped since\n", " # reaction is defined in the direction of secretion.\n", " constraints=interventions,\n", - " # constraints='EX_sucr_e >= 15.5',\n", " show=False\n", ");\n", "plot3.set_facecolor('red')\n", @@ -1531,7 +1525,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 110, "metadata": { "pycharm": { "name": "#%%\n" @@ -1542,22 +1536,41 @@ "name": "stdout", "output_type": "stream", "text": [ - "{'PSERT', 'ALCD1', 'PGL', 'SFGTHi', 'G6PDH2r', 'FALDH2', 'PSP_L', 'GART', 'PGCD', 'GND', 'FALGTHLs', 'PDH'}\n" + "[[{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'GART': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'GART': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'GART': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'GART': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'GART': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'GART': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'GART': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'GART': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'GART': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'FALGTHLs': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'FALDH2': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'ALCD1': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'SFGTHi': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'FALGTHLs': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'FALDH2': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'ALCD1': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'SFGTHi': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'FALGTHLs': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'FALDH2': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'ALCD1': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'SFGTHi': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'FALGTHLs': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'FALDH2': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'ALCD1': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'SFGTHi': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'FALGTHLs': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'FALDH2': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'ALCD1': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'SFGTHi': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'FALGTHLs': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'FALDH2': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'ALCD1': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'SFGTHi': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'FALGTHLs': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'FALDH2': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'ALCD1': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'SFGTHi': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'FALGTHLs': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'FALDH2': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'ALCD1': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'SFGTHi': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'FALGTHLs': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'FALDH2': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'ALCD1': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'SFGTHi': 1.0}, '=', 0.0]]\n" ] } ], "source": [ "print(interventions)\n", - "rxns = set()\n", - "for i in sols.reaction_sd:\n", - " for j in i:\n", - " rxns.add(j)\n", - "print(rxns)" + "#rxns = set()\n", + "#for i in sols.reaction_sd:\n", + "# for j in i:\n", + "# rxns.add(j)\n", + "#print(rxns)" ] }, { "cell_type": "code", - "execution_count": 28, + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "rxn_to_remove = {\n", + " 'PSERT', 'ALCD1', 'PGL', 'SFGTHi',\n", + " 'G6PDH2r', 'FALDH2', \n", + " 'PSP_L', 'GART', 'PGCD', \n", + " 'GND', 'FALGTHLs', 'PDH'\n", + "}\n", + "rxn_to_remove" + ] + }, + { + "cell_type": "code", + "execution_count": 111, "metadata": { "pycharm": { "name": "#%%\n" @@ -1565,35 +1578,33 @@ }, "outputs": [ { - "data": { - "text/plain": [ - "{'ALCD1',\n", - " 'FALDH2',\n", - " 'FALGTHLs',\n", - " 'G6PDH2r',\n", - " 'GART',\n", - " 'GND',\n", - " 'PDH',\n", - " 'PGCD',\n", - " 'PGL',\n", - " 'PSERT',\n", - " 'PSP_L',\n", - " 'SFGTHi'}" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "SFGTHi {'SYNPCC7942_RS02335'}\n", + "GART {'SYNPCC7942_RS03015'}\n", + "G6PDH2r {'SYNPCC7942_RS11865'}\n", + "ALCD1 {'SYNPCC7942_RS08430', 'SYNPCC7942_RS11615'}\n", + "PGCD {'SYNPCC7942_RS07670'}\n", + "GND {'SYNPCC7942_RS00195'}\n", + "FALGTHLs set()\n", + "PDH {'SYNPCC7942_RS00725', 'SYNPCC7942_RS05480', 'SYNPCC7942_RS06135', 'SYNPCC7942_RS09865'}\n", + "PGL {'SYNPCC7942_RS02690'}\n", + "PSP_L {'SYNPCC7942_RS02470'}\n", + "FALDH2 {'SYNPCC7942_RS02340'}\n", + "PSERT {'SYNPCC7942_RS00970'}\n" + ] } ], "source": [ - "rxn_to_remove = {'PSERT', 'ALCD1', 'PGL', 'SFGTHi', 'G6PDH2r', 'FALDH2', 'PSP_L', 'GART', 'PGCD', 'GND', 'FALGTHLs', 'PDH'}\n", - "rxn_to_remove" + "for i in rxn_to_remove:\n", + " rxn = model.reactions.get_by_id(i)\n", + " print(i, {gene.id for gene in rxn.genes})\n" ] }, { "cell_type": "code", - "execution_count": 29, + "execution_count": null, "metadata": { "pycharm": { "name": "#%%\n" @@ -1606,7 +1617,70 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 100, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "gene = model.genes.get_by_id('SYNPCC7942_RS03015')" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Reaction identifierGART
NameGAR transformylase-T
Memory address0x0234527f9ed0
Stoichiometry\n", + "

atp_c + for_c + gar_c --> adp_c + fgam_c + h_c + pi_c

\n", + "

ATP C10H12N5O13P3 + Formate + N1-(5-Phospho-D-ribosyl)glycinamide --> ADP C10H12N5O10P2 + N2-Formyl-N1-(5-phospho-D-ribosyl)glycinamide + H+ + Phosphate

\n", + "
GPRSYNPCC7942_RS03015
Lower bound0.0
Upper bound1000.0
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 104, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.reactions.get_by_id('GART')" + ] + }, + { + "cell_type": "code", + "execution_count": 113, "metadata": { "pycharm": { "name": "#%%\n" @@ -1617,26 +1691,20 @@ "name": "stdout", "output_type": "stream", "text": [ - "1.0881347815856053\n", - "490.1227594944903\n", - "\n" + "522.3691291212901\n", + "480.5486028819524\n", + "\n" ] } ], "source": [ "with model as model:\n", + " model.objective = {model.reactions.get_by_id('EX_sucr_e'): 1, model.reactions.get_by_id('BIOMASS__1'):1}\n", + " print(model.slim_optimize())\n", " for i in rxn_to_remove:\n", " model.remove_reactions([model.reactions.get_by_id(i)])\n", - " # model.remove_reactions([model.reactions.get_by_id('VALTA')])\n", - " # model.remove_reactions([model.reactions.get_by_id('PSP_L')])\n", - "\n", - " # model.remove_reactions([model.reactions.get_by_id('PGCD')])\n", - " # model.remove_reactions([model.reactions.get_by_id('PSERT')])\n", - " # model.remove_reactions([model.reactions.get_by_id('PDH')])\n", - " # model.remove_reactions([model.reactions.get_by_id('G6PDH2r')])\n", - " # model.remove_reactions([model.reactions.get_by_id('GND')])\n", - " print(model.slim_optimize())\n", - " model.objective = {model.reactions.get_by_id('EX_sucr_e'): 1, model.reactions.get_by_id('BIOMASS__1'):10}\n", + " model.genes.get_by_id('SYNPCC7942_RS03015').knock_out() \n", + " model.objective = {model.reactions.get_by_id('EX_sucr_e'): 1, model.reactions.get_by_id('BIOMASS__1'):1}\n", " print(model.slim_optimize())\n", " pfba_solution = cobra.flux_analysis.pfba(model)\n", " print(pfba_solution)\n", @@ -1653,9 +1721,7 @@ } }, "outputs": [], - "source": [ - "cobra.io.write_sbml_model( consistent_model, 'condensed_syn.xml',)" - ] + "source": [] }, { "cell_type": "code", @@ -1730,7 +1796,8 @@ "metadata": { "pycharm": { "name": "#%%\n" - } + }, + "scrolled": false }, "outputs": [ { diff --git a/syn_elong/syn_elong.xml b/syn_elong/syn_elong.xml index 29b2ea5..0a29c33 100644 --- a/syn_elong/syn_elong.xml +++ b/syn_elong/syn_elong.xml @@ -23664,36 +23664,21 @@ - - - -

original_bigg_ids: ['moadamp', 'moadamp_c']

- -
- - - - - - - - - - - -
- + -

original_bigg_ids: ['moadcoo', 'moadcoo_c']

+

original_bigg_ids: ['cpmp', 'cpmp_c']

- + - + + + + @@ -23745,49 +23730,36 @@
- + -

original_bigg_ids: ['mpt', 'mpt_c']

+

original_bigg_ids: ['iscs', 'iscs_c']

- + - - - - - - - - - - - +
- + -

original_bigg_ids: ['cpmp', 'cpmp_c']

+

original_bigg_ids: ['moadamp', 'moadamp_c']

- + - - - - + @@ -23812,18 +23784,46 @@
- + -

original_bigg_ids: ['iscs', 'iscs_c']

+

original_bigg_ids: ['moadcoo', 'moadcoo_c']

- + - + + + + + + +
+ + + +

original_bigg_ids: ['mpt', 'mpt_c']

+ +
+ + + + + + + + + + + + + + + + @@ -23846,7 +23846,6 @@ - @@ -24338,7 +24337,7 @@
- + @@ -54922,30 +54921,30 @@ - + -

original_bigg_ids: ['MPTSS']

+

original_bigg_ids: ['CPMPS', 'MBP_1']

- + - + + - - - + + - +
@@ -54978,6 +54977,62 @@
+ + + +

original_bigg_ids: ['MOADSUx']

+ +
+ + + + + + + + + + + + + + + + + + + + + + +
+ + + +

original_bigg_ids: ['MPTSS']

+ +
+ + + + + + + + + + + + + + + + + + + + +
@@ -55012,6 +55067,50 @@ + + + +

original_bigg_ids: ['MPTS']

+ +
+ + + + + + + + + + + + + + + + + + + + + +
+ + + +

original_bigg_ids: ['GTPC']

+ +
+ + + + + + + + + +
@@ -55096,106 +55195,6 @@ - - - -

original_bigg_ids: ['MPTS']

- -
- - - - - - - - - - - - - - - - - - - - - -
- - - -

original_bigg_ids: ['CPMPS', 'MBP_1']

- -
- - - - - - - - - - - - - - - - - - - - -
- - - -

original_bigg_ids: ['MOADSUx']

- -
- - - - - - - - - - - - - - - - - - - - - - -
- - - -

original_bigg_ids: ['GTPC']

- -
- - - - - - - - - -
From 154a87bfce80debfe55af1a0cf9807adf29f4497 Mon Sep 17 00:00:00 2001 From: James Date: Fri, 26 Jan 2024 20:14:32 -0500 Subject: [PATCH 4/5] Generated straindesign class to help overcome hurdles with finding bugs. Adding notebook to optimize sucrose via strain design. Example reactions that it found using MCS and optknock are included in notebook. --- ...r_essential_improvement_with_gapfill.ipynb | 2 +- .../optimize_sucrose_strain_design.ipynb | 2041 +++++++++++++++++ syn_elong/strain_design_simplified.py | 478 ++++ .../sucrose_optimization/run_strain_design.py | 102 + 4 files changed, 2622 insertions(+), 1 deletion(-) create mode 100644 syn_elong/notebooks/optimize_sucrose_strain_design.ipynb create mode 100644 syn_elong/strain_design_simplified.py create mode 100644 syn_elong/sucrose_optimization/run_strain_design.py diff --git a/syn_elong/notebooks/add_reactions_for_essential_improvement_with_gapfill.ipynb b/syn_elong/notebooks/add_reactions_for_essential_improvement_with_gapfill.ipynb index 4cb9163..9295584 100644 --- a/syn_elong/notebooks/add_reactions_for_essential_improvement_with_gapfill.ipynb +++ b/syn_elong/notebooks/add_reactions_for_essential_improvement_with_gapfill.ipynb @@ -1774,7 +1774,7 @@ { "cell_type": "code", "execution_count": null, - "id": "a53caaa1", + "id": "70477ed4", "metadata": {}, "outputs": [], "source": [ diff --git a/syn_elong/notebooks/optimize_sucrose_strain_design.ipynb b/syn_elong/notebooks/optimize_sucrose_strain_design.ipynb new file mode 100644 index 0000000..e91cb43 --- /dev/null +++ b/syn_elong/notebooks/optimize_sucrose_strain_design.ipynb @@ -0,0 +1,2041 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "pycharm": { + "is_executing": true, + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "# %load_ext autoreload\n", + "# %autoreload 2\n", + "# import os\n", + "# os.environ['JAVA_HOME'] = r'C:\\Program Files\\Java\\jdk-17'\n", + "import straindesign as sd\n", + "import straindesign.names as names" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import cobra\n", + "import logging\n", + "logging.basicConfig(level=logging.INFO)\n", + "import pandas as pd\n", + "pd.set_option('display.float_format', lambda x: f'{x:.3f}')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Set parameter Username\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:gurobipy.gurobipy:Set parameter Username\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Set parameter GURO_PAR_SPECIAL\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:gurobipy.gurobipy:Set parameter GURO_PAR_SPECIAL\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Set parameter TokenServer to value \"leghorn\"\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:gurobipy.gurobipy:Set parameter TokenServer to value \"leghorn\"\n" + ] + } + ], + "source": [ + "from syn_elong import model\n", + "from syn_elong.media import m9_media" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:cobra.medium.boundary_types:Compartment `e` sounds like an external compartment. Using this one without counting boundary reactions.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpykpmgaij.lp\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:gurobipy.gurobipy:Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpykpmgaij.lp\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Reading time = 0.04 seconds\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:gurobipy.gurobipy:Reading time = 0.04 seconds\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + ": 893 rows, 1952 columns, 7974 nonzeros\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:gurobipy.gurobipy:: 893 rows, 1952 columns, 7974 nonzeros\n" + ] + } + ], + "source": [ + "model.medium = m9_media\n", + "consistent_model = cobra.flux_analysis.fastcc(model)\n", + "consistent_model.mediu = m9_media" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:cobra.medium.boundary_types:Compartment `e` sounds like an external compartment. Using this one without counting boundary reactions.\n", + "INFO:cobra.medium.boundary_types:Compartment `e` sounds like an external compartment. Using this one without counting boundary reactions.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Maximum possible BIOMASS__1 synthesis rate: 4.088280273582666.\n", + "Maximum possible EX_sucr_e synthesis rate: 16.389121923937367.\n", + "Maximum possible BIOMASS__1 synthesis rate: 4.088280273582658.\n", + "Maximum possible EX_sucr_e synthesis rate: 16.38912192393736.\n" + ] + } + ], + "source": [ + "with model:\n", + " model.medium = m9_media\n", + " sol = sd.fba(model, obj='BIOMASS__1', obj_sense='max', pfba =False)\n", + " print(f\"Maximum possible BIOMASS__1 synthesis rate: {sol.objective_value}.\")\n", + " sol = sd.fba(model, obj='EX_sucr_e', obj_sense='max', pfba =False)\n", + " print(f\"Maximum possible EX_sucr_e synthesis rate: {sol.objective_value}.\")\n", + "with consistent_model as m:\n", + " m.medium = m9_media\n", + " sol = sd.fba(m, obj='BIOMASS__1', obj_sense='max', pfba =False)\n", + " print(f\"Maximum possible BIOMASS__1 synthesis rate: {sol.objective_value}.\")\n", + " sol = sd.fba(m, obj='EX_sucr_e', obj_sense='max', pfba =False)\n", + " print(f\"Maximum possible EX_sucr_e synthesis rate: {sol.objective_value}.\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "datapoints, triang, plot1 = sd.plot_flux_space(\n", + " model,\n", + " ('BIOMASS__1','EX_sucr_e'),\n", + " show=False\n", + ");" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "def view_with_changes(changed_model):\n", + " datapoints, triang, plot1 = sd.plot_flux_space(\n", + " model,\n", + " ('BIOMASS__1', 'EX_sucr_e'),\n", + " show=False\n", + " );\n", + "\n", + " plot1.set_facecolor('green')\n", + " plot1.set_edgecolor('green')\n", + "\n", + " _, _,plot2 = sd.plot_flux_space(\n", + " changed_model,\n", + " ('BIOMASS__1', 'EX_sucr_e'),\n", + " show=False\n", + " );\n", + " plot2.set_facecolor('red')\n", + " plot2.set_edgecolor('red')\n", + " # adjust axes limits and show plot\n", + " plot2.axes.set_xlim(0, 1.05*max([a[0] for a in datapoints]))\n", + " plot2.axes.set_ylim(0, 1.05*max([a[1] for a in datapoints]))\n", + " plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "module_suppress = sd.SDModule(\n", + " consistent_model,\n", + " sd.names.SUPPRESS,\n", + " constraints='EX_sucr_e >= 6.0'\n", + ")\n", + "\n", + "module_protect = sd.SDModule(\n", + " consistent_model,\n", + " sd.names.PROTECT,\n", + " constraints='BIOMASS__1>=.2'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "image/png": "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Vejfvz+uv/56tG/fHgMHDkR4eHjN65WVlVi0aBFuu+02tGnTBjfeeCOGDh2KXbt2Nfpn4ozt27fjySefRKdOnaBSqaDRaK75PYmUgkWGSAFMJhP69++PZcuWOb1NVlYWxowZg+HDh0Oj0WDevHn429/+hv379ze5bXp6OgoKCnDu3Dm89NJLmD17dp275/5eZmYmBg0ahIyMDGzevBkXL15EZGRkzR3ey8vLa60fGhpap1Tl5eXh0KFDDd59eM2aNViwYAE2b94Ms9lc67W1a9di3rx5eP3116HRaHDy5EksWLAARqOxZp2XX34Z27dvx9dff43z589j3759mDBhQp2i1RwmkwmPPPIIlixZcs3vRaQ4om/2RETeBUDasWNHk+stWLBA6tu3b61lkyZNkkaOHNngNr/dELOioqLW8ttuu0367LPPap6HhYVJTz/9dM3zp556SurWrVutu0ZLkiQVFBRI7dq1k15++eWaZUOHDpVmz54tderUSTpx4kTN8o8//lgaO3as1L9/f2nx4sW13iczM1Nq27atpNVqpQcffFDatGlTrdeffvppacaMGQ3ulyRJUnBwsBQVFdXoOtcqKytLAiAlJSV59HOI/AmPyBBRvWJiYjBixIhay0aOHImYmBin30OSJOzbtw85OTl48MEH612nvLwc+/fvxyuvvIK2bdvWeq1Lly6YOnUqtm7dCul397cNCAjA1KlTsW7dupplUVFRmDVrVr2fsW7dOowZMwbBwcF4/vnnsWbNmjqfExsbi+zs7Ab3pUuXLvj5559hMBia3G8i8h4WGSKqV2FhITp37lxrWefOnaHX61FVVdXott26dcP111+PgIAAjBkzBosXL8ajjz5a77oZGRmQJAl33XVXva/fddddqKioQElJSa3ls2bNwrZt22AymXDs2DHodDr86U9/qrO9w+FAVFQUnn/+eQDA5MmTceLECWRlZdWss3jxYrRv3x49evRA7969MWPGDGzbtg0Oh6NmnZUrV0KtVqNTp064//778cYbb+DkyZON/jkQkeexyBCR2x0/fhwajQYajQarV6/GJ598goiIiEa3+f0RF2f0798ft99+O3744QesXbsW06ZNQ6tWreqsFx0dDZPJhNGjRwMA/vCHP+CJJ57A2rVra9bp2rUrYmJikJKSgrlz58JmsyEsLAxPPfVUTZl59NFHkZmZiUOHDmHChAlITU3FH//4R3z44Ycu5SYi92KRIaJ6denSBUVFRbWWFRUVISgoqM4poKv17NkTvXr1Qt++fTFz5kxMmzYNH3/8cb3r9urVCyqVCmlpafW+npaWhg4dOuDGG2+s89qsWbOwbNky/PDDDw2eVlqzZg3Ky8vRtm1btGrVCq1atcLPP/+M9evX1zriAgB33303XnnlFWzcuBHR0dGIjo7G0aNHa15v3bo1/vjHP+Ltt9/GgQMH8M9//hMffvghqqurG/3zICLPYZEhonoNHjy4zpVG0dHRGDx4sMvv1bJlywZPR3Xq1AlPPPEEli9fXmedwsJCbNq0CZMmTYJKpaqz7XPPPYeUlBTcfffd6NOnT53Xy8rKsGvXLmzZsqXmCJFGo0FSUhIqKipw4MCBBjP/9n4mk6nRdWw2W52roIjIe+oehyUiv2M0GnHx4sWa51lZWdBoNOjYsSNuueUWAMCiRYuQl5eHb7/9FsCvlxt/8803WLBgAWbNmoVffvkF27Ztw549e5r8vOLiYpjNZlgsFsTFxWHDhg2YMGFCg+t/8803GDJkCEaOHImPPvoIPXv2RGpqKt566y3cfPPNDR7N6dChAwoKCtC6det6X9+wYQM6deqEiRMn1ilCo0ePxpo1a/DUU09h9uzZCAkJwWOPPYZu3bqhoKAAH330EW688caa4jZs2DBMmTIFgwYNQqdOnXDu3Dm88847GD58OIKCgpr8M2lMeXk5cnJykJ+fD+DXy9eBX4+KdenS5Zrem8jvib1oioi84bfLoq9+hIWF1awTFhYmDR06tM52AwYMkAICAqRbb71VWrdunUuf06pVK6lnz57Sm2++KRmNxlqf9fvLryVJki5fviyFhYVJnTt3llq3bi2FhoZKr732mlRaWlprvaFDh0pz585tMMPvL7/u16+f9Morr9S73tatW6WAgACppKRE+uGHH6TRo0dLXbt2lQICAqSQkBBp/Pjx0pkzZ2rW/+STT6TBgwdLHTt2lNq0aSPdeuut0uuvv14nX3OsW7eu3u/n6svIiagulSS5OMKOiIiIyEdwjAwRERHJFsfIEBFdo+PHj2PUqFH1vlZVVdXoVV6/vw0CEbmOp5aIiK5RVVUV8vLyGnytsSLTq1cvT8UiUgQWGSIiIpItjpEhIiIi2WKRISIiItlikSEiIiLZYpEhIiIi2WKRISIiItlikSEiIiLZYpEhIiIi2fr/tPCkbTlupdAAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "_, _, plot3 = sd.plot_flux_space(consistent_model,\n", + " ('BIOMASS__1','EX_sucr_e'),\n", + " # The sign of the glucose exchange reaction is flipped since\n", + " # reaction is defined in the direction of secretion.\n", + " constraints=['EX_sucr_e - 20 BIOMASS__1 <= 0',\n", + " 'BIOMASS__1 >= 0.01'],\n", + " show=False);" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rxn_cost = {}\n", + "for rxn in consistent_model.reactions:\n", + " if rxn.id.startswith('EX_') or rxn.id.startswith('BIOMASS_') or\\\n", + " rxn.id.startswith('SK_') or rxn.id.startswith('PHOA') or\\\n", + " rxn.id.startswith('DM_') or rxn.id.startswith('SK_'):\n", + " continue\n", + " if rxn.gene_reaction_rule == '':\n", + " continue\n", + " else:\n", + " rxn_cost[rxn.id] = 1\n", + "rxn_cost.pop('BCT1_syn')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "from syn_elong.strain_design_simplified import compute_strain_designs, StrainDesign\n", + "# Compute strain designs\n", + "with consistent_model as m:\n", + " module_suppress = sd.SDModule(\n", + " m,\n", + " sd.names.SUPPRESS,\n", + " constraints=['EX_sucr_e - 4 BIOMASS__1 <= 0',\n", + " 'BIOMASS__1 >= 0.01']\n", + " )\n", + " module_protect = sd.SDModule(\n", + " m,\n", + " sd.names.PROTECT,\n", + " constraints='BIOMASS__1>=.1'\n", + " )\n", + " module_tilted_optknock = sd.SDModule(m, sd.names.OPTKNOCK,\n", + " inner_objective='BIOMASS__1 ', # - 0.001 EX_14bdo_e\n", + " outer_objective='EX_sucr_e',\n", + " constraints=['BIOMASS__1 >= 0.2', 'EX_sucr_e >=3'])\n", + " module_optcouple = sd.SDModule(m, sd.names.OPTCOUPLE,\n", + " inner_objective='BIOMASS__1',\n", + " prod_id='EX_sucr_e',\n", + " min_gcp=0.1)\n", + " sd_helper = StrainDesign(\n", + " m,\n", + " # sd_modules=[module_suppress, module_protect],\n", + " sd_modules=[module_tilted_optknock],\n", + " ko_cost=rxn_cost,\n", + " # gene_kos=True,\n", + " )\n", + "\n", + " sols = sd_helper.run(max_solutions=10, max_cost=5, time_limit=300, solution_approach=sd.names.ANY)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'consistent_model' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[3], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01msyn_elong\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mstrain_design_simplified\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m compute_strain_designs\n\u001b[1;32m----> 2\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[43mconsistent_model\u001b[49m \u001b[38;5;28;01mas\u001b[39;00m m:\n\u001b[0;32m 3\u001b[0m module_suppress \u001b[38;5;241m=\u001b[39m sd\u001b[38;5;241m.\u001b[39mSDModule(\n\u001b[0;32m 4\u001b[0m m,\n\u001b[0;32m 5\u001b[0m sd\u001b[38;5;241m.\u001b[39mnames\u001b[38;5;241m.\u001b[39mSUPPRESS,\n\u001b[0;32m 6\u001b[0m constraints\u001b[38;5;241m=\u001b[39m[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mEX_sucr_e - 4 BIOMASS__1 <= 0\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[0;32m 7\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mBIOMASS__1 >= 0.01\u001b[39m\u001b[38;5;124m'\u001b[39m]\n\u001b[0;32m 8\u001b[0m )\n\u001b[0;32m 9\u001b[0m module_protect \u001b[38;5;241m=\u001b[39m sd\u001b[38;5;241m.\u001b[39mSDModule(\n\u001b[0;32m 10\u001b[0m m,\n\u001b[0;32m 11\u001b[0m sd\u001b[38;5;241m.\u001b[39mnames\u001b[38;5;241m.\u001b[39mPROTECT,\n\u001b[0;32m 12\u001b[0m constraints\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mBIOMASS__1>=.1\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[0;32m 13\u001b[0m )\n", + "\u001b[1;31mNameError\u001b[0m: name 'consistent_model' is not defined" + ] + } + ], + "source": [ + "\n", + "\n", + "with consistent_model as m:\n", + " module_suppress = sd.SDModule(\n", + " m,\n", + " sd.names.SUPPRESS,\n", + " constraints=['EX_sucr_e - 4 BIOMASS__1 <= 0',\n", + " 'BIOMASS__1 >= 0.01']\n", + " )\n", + " module_protect = sd.SDModule(\n", + " m,\n", + " sd.names.PROTECT,\n", + " constraints='BIOMASS__1>=.1'\n", + " )\n", + " sd_helper = compute_strain_designs(\n", + " m,\n", + " sd_modules = [module_suppress, module_protect],\n", + " time_limit = 500,\n", + " max_solutions = 3,\n", + " max_cost = 5,\n", + " # gene_kos=False,\n", + " ko_cost=rxn_cost,\n", + " solution_approach = sd.names.ANY\n", + " )\n", + " sols = sd_helper.step_2(max_solutions=5, max_cost=10, time_limit=60, solution_approach=sd.names.ANY)" + ] + }, + { + "cell_type": "code", + "execution_count": 211, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[4.0, 4.0, 4.0]" + ] + }, + "execution_count": 211, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sols.sd_cost" + ] + }, + { + "cell_type": "code", + "execution_count": 212, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "One compressed solution with cost 4.0 found and expanded to 3 solutions in the uncompressed netork.\n", + "Example knockout set: ['PCXHtpp', 'BCT1_syn', 'CYTBD4cm', 'NTRARf2']\n" + ] + } + ], + "source": [ + "\n", + "# Print solutions\n", + "print(f\"One compressed solution with cost {sols.sd_cost[0]} found and \"+\\\n", + " f\"expanded to {len(sols.reaction_sd)} solutions in the uncompressed netork.\")\n", + "print(f\"Example knockout set: {[s for s in sols.reaction_sd[0]]}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "solutions = sols.reaction_sd" + ] + }, + { + "cell_type": "code", + "execution_count": 213, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "rxns = [\n", + " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'NTRIRfx': -1.0},\n", + " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'NTRARf2': -1.0},\n", + " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'NO3abcpp': -1.0},\n", + " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'GND': -1.0, 'PSP_L': -1.0},\n", + " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'GND': -1.0, 'PGCD': -1.0},\n", + " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'GND': -1.0, 'PSERT': -1.0},\n", + " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0},\n", + " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0},\n", + " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0},\n", + " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'PGL': -1.0, 'PSP_L': -1.0},\n", + " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'PGL': -1.0, 'PGCD': -1.0},\n", + " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'PGL': -1.0, 'PSERT': -1.0},\n", + " {'NDHPQRcm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'MNHNAtpp': -1.0, 'NTRIRfx': -1.0},\n", + " {'NDHPQRcm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'MNHNAtpp': -1.0, 'NTRARf2': -1.0},\n", + " {'NDHPQRcm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'MNHNAtpp': -1.0, 'NO3abcpp': -1.0},\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['CYTBD4cm', 'BCT1_syn', 'PCXHtpp', 'GND', 'PSERT']\n", + "CYTBD4cm: 4.0 h_c + o2_c + 2.0 pqh2_cm --> 2.0 h2o_c + 4.0 h_p + 2.0 pq_cm\n", + "BCT1_syn: atp_c + h2o_c + hco3_p --> adp_c + h_c + hco3_c + pi_c\n", + "PCXHtpp: h_c --> h_p\n", + "GND: 6pgc_c + nadp_c --> co2_c + nadph_c + ru5p__D_c\n", + "PSERT: 3php_c + glu__L_c <=> akg_c + pser__L_c\n", + "1.0839043697160782\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "EX_photon690_e -1000.000\n", + "EX_photon670_e -848.725\n", + "H2Otu_syn -400.367\n", + "Htcx -204.108\n", + "O2tex -192.874\n", + " ... \n", + "ETCPC 848.725\n", + "PHOA670um 848.725\n", + "PHOA690um 1000.000\n", + "PSICSum 1000.000\n", + "PSIum 1000.000\n", + "Name: fluxes, Length: 428, dtype: float64" + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def run_with_intervention(intervention):\n", + " with consistent_model as m:\n", + " print([i for i in intervention])\n", + " for i in intervention:\n", + " print(m.reactions.get_by_id(i))\n", + " # if i == 'BCT1_syn':\n", + " # continue\n", + " # print(i)\n", + " m.reactions.get_by_id(i).lower_bound = 0\n", + " m.reactions.get_by_id(i).upper_bound = 0\n", + "# m.remove_reactions([m.reactions.get_by_id(i)])\n", + " print(m.slim_optimize())\n", + " sol = m.optimize()\n", + "\n", + " view_with_changes(m)\n", + " return sol.fluxes #sol.reduced_costs, \n", + "red_costs = run_with_intervention(rxns[5])\n", + "red_costs[np.abs(red_costs)>0.001].sort_values()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "red_costs = run_with_intervention(rxns[3])\n", + "red_costs[np.abs(red_costs)>0.001].sort_values()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "fl = cobra.flux_analysis.flux_variability_analysis(consistent_model)" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Metabolite identifierco2_c
NameCO2 CO2
Memory address0x0258e8be21a0
FormulaCO2
Compartmentc
In 54 reaction(s)\n", + " OXADC, CO2tpp, CPPPGO2, 3OAS160, PROAKGOX1, ORNDC, 3OAS100, PFOR, AOXSr2, DBTS, GLYCL, 3OAS120, 3OAS60, DAPDC, SEPHCHCS, PPNDH, CPPPGO, ERTHMMOR, THRPDC, ACLSa, 3OAS180, ICDHyr, PPCDC, KAS14,...
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.metabolites.co2_c" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Reaction identifierBCT1_syn
NameBicarbonate transport via ABC system (periplasm)
Memory address0x0258eb87c730
Stoichiometry\n", + "

atp_c + h2o_c + hco3_p --> adp_c + h_c + hco3_c + pi_c

\n", + "

ATP C10H12N5O13P3 + H2O H2O + Bicarbonate --> ADP C10H12N5O10P2 + H+ + Bicarbonate + Phosphate

\n", + "
GPRSYNPCC7942_RS07605 and SYNPCC7942_RS07610 and SYNPCC7942_RS07615 and SYNPCC7942_RS07620
Lower bound0.0
Upper bound1000.0
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 93, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "consistent_model.reactions.BCT1_syn" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": { + "pycharm": { + "name": "#%%\n" + }, + "scrolled": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:cobra.summary.metabolite_summary:Generating new parsimonious flux distribution.\n" + ] + }, + { + "data": { + "text/html": [ + "

atp_c

C10H12N5O13P3

Producing Reactions

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PercentFluxReactionDefinition
2.45%23.44ACKrac_c + atp_c <=> actp_c + adp_c
89.37%853.8ATPSum3.0 adp_c + 13.0 h_u + 3.0 pi_c <=> 3.0 atp_c + 3.0 h2o_c + 10.0 h_c
5.85%55.88PPKatp_c + pi_c <=> adp_c + ppi_c
0.00%0.007325PPK2atp_c + ppi_c <=> adp_c + pppi_c
2.32%22.18PYKadp_c + h_c + pep_c --> atp_c + pyr_c
0.00%0.0216URIDK2ratp_c + dump_c <=> adp_c + dudp_c

Consuming Reactions

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PercentFluxReactionDefinition
1.38%-13.18ACCOACaccoa_c + atp_c + hco3_c --> adp_c + h_c + malcoa_c + pi_c
2.52%-24.04ACSac_c + atp_c + coa_c --> accoa_c + amp_c + ppi_c
0.00%-2.092E-05ADCPS2adcobhex_c + applp_c + atp_c --> adocbip_c + adp_c + h_c + pi_c
0.00%-8.368E-05ADCYRSadcobdam_c + 4.0 atp_c + 4.0 gln__L_c + 4.0 h2o_c --> adcobhex_c + 4.0 adp_c + 4.0 glu__L_c + 4.0 h_c + 4.0 pi_c
5.13%-49.02ADK1amp_c + atp_c <=> 2.0 adp_c
0.00%-0.04654ADNK1adn_c + atp_c --> adp_c + amp_c + h_c
0.07%-0.6367ADSKaps_c + atp_c --> adp_c + h_c + paps_c
0.00%-0.0001041AFATatp_c + fmn_c + 2.0 h_c --> fad_c + ppi_c
0.08%-0.7814AIRC2air_c + atp_c + hco3_c --> 5caiz_c + adp_c + h_c + pi_c
0.02%-0.1874ALAALAr2.0 ala__D_c + atp_c --> adp_c + alaala_c + h_c + pi_c
0.17%-1.601ALATRSala__L_c + atp_c + trnaala_c --> alatrna_c + amp_c + ppi_c
0.10%-0.9505ARGSSasp__L_c + atp_c + citr__L_c --> amp_c + argsuc_c + h_c + ppi_c
0.10%-0.9505ARGTRSarg__L_c + atp_c + trnaarg_c --> amp_c + argtrna_c + ppi_c
0.08%-0.7645ASNS1asp__L_c + atp_c + gln__L_c + h2o_c --> amp_c + asn__L_c + glu__L_c + h_c + ppi_c
0.08%-0.7645ASNTRSasn__L_c + atp_c + trnaasn_c --> amp_c + asntrna_c + ppi_c
0.25%-2.383ASPKasp__L_c + atp_c --> 4pasp_c + adp_c
0.10%-0.9486ASPTRSasp__L_c + atp_c + trnaasp_c --> amp_c + asptrna_c + ppi_c
0.04%-0.3509ATPPRTatp_c + prpp_c --> ppi_c + prbatp_c
0.00%-0.000107BACCLatp_c + btn_c + h_c --> btamp_c + ppi_c
1.97%-18.85BIOMASS_PROTEIN0.7662 alatrna_c + 0.4548 argtrna_c + 0.3658 asntrna_c + 0.4539 asptrna_c + 9.0199 atp_c + 0.0899 cystrna_c + 0.502 glntrna_c + 0.5465 glutrna_c + 0.6663 glytrna_c + 18.0398 gtp_c + 27.0597 h2o_c + 0.1679 histrna_c + 0.5665 iletrna_c + 1.0294 leutrna_c + 0.3777 lystrna_c + 0.177 mettrna_c + 0.3622 phetrna_c + 0.463 protrna_c + 0.5238 sertrna_c + 0.4957 thrtrna_c + 0.1398 trptrna_c + 0.2633 tyrtrna_c + 0.6082 valtrna_c --> 9.0199 adp_c + bm_pro_c + 18.0398 gdp_c + 36.0797 h_c + 27.0597 pi_c + 0.7662 trnaala_c + 0.4548 trnaarg_c + 0.3658 trnaasn_c + 0.4539 trnaasp_c + 0.0899 trnacys_c + 0.502 trnagln_c + 0.5465 trnaglu_c + 0.6663 trnagly_c + 0.1679 trnahis_c + 0.5665 trnaile_c + 1.0294 trnaleu_c + 0.3777 trnalys_c + 0.177 trnamet_c + 0.3622 trnaphe_c + 0.463 trnapro_c + 0.5238 trnaser_c + 0.4957 trnathr_c + 0.1398 trnatrp_c + 0.2633 trnatyr_c + 0.6082 trnaval_c
0.03%-0.3226BIOMASS_RNA0.69466 atp_c + 0.86375 ctp_c + 0.86375 gtp_c + 0.69466 utp_c --> bm_rna_c + 3.11683 ppi_c
12.84%-122.6BIOMASS__130.0 atp_c + 0.0977 bm_carbs_c + 0.00119 bm_cofactors_c + 0.0795 bm_cw_c + 0.0073 bm_dna_c + 0.159 bm_memlip_c + 0.0197 bm_pigm_c + 0.5112 bm_pro_c + 0.1136 bm_rna_c + 30.0 h2o_c --> 30.0 adp_c + 30.0 h_c + 30.0 pi_c
0.36%-3.445CBPS2.0 atp_c + gln__L_c + h2o_c + hco3_c --> 2.0 adp_c + cbp_c + glu__L_c + 2.0 h_c + pi_c
0.06%-0.5518CDPMEK4c2me_c + atp_c --> 2p4c2me_c + adp_c + h_c
0.00%-2.092E-05COCHL_1atp_c + cobalt2_c + h2o_c + hgbam_c --> adp_c + co2dam_c + 3.0 h_c + pi_c
0.02%-0.2256COLIPAabcexatp_c + colipacy_p + h2o_c --> adp_c + colipacy_e + h_c + pi_c
0.04%-0.428CTPS2atp_c + gln__L_c + h2o_c + utp_c --> adp_c + ctp_c + glu__L_c + 2.0 h_c + pi_c
0.00%-2.092E-05CYRDAATatp_c + co1dam_c + h_c --> adcobdam_c + pppi_c
0.02%-0.1879CYSTRSatp_c + cys__L_c + trnacys_c --> amp_c + cystrna_c + ppi_c
0.08%-0.7485CYTK1atp_c + cmp_c <=> adp_c + cdp_c
0.00%-2.092E-05Cobalt2abcppIatp_c + cobalt2_p + h2o_c --> adp_c + cobalt2_c + h_c + pi_c
0.00%-0.000107DBTSatp_c + co2_c + dann_c --> adp_c + dtbt_c + 3.0 h_c + pi_c
0.00%-0.0003118DHFSatp_c + dhpt_c + glu__L_c --> adp_c + dhf_c + h_c + pi_c
0.00%-7.784E-05DPCOAKatp_c + dpcoa_c --> adp_c + coa_c + h_c
0.00%-0.0216DTMPKatp_c + dtmp_c <=> adp_c + dtdp_c
0.00%-0.006549FE3abcppatp_c + fe3_p + h2o_c --> adp_c + fe3_c + h_c + pi_c
0.01%-0.05439GARTatp_c + for_c + gar_c --> adp_c + fgam_c + h_c + pi_c
0.05%-0.4358GK1atp_c + gmp_c <=> adp_c + gdp_c
0.26%-2.45GLGCatp_c + g1p_c + h_c --> adpglc_c + ppi_c
0.71%-6.755GLNSatp_c + glu__L_c + nh4_c --> adp_c + gln__L_c + h_c + pi_c
0.11%-1.049GLNTRSatp_c + gln__L_c + trnagln_c --> amp_c + glntrna_c + ppi_c
0.20%-1.919GLU5Katp_c + glu__L_c --> adp_c + glu5p_c
0.16%-1.544GLUTRSatp_c + glu__L_c + trnaglu_c --> amp_c + glutrna_c + ppi_c
0.15%-1.393GLYTRSatp_c + gly_c + trnagly_c --> amp_c + glytrna_c + ppi_c
0.05%-0.4357GMPS2atp_c + gln__L_c + h2o_c + xmp_c <=> amp_c + glu__L_c + gmp_c + 2.0 h_c + ppi_c
0.00%-4.184E-05HGYDAS2.0 atp_c + 2.0 gln__L_c + 2.0 h2o_c + hgbyr_c --> 2.0 adp_c + 2.0 glu__L_c + 2.0 h_c + hgbam_c + 2.0 pi_c
0.04%-0.3509HISTRSatp_c + his__L_c + trnahis_c --> amp_c + histrna_c + ppi_c
0.00%-0.0003118HPPK2ahhmp_c + atp_c <=> 2ahhmd_c + amp_c + h_c
0.11%-1.036HSKatp_c + hom__L_c --> adp_c + h_c + phom_c
0.02%-0.2256ICLIPAabcppatp_c + h2o_c + icolipacy_c --> adp_c + h_c + icolipacy_p + pi_c
0.12%-1.184ILETRSatp_c + ile__L_c + trnaile_c --> amp_c + iletrna_c + ppi_c
0.23%-2.151LEUTRSatp_c + leu__L_c + trnaleu_c --> amp_c + leutrna_c + ppi_c
0.00%-2.092E-05LTHRKatp_c + thr__L_c --> adp_c + h_c + thrp_c
0.08%-0.7894LYSTRSatp_c + lys__L_c + trnalys_c --> amp_c + lystrna_c + ppi_c
0.00%-0.04743METATatp_c + h2o_c + met__L_c --> amet_c + pi_c + ppi_c
0.04%-0.3699METTRSatp_c + met__L_c + trnamet_c --> amp_c + mettrna_c + ppi_c
0.00%-0.04583MG2uabcppatp_c + h2o_c + mg2_p --> adp_c + h_c + mg2_c + pi_c
0.00%-0.04583MPMLatp_c + h2o_c + mg2_c + ppp9_c --> adp_c + 3.0 h_c + mppp9_c + pi_c
0.00%-0.0002077NADKatp_c + nad_c --> adp_c + h_c + nadp_c
0.00%-0.00106NADS2atp_c + dnad_c + gln__L_c + h2o_c --> amp_c + glu__L_c + h_c + nad_c + ppi_c
0.00%-2.092E-05NAMNPPatp_c + h2o_c + nac_c + prpp_c <=> adp_c + nicrnt_c + pi_c + ppi_c
11.31%-108.1NDPK1atp_c + gdp_c <=> adp_c + gtp_c
0.22%-2.073NDPK2atp_c + udp_c <=> adp_c + utp_c
0.08%-0.7216NDPK3atp_c + cdp_c <=> adp_c + ctp_c
0.00%-0.0216NDPK4atp_c + dtdp_c <=> adp_c + dttp_c
0.00%-0.02686NDPK5atp_c + dgdp_c <=> adp_c + dgtp_c
0.00%-0.02686NDPK7atp_c + dcdp_c <=> adp_c + dctp_c
0.00%-0.0216NDPK8atp_c + dadp_c <=> adp_c + datp_c
3.60%-34.35NGAM_D1um360.0 atp_c + 720.0 gtp_c + 1080.0 h2o_c + ps2d1_exc_um --> 360.0 adp_c + 720.0 gdp_c + 1080.0 h_c + 1080.0 pi_c + ps2d1_um
0.00%-0.00106NNATratp_c + h_c + nicrnt_c <=> dnad_c + ppi_c
0.02%-0.2256OANTIabcppatp_c + h2o_c + oanticy_c --> adp_c + h_c + oanticy_p + pi_c
0.00%-7.784E-05PANTSala_B_c + atp_c + pant__R_c --> amp_c + h_c + pnto__R_c + ppi_c
35.63%-340.4PGK3pg_c + atp_c <=> 13dpg_c + adp_c
0.08%-0.757PHETRSatp_c + phe__L_c + trnaphe_c --> amp_c + phetrna_c + ppi_c
0.18%-1.744PIuabcppatp_c + h2o_c + pi_p --> adp_c + h_c + 2.0 pi_c
0.00%-0.0001036PMPK4ampm_c + atp_c --> 2mahmp_c + adp_c
0.00%-7.784E-05PNTKatp_c + pnto__R_c --> 4ppan_c + adp_c + h_c
0.00%-7.784E-05PPNCL34ppan_c + atp_c + cys__L_c --> 4ppcys_c + amp_c + h_c + ppi_c
0.08%-0.7815PRAGSratp_c + gly_c + pram_c --> adp_c + gar_c + h_c + pi_c
0.08%-0.7815PRAISatp_c + fpram_c --> adp_c + air_c + 2.0 h_c + pi_c
0.08%-0.7814PRASCSi5aizc_c + asp__L_c + atp_c <=> 25aics_c + adp_c + h_c + pi_c
0.08%-0.7815PRFGSatp_c + fgam_c + gln__L_c + h2o_c --> adp_c + fpram_c + glu__L_c + h_c + pi_c
0.10%-0.9676PROTRSatp_c + pro__L_c + trnapro_c --> amp_c + ppi_c + protrna_c
0.23%-2.199PRPPSatp_c + r5p_c <=> amp_c + h_c + prpp_c
19.40%-185.4PRUKatp_c + ru5p__D_c --> adp_c + h_c + rb15bp_c
0.00%-7.784E-05PTPATiatp_c + h_c + pan4p_c --> dpcoa_c + ppi_c
0.00%-0.000125RBFKatp_c + ribflv_c --> adp_c + fmn_c + h_c
0.07%-0.6367SADTatp_c + h_c + so4_c --> aps_c + ppi_c
0.11%-1.095SERTRSatp_c + ser__L_c + trnaser_c --> amp_c + ppi_c + sertrna_c
0.17%-1.6SHKKatp_c + skm_c --> adp_c + h_c + skm5p_c
0.00%-8.222E-05SUCBZLatp_c + coa_c + sucbz_c --> amp_c + ppi_c + sbzcoa_c
0.07%-0.6367SULabcppatp_c + h2o_c + so4_p --> adp_c + h_c + pi_c + so4_c
0.00%-0.0001036THISATatp_c + h_c + this_c --> athis_c + ppi_c
0.11%-1.036THRTRSatp_c + thr__L_c + trnathr_c --> amp_c + ppi_c + thrtrna_c
0.00%-0.0001036TMPKatp_c + thmmp_c --> adp_c + thmpp_c
0.03%-0.2922TRPTRSatp_c + trnatrp_c + trp__L_c --> amp_c + ppi_c + trptrna_c
0.06%-0.5503TYRTRSatp_c + trnatyr_c + tyr__L_c --> amp_c + ppi_c + tyrtrna_c
0.02%-0.1874UAAGDS26dap__M_c + atp_c + uamag_c --> adp_c + h_c + pi_c + ugmd_c
0.02%-0.1874UAMAGSatp_c + glu__D_c + uama_c --> adp_c + h_c + pi_c + uamag_c
0.02%-0.1874UAMASala__L_c + atp_c + uamr_c --> adp_c + h_c + pi_c + uama_c
0.02%-0.1874UGMDDSalaala_c + atp_c + ugmd_c --> adp_c + h_c + pi_c + ugmda_c
0.10%-0.9917UMPKatp_c + ump_c <=> adp_c + udp_c
0.13%-1.271VALTRSatp_c + trnaval_c + val__L_c --> amp_c + ppi_c + valtrna_c
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 85, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "consistent_model.metabolites.atp_c.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "consistent_model.reactions.HCO3E_1_cx " + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Reaction identifierHCO3tcx
NameBicarbonate transport to carboxyzome
Memory address0x0258eb887ac0
Stoichiometry\n", + "

hco3_c --> hco3_cx

\n", + "

Bicarbonate --> Bicarbonate

\n", + "
GPR
Lower bound0.0
Upper bound1000.0
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "consistent_model.reactions.HCO3tcx " + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Metabolite identifierhco3_cx
NameBicarbonate
Memory address0x0258eb7764a0
FormulaCHO3
Compartmentcx
In 2 reaction(s)\n", + " HCO3tcx, HCO3E_1_cx
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "consistent_model.metabolites.hco3_cx" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "frozenset({,\n", + " ,\n", + " })" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "consistent_model.metabolites.hco3_p.reactions" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Reaction identifierHCO3tex
NameBicarbonate transport via diffusion (extracellular to periplasm)
Memory address0x0258eb87e860
Stoichiometry\n", + "

hco3_e <=> hco3_p

\n", + "

Bicarbonate <=> Bicarbonate

\n", + "
GPR
Lower bound-1000.0
Upper bound1000.0
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "consistent_model.reactions.HCO3tex " + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Reaction identifierBCT1_syn
NameBicarbonate transport via ABC system (periplasm)
Memory address0x0258eb87c730
Stoichiometry\n", + "

atp_c + h2o_c + hco3_p --> adp_c + h_c + hco3_c + pi_c

\n", + "

ATP C10H12N5O13P3 + H2O H2O + Bicarbonate --> ADP C10H12N5O10P2 + H+ + Bicarbonate + Phosphate

\n", + "
GPRSYNPCC7942_RS07605 and SYNPCC7942_RS07610 and SYNPCC7942_RS07615 and SYNPCC7942_RS07620
Lower bound0.0
Upper bound1000.0
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 73, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "consistent_model.reactions.BCT1_syn " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "red_costs = run_with_intervention(['GND', 'PSP_L', 'BCT1_syn'])\n", + "\n", + "red_costs[np.abs(red_costs)>0.001].sort_values()" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "['SYNPCC7942_RS07615',\n", + " 'SYNPCC7942_RS07605',\n", + " 'SYNPCC7942_RS07620',\n", + " 'SYNPCC7942_RS07610']" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"\"\"\n", + "['SYNPCC7942_RS07615',\n", + " 'SYNPCC7942_RS07605',\n", + " 'SYNPCC7942_RS07620',\n", + " 'SYNPCC7942_RS07610']\n", + " \n", + "\"\"\"\n", + "[g.id for g in model.reactions.BCT1_syn.genes]" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[]\n", + "4.08828027358269\n" + ] + }, + { + "data": { + "image/png": "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rq5Nnpry9/fH3Xffjffee6/BmIKCAnz++ed46KGHoFKpGqz7u9/9DpmZmejXrx+io6MbLL9x4wa++eYbbN68ue5IkUajQUZGBm7evIndu3c3mfmX5ysvL292TG1tbYNvRxFR22p4TJaIHI5er8eFCxfqHufk5ECj0cDPzw/dunUDACxbtgzXrl3DJ598AuC/X0V+99138dxzz2HOnDn48ccf8dVXX+Hbb7+97esVFRWhqqoKBoMBR44cwaeffooHHnigyfHvvvsuhg8fjokTJ+K1115DeHg4srKysHjxYnTp0qXJozq+vr7Iz8+Hu7t7o8s//fRT+Pv748EHH2xQhiZPnoyPPvoI99xzD+bOnYvQ0FDcdddd6Nq1K/Lz8/Haa68hICCgrryNGTMGs2bNQnx8PPz9/XHmzBk8//zzGDt2LLy9vW/7N2lOSUkJrl69iry8PAD//Wo78N+jY8HBwa16biKnIPfLVETUFn75yvStU2JiYt2YxMREMXr06AbrDRw4UHh4eIiePXuKjRs3WvQ6bm5uIjw8XDz77LNCr9fXe61ffzVbCCEuX74sEhMTRVBQkHB3dxdhYWHi6aefFtevX683bvTo0WLBggVNZvj1V7P79+8v5s2b1+i4LVu2CA8PD1FcXCy+/vprMXnyZBESEiI8PDxEaGiouP/++8WpU6fqxr/xxhti2LBhws/PT3h5eYmePXuKZ555pkG+lti4cWOj++fWr5gTUeNUQlh41R0RERGRHeE1M0RERKRovGaGiKiV9u7di0mTJjW6rLKystlvf/36lglE1DI8zURE1EqVlZW4du1ak8uaKzMRERG2ikXkNFhmiIiISNF4zQwREREpGssMERERKRrLDBERESkaywwREREpGssMERERKRrLDBERESkaywwREREp2v8DNMzCGJbeS4QAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "EX_photon690_e -1000.000\n", + "EX_photon670_e -1000.000\n", + "H2Otu_syn -500.000\n", + "O2tex -194.132\n", + "O2tpp -194.132\n", + " ... \n", + "ETCPC 1000.000\n", + "PSIICSum 1000.000\n", + "PHOA670um 1000.000\n", + "PSIum 1000.000\n", + "PHOA690um 1000.000\n", + "Name: fluxes, Length: 446, dtype: float64" + ] + }, + "execution_count": 82, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "red_costs = run_with_intervention(['BCT1_syn'])\n", + "red_costs[np.abs(red_costs)>0.001].sort_values()" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "183.52300375243226" + ] + }, + "execution_count": 83, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "red_costs[np.abs(red_costs)>0.001].loc['HCO3E_1_cx']" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['PSP_L']\n", + "PSP_L: h2o_c + pser__L_c --> pi_c + ser__L_c\n", + "1.9945150376163114\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "FDH6 -1.527\n", + "GLYCK -1.527\n", + "EX_meoh_e -0.774\n", + "SK_for_c -0.763\n", + "EX_sucr_e -0.122\n", + "SK_akg_c -0.031\n", + "PSIICRum -0.029\n", + "DM_succ_c -0.029\n", + "DM_lac__D_c -0.026\n", + "SK_fum_c -0.026\n", + "NTRIRfx -0.023\n", + "ZCAROTDH2 -0.013\n", + "DM_ac_c -0.013\n", + "AGDC -0.013\n", + "CYTBD4cm -0.010\n", + "MEHLER_1 -0.010\n", + "CMPA_1 -0.010\n", + "OXADC -0.008\n", + "NADDP -0.008\n", + "NGAM -0.007\n", + "GTHPi -0.005\n", + "GLYCOX2 -0.005\n", + "DM_h2_c -0.005\n", + "LALGP -0.005\n", + "GLUCYS -0.005\n", + "HEX7 -0.005\n", + "DCTPD -0.005\n", + "ASNN -0.005\n", + "DCTPD2 -0.005\n", + "PKETF -0.005\n", + "PKETX -0.005\n", + "PSP_L 1.524\n", + "Name: reduced_costs, dtype: float64" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "red_costs = run_with_intervention(['PSP_L'])\n", + "red_costs[np.abs(red_costs)>0.005].sort_values()" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['CYTBD4cm', 'BCT1_syn', 'PCXHtpp', 'GND', 'PSP_L']\n", + "1.083904369716062\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "GLYCK -2.076\n", + "FDH6 -2.063\n", + "EX_meoh_e -1.039\n", + "SK_for_c -1.037\n", + "DM_succ_c -0.013\n", + "SK_fum_c -0.013\n", + "DM_lac__D_c -0.007\n", + "MEHLER_1 -0.007\n", + "PKETF -0.007\n", + "PKETX -0.007\n", + "Kabcpp -0.006\n", + "Htabcpp -0.006\n", + "CMPA_1 -0.004\n", + "OXADC -0.004\n", + "GTHPi -0.004\n", + "DM_h2_c -0.004\n", + "GLYCOX2 -0.004\n", + "PEPC -0.004\n", + "NDHPQRum -0.004\n", + "ASPOb -0.004\n", + "EX_hco3_e -0.004\n", + "NDH_1_1_um_copy1 -0.004\n", + "AGDC -0.003\n", + "NO3abcpp -0.003\n", + "PSICRum -0.002\n", + "PSICSum 0.002\n", + "BCT1_syn 0.006\n", + "PCXHtpp 0.006\n", + "GND 0.007\n", + "CYTBD4cm 0.016\n", + "PSP_L 2.076\n", + "Name: reduced_costs, dtype: float64" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "red_costs = run_with_intervention(rxns[3])\n", + "red_costs[np.abs(red_costs)>0.001].sort_values()" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Htex\n", + "EX_hco3_e\n", + "NO3abcpp\n", + "0.7434414202750895\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAGwCAYAAABcnuQpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAABNT0lEQVR4nO3deVxU9eI+8GdAFjcGJTcUtzTL5cqouCdp5hqpaS51FbPuTdPULEv7lXbLQruV3aumuIDmbqbkrqgJrrmBu4iCguwgzjADDDBzfn945RuyyMAMnzkzz/u+5vW6c+acmed4nObxfM6ikCRJAhEREZFMOYgOQERERFQZLDNEREQkaywzREREJGssM0RERCRrLDNEREQkaywzREREJGssM0RERCRr1UQHsDSj0YjExETUrl0bCoVCdBwiIiIqB0mSkJWVBU9PTzg4lL3vxebLTGJiIry8vETHICIiogqIj49HkyZNypzH5stM7dq1ATz6w3BzcxOchoiIiMpDo9HAy8ur8He8LDZfZh4PLbm5ubHMEBERyUx5DhHhAcBEREQkaywzREREJGssM0RERCRrLDNEREQkaywzREREJGssM0RERCRrLDNEREQkaywzREREJGssM0RERCRrLDNEREQkaywzREREJGssM0RERCRrLDNEREQkaywzREREJGssM0RERCRrdlNmxm0fh+z8bNExiIiIyMzspswcvHMQqhUqXEu9JjoKERERmZHdlBmD0YBbD26h//r+WHp2KSRJEh2JiIiIzMBuysxjydpkfH70c/ht9oM2Tys6DhEREVWS0DITHh4OPz8/eHp6QqFQICQkpNg8N27cwGuvvQalUomaNWvCx8cHcXFxlfpctV6NA7cPQLVChUvJlyr1XkRERCSW0DKj0+nQsWNHLFu2rMTX79y5g969e+P555/HsWPHcPnyZXzxxRdwdXWt9GcbJANuZ97GwA0D8cOpHzjsREREJFMKyUp+xRUKBXbu3Inhw4cXThs7diycnJywfv36Cr+vRqOBUqkE5gAopQO5ObuhW5Nu2D56O9xc3Cr8WURERGQej3+/1Wo13NzK/m222mNmjEYj9u7di+eeew4DBw5E/fr10a1btxKHov5Kr9dDo9EUeTyNJk+DIzFHoApU4ULiBTOtAREREVUFqy0zqamp0Gq1WLhwIQYNGoRDhw5hxIgR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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "run_with_intervention(sols.reaction_sd[4])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "## Optcouple" + ] + }, + { + "cell_type": "code", + "execution_count": 127, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "module_optcouple = sd.SDModule(\n", + " consistent_model,\n", + " sd.names.OPTCOUPLE,\n", + " inner_objective='BIOMASS__1',\n", + " prod_id='EX_sucr_e',\n", + " min_gcp=0.5\n", + ")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "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.10.6" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/syn_elong/strain_design_simplified.py b/syn_elong/strain_design_simplified.py new file mode 100644 index 0000000..f340d2e --- /dev/null +++ b/syn_elong/strain_design_simplified.py @@ -0,0 +1,478 @@ +#!/usr/bin/env python3 +# +# Copyright 2022 Max Planck Insitute Magdeburg +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# +# +# +"""Function: computing metabolic strain designs (compute_strain_designs)""" + +from contextlib import redirect_stdout, redirect_stderr +import numpy as np +import json +import io +from copy import deepcopy +import logging +from cobra import Model +from cobra.manipulation import rename_genes +from straindesign import SDModule, SDSolutions, select_solver, fva, DisableLogger, SDMILP +from straindesign.names import * +from straindesign.networktools import remove_ext_mets, remove_dummy_bounds, bound_blocked_or_irrevers_fva, \ + remove_irrelevant_genes, extend_model_gpr, extend_model_regulatory, \ + compress_model, compress_modules, compress_ki_ko_cost, expand_sd, filter_sd_maxcost + +class StrainDesign(object): + def __init__(self, model: Model, sd_modules: [SDModule], solver: str = None, M: int = None, compress: bool = True, + gene_kos: bool = False, ko_cost: dict = None, ki_cost: dict = None, gko_cost: dict = None, gki_cost: dict = None, + reg_cost: dict = None, solution_approach: str = 'any', advanced: bool = False, use_scenario: bool = False, ) -> object: + """ + Computes strain designs for a user-defined strain design problem + + A number of arguments can be specified to detail the problem and influence the solution process. + This function supports the computation of Minimal Cut Sets (MCS), OptKock, RobustKnock and OptCouple + strain designs. It is possible to combine any of the latter ones with the MCS approach, e.g., to + engineer growth coupled production, but also suppress the production of an undesired by-product. + The computation can be started in two different ways. Either by specifying the computation parameters + individually or reuse a parameters dictionary from a previous computation. CNApy stores strain design + setup dics as JSON ".sd"-files that can be loaded in python and used as an input for this function. + + Example: + sols = compute_strain_designs(model, sd_modules=[sd_module1, sd_module2], solution_approach = 'any') + + Args: + model (cobra.Model): + A metabolic model that is an instance of the cobra.Model class. The model may or may not + contain genes/GPR-rules. + + sd_modules ([straindesign.SDModule]): + List of strain design modules that describe the sub-problems, such as the MCS-like protection + or suppression of flux subspaces or the OptKnock, RobustKnock or OptCouple objective and + constraints. The list of modules determines the global objective function of the strain design + computation. If only SUPPRESS and PROTECT modules are used, the strain design computation is + MCS-like, such that the number of interventions is minimized. If a module for one of the nested + optimization approaches is used, the global objective function is retrieved from this module. + The number of SUPPRESS and PROTECT modules is unrestricted and can be combined with the other + modules, however only one of the modules OPTKNOCK, ROBUSKNOCK and OPTCOUPLE may be used at a time. + For details, see SDModule. + + solver (optional (str)): (Default: same as defined in model / COBRApy) + The solver that should be used for preparing and carrying out the strain design computation. + Allowed values are 'cplex', 'gurobi', 'scip' and 'glpk'. + + M (optional (int)): (Default: None) + If this value is specified (and non-zero, not None), the computation uses the big-M + method instead of indicator constraints. Since GLPK does not support indicator constraints it uses + the big-M method by default (with M=1000). M should be chosen 'sufficiently large' to avoid computational + artifacts and 'sufficiently small' to avoid numerical issues. + + compress (optional (bool)): (Default: True) + If 'True', the iterative network compressor is used. + + gene_kos (optional (bool)): (Default: False) + If 'True', strain designs are computed based on gene-knockouts instead of reaction knockouts. This + parameter needs not be defined if any of ki_cost, ko_cost, gki_cost, gko_cost and reg_cost is used. + By default, reactions are considered as knockout targets. + + ko_cost (optional (dict)): (Default: None) + A dictionary of reaction identifiers and their associated knockout costs. If not specified, all reactions + are treated as knockout candidates, equivalent to ko_cost = {'r1':1, 'r2':1, ...}. If a subset of reactions + is listed in the dict, all others are not considered as knockout candidates. + + ki_cost (optional (dict)): (Default: None) + A dictionary of reaction identifiers and their associated costs for addition. If not specified, all reactions + are treated as knockout candidates. Reaction addition candidates must be present in the original model with + the intended flux boundaries **after** insertion. Additions are treated adversely to knockouts, meaning that + their exclusion from the network is not associated with any cost while their presence entails intervention costs. + + gko_cost (optional (dict)): (Default: None) + A dictionary of gene identifiers and their associated knockout costs. To reference genes, gene IDs can be + used,as well as gene names. If not specified, genes are not treated as knockout candidates. An exception is + the 'gene_kos' argument. If 'gene_kos' is used, all genes are treated as knockout candidates with intervention + costs of 1. This is equivalent to gko_cost = {'g1':1, 'g2':1, ...}. + + gki_cost (optional (dict)): (Default: None) + A dictionary of gene identifiers and their associated addition costs. To reference genes, gene IDs can be + used, as well as gene names. If not specified, none of the genes are treated as addition candidates. + + reg_cost (optional [dict]): ( Default: None) + Regulatory interventions candidates can be optionally specified as a list. Thereby, the constraint marking the + regulatory intervention is put as key and the associated intervention cost is used as the corresponding value. + E.g., reg_cost = {'1 EX_o2_e = -1': 1, ... }. Instead of strings, constraints + can also be passed as lists. reg_cost = {[{'EX_o2_e':1}, '=', -1]: 1, ...} + + solution_approach (optional (str)): ( Default: 'best') + The approach used to find strain designs. Possible values are 'any', 'best' or 'populate'. 'any' is usually the + fastest option, since optimality is not enforced. Hereby computed MCS are still irreducible intervention sets, + however, not MCS with the fewest possible number of interventions. 'best' computes globally optimal strain designs, + that is, MCS with the fewest number of interventions, OptKnock strain designs with the highest possible production + rate, OptCouple strain designs with the hightest growth coupling potential etc.. 'populate' does the same as 'best', + but makes use of CPLEX' and Gurobi's populate function to generate multiple strain designs. It is identical to 'best' + when used with SCIP or GLPK. + Attention: + If 'any' used with OptKnock, for instance, the MILP may return the wild type as a possible immediately. Technically, + the wildtype fulfills the criterion of maximal growth (inner objective) and maximality of the global objective is + omitted by using 'any', so that carrying no product synthesis is permitted. Additional constraints can be used + in the OptKnock problem to circumvent this. However, Optknock should generally be used with the 'best' option. + """ + + self.kwargs_milp = None + self.reac_map = None + self.compressed_model = None + self.uncompressed_model = None + self.orig_model = None + self.orig_gko_cost = None + self.orig_gki_cost = None + logging.info('Preparing strain design computation.') + self.model = model + if isinstance(sd_modules, SDModule): + sd_modules = [sd_modules] + self.orig_sd_modules = [m.copy() for m in sd_modules] + self.sd_modules = [m.copy() for m in sd_modules] + self.solver = select_solver(solver, self.model) + logging.info(f' Using {self.solver} for solving LPs during preprocessing.') + self.big_M = M + self.compress = compress + self.gene_kos = gene_kos + self.ko_cost = ko_cost + self.ki_cost = ki_cost + self.gko_cost = gko_cost + self.gki_cost = gki_cost + self.reg_cost = reg_cost + + self.solution_approach = solution_approach + self.advanced = advanced + self.use_scenario = use_scenario + self.has_gene_names = False + # uncompressed costs and model + self.uncompressed_ko_cost = {} + self.uncompressed_ki_cost = {} + self.uncompressed_gko_cost = {} + self.uncompressed_gki_cost = {} + self.uncompressed_reg_cost = {} + # compressed costs and model + self.compressed_map_reac = None + self.compressed_ki_cost = None + self.compressed_ko_cost = None + self.essential_kis = set() + self.essential_reactions = set() + self.orig_ko_cost = {} + self.orig_ki_cost = {} + self.orig_reg_cost = {} + + self.orig_gko_cost = {} + self.orig_gki_cost = {} + self.steps() + + + def check_args(self): + if self.big_M is None: + if self.solver in [CPLEX, GUROBI]: + self.big_M = 1000 + else: + self.big_M = np.inf + if self.gene_kos or self.gko_cost is not None or self.gki_cost is not None: + self.check_gene_names() + if self.gko_cost is None or not self.gko_cost: + if self.has_gene_names: + self.gko_cost = {k: 1.0 for k in self.model.genes.list_attr('name')} + else: + self.gko_cost = {k: 1.0 for k in self.model.genes.list_attr('id')} + + # work out reaction knockouts/ins + if self.ko_cost is None: + if not self.gene_kos: + self.ko_cost = {k: 1.0 for k in self.model.reactions.list_attr('id')} + else: + self.ko_cost = {} + if self.ki_cost is None: + self.ki_cost = {} + if self.reg_cost is None: + self.reg_cost = {} + self.uncompressed_ko_cost = deepcopy(self.ko_cost) + self.uncompressed_ki_cost = deepcopy(self.ki_cost) + self.uncompressed_reg_cost = deepcopy(self.reg_cost) + self.orig_ko_cost = deepcopy(self.ko_cost) + self.orig_ki_cost = deepcopy(self.ki_cost) + self.orig_reg_cost = deepcopy(self.reg_cost) + if self.solution_approach not in [ANY, BEST, POPULATE]: + raise Exception("Solution approach must be one of 'any', 'best' or 'populate'.") + # suppress standard output from copying model + with redirect_stdout(io.StringIO()), redirect_stderr(io.StringIO()), DisableLogger(): + self.orig_model = self.model.copy() + self.uncompressed_model = self.model.copy() + self.compressed_model = self.model.copy() + + def steps(self): + self.check_args() + + if self.gene_kos: + self.setup_gko() + self.preprocess_model() + if self.gene_kos: + self.modify_for_genes() + # move gene ko costs to reaction ko costs + self.uncompressed_ko_cost.update(self.uncompressed_gko_cost) + self.uncompressed_ki_cost.update(self.uncompressed_gki_cost) + self.uncompressed_ko_cost.update(extend_model_regulatory(self.compressed_model, self.uncompressed_reg_cost)) + + # make copy to modify for compressed + self.compressed_ko_cost = self.uncompressed_ko_cost + self.compressed_ki_cost = self.uncompressed_ki_cost + + if self.compress: + self.compress_model() + + self.setup_milp_args() + + def check_gene_names(self): + if not hasattr(self.model, 'genes') and self.model.genes: + self.gene_kos = False + logging.warning("Gene knockouts were specified, but no genes are defined in the model. ") + return + # genes must not begin with number, put a 'g' in front of genes that start with a number + if any([True for g in self.model.genes if g.id[0].isdigit()]): + logging.warning("Gene IDs must not start with a digit. Inserting prefix 'g' where necessary.") + rename_genes(self.model, {g.id: 'g' + g.id for g in self.model.genes if g.id[0].isdigit()}) + used_gene_ids = set() + if self.gko_cost is not None: + used_gene_ids.update(self.gko_cost.keys()) + if self.gki_cost is not None: + used_gene_ids.update(self.gki_cost.keys()) + if self.reg_cost is not None: + used_gene_ids.update(self.reg_cost.keys()) + # check if genes are in the model + m_genes = set(g.name for g in self.model.genes) + overlap = used_gene_ids.intersection(m_genes) + if np.all([len(g.name) for g in self.model.genes]) and len(overlap): + self.has_gene_names = True + + def setup_gko(self): + if self.gki_cost is None: + self.gki_cost = {} + if self.gko_cost is None: + self.gko_cost = {} + self.uncompressed_gko_cost = deepcopy(self.gko_cost) + self.uncompressed_gki_cost = deepcopy(self.gki_cost) + self.orig_gko_cost = deepcopy(self.uncompressed_gko_cost) + self.orig_gki_cost = deepcopy(self.uncompressed_gki_cost) + gene_interventions = set(self.uncompressed_gko_cost.keys()).union(self.uncompressed_gki_cost.keys()) + reactions_interventions = set(self.uncompressed_ko_cost.keys()).union(self.uncompressed_ki_cost.keys()) + overlap_1 = False + for r in reactions_interventions: + for g in self.uncompressed_model.reactions.get_by_id(r).genes: + if g in gene_interventions: + overlap_1 = True + + overlap_2 = set(self.uncompressed_gko_cost.keys()).intersection(set(self.uncompressed_gki_cost.keys())) + overlap_3 = set(self.uncompressed_ko_cost.keys()).intersection(set(self.uncompressed_ki_cost.keys())) + + if overlap_1 or len(overlap_2) or len(overlap_3): + raise Exception('Specified gene and reaction knock-out/-in costs contain overlap. ' + 'Make sure that metabolic interventions are enabled either through reaction or ' + 'through gene interventions and are defined either as knock-ins or as knock-outs.') + + def preprocess_model(self): + # remove external metabolites + remove_ext_mets(self.compressed_model) + # replace model bounds with +/- inf if above a certain threshold + remove_dummy_bounds(self.model) + # FVAs to identify blocked, irreversible and essential reactions, as well as non-bounding bounds + logging.info(' FVA to identify blocked reactions and irreversibility.') + bound_blocked_or_irrevers_fva(self.model, solver=self.solver) + logging.info(' FVA(s) to identify essential reactions.') + + for m in self.sd_modules: + if m[MODULE_TYPE] != SUPPRESS: # Essential reactions can only be determined from desired + # or opt-/robustknock modules + flux_limits = fva(self.compressed_model, solver=self.solver, constraints=m[CONSTRAINTS]) + for (reac_id, limits) in flux_limits.iterrows(): + if np.min(abs(limits)) > 1e-10 and np.prod(np.sign(limits)) > 0: # find essential + self.essential_reactions.add(reac_id) + logging.info(f'Essential reactions: {len(self.essential_reactions)}') + # remove ko-costs (and thus knock ability) of essential reactions + for er in self.essential_reactions: + if er in self.uncompressed_ko_cost: + self.uncompressed_ko_cost.pop(er) + + + def modify_for_genes(self): + # If computation of gene-based intervention strategies + if self.compress: + num_genes = len(self.compressed_model.genes) + num_gpr = len([True for r in self.model.reactions if r.gene_reaction_rule]) + logging.info(f'Preprocessing GPR rules {num_genes} genes, {num_gpr} gpr rules).') + # removing irrelevant genes will also remove essential reactions from the list of knockable genes + self.uncompressed_gko_cost = remove_irrelevant_genes( + self.compressed_model, + list(self.essential_reactions), + self.uncompressed_gki_cost, + self.uncompressed_gko_cost + ) + c_num_genes = len(self.compressed_model.genes) + c_num_gpr = len([True for r in self.compressed_model.reactions if r.gene_reaction_rule]) + if c_num_genes < num_genes or c_num_gpr < num_gpr: + num_genes = len(self.compressed_model.genes) + num_gpr = len([True for r in self.compressed_model.reactions if r.gene_reaction_rule]) + logging.info(f' Simplified to {num_genes} genes and {num_gpr} gpr rules.') + logging.info(' Extending metabolic network with gpr associations.') + reac_map = extend_model_gpr(self.compressed_model, self.has_gene_names) + for i, m in enumerate(self.sd_modules): + for p in [CONSTRAINTS, INNER_OBJECTIVE, OUTER_OBJECTIVE, PROD_ID]: + if p in m and m[p] is not None: + if p == CONSTRAINTS: + for c in m[p]: + for k in list(c[0].keys()): + v = c[0].pop(k) + for n, w in reac_map[k].items(): + c[0][n] = v * w + if p in [INNER_OBJECTIVE, OUTER_OBJECTIVE, PROD_ID]: + for k in list(m[p].keys()): + v = m[p].pop(k) + for n, w in reac_map[k].items(): + m[p][n] = v * w + + + + def compress_model(self): + logging.info(f'Compressing Network ({len(self.uncompressed_model.reactions)} reactions).') + # compress network by lumping sequential and parallel reactions alternatively. + # Exclude reactions named in strain design modules from parallel compression + no_par_compress_reacs = set() + for m in self.sd_modules: + for p in [CONSTRAINTS, INNER_OBJECTIVE, OUTER_OBJECTIVE, PROD_ID]: + if p in m and m[p] is not None: + param = m[p] + if p == CONSTRAINTS: + for c in param: + for k in c[0].keys(): + no_par_compress_reacs.add(k) + if p in [INNER_OBJECTIVE, OUTER_OBJECTIVE, PROD_ID]: + for k in param.keys(): + no_par_compress_reacs.add(k) + cmp_map_reac = compress_model(self.compressed_model, no_par_compress_reacs) + # compress information in strain design modules + self.sd_modules = compress_modules(self.sd_modules, cmp_map_reac) + # compress ko_cost and ki_cost + self.compressed_ko_cost, self.compressed_ki_cost, self.compressed_map_reac = compress_ki_ko_cost( + self.compressed_ko_cost, self.compressed_ki_cost, cmp_map_reac + ) + + # An FVA to identify essentials before building and launching MILP (not sure if this has an effect) + logging.info(' FVA(s) in compressed model to identify essential reactions.') + essential_reacs = set() + for m in self.sd_modules: + if m[MODULE_TYPE] != SUPPRESS: # Essential reactions can only be determined from desired + # or opt-/robustknock modules + flux_limits = fva(self.compressed_model, solver=self.solver, constraints=m[CONSTRAINTS]) + for (reac_id, limits) in flux_limits.iterrows(): + if np.min(abs(limits)) > 1e-10 and np.prod(np.sign(limits)) > 0: # find essential + essential_reacs.add(reac_id) + + # remove ko-costs (and thus knockability) of essential reactions + for er in essential_reacs: + if er in self.compressed_ko_cost: + self.compressed_ko_cost.pop(er) + + self.essential_kis = set(self.compressed_ki_cost[er] for er in essential_reacs if er in self.compressed_ki_cost) + + + def setup_milp_args(self): + # Build MILP + kwargs_milp = { + SOLVER: self.solver, + 'M' : self.big_M, + KOCOST:self.compressed_ko_cost, + KICOST:self.compressed_ki_cost, + 'essential_kis':self.essential_kis, + } + self.kwargs_milp = kwargs_milp + logging.info("Finished preprocessing:") + logging.info(f" Model size: {len(self.compressed_model.reactions)} rxns, " + f"{len(self.compressed_model.metabolites)} metabolites") + print(len(self.compressed_ko_cost), len(self.compressed_ki_cost), len(self.essential_kis)) + logging.info(f" {len(self.compressed_ko_cost) + len(self.compressed_ki_cost) - len(self.essential_kis)} " + f"targetable reactions") + + def run(self, max_solutions=5, time_limit=60, max_cost=np.inf, solution_approach=ANY): + """ + max_cost (optional (int)): (Default: inf): + The maximum cost threshold for interventions. Every possible intervention is associated with a + cost value (1, by default). Strain designs cannot exceed the max_cost threshold. Individual + intervention cost factors may be defined through ki_cost, ko_cost, gki_cost, gko_cost and reg_cost. + + max_solutions (optional (int)): (Default: inf) + The maximum number of MILP solutions that are generated for a strain design problem. The number of returned + strain designs is usually larger than the number of max_solutions, since a MILP solution is decompressed + to multiple strain designs. When the compress-flag is set to 'False' the number of returned solutions is + equal to max_solutions. + + time_limit (optional (int)): (Default: inf) + The time limit in seconds for the MILP-solver. + + + """ + self.kwargs_milp['max_cost'] = max_cost + sd_milp = SDMILP(self.compressed_model, self.sd_modules, **self.kwargs_milp) + + kwargs_computation = { + 'show_no_ki': True, + 'max_solutions': max_solutions, + 'time_limit': time_limit, + } + + # solve MILP + if solution_approach == ANY: + cmp_sd_solution = sd_milp.compute(**kwargs_computation) + elif solution_approach == BEST: + cmp_sd_solution = sd_milp.compute_optimal(**kwargs_computation) + elif solution_approach == POPULATE: + cmp_sd_solution = sd_milp.enumerate(**kwargs_computation) + else: + raise ERROR + + logging.info(' Decompressing.') + if cmp_sd_solution.status in [OPTIMAL, TIME_LIMIT_W_SOL]: + sd = expand_sd(cmp_sd_solution.get_reaction_sd_mark_no_ki(), self.compressed_map_reac) + sd = filter_sd_maxcost(sd, max_cost, self.uncompressed_ko_cost, self.uncompressed_ki_cost) + sd = postprocess_reg_sd(self.uncompressed_reg_cost, sd) + else: + sd = [] + + setup = deepcopy(cmp_sd_solution.sd_setup) + setup.update({MODULES: self.orig_sd_modules, KOCOST: self.orig_ko_cost, + KICOST: self.orig_ki_cost, REGCOST: self.orig_reg_cost}) + if self.gene_kos: + setup.update({GKOCOST: self.orig_gko_cost, GKICOST: self.orig_gki_cost}) + sd_solutions = SDSolutions(self.orig_model, sd, cmp_sd_solution.status, setup) + logging.info(str(len(sd)) + ' solutions found.') + + return sd_solutions + + + + + +def postprocess_reg_sd(reg_cost, sd): + """Postprocess regulatory interventions + + Mark regulatory interventions with true or false""" + for s in sd: + for k, v in reg_cost.items(): + if k in s: + s.pop(k) + s.update({v['str']: True}) + else: + s.update({v['str']: False}) + return sd \ No newline at end of file diff --git a/syn_elong/sucrose_optimization/run_strain_design.py b/syn_elong/sucrose_optimization/run_strain_design.py new file mode 100644 index 0000000..de735f0 --- /dev/null +++ b/syn_elong/sucrose_optimization/run_strain_design.py @@ -0,0 +1,102 @@ + +import os +os.environ["OMP_NUM_THREADS"] = "1" # export OMP_NUM_THREADS=1 +os.environ["OPENBLAS_NUM_THREADS"] = "1" # export OPENBLAS_NUM_THREADS=1 +os.environ["MKL_NUM_THREADS"] = "1" # export MKL_NUM_THREADS=1 +os.environ["VECLIB_MAXIMUM_THREADS"] = "1" # export VECLIB_MAXIMUM_THREADS=1 +os.environ["NUMEXPR_NUM_THREADS"] = "1" +#import os +#os.environ['JAVA_HOME'] = r'C:\Program Files\Java\jdk-21' +import straindesign as sd +import cobra + +import pandas as pd +pd.set_option('display.float_format', lambda x: f'{x:.3f}') +from syn_elong.strain_design_simplified import compute_strain_designs, StrainDesign +from syn_elong import model +from syn_elong.media import m9_media + +# model.solver = 'glpk' + +model.medium = m9_media +consistent_model = cobra.flux_analysis.fastcc(model) +consistent_model.medium = m9_media + + +rxn_cost = {} +for rxn in consistent_model.reactions: + if rxn.id.startswith('EX_') or rxn.id.startswith('BIOMASS_') or\ + rxn.id.startswith('SK_') or rxn.id.startswith('PHOA') or\ + rxn.id.startswith('DM_') or rxn.id.startswith('SK_'): + continue + if rxn.gene_reaction_rule == '': + continue + else: + rxn_cost[rxn.id] = 1 +rxn_cost.pop('BCT1_syn') +rxn_cost.pop('ASPO6') +rxn_cost.pop('ASPO5') + +import logging +logging.basicConfig(level=logging.INFO) +with consistent_model as m: + m.reactions.get_by_id('EX_sucr_e').lower_bound = 0 + module_suppress = sd.SDModule( + m, + sd.names.SUPPRESS, + constraints=['EX_sucr_e - 1 BIOMASS__1 <= 0', + # 'BIOMASS__1 >= 0.01' + ] + ) + module_protect = sd.SDModule( + m, + sd.names.PROTECT, + constraints='BIOMASS__1>=.1' + ) + module_tilted_optknock = sd.SDModule(m, sd.names.OPTKNOCK, + inner_objective='BIOMASS__1 ', # - 0.001 EX_14bdo_e + outer_objective='EX_sucr_e', + constraints=['BIOMASS__1 >= 0.2', 'EX_sucr_e >=3']) + module_optcouple = sd.SDModule(m, sd.names.OPTCOUPLE, + inner_objective='BIOMASS__1', + prod_id='EX_sucr_e', + min_gcp=0.1) + sd_helper = StrainDesign( + m, + # sd_modules=[module_suppress, module_protect], + sd_modules=[module_optcouple], + ko_cost=rxn_cost, + # gene_kos=True, + ) + + sols = sd_helper.run(max_solutions=10, max_cost=5, time_limit=3000, solution_approach=sd.names.ANY) + + +print("Completed run") +for r in sols.reaction_sd: + print(r) + +# Print solutions +print(f"One compressed solution with cost {sols.sd_cost[0]} found and "+\ + f"expanded to {len(sols.reaction_sd)} solutions in the uncompressed netork.") +print(f"Example knockout set: {[s for s in sols.reaction_sd[0]]}") + + + +""" +{'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'NTRIRfx': -1.0} +{'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'NTRARf2': -1.0} +{'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'NO3abcpp': -1.0} +{'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'GND': -1.0, 'PSP_L': -1.0} +{'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'GND': -1.0, 'PGCD': -1.0} +{'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'GND': -1.0, 'PSERT': -1.0} +{'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0} +{'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0} +{'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0} +{'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'PGL': -1.0, 'PSP_L': -1.0} +{'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'PGL': -1.0, 'PGCD': -1.0} +{'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'PGL': -1.0, 'PSERT': -1.0} +{'NDHPQRcm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'MNHNAtpp': -1.0, 'NTRIRfx': -1.0} +{'NDHPQRcm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'MNHNAtpp': -1.0, 'NTRARf2': -1.0} +{'NDHPQRcm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'MNHNAtpp': -1.0, 'NO3abcpp': -1.0} +""" \ No newline at end of file From 4521a8d7d7615c50bfde48c2fc87d6cb5caa54be Mon Sep 17 00:00:00 2001 From: James Date: Tue, 12 Mar 2024 15:53:55 -0400 Subject: [PATCH 5/5] Adding updates to model from ims837. --- .github/workflows/memote.yml | 2 +- syn_elong/__init__.py | 2 + .../essentiality/source/process_ge_data.ipynb | 318 +- syn_elong/iJB792.json | 21639 ++++++++++++++++ syn_elong/media.py | 6 +- syn_elong/model_changes.py | 23 +- ...r_essential_improvement_with_gapfill.ipynb | 1688 +- syn_elong/notebooks/explore_model_accu.ipynb | 126 +- .../optimize_sucrose_strain_design.ipynb | 2041 -- .../optimize_sucrose_via_optknock.ipynb | 2061 -- .../optimize_sucrose_strain_design.ipynb | 2513 ++ .../optimize_sucrose_via_optknock.ipynb | 2841 ++ .../sucrose_optimization/run_strain_design.py | 4 +- syn_elong/syn_elong.xml | 1224 +- syn_elong/updates_from_ims837.py | 731 + 15 files changed, 29148 insertions(+), 6071 deletions(-) create mode 100644 syn_elong/iJB792.json delete mode 100644 syn_elong/notebooks/optimize_sucrose_strain_design.ipynb delete mode 100644 syn_elong/notebooks/optimize_sucrose_via_optknock.ipynb create mode 100644 syn_elong/sucrose_optimization/optimize_sucrose_strain_design.ipynb create mode 100644 syn_elong/sucrose_optimization/optimize_sucrose_via_optknock.ipynb create mode 100644 syn_elong/updates_from_ims837.py diff --git a/.github/workflows/memote.yml b/.github/workflows/memote.yml index 082eb3e..41af24b 100644 --- a/.github/workflows/memote.yml +++ b/.github/workflows/memote.yml @@ -2,7 +2,7 @@ name: SYN memote tracking on: push: - branches: [ "main"] + branches: [ "main", "add_missing_rxns"] jobs: memote-history: runs-on: ubuntu-latest diff --git a/syn_elong/__init__.py b/syn_elong/__init__.py index 96e4eb9..cac14d4 100644 --- a/syn_elong/__init__.py +++ b/syn_elong/__init__.py @@ -8,6 +8,8 @@ model = cobra.io.read_sbml_model( path.joinpath('syn_elong.xml').__str__() ) +ijb792 = cobra.io.load_json_model(path.joinpath('iJB792.json').__str__()) +ims837 =cobra.io.load_json_model(path.joinpath('iMS837.json').__str__()) exp_file_path = path.joinpath('data', 'experiments.yml').__str__() expected_metab = pd.read_csv( diff --git a/syn_elong/data/essentiality/source/process_ge_data.ipynb b/syn_elong/data/essentiality/source/process_ge_data.ipynb index f1f6af8..a8cdcd7 100644 --- a/syn_elong/data/essentiality/source/process_ge_data.ipynb +++ b/syn_elong/data/essentiality/source/process_ge_data.ipynb @@ -24,7 +24,17 @@ "name": "#%%\n" } }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Set parameter Username\n", + "Set parameter GURO_PAR_SPECIAL\n", + "Set parameter TokenServer to value \"leghorn\"\n" + ] + } + ], "source": [ "from syn_elong import model as syn\n", "exchanges = set(i.id for i in syn.exchanges)\n", @@ -33,13 +43,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": { "pycharm": { "name": "#%%\n" } }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Synpcc7942_2454\n", + "Synpcc7942_0034\n", + "Synpcc7942_0413\n", + "Synpcc7942_1971\n", + "Synpcc7942_2107\n", + "Synpcc7942_2010\n", + "Synpcc7942_1478\n", + "Synpcc7942_0491\n", + "Synpcc7942_0668\n" + ] + } + ], "source": [ "old_to_new = dict()\n", "for i in syn.genes:\n", @@ -53,9 +79,22 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 5, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\pino216\\Miniconda3\\envs\\whole-cell-gemm\\lib\\site-packages\\openpyxl\\worksheet\\_reader.py:312: UserWarning: Unknown extension is not supported and will be removed\n", + " warn(msg)\n" + ] + } + ], "source": [ "ge_data = pd.read_excel(\n", " 'pnas.1613446113.sd03_GENE_ESSENTIALITY.xlsx',\n", @@ -66,9 +105,23 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 22, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": " gene essential\n0 Synpcc7942_0001 non-essential\n1 Synpcc7942_0003 ambiguous\n2 Synpcc7942_0004 essential\n3 Synpcc7942_0009 essential\n4 Synpcc7942_0017 beneficial", + "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
geneessential
0Synpcc7942_0001non-essential
1Synpcc7942_0003ambiguous
2Synpcc7942_0004essential
3Synpcc7942_0009essential
4Synpcc7942_0017beneficial
\n
" + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "important_data = ge_data[['Gene ID', 'RB-TnSeq essentiality']].copy()\n", "important_data['gene'] = important_data['Gene ID']\n", @@ -80,8 +133,12 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, + "execution_count": 7, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "important_data['gene'] = important_data['gene'].map(old_to_new)\n", @@ -90,17 +147,35 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 8, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": " gene essential\n0 SYNPCC7942_RS00005 non-essential\n1 SYNPCC7942_RS00015 ambiguous\n2 SYNPCC7942_RS00020 essential\n3 SYNPCC7942_RS00045 essential\n4 SYNPCC7942_RS00090 beneficial", + "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
geneessential
0SYNPCC7942_RS00005non-essential
1SYNPCC7942_RS00015ambiguous
2SYNPCC7942_RS00020essential
3SYNPCC7942_RS00045essential
4SYNPCC7942_RS00090beneficial
\n
" + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "important_data.head()" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, + "execution_count": 9, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "data_genes = sorted(important_data['gene'].values)" @@ -108,18 +183,45 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 10, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": "['Synpcc7942_1478',\n 'Synpcc7942_1971',\n 'Synpcc7942_2010',\n 'Synpcc7942_2107',\n 'Synpcc7942_2454']" + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "data_genes[-5:]" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 11, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "785\n", + "0\n", + "0\n" + ] + } + ], "source": [ "print(len(set(data_genes).intersection(genes)))\n", "print(len(set(data_genes).difference(genes)))\n", @@ -128,26 +230,57 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 12, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": "set()" + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "set(genes).difference(data_genes)" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 20, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": " gene essential\n0 SYNPCC7942_RS00005 False\n1 SYNPCC7942_RS00015 False\n2 SYNPCC7942_RS00020 True\n3 SYNPCC7942_RS00045 True\n4 SYNPCC7942_RS00090 False\n.. ... ...\n780 SYNPCC7942_RS13310 False\n781 SYNPCC7942_RS13425 False\n782 SYNPCC7942_RS13430 False\n783 SYNPCC7942_RS13375 False\n784 SYNPCC7942_RS13380 False\n\n[785 rows x 2 columns]", + "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
geneessential
0SYNPCC7942_RS00005False
1SYNPCC7942_RS00015False
2SYNPCC7942_RS00020True
3SYNPCC7942_RS00045True
4SYNPCC7942_RS00090False
.........
780SYNPCC7942_RS13310False
781SYNPCC7942_RS13425False
782SYNPCC7942_RS13430False
783SYNPCC7942_RS13375False
784SYNPCC7942_RS13380False
\n

785 rows × 2 columns

\n
" + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "important_data.head()" + "important_data" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, + "execution_count": 14, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "important_data.loc[~(important_data.essential == 'essential'), 'essential'] = False\n", @@ -156,28 +289,135 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 15, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": " gene essential\n0 SYNPCC7942_RS00005 False\n1 SYNPCC7942_RS00015 False\n2 SYNPCC7942_RS00020 True\n3 SYNPCC7942_RS00045 True\n4 SYNPCC7942_RS00090 False", + "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
geneessential
0SYNPCC7942_RS00005False
1SYNPCC7942_RS00015False
2SYNPCC7942_RS00020True
3SYNPCC7942_RS00045True
4SYNPCC7942_RS00090False
\n
" + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "important_data.head()" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, + "execution_count": 16, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "important_data.to_csv('../syn_elo_knockdown.csv', index=False)" ] }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": "(785, 2)" + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "important_data.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "outputs": [], + "source": [ + "another = pd.read_excel('Table 2_GROWTH_RESULTS.XLSX')" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 19, + "outputs": [ + { + "data": { + "text/plain": " ids growth in silico Unnamed: 2 growth in vivo\n0 Synpcc7942_0001 0.000000e+00 NaN non-essential\n1 Synpcc7942_0003 8.052915e-13 NaN ambiguous\n2 Synpcc7942_0004 7.953535e-13 NaN essential\n3 Synpcc7942_0009 0.000000e+00 NaN essential\n4 Synpcc7942_0015 1.021737e-01 NaN non-essential\n.. ... ... ... ...\n832 Synpcc7942_B2623 1.021729e-01 NaN non-essential\n833 Synpcc7942_B2624 1.021737e-01 NaN non-essential\n834 Synpcc7942_B2633 1.021737e-01 NaN non-essential\n835 Synpcc7942_B2663 1.021737e-01 NaN non-essential\n836 Synpcc7942_B2664 1.021729e-01 NaN non-essential\n\n[837 rows x 4 columns]", + "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
idsgrowth in silicoUnnamed: 2growth in vivo
0Synpcc7942_00010.000000e+00NaNnon-essential
1Synpcc7942_00038.052915e-13NaNambiguous
2Synpcc7942_00047.953535e-13NaNessential
3Synpcc7942_00090.000000e+00NaNessential
4Synpcc7942_00151.021737e-01NaNnon-essential
...............
832Synpcc7942_B26231.021729e-01NaNnon-essential
833Synpcc7942_B26241.021737e-01NaNnon-essential
834Synpcc7942_B26331.021737e-01NaNnon-essential
835Synpcc7942_B26631.021737e-01NaNnon-essential
836Synpcc7942_B26641.021729e-01NaNnon-essential
\n

837 rows × 4 columns

\n
" + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "another" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 23, + "outputs": [ + { + "data": { + "text/plain": " gene essential\n0 Synpcc7942_0001 non-essential\n1 Synpcc7942_0003 ambiguous\n2 Synpcc7942_0004 essential\n3 Synpcc7942_0009 essential\n4 Synpcc7942_0017 beneficial\n.. ... ...\n780 Synpcc7942_2613 non-essential\n781 Synpcc7942_B2623 non-essential\n782 Synpcc7942_B2624 non-essential\n783 Synpcc7942_B2663 non-essential\n784 Synpcc7942_B2664 non-essential\n\n[785 rows x 2 columns]", + "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
geneessential
0Synpcc7942_0001non-essential
1Synpcc7942_0003ambiguous
2Synpcc7942_0004essential
3Synpcc7942_0009essential
4Synpcc7942_0017beneficial
.........
780Synpcc7942_2613non-essential
781Synpcc7942_B2623non-essential
782Synpcc7942_B2624non-essential
783Synpcc7942_B2663non-essential
784Synpcc7942_B2664non-essential
\n

785 rows × 2 columns

\n
" + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "important_data" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, { "cell_type": "code", "execution_count": null, - "metadata": {}, "outputs": [], - "source": [] + "source": [], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } } ], "metadata": { @@ -201,4 +441,4 @@ }, "nbformat": 4, "nbformat_minor": 1 -} +} \ No newline at end of file diff --git a/syn_elong/iJB792.json b/syn_elong/iJB792.json new file mode 100644 index 0000000..2f2ac83 --- /dev/null +++ b/syn_elong/iJB792.json @@ -0,0 +1,21639 @@ +{ +"metabolites":[ +{ +"id":"gam6p_c", +"name":"D-Glucosamine 6-phosphate", +"compartment":"c", +"charge":-1, +"formula":"C6H13NO8P" +}, +{ +"id":"cgly_c", +"name":"Cys-Gly", +"compartment":"c", +"charge":0, +"formula":"C5H10N2O3S" +}, +{ +"id":"achms_c", +"name":"O-Acetyl-L-homoserine", +"compartment":"c", +"charge":0, +"formula":"C6H11NO4" +}, +{ +"id":"pccu2p_u", +"name":"Oxidized plastocyanin", +"compartment":"u", +"charge":1, +"formula":"R" +}, +{ +"id":"octe9ACP_c", +"name":"Oleoyl-[acyl-carrier protein]", +"compartment":"c", +"charge":-1, +"formula":"C18H33OSR" +}, +{ +"id":"fdp_c", +"name":"D-Fructose 1,6-bisphosphate", +"compartment":"c", +"charge":-4, +"formula":"C6H10O12P2" +}, +{ +"id":"agm_c", +"name":"Agmatine", +"compartment":"c", +"charge":2, +"formula":"C5H16N4" +}, +{ +"id":"5caiz_c", +"name":"5-Carboxyamino-1-(5-phospho-D-ribosyl)imidazole", +"compartment":"c", +"charge":-3, +"formula":"C9H11N3O9P" +}, +{ +"id":"pep_c", +"name":"Phosphoenolpyruvate", +"compartment":"c", +"charge":-3, +"formula":"C3H2O6P" +}, +{ +"id":"coa_c", +"name":"CoA", +"compartment":"c", +"charge":-4, +"formula":"C21H32N7O16P3S" +}, +{ +"id":"hgbam_c", +"name":"Hydrogenobyrinate a,c diamide", +"compartment":"c", +"charge":-4, +"formula":"C45H58N6O12" +}, +{ +"id":"nac_c", +"name":"Nicotinate", +"compartment":"c", +"charge":-1, +"formula":"C6H4NO2" +}, +{ +"id":"r3mmal_c", +"name":"D-erythro-3-Methylmalate", +"compartment":"c", +"charge":-2, +"formula":"C5H6O5" +}, +{ +"id":"leu__L_c", +"name":"L-Leucine", +"compartment":"c", +"charge":0, +"formula":"C6H13NO2" +}, +{ +"id":"ahcys_c", +"name":"S-Adenosyl-L-homocysteine", +"compartment":"c", +"charge":0, +"formula":"C14H20N6O5S" +}, +{ +"id":"ru5p__D_c", +"name":"D-Ribulose 5-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C5H9O8P" +}, +{ +"id":"14dhncoa_c", +"name":"1,4-Dihydroxy-2-naphthoyl-CoA", +"compartment":"c", +"charge":-4, +"formula":"C32H38N7O19P3S" +}, +{ +"id":"h2o_cx", +"name":"H2O", +"compartment":"x", +"charge":0, +"formula":"H2O" +}, +{ +"id":"h2s_c", +"name":"Hydrogen sulfide", +"compartment":"c", +"charge":-1, +"formula":"HS" +}, +{ +"id":"orot_c", +"name":"Orotate", +"compartment":"c", +"charge":-1, +"formula":"C5H3N2O4" +}, +{ +"id":"g1p_c", +"name":"D-Glucose 1-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C6H11O9P" +}, +{ +"id":"3hdecACP_c", +"name":"(3R)-3-Hydroxydecanoyl-[acyl-carrier protein]", +"compartment":"c", +"charge":-1, +"formula":"C10H19O2SR" +}, +{ +"id":"na1_c", +"name":"Sodium", +"compartment":"c", +"charge":1, +"formula":"Na" +}, +{ +"id":"2pglyc_c", +"name":"2-Phosphoglycolate", +"compartment":"c", +"charge":-3, +"formula":"C2H2O6P" +}, +{ +"id":"ala_B_c", +"name":"beta-Alanine", +"compartment":"c", +"charge":0, +"formula":"C3H7NO2" +}, +{ +"id":"glyc3p_c", +"name":"sn-Glycerol 3-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C3H7O6P" +}, +{ +"id":"pqh2_um", +"name":"Plastoquinol-9", +"compartment":"m", +"charge":0, +"formula":"C53H82O2" +}, +{ +"id":"26dap_LL_c", +"name":"LL-2,6-Diaminoheptanedioate", +"compartment":"c", +"charge":0, +"formula":"C7H14N2O4" +}, +{ +"id":"ddcaACP_c", +"name":"Dodecanoyl-[acyl-carrier protein]", +"compartment":"c", +"charge":-1, +"formula":"C12H23ORS" +}, +{ +"id":"2pglyc_cx", +"name":"2-Phosphoglycolate", +"compartment":"x", +"charge":-3, +"formula":"C2H2O6P" +}, +{ +"id":"trdox_c", +"name":"Thioredoxin disulfide", +"compartment":"c", +"charge":0, +"formula":"X" +}, +{ +"id":"3oddecACP_c", +"name":"3-Oxododecanoyl-[acp]", +"compartment":"c", +"charge":-1, +"formula":"C12H21O2SR" +}, +{ +"id":"glu__D_c", +"name":"D-Glutamate", +"compartment":"c", +"charge":-1, +"formula":"C5H8NO4" +}, +{ +"id":"h_cx", +"name":"H+", +"compartment":"x", +"charge":1, +"formula":"H" +}, +{ +"id":"dutp_c", +"name":"dUTP", +"compartment":"c", +"charge":-4, +"formula":"C9H11N2O14P3" +}, +{ +"id":"paps_c", +"name":"3'-Phosphoadenylyl sulfate", +"compartment":"c", +"charge":-4, +"formula":"C10H11N5O13P2S" +}, +{ +"id":"mg2_c", +"name":"Magnesium", +"compartment":"c", +"charge":2, +"formula":"Mg" +}, +{ +"id":"hdeACP_c", +"name":"Hexadecenoyl-[acyl-carrier protein]", +"compartment":"c", +"charge":-1, +"formula":"C16H29OSR" +}, +{ +"id":"o2_c", +"name":"Oxygen", +"compartment":"c", +"charge":0, +"formula":"O2" +}, +{ +"id":"anth_c", +"name":"Anthranilate", +"compartment":"c", +"charge":-1, +"formula":"C7H6NO2" +}, +{ +"id":"dhpt_c", +"name":"Dihydropteroate", +"compartment":"c", +"charge":-1, +"formula":"C14H13N6O3" +}, +{ +"id":"thex2eACP_c", +"name":"trans-Hex-2-enoyl-[acp]", +"compartment":"c", +"charge":-1, +"formula":"C6H9OSR" +}, +{ +"id":"fmn_c", +"name":"FMN", +"compartment":"c", +"charge":-3, +"formula":"C17H18N4O9P" +}, +{ +"id":"pppi_c", +"name":"Triphosphate", +"compartment":"c", +"charge":-4, +"formula":"HO10P3" +}, +{ +"id":"udp_c", +"name":"UDP", +"compartment":"c", +"charge":-3, +"formula":"C9H11N2O12P2" +}, +{ +"id":"cit_c", +"name":"Citrate", +"compartment":"c", +"charge":-3, +"formula":"C6H5O7" +}, +{ +"id":"acACP_c", +"name":"Acetyl-[acyl-carrier protein]", +"compartment":"c", +"charge":-1, +"formula":"C2H3ORS" +}, +{ +"id":"uama_c", +"name":"UDP-N-acetylmuramoyl-L-alanine", +"compartment":"c", +"charge":-3, +"formula":"C23H33N4O20P2" +}, +{ +"id":"eig3p_c", +"name":"D-erythro-1-(Imidazol-4-yl)glycerol 3-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C6H9N2O6P" +}, +{ +"id":"3c4mop_c", +"name":"(2S)-2-Isopropyl-3-oxosuccinate", +"compartment":"c", +"charge":-2, +"formula":"C7H8O5" +}, +{ +"id":"lys__L_c", +"name":"L-Lysine", +"compartment":"c", +"charge":1, +"formula":"C6H15N2O2" +}, +{ +"id":"13dpg_c", +"name":"3-Phospho-D-glyceroyl phosphate", +"compartment":"c", +"charge":-4, +"formula":"C3H4O10P2" +}, +{ +"id":"gmp_c", +"name":"GMP", +"compartment":"c", +"charge":-2, +"formula":"C10H12N5O8P" +}, +{ +"id":"utp_c", +"name":"UTP", +"compartment":"c", +"charge":-4, +"formula":"C9H11N2O15P3" +}, +{ +"id":"trdrd_c", +"name":"Thioredoxin", +"compartment":"c", +"charge":0, +"formula":"XH2" +}, +{ +"id":"so4_c", +"name":"Sulfate", +"compartment":"c", +"charge":-2, +"formula":"O4S" +}, +{ +"id":"5apru_c", +"name":"5-Amino-6-(5'-phosphoribosylamino)uracil", +"compartment":"c", +"charge":-2, +"formula":"C9H13N4O9P" +}, +{ +"id":"hmppp9_c", +"name":"13(1)-Hydroxy-magnesium-protoporphyrin IX 13-monomethyl ester", +"compartment":"c", +"charge":-1, +"formula":"C35H33MgN4O5" +}, +{ +"id":"pydx5p_c", +"name":"Pyridoxal phosphate", +"compartment":"c", +"charge":-2, +"formula":"C8H8NO6P" +}, +{ +"id":"2dhp_c", +"name":"2-Dehydropantoate", +"compartment":"c", +"charge":-1, +"formula":"C6H9O4" +}, +{ +"id":"ade_c", +"name":"Adenine", +"compartment":"c", +"charge":0, +"formula":"C5H5N5" +}, +{ +"id":"asp__L_c", +"name":"L-Aspartate", +"compartment":"c", +"charge":-1, +"formula":"C4H6NO4" +}, +{ +"id":"2sephchc_c", +"name":"2-Succinyl-5-enolpyruvyl-6-hydroxy-3-cyclohexene-1-carboxylate", +"compartment":"c", +"charge":-3, +"formula":"C14H13O9" +}, +{ +"id":"acg5p_c", +"name":"N-Acetyl-L-glutamate 5-phosphate", +"compartment":"c", +"charge":-3, +"formula":"C7H9NO8P" +}, +{ +"id":"gdp_c", +"name":"GDP", +"compartment":"c", +"charge":-3, +"formula":"C10H12N5O11P2" +}, +{ +"id":"hgbyr_c", +"name":"Hydrogenobyrinate", +"compartment":"c", +"charge":-6, +"formula":"C45H54N4O14" +}, +{ +"id":"palmACP_c", +"name":"(9Z)-Hexadecanoyl-[acp]", +"compartment":"c", +"charge":-1, +"formula":"C16H31ORS" +}, +{ +"id":"pser__L_c", +"name":"O-Phospho-L-serine", +"compartment":"c", +"charge":-2, +"formula":"C3H6NO6P" +}, +{ +"id":"ocACP_c", +"name":"Octanoyl-[acp]", +"compartment":"c", +"charge":-1, +"formula":"C8H15ORS" +}, +{ +"id":"dttp_c", +"name":"dTTP", +"compartment":"c", +"charge":-4, +"formula":"C10H13N2O14P3" +}, +{ +"id":"suc6p_c", +"name":"Sucrose 6-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C12H21O14P" +}, +{ +"id":"6pgc_c", +"name":"6-Phospho-D-gluconate", +"compartment":"c", +"charge":-3, +"formula":"C6H10O10P" +}, +{ +"id":"gcald_c", +"name":"Glycolaldehyde", +"compartment":"c", +"charge":0, +"formula":"C2H4O2" +}, +{ +"id":"2p4c2me_c", +"name":"2-Phospho-4-(cytidine 5'-diphospho)-2-C-methyl-D-erythritol", +"compartment":"c", +"charge":-4, +"formula":"C14H22N3O17P3" +}, +{ +"id":"cmp_c", +"name":"CMP", +"compartment":"c", +"charge":-2, +"formula":"C9H12N3O8P" +}, +{ +"id":"bm_pro_c", +"name":"Protein component of biomass", +"compartment":"c", +"charge":0, +"formula":"H70.5616C44.9625O13.1713S0.2669N12.1054R-1.0" +}, +{ +"id":"pi_c", +"name":"Orthophosphate", +"compartment":"c", +"charge":-2, +"formula":"HO4P" +}, +{ +"id":"pnto__R_c", +"name":"Pantothenate", +"compartment":"c", +"charge":-1, +"formula":"C9H16NO5" +}, +{ +"id":"dump_c", +"name":"dUMP", +"compartment":"c", +"charge":-2, +"formula":"C9H11N2O8P" +}, +{ +"id":"omppp9_c", +"name":"13(1)-Oxo-magnesium-protoporphyrin IX 13-monomethyl ester", +"compartment":"c", +"charge":-1, +"formula":"C35H31MgN4O5" +}, +{ +"id":"23dhmp_c", +"name":"(R)-2,3-Dihydroxy-3-methylpentanoate", +"compartment":"c", +"charge":-1, +"formula":"C6H11O4" +}, +{ +"id":"gtp_c", +"name":"GTP", +"compartment":"c", +"charge":-4, +"formula":"C10H12N5O14P3" +}, +{ +"id":"4h2oglt_c", +"name":"D-4-Hydroxy-2-oxoglutarate", +"compartment":"c", +"charge":-2, +"formula":"C5H4O6" +}, +{ +"id":"prfp_c", +"name":"5-(5-Phospho-D-ribosylaminoformimino)-1-(5-phosphoribosyl)-imidazole-4-carboxamide", +"compartment":"c", +"charge":-4, +"formula":"C15H21N5O15P2" +}, +{ +"id":"man1p_c", +"name":"D-Mannose 1-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C6H11O9P" +}, +{ +"id":"dxyl5p_c", +"name":"1-Deoxy-D-xylulose 5-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C5H9O7P" +}, +{ +"id":"3hddecACP_c", +"name":"(R)-3-Hydroxydodecanoyl-[acp]", +"compartment":"c", +"charge":-1, +"formula":"C12H23O2SR" +}, +{ +"id":"cu2_c", +"name":"Copper", +"compartment":"c", +"charge":2, +"formula":"Cu" +}, +{ +"id":"malACP_c", +"name":"Malonyl-[acyl-carrier protein]", +"compartment":"c", +"charge":-2, +"formula":"C3H2O3RS" +}, +{ +"id":"2mahmp_c", +"name":"2-Methyl-4-amino-5-hydroxymethylpyrimidine diphosphate", +"compartment":"c", +"charge":-3, +"formula":"C6H8N3O7P2" +}, +{ +"id":"5g2oxpt_c", +"name":"5-Guanidino-2-oxopentanoate", +"compartment":"c", +"charge":0, +"formula":"C6H11N3O3" +}, +{ +"id":"phpyr_c", +"name":"Phenylpyruvate", +"compartment":"c", +"charge":-1, +"formula":"C9H7O3" +}, +{ +"id":"fe2_c", +"name":"Fe2+", +"compartment":"c", +"charge":2, +"formula":"Fe" +}, +{ +"id":"phyQ_c", +"name":"Phylloquinone", +"compartment":"c", +"charge":0, +"formula":"C31H46O2" +}, +{ +"id":"toct2eACP_c", +"name":"trans-Oct-2-enoyl-[acp]", +"compartment":"c", +"charge":-1, +"formula":"C8H13OSR" +}, +{ +"id":"dgdp_c", +"name":"dGDP", +"compartment":"c", +"charge":-3, +"formula":"C10H12N5O10P2" +}, +{ +"id":"uaccg_c", +"name":"UDP-N-acetyl-3-(1-carboxyvinyl)-D-glucosamine", +"compartment":"c", +"charge":-3, +"formula":"C20H26N3O19P2" +}, +{ +"id":"acald_c", +"name":"Acetaldehyde", +"compartment":"c", +"charge":0, +"formula":"C2H4O" +}, +{ +"id":"o2s_c", +"name":"O2-", +"compartment":"c", +"charge":-1, +"formula":"O2" +}, +{ +"id":"phytfl_c", +"name":"Phytofluene", +"compartment":"c", +"charge":0, +"formula":"C40H62" +}, +{ +"id":"alac__S_c", +"name":"2-Acetolactate", +"compartment":"c", +"charge":-1, +"formula":"C5H7O4" +}, +{ +"id":"3hmop_c", +"name":"(R)-3-Hydroxy-3-methyl-2-oxopentanoate", +"compartment":"c", +"charge":-1, +"formula":"C6H9O4" +}, +{ +"id":"4abz_c", +"name":"4-Aminobenzoate", +"compartment":"c", +"charge":-1, +"formula":"C7H6NO2" +}, +{ +"id":"prbamp_c", +"name":"Phosphoribosyl-AMP", +"compartment":"c", +"charge":-4, +"formula":"C15H19N5O14P2" +}, +{ +"id":"ca2_c", +"name":"Calcium", +"compartment":"c", +"charge":2, +"formula":"Ca" +}, +{ +"id":"glyclt_c", +"name":"Glycolate", +"compartment":"c", +"charge":-1, +"formula":"C2H3O3" +}, +{ +"id":"butACP_c", +"name":"Butyryl-[acp]", +"compartment":"c", +"charge":-1, +"formula":"C4H7OSR" +}, +{ +"id":"4ppcys_c", +"name":"(R)-4'-Phosphopantothenoyl-L-cysteine", +"compartment":"c", +"charge":-3, +"formula":"C12H20N2O9PS" +}, +{ +"id":"udpgal_c", +"name":"UDP-D-galactose", +"compartment":"c", +"charge":-2, +"formula":"C15H22N2O17P2" +}, +{ +"id":"f6p_c", +"name":"D-Fructose 6-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C6H11O9P" +}, +{ +"id":"lac__D_c", +"name":"(R)-Lactate", +"compartment":"c", +"charge":-1, +"formula":"C3H5O3" +}, +{ +"id":"his__L_c", +"name":"L-Histidine", +"compartment":"c", +"charge":0, +"formula":"C6H9N3O2" +}, +{ +"id":"agdpcbi_c", +"name":"Adenosine-GDP-cobinamide", +"compartment":"c", +"charge":-1, +"formula":"C68CoH95N21O21P2" +}, +{ +"id":"s17bp_c", +"name":"Sedoheptulose 1,7-bisphosphate", +"compartment":"c", +"charge":-4, +"formula":"C7H12O13P2" +}, +{ +"id":"dctp_c", +"name":"dCTP", +"compartment":"c", +"charge":-4, +"formula":"C9H12N3O13P3" +}, +{ +"id":"thf_c", +"name":"Tetrahydrofolate", +"compartment":"c", +"charge":-2, +"formula":"C19H21N7O6" +}, +{ +"id":"25aics_c", +"name":"1-(5'-Phosphoribosyl)-5-amino-4-(N-succinocarboxamide)-imidazole", +"compartment":"c", +"charge":-4, +"formula":"C13H15N4O12P" +}, +{ +"id":"ni2_c", +"name":"Nickel", +"compartment":"c", +"charge":2, +"formula":"Ni" +}, +{ +"id":"dtdp4d6dg_c", +"name":"4,6-Dideoxy-4-oxo-dTDP-D-glucose", +"compartment":"c", +"charge":-2, +"formula":"C16H22N2O15P2" +}, +{ +"id":"malcoa_c", +"name":"Malonyl-CoA", +"compartment":"c", +"charge":-5, +"formula":"C24H33N7O19P3S" +}, +{ +"id":"fum_c", +"name":"Fumarate", +"compartment":"c", +"charge":-2, +"formula":"C4H2O4" +}, +{ +"id":"bm_cw_c", +"name":"Cell wall component of biomass", +"compartment":"c", +"charge":0, +"formula":"H64.91952478P0.054836981C40.939065111O23.373969692N4.797082835R-1.0" +}, +{ +"id":"ACP_c", +"name":"Acyl-carrier protein", +"compartment":"c", +"charge":-1, +"formula":"HSR" +}, +{ +"id":"mlthf_c", +"name":"5,10-Methylenetetrahydrofolate", +"compartment":"c", +"charge":-2, +"formula":"C20H21N7O6" +}, +{ +"id":"h_p", +"name":"H+", +"compartment":"p", +"charge":1, +"formula":"H" +}, +{ +"id":"dhf_c", +"name":"Dihydrofolate", +"compartment":"c", +"charge":-2, +"formula":"C19H19N7O6" +}, +{ +"id":"dudp_c", +"name":"dUDP", +"compartment":"c", +"charge":-3, +"formula":"C9H11N2O11P2" +}, +{ +"id":"3omrsACP_c", +"name":"3-Oxotetradecanoyl-[acp]", +"compartment":"c", +"charge":-1, +"formula":"C14H25O2SR" +}, +{ +"id":"trnaglu_c", +"name":"tRNA(Glu)", +"compartment":"c", +"charge":0, +"formula":"C15H21N5O10PR" +}, +{ +"id":"pre6a_c", +"name":"Precorrin 6X", +"compartment":"c", +"charge":-7, +"formula":"C44H47N4O16" +}, +{ +"id":"ametam_c", +"name":"S-Adenosylmethioninamine", +"compartment":"c", +"charge":2, +"formula":"C14H24N6O3S" +}, +{ +"id":"3hhexACP_c", +"name":"(R)-3-Hydroxyhexanoyl-[acp]", +"compartment":"c", +"charge":-1, +"formula":"C6H11O2SR" +}, +{ +"id":"4ppan_c", +"name":"D-4'-Phosphopantothenate", +"compartment":"c", +"charge":-3, +"formula":"C9H15NO8P" +}, +{ +"id":"quln_c", +"name":"Pyridine-2,3-dicarboxylate", +"compartment":"c", +"charge":-2, +"formula":"C7H3NO4" +}, +{ +"id":"frdp_c", +"name":"trans,trans-Farnesyl diphosphate", +"compartment":"c", +"charge":-3, +"formula":"C15H25O7P2" +}, +{ +"id":"glyald_c", +"name":"D-Glyceraldehyde", +"compartment":"c", +"charge":0, +"formula":"C3H6O3" +}, +{ +"id":"uacgam_c", +"name":"UDP-N-acetyl-D-glucosamine", +"compartment":"c", +"charge":-2, +"formula":"C17H25N3O17P2" +}, +{ +"id":"pram_c", +"name":"5-Phosphoribosylamine", +"compartment":"c", +"charge":-1, +"formula":"C5H11NO7P" +}, +{ +"id":"26dap__M_c", +"name":"meso-2,6-Diaminoheptanedioate", +"compartment":"c", +"charge":0, +"formula":"C7H14N2O4" +}, +{ +"id":"gdpmann_c", +"name":"GDP-mannose", +"compartment":"c", +"charge":-2, +"formula":"C16H23N5O16P2" +}, +{ +"id":"db4p_c", +"name":"3,4-Dihydroxy-2-butanone 4-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C4H7O6P" +}, +{ +"id":"norsp_c", +"name":"Neurosporene", +"compartment":"c", +"charge":0, +"formula":"C40H58" +}, +{ +"id":"actACP_c", +"name":"Acetoacetyl-[acp]", +"compartment":"c", +"charge":-1, +"formula":"C4H5O2RS" +}, +{ +"id":"actp_c", +"name":"Acetyl phosphate", +"compartment":"c", +"charge":-2, +"formula":"C2H3O5P" +}, +{ +"id":"ugmd_c", +"name":"UDP-N-acetylmuramoyl-L-alanyl-D-gamma-glutamyl-meso-2,6-diaminopimelate", +"compartment":"c", +"charge":-4, +"formula":"C35H51N7O26P2" +}, +{ +"id":"s7p_c", +"name":"Sedoheptulose 7-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C7H13O10P" +}, +{ +"id":"cbm_c", +"name":"Carbamate", +"compartment":"c", +"charge":-1, +"formula":"CH2NO2" +}, +{ +"id":"co2_c", +"name":"CO2", +"compartment":"c", +"charge":0, +"formula":"CO2" +}, +{ +"id":"zeax_c", +"name":"Zeaxanthin", +"compartment":"c", +"charge":0, +"formula":"C40H56O2" +}, +{ +"id":"ptrc_c", +"name":"Putrescine", +"compartment":"c", +"charge":2, +"formula":"C4H14N2" +}, +{ +"id":"adp_c", +"name":"ADP", +"compartment":"c", +"charge":-3, +"formula":"C10H12N5O10P2" +}, +{ +"id":"ncam_c", +"name":"Nicotinamide", +"compartment":"c", +"charge":0, +"formula":"C6H6N2O" +}, +{ +"id":"3a2oxpp_c", +"name":"3-Amino-2-oxopropyl phosphate", +"compartment":"c", +"charge":-1, +"formula":"C3H7NO5P" +}, +{ +"id":"aspsa_c", +"name":"L-Aspartate 4-semialdehyde", +"compartment":"c", +"charge":0, +"formula":"C4H7NO3" +}, +{ +"id":"tdec2eACP_c", +"name":"trans-Dec-2-enoyl-[acp]", +"compartment":"c", +"charge":-1, +"formula":"C10H17OSR" +}, +{ +"id":"phom_c", +"name":"O-Phospho-L-homoserine", +"compartment":"c", +"charge":-2, +"formula":"C4H8NO6P" +}, +{ +"id":"amylose_c", +"name":"Amylose", +"compartment":"c", +"charge":0, +"formula":"HR" +}, +{ +"id":"5mdr1p_c", +"name":"S-Methyl-5-thio-D-ribose 1-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C6H11O7PS" +}, +{ +"id":"rb15bp_cx", +"name":"D-Ribulose 1,5-bisphosphate", +"compartment":"x", +"charge":-4, +"formula":"C5H8O11P2" +}, +{ +"id":"bcryptox_c", +"name":"beta-Cryptoxanthin", +"compartment":"c", +"charge":0, +"formula":"C40H56O" +}, +{ +"id":"spmd_c", +"name":"Spermidine", +"compartment":"c", +"charge":3, +"formula":"C7H22N3" +}, +{ +"id":"udpsq_c", +"name":"UDP-6-sulfoquinovose", +"compartment":"c", +"charge":-3, +"formula":"C15H21N2O19P2S" +}, +{ +"id":"h2_c", +"name":"Hydrogen", +"compartment":"c", +"charge":0, +"formula":"H2" +}, +{ +"id":"adocbip_c", +"name":"Adenosyl cobinamide phosphate", +"compartment":"c", +"charge":-1, +"formula":"C58CoH83N16O14P" +}, +{ +"id":"phycy_c", +"name":"(3Z)-Phycocyanobilin", +"compartment":"c", +"charge":-2, +"formula":"C33H36N4O6" +}, +{ +"id":"cbmp_c", +"name":"N-Carbamoylputrescine", +"compartment":"c", +"charge":1, +"formula":"C5H14N3O" +}, +{ +"id":"nadh_c", +"name":"NADH", +"compartment":"c", +"charge":-2, +"formula":"C21H27N7O14P2" +}, +{ +"id":"aps_c", +"name":"Adenylyl sulfate", +"compartment":"c", +"charge":-2, +"formula":"C10H12N5O10PS" +}, +{ +"id":"dpcoa_c", +"name":"Dephospho-CoA", +"compartment":"c", +"charge":-2, +"formula":"C21H33N7O13P2S" +}, +{ +"id":"xu5p__D_c", +"name":"D-Xylulose 5-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C5H9O8P" +}, +{ +"id":"no2_c", +"name":"Nitrite", +"compartment":"c", +"charge":-1, +"formula":"NO2" +}, +{ +"id":"4hbz_c", +"name":"4-Hydroxybenzoate", +"compartment":"c", +"charge":-1, +"formula":"C7H5O3" +}, +{ +"id":"3odecACP_c", +"name":"3-Oxodecanoyl-[acp]", +"compartment":"c", +"charge":-1, +"formula":"C10H17O2SR" +}, +{ +"id":"dhnpt_c", +"name":"2-Amino-4-hydroxy-6-(D-erythro-1,2,3-trihydroxypropyl)-7,8-", +"compartment":"c", +"charge":0, +"formula":"C9H13N5O4" +}, +{ +"id":"5aprbu_c", +"name":"5-Amino-6-(5'-phosphoribitylamino)uracil", +"compartment":"c", +"charge":-2, +"formula":"C9H15N4O9P" +}, +{ +"id":"iasp_c", +"name":"Iminoaspartate", +"compartment":"c", +"charge":-2, +"formula":"C4H3NO4" +}, +{ +"id":"nmn_c", +"name":"Nicotinamide D-ribonucleotide", +"compartment":"c", +"charge":-1, +"formula":"C11H14N2O8P" +}, +{ +"id":"bm_pigm_c", +"name":"Pigment component of biomass", +"compartment":"c", +"charge":0, +"formula":"H85.915933451C64.636061545Mg0.659309453O5.045035935N2.879863692R-1.0" +}, +{ +"id":"2cpr5p_c", +"name":"1-(2-Carboxyphenylamino)-1-deoxy-D-ribulose 5-phosphate", +"compartment":"c", +"charge":-3, +"formula":"C12H13NO9P" +}, +{ +"id":"pchlld_c", +"name":"Protochlorophyllide", +"compartment":"c", +"charge":-1, +"formula":"C35H31MgN4O5" +}, +{ +"id":"o2_u", +"name":"Oxygen", +"compartment":"u", +"charge":0, +"formula":"O2" +}, +{ +"id":"ala__L_c", +"name":"L-Alanine", +"compartment":"c", +"charge":0, +"formula":"C3H7NO2" +}, +{ +"id":"3c2hmp_c", +"name":"(2R,3S)-3-Isopropylmalate", +"compartment":"c", +"charge":-2, +"formula":"C7H10O5" +}, +{ +"id":"pyr_c", +"name":"Pyruvate", +"compartment":"c", +"charge":-1, +"formula":"C3H3O3" +}, +{ +"id":"hco3_c", +"name":"HCO3-", +"compartment":"c", +"charge":-1, +"formula":"CHO3" +}, +{ +"id":"pan4p_c", +"name":"Pantetheine 4'-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C11H21N2O7PS" +}, +{ +"id":"succ_c", +"name":"Succinate", +"compartment":"c", +"charge":-2, +"formula":"C4H4O4" +}, +{ +"id":"citac_c", +"name":"2-Methylmaleate", +"compartment":"c", +"charge":-2, +"formula":"C5H4O4" +}, +{ +"id":"h2o_c", +"name":"H2O", +"compartment":"c", +"charge":0, +"formula":"H2O" +}, +{ +"id":"h_c", +"name":"H+", +"compartment":"c", +"charge":1, +"formula":"H" +}, +{ +"id":"ugmda_c", +"name":"UDP-N-acetylmuramoyl-L-alanyl-D-glutamyl-6-carboxy-L-lysyl-D-alanyl-D-alanine", +"compartment":"c", +"charge":-4, +"formula":"C41H61N9O28P2" +}, +{ +"id":"pq_um", +"name":"Plastoquinone-9", +"compartment":"m", +"charge":0, +"formula":"C53H80O2" +}, +{ +"id":"man6p_c", +"name":"D-Mannose 6-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C6H11O9P" +}, +{ +"id":"cobalt2_c", +"name":"Cobalt ion", +"compartment":"c", +"charge":2, +"formula":"Co" +}, +{ +"id":"gam1p_c", +"name":"alpha-D-Glucosamine 1-phosphate", +"compartment":"c", +"charge":-1, +"formula":"C6H13NO8P" +}, +{ +"id":"argsuc_c", +"name":"N-(L-Arginino)succinate", +"compartment":"c", +"charge":-1, +"formula":"C10H17N4O6" +}, +{ +"id":"dhap_c", +"name":"Glycerone phosphate", +"compartment":"c", +"charge":-2, +"formula":"C3H5O6P" +}, +{ +"id":"mn2_c", +"name":"Manganese", +"compartment":"c", +"charge":2, +"formula":"Mn" +}, +{ +"id":"u3hga2_c", +"name":"UDP-3-O-(3-hydroxyhexadecanoyl)-D-glucosamine", +"compartment":"c", +"charge":-1, +"formula":"C31H54N3O18P2" +}, +{ +"id":"sprm_c", +"name":"Spermine", +"compartment":"c", +"charge":4, +"formula":"C10H30N4" +}, +{ +"id":"2h3oppan_c", +"name":"2-Hydroxy-3-oxopropanoate", +"compartment":"c", +"charge":-1, +"formula":"C3H3O4" +}, +{ +"id":"2obut_c", +"name":"2-Oxobutanoate", +"compartment":"c", +"charge":-1, +"formula":"C4H5O3" +}, +{ +"id":"dtmp_c", +"name":"dTMP", +"compartment":"c", +"charge":-2, +"formula":"C10H13N2O8P" +}, +{ +"id":"fpram_c", +"name":"2-(Formamido)-N1-(5'-phosphoribosyl)acetamidine", +"compartment":"c", +"charge":-1, +"formula":"C8H15N3O8P" +}, +{ +"id":"ump_c", +"name":"UMP", +"compartment":"c", +"charge":-2, +"formula":"C9H11N2O9P" +}, +{ +"id":"3pg_cx", +"name":"3-Phospho-D-glycerate", +"compartment":"x", +"charge":-3, +"formula":"C3H4O7P" +}, +{ +"id":"pq_cm", +"name":"Plastoquinone-9", +"compartment":"m", +"charge":0, +"formula":"C53H80O2" +}, +{ +"id":"ahdt_c", +"name":"2-Amino-4-hydroxy-6-(erythro-1,2,3-trihydroxypropyl)dihydropteridinetriphosphate", +"compartment":"c", +"charge":-4, +"formula":"C9H12N5O13P3" +}, +{ +"id":"4mop_c", +"name":"4-Methyl-2-oxopentanoate", +"compartment":"c", +"charge":-1, +"formula":"C6H9O3" +}, +{ +"id":"npdp_c", +"name":"all-trans-Nonaprenyl diphosphate", +"compartment":"c", +"charge":-3, +"formula":"C45H73O7P2" +}, +{ +"id":"dhor__S_c", +"name":"(S)-Dihydroorotate", +"compartment":"c", +"charge":-1, +"formula":"C5H5N2O4" +}, +{ +"id":"3opalmACP_c", +"name":"3-Oxohexadecanoyl-[acp]", +"compartment":"c", +"charge":-1, +"formula":"C16H29O2RS" +}, +{ +"id":"glx_c", +"name":"Glyoxylate", +"compartment":"c", +"charge":-1, +"formula":"C2HO3" +}, +{ +"id":"thdp_c", +"name":"2,3,4,5-Tetrahydrodipicolinate", +"compartment":"c", +"charge":-2, +"formula":"C7H7NO4" +}, +{ +"id":"fprica_c", +"name":"1-(5'-Phosphoribosyl)-5-formamido-4-imidazolecarboxamide", +"compartment":"c", +"charge":-2, +"formula":"C10H13N4O9P" +}, +{ +"id":"adocbl_c", +"name":"Cobamide coenzyme", +"compartment":"c", +"charge":0, +"formula":"C72CoH100N18O17P" +}, +{ +"id":"thr__L_c", +"name":"L-Threonine", +"compartment":"c", +"charge":0, +"formula":"C4H9NO3" +}, +{ +"id":"so3_c", +"name":"Sulfite", +"compartment":"c", +"charge":-2, +"formula":"SO3" +}, +{ +"id":"2m6sbenzq_c", +"name":"2-Methyl-6-solanyl-1,4-benzoquinol", +"compartment":"c", +"charge":0, +"formula":"C52H80O2" +}, +{ +"id":"hco3_cx", +"name":"HCO3-", +"compartment":"x", +"charge":-1, +"formula":"CHO3" +}, +{ +"id":"glu5p_c", +"name":"L-Glutamyl 5-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C5H8NO7P" +}, +{ +"id":"3hmrsACP_c", +"name":"(3R)-3-Hydroxytetradecanoyl-[acyl-carrier protein]", +"compartment":"c", +"charge":-1, +"formula":"C14H27O2SR" +}, +{ +"id":"4c2me_c", +"name":"4-(Cytidine 5'-diphospho)-2-C-methyl-D-erythritol", +"compartment":"c", +"charge":-2, +"formula":"C14H23N3O14P2" +}, +{ +"id":"damp_c", +"name":"dAMP", +"compartment":"c", +"charge":-2, +"formula":"C10H12N5O6P" +}, +{ +"id":"histda_c", +"name":"L-histidinal", +"compartment":"c", +"charge":1, +"formula":"C6H10N3O" +}, +{ +"id":"gthox_c", +"name":"Glutathione disulfide", +"compartment":"c", +"charge":-2, +"formula":"C20H30N6O12S2" +}, +{ +"id":"amp_c", +"name":"AMP", +"compartment":"c", +"charge":-2, +"formula":"C10H12N5O7P" +}, +{ +"id":"23dhmb_c", +"name":"2,3-Dihydroxy-3-methylbutanoate", +"compartment":"c", +"charge":-1, +"formula":"C5H9O4" +}, +{ +"id":"5mdru1p_c", +"name":"S-Methyl-5-thio-D-ribulose 1-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C6H11O7PS" +}, +{ +"id":"mppp9_c", +"name":"Magnesium protoporphyrin", +"compartment":"c", +"charge":-2, +"formula":"C34H30MgN4O4" +}, +{ +"id":"cdp_c", +"name":"CDP", +"compartment":"c", +"charge":-3, +"formula":"C9H12N3O11P2" +}, +{ +"id":"dcaACP_c", +"name":"Decanoyl-[acp]", +"compartment":"c", +"charge":-1, +"formula":"C10H19ORS" +}, +{ +"id":"2me4p_c", +"name":"2-C-Methyl-D-erythritol 4-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C5H11O7P" +}, +{ +"id":"3hpalmACP_c", +"name":"(3R)-3-Hydroxypalmitoyl-[acyl-carrier protein]", +"compartment":"c", +"charge":-1, +"formula":"C16H31O2SR" +}, +{ +"id":"2ahbut_c", +"name":"(S)-2-Aceto-2-hydroxybutanoate", +"compartment":"c", +"charge":-1, +"formula":"C6H9O4" +}, +{ +"id":"caro_c", +"name":"beta-Carotene", +"compartment":"c", +"charge":0, +"formula":"C40H56" +}, +{ +"id":"3dhq_c", +"name":"3-Dehydroquinate", +"compartment":"c", +"charge":-1, +"formula":"C7H9O6" +}, +{ +"id":"4adcho_c", +"name":"4-Amino-4-deoxychorismate", +"compartment":"c", +"charge":-1, +"formula":"C10H10NO5" +}, +{ +"id":"glu__L_c", +"name":"L-Glutamate", +"compartment":"c", +"charge":-1, +"formula":"C5H8NO4" +}, +{ +"id":"bm_cofactors_c", +"name":"Biomass metabolite: cofactors and ions", +"compartment":"c", +"charge":0, +"formula":"H96.4365P0.8756C37.9375K0.0017O6.9303S0.1371Na0.0001Fe1.7854N14.7005R-1.0Co0.0057" +}, +{ +"id":"34hpp_c", +"name":"3-(4-Hydroxyphenyl)pyruvate", +"compartment":"c", +"charge":-1, +"formula":"C9H7O4" +}, +{ +"id":"ctp_c", +"name":"CTP", +"compartment":"c", +"charge":-4, +"formula":"C9H12N3O14P3" +}, +{ +"id":"pqh2_cm", +"name":"Plastoquinol-9", +"compartment":"m", +"charge":0, +"formula":"C53H82O2" +}, +{ +"id":"fad_c", +"name":"FAD", +"compartment":"c", +"charge":-2, +"formula":"C27H31N9O15P2" +}, +{ +"id":"2shchc_c", +"name":"(1R,6R)-6-Hydroxy-2-succinylcyclohexa-2,4-diene-1-carboxylate", +"compartment":"c", +"charge":-2, +"formula":"C11H10O6" +}, +{ +"id":"dhna_c", +"name":"1,4-Dihydroxy-2-naphthoate", +"compartment":"c", +"charge":-1, +"formula":"C11H7O4" +}, +{ +"id":"co2_cx", +"name":"CO2", +"compartment":"x", +"charge":0, +"formula":"CO2" +}, +{ +"id":"acg5sa_c", +"name":"N-Acetyl-L-glutamate 5-semialdehyde", +"compartment":"c", +"charge":-1, +"formula":"C7H10NO4" +}, +{ +"id":"ala__D_c", +"name":"D-Alanine", +"compartment":"c", +"charge":0, +"formula":"C3H7NO2" +}, +{ +"id":"aicar_c", +"name":"1-(5'-Phosphoribosyl)-5-amino-4-imidazolecarboxamide", +"compartment":"c", +"charge":-2, +"formula":"C9H13N4O8P" +}, +{ +"id":"g6p_c", +"name":"D-Glucose 6-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C6H11O9P" +}, +{ +"id":"glu5sa_c", +"name":"L-Glutamate 5-semialdehyde", +"compartment":"c", +"charge":0, +"formula":"C5H9NO3" +}, +{ +"id":"zcarote_c", +"name":"zeta-Carotene", +"compartment":"c", +"charge":0, +"formula":"C40H60" +}, +{ +"id":"ac_c", +"name":"Acetate", +"compartment":"c", +"charge":-1, +"formula":"C2H3O2" +}, +{ +"id":"pre3b_c", +"name":"Precorrin 3B", +"compartment":"c", +"charge":-7, +"formula":"C43H43N4O17" +}, +{ +"id":"mthgxl_c", +"name":"Methylglyoxal", +"compartment":"c", +"charge":0, +"formula":"C3H4O2" +}, +{ +"id":"3mop_c", +"name":"(S)-3-Methyl-2-oxopentanoic acid", +"compartment":"c", +"charge":-1, +"formula":"C6H9O3" +}, +{ +"id":"5drib_c", +"name":"5-Deoxy-D-ribose", +"compartment":"c", +"charge":0, +"formula":"C5H10O4" +}, +{ +"id":"e4hglu_c", +"name":"L-erythro-4-Hydroxyglutamate", +"compartment":"c", +"charge":-1, +"formula":"C5H8NO5" +}, +{ +"id":"dgtp_c", +"name":"dGTP", +"compartment":"c", +"charge":-4, +"formula":"C10H12N5O13P3" +}, +{ +"id":"cys__L_c", +"name":"L-Cysteine", +"compartment":"c", +"charge":0, +"formula":"C3H7NO2S" +}, +{ +"id":"bm_rna_c", +"name":"RNA component of biomass", +"compartment":"c", +"charge":0, +"formula":"H33.59035P3.1168C29.60979O21.81767N11.77262R-1.0" +}, +{ +"id":"hisp_c", +"name":"L-Histidinol phosphate", +"compartment":"c", +"charge":-1, +"formula":"C6H11N3O4P" +}, +{ +"id":"lyc_c", +"name":"Lycopene", +"compartment":"c", +"charge":0, +"formula":"C40H56" +}, +{ +"id":"citr__L_c", +"name":"L-Citrulline", +"compartment":"c", +"charge":0, +"formula":"C6H13N3O3" +}, +{ +"id":"2ahhmp_c", +"name":"2-Amino-4-hydroxy-6-hydroxymethyl-7,8-dihydropteridine", +"compartment":"c", +"charge":0, +"formula":"C7H9N5O2" +}, +{ +"id":"pdx5p_c", +"name":"Pyridoxine phosphate", +"compartment":"c", +"charge":-2, +"formula":"C8H10NO6P" +}, +{ +"id":"fru_c", +"name":"D-Fructose", +"compartment":"c", +"charge":0, +"formula":"C6H12O6" +}, +{ +"id":"2mecdp_c", +"name":"2-C-Methyl-D-erythritol 2,4-cyclodiphosphate", +"compartment":"c", +"charge":-2, +"formula":"C5H10O9P2" +}, +{ +"id":"cbasp_c", +"name":"N-Carbamoyl-L-aspartate", +"compartment":"c", +"charge":-2, +"formula":"C5H6N2O5" +}, +{ +"id":"dnad_c", +"name":"Deamino-NAD+", +"compartment":"c", +"charge":-2, +"formula":"C21H24N6O15P2" +}, +{ +"id":"datp_c", +"name":"dATP", +"compartment":"c", +"charge":-4, +"formula":"C10H12N5O12P3" +}, +{ +"id":"prlp_c", +"name":"N-(5'-Phospho-D-1'-ribulosylformimino)-5-amino-1-(5''-phospho-D-ribosyl)-4-imidazolecarboxamide", +"compartment":"c", +"charge":-4, +"formula":"C15H21N5O15P2" +}, +{ +"id":"toctd2eACP_c", +"name":"(2E)-Octadecenoyl-[acp]", +"compartment":"c", +"charge":-1, +"formula":"C18H33OSR" +}, +{ +"id":"cholphya_c", +"name":"Chlorophyll a", +"compartment":"c", +"charge":0, +"formula":"C55H72MgN4O5" +}, +{ +"id":"glc__D_c", +"name":"D-Glucose", +"compartment":"c", +"charge":0, +"formula":"C6H12O6" +}, +{ +"id":"o2_cx", +"name":"Oxygen", +"compartment":"x", +"charge":0, +"formula":"O2" +}, +{ +"id":"orot5p_c", +"name":"Orotidine 5'-phosphate", +"compartment":"c", +"charge":-3, +"formula":"C10H10N2O11P" +}, +{ +"id":"k_c", +"name":"Potassium", +"compartment":"c", +"charge":1, +"formula":"K" +}, +{ +"id":"amet_c", +"name":"S-Adenosyl-L-methionine", +"compartment":"c", +"charge":1, +"formula":"C15H23N6O5S" +}, +{ +"id":"dtdprmn_c", +"name":"dTDP-6-deoxy-L-mannose", +"compartment":"c", +"charge":-2, +"formula":"C16H24N2O15P2" +}, +{ +"id":"2ippm_c", +"name":"2-Isopropylmaleate", +"compartment":"c", +"charge":-2, +"formula":"C7H8O4" +}, +{ +"id":"pro__L_c", +"name":"L-Proline", +"compartment":"c", +"charge":0, +"formula":"C5H9NO2" +}, +{ +"id":"cpppg3_c", +"name":"Coproporphyrinogen III", +"compartment":"c", +"charge":-4, +"formula":"C36H40N4O8" +}, +{ +"id":"h2mb4p_c", +"name":"1-Hydroxy-2-methyl-2-butenyl 4-diphosphate", +"compartment":"c", +"charge":-3, +"formula":"C5H9O8P2" +}, +{ +"id":"thmmp_c", +"name":"Thiamin monophosphate", +"compartment":"c", +"charge":-1, +"formula":"C12H16N4O4PS" +}, +{ +"id":"cdpglc_c", +"name":"CDP-glucose", +"compartment":"c", +"charge":-2, +"formula":"C15H23N3O16P2" +}, +{ +"id":"xmp_c", +"name":"Xanthosine 5'-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C10H11N4O9P" +}, +{ +"id":"co2dam_c", +"name":"Cob(II)yrinate a,c diamide", +"compartment":"c", +"charge":-4, +"formula":"C45CoH56N6O12" +}, +{ +"id":"fdxox_c", +"name":"Oxidized ferredoxin", +"compartment":"c", +"charge":3, +"formula":"R" +}, +{ +"id":"orn_c", +"name":"L-Ornithine", +"compartment":"c", +"charge":1, +"formula":"C5H13N2O2" +}, +{ +"id":"2ahhmd_c", +"name":"2-Amino-7,8-dihydro-4-hydroxy-6-(diphosphooxymethyl)pteridine", +"compartment":"c", +"charge":-3, +"formula":"C7H8N5O8P2" +}, +{ +"id":"pre6b_c", +"name":"Precorrin 6Y", +"compartment":"c", +"charge":-6, +"formula":"C44H50N4O16" +}, +{ +"id":"gln__L_c", +"name":"L-Glutamine", +"compartment":"c", +"charge":0, +"formula":"C5H10N2O3" +}, +{ +"id":"3ohexACP_c", +"name":"3-Oxohexanoyl-[acp]", +"compartment":"c", +"charge":-1, +"formula":"C6H9O2SR" +}, +{ +"id":"3pg_c", +"name":"3-Phospho-D-glycerate", +"compartment":"c", +"charge":-3, +"formula":"C3H4O7P" +}, +{ +"id":"pheme_c", +"name":"Heme", +"compartment":"c", +"charge":-2, +"formula":"C34H30FeN4O4" +}, +{ +"id":"methf_c", +"name":"5,10-Methenyltetrahydrofolate", +"compartment":"c", +"charge":-1, +"formula":"C20H20N7O6" +}, +{ +"id":"co1dam_c", +"name":"Cob(I)yrinate a,c diamide", +"compartment":"c", +"charge":-5, +"formula":"C45H56CoN6O12" +}, +{ +"id":"mppp9me_c", +"name":"Magnesium protoporphyrin monomethyl ester", +"compartment":"c", +"charge":-1, +"formula":"C35H33MgN4O4" +}, +{ +"id":"bm_dna_c", +"name":"DNA component of biomass", +"compartment":"c", +"charge":0, +"formula":"H36.44203P3.24714C31.57134O19.48279N12.26478R-1.0" +}, +{ +"id":"fe3_c", +"name":"Fe3+", +"compartment":"c", +"charge":3, +"formula":"Fe" +}, +{ +"id":"zn2_c", +"name":"Zinc", +"compartment":"c", +"charge":2, +"formula":"Zn" +}, +{ +"id":"hexACP_c", +"name":"Hexanoyl-[acp]", +"compartment":"c", +"charge":-1, +"formula":"C6H11OSR" +}, +{ +"id":"prephytedp_c", +"name":"Prephytoene diphosphate", +"compartment":"c", +"charge":-3, +"formula":"C40H65O7P2" +}, +{ +"id":"glu1sa_c", +"name":"(S)-4-Amino-5-oxopentanoate", +"compartment":"c", +"charge":0, +"formula":"C5H9NO3" +}, +{ +"id":"chor_c", +"name":"Chorismate", +"compartment":"c", +"charge":-2, +"formula":"C10H8O6" +}, +{ +"id":"4per_c", +"name":"4-Phospho-D-erythronate", +"compartment":"c", +"charge":-3, +"formula":"C4H6O8P" +}, +{ +"id":"hemeA_c", +"name":"Heme A", +"compartment":"c", +"charge":-2, +"formula":"C49FeH54N4O6" +}, +{ +"id":"glucys_c", +"name":"gamma-L-Glutamyl-L-cysteine", +"compartment":"c", +"charge":-1, +"formula":"C8H13N2O5S" +}, +{ +"id":"dmpp_c", +"name":"Dimethylallyl diphosphate", +"compartment":"c", +"charge":-3, +"formula":"C5H9O7P2" +}, +{ +"id":"inost_c", +"name":"myo-Inositol", +"compartment":"c", +"charge":0, +"formula":"C6H12O6" +}, +{ +"id":"4hthdp_c", +"name":"(2S,4S)-4-Hydroxy-2,3,4,5-tetrahydrodipicolinate", +"compartment":"c", +"charge":-2, +"formula":"C7H7NO5" +}, +{ +"id":"applp_c", +"name":"D-1-Aminopropan-2-ol O-phosphate", +"compartment":"c", +"charge":-1, +"formula":"C3H9NO4P" +}, +{ +"id":"oaa_c", +"name":"Oxaloacetate", +"compartment":"c", +"charge":-2, +"formula":"C4H2O5" +}, +{ +"id":"no3_c", +"name":"Nitrate", +"compartment":"c", +"charge":-1, +"formula":"NO3" +}, +{ +"id":"uamag_c", +"name":"UDP-N-acetylmuramoyl-L-alanyl-D-glutamate", +"compartment":"c", +"charge":-4, +"formula":"C28H39N5O23P2" +}, +{ +"id":"dialurate_c", +"name":"Dialurate", +"compartment":"c", +"charge":0, +"formula":"C4H4N2O3" +}, +{ +"id":"gcaro_c", +"name":"gamma-Carotene", +"compartment":"c", +"charge":0, +"formula":"C40H56" +}, +{ +"id":"ser__L_c", +"name":"L-Serine", +"compartment":"c", +"charge":0, +"formula":"C3H7NO3" +}, +{ +"id":"1pyr5c_c", +"name":"(S)-1-Pyrroline-5-carboxylate", +"compartment":"c", +"charge":-1, +"formula":"C5H6NO2" +}, +{ +"id":"ppi_c", +"name":"Diphosphate", +"compartment":"c", +"charge":-3, +"formula":"HO7P2" +}, +{ +"id":"ribflv_c", +"name":"Riboflavin", +"compartment":"c", +"charge":-1, +"formula":"C17H19N4O6" +}, +{ +"id":"tyr__L_c", +"name":"L-Tyrosine", +"compartment":"c", +"charge":0, +"formula":"C9H11NO3" +}, +{ +"id":"pap_c", +"name":"Adenosine 3',5'-bisphosphate", +"compartment":"c", +"charge":-4, +"formula":"C10H11N5O10P2" +}, +{ +"id":"oxa_c", +"name":"Oxalate", +"compartment":"c", +"charge":-2, +"formula":"C2O4" +}, +{ +"id":"25dhpp_c", +"name":"2,5-Diamino-6-(5'-phosphoribosylamino)-4-pyrimidineone", +"compartment":"c", +"charge":-2, +"formula":"C9H14N5O8P" +}, +{ +"id":"3nphb_c", +"name":"3-Nonaprenyl-4-hydroxybenzoate", +"compartment":"c", +"charge":-1, +"formula":"C52H77O3" +}, +{ +"id":"h2o_p", +"name":"H2O", +"compartment":"p", +"charge":0, +"formula":"H2O" +}, +{ +"id":"pre8_c", +"name":"Precorrin 8X", +"compartment":"c", +"charge":-7, +"formula":"C45H53N4O14" +}, +{ +"id":"3dhsk_c", +"name":"3-Dehydroshikimate", +"compartment":"c", +"charge":-1, +"formula":"C7H7O5" +}, +{ +"id":"dhpmp_c", +"name":"Dihydroneopterin phosphate", +"compartment":"c", +"charge":-2, +"formula":"C9H12N5O7P" +}, +{ +"id":"glyc__R_c", +"name":"D-Glycerate", +"compartment":"c", +"charge":-1, +"formula":"C3H5O4" +}, +{ +"id":"dad_5_c", +"name":"5'-Deoxyadenosine", +"compartment":"c", +"charge":0, +"formula":"C10H13N5O3" +}, +{ +"id":"2dda7p_c", +"name":"2-Dehydro-3-deoxy-D-arabino-heptonate 7-phosphate", +"compartment":"c", +"charge":-3, +"formula":"C7H10O10P" +}, +{ +"id":"acglu_c", +"name":"N-Acetyl-L-glutamate", +"compartment":"c", +"charge":-2, +"formula":"C7H9NO5" +}, +{ +"id":"imp_c", +"name":"IMP", +"compartment":"c", +"charge":-2, +"formula":"C10H11N4O8P" +}, +{ +"id":"nad_c", +"name":"NAD+", +"compartment":"c", +"charge":-1, +"formula":"C21H26N7O14P2" +}, +{ +"id":"dcamp_c", +"name":"N6-(1,2-Dicarboxyethyl)-AMP", +"compartment":"c", +"charge":-4, +"formula":"C14H14N5O11P" +}, +{ +"id":"bm_carbs_c", +"name":"Biomass metabolite: glycogen and carbohydrates", +"compartment":"c", +"charge":0, +"formula":"H66.6064C36.8088O30.674R4.2584" +}, +{ +"id":"2ahethmpp_c", +"name":"2-(alpha-Hydroxyethyl)thiamine diphosphate", +"compartment":"c", +"charge":-2, +"formula":"C14H20N4O8P2S" +}, +{ +"id":"imacp_c", +"name":"3-(Imidazol-4-yl)-2-oxopropyl phosphate", +"compartment":"c", +"charge":-2, +"formula":"C6H7N2O5P" +}, +{ +"id":"dmlz_c", +"name":"6,7-Dimethyl-8-(1-D-ribityl)lumazine", +"compartment":"c", +"charge":0, +"formula":"C13H18N4O6" +}, +{ +"id":"g3p_c", +"name":"D-Glyceraldehyde 3-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C3H5O6P" +}, +{ +"id":"dadp_c", +"name":"dADP", +"compartment":"c", +"charge":-3, +"formula":"C10H12N5O9P2" +}, +{ +"id":"o2_p", +"name":"Oxygen", +"compartment":"p", +"charge":0, +"formula":"O2" +}, +{ +"id":"fmnh2_c", +"name":"Reduced FMN", +"compartment":"c", +"charge":-2, +"formula":"C17H21N4O9P" +}, +{ +"id":"nadph_c", +"name":"NADPH", +"compartment":"c", +"charge":-4, +"formula":"C21H26N7O17P3" +}, +{ +"id":"cbp_c", +"name":"Carbamoyl phosphate", +"compartment":"c", +"charge":-2, +"formula":"CH2NO5P" +}, +{ +"id":"mi3p__D_c", +"name":"1D-myo-Inositol 3-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C6H11O9P" +}, +{ +"id":"tmrs2eACP_c", +"name":"trans-Tetradec-2-enoyl-[acp]", +"compartment":"c", +"charge":-1, +"formula":"C14H25OSR" +}, +{ +"id":"6pgl_c", +"name":"D-Glucono-1,5-lactone 6-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C6H9O9P" +}, +{ +"id":"ppp9_c", +"name":"Protoporphyrin", +"compartment":"c", +"charge":-2, +"formula":"C34H32N4O4" +}, +{ +"id":"mobd_c", +"name":"Molybdate", +"compartment":"c", +"charge":-2, +"formula":"MoO4" +}, +{ +"id":"bm_memlip_c", +"name":"Lipid component of biomass", +"compartment":"c", +"charge":0, +"formula":"H101.475169041P0.2726231733C54.8993880528O14.1276624433S0.12040388398R-1.0" +}, +{ +"id":"dad_2_c", +"name":"Deoxyadenosine", +"compartment":"c", +"charge":0, +"formula":"C10H13N5O3" +}, +{ +"id":"biliverd_c", +"name":"Biliverdin", +"compartment":"c", +"charge":-2, +"formula":"C33H32N4O6" +}, +{ +"id":"pre4_c", +"name":"Precorrin 4", +"compartment":"c", +"charge":-8, +"formula":"C44H44N4O17" +}, +{ +"id":"ggdp_c", +"name":"Geranylgeranyl diphosphate", +"compartment":"c", +"charge":-3, +"formula":"C20H33O7P2" +}, +{ +"id":"pre3a_c", +"name":"Precorrin 3A", +"compartment":"c", +"charge":-7, +"formula":"C43H43N4O16" +}, +{ +"id":"rb15bp_c", +"name":"D-Ribulose 1,5-bisphosphate", +"compartment":"c", +"charge":-4, +"formula":"C5H8O11P2" +}, +{ +"id":"3hbutACP_c", +"name":"(3R)-3-Hydroxybutanoyl-[acyl-carrier protein]", +"compartment":"c", +"charge":-1, +"formula":"C4H7O2SR" +}, +{ +"id":"histd_c", +"name":"L-Histidinol", +"compartment":"c", +"charge":1, +"formula":"C6H12N3O" +}, +{ +"id":"pphn_c", +"name":"Prephenate", +"compartment":"c", +"charge":-2, +"formula":"C10H8O6" +}, +{ +"id":"nicrnt_c", +"name":"Nicotinate D-ribonucleotide", +"compartment":"c", +"charge":-2, +"formula":"C11H12NO9P" +}, +{ +"id":"3ooctdACP_c", +"name":"3-Oxostearoyl-[acp]", +"compartment":"c", +"charge":-1, +"formula":"C18H33O2SR" +}, +{ +"id":"atp_c", +"name":"ATP", +"compartment":"c", +"charge":-4, +"formula":"C10H12N5O13P3" +}, +{ +"id":"lipidX2_c", +"name":"2,3-Bis(3-hydroxyhexadecanoyl)-beta-D-glucosaminyl 1-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C38H72NO12P" +}, +{ +"id":"2pg_c", +"name":"2-Phospho-D-glycerate", +"compartment":"c", +"charge":-3, +"formula":"C3H4O7P" +}, +{ +"id":"pppg9_c", +"name":"Protoporphyrinogen IX", +"compartment":"c", +"charge":-2, +"formula":"C34H38N4O4" +}, +{ +"id":"uagmda_c", +"name":"Undecaprenyl-diphospho-N-acetylmuramoyl-L-alanyl-D-glutamyl-meso-2,6-diaminopimeloyl-D-alanyl-D-alanine", +"compartment":"c", +"charge":-4, +"formula":"C87H139N7O23P2" +}, +{ +"id":"met__L_c", +"name":"L-Methionine", +"compartment":"c", +"charge":0, +"formula":"C5H11NO2S" +}, +{ +"id":"phyto_c", +"name":"Phytoene", +"compartment":"c", +"charge":0, +"formula":"C40H64" +}, +{ +"id":"4hpro__LT_c", +"name":"trans-4-Hydroxy-L-proline", +"compartment":"c", +"charge":0, +"formula":"C5H9NO3" +}, +{ +"id":"1p3h5c_c", +"name":"L-1-Pyrroline-3-hydroxy-5-carboxylate", +"compartment":"c", +"charge":-1, +"formula":"C5H6NO3" +}, +{ +"id":"hemeO_c", +"name":"Heme O", +"compartment":"c", +"charge":-2, +"formula":"C49FeH56N4O5" +}, +{ +"id":"lgt__S_c", +"name":"(R)-S-Lactoylglutathione", +"compartment":"c", +"charge":-1, +"formula":"C13H20N3O8S" +}, +{ +"id":"h2o_u", +"name":"H2O", +"compartment":"u", +"charge":0, +"formula":"H2O" +}, +{ +"id":"adcobhex_c", +"name":"Adenosyl cobyrinate hexaamide", +"compartment":"c", +"charge":0, +"formula":"C55CoH76N15O11" +}, +{ +"id":"co_c", +"name":"CO", +"compartment":"c", +"charge":0, +"formula":"CO" +}, +{ +"id":"sbzcoa_c", +"name":"2-Succinylbenzoyl-CoA", +"compartment":"c", +"charge":-5, +"formula":"C32H39N7O20P3S" +}, +{ +"id":"e4p_c", +"name":"D-Erythrose 4-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C4H7O7P" +}, +{ +"id":"accoa_c", +"name":"Acetyl-CoA", +"compartment":"c", +"charge":-4, +"formula":"C23H34N7O17P3S" +}, +{ +"id":"asn__L_c", +"name":"L-Asparagine", +"compartment":"c", +"charge":0, +"formula":"C4H8N2O3" +}, +{ +"id":"mal__L_c", +"name":"(S)-Malate", +"compartment":"c", +"charge":-2, +"formula":"C4H4O5" +}, +{ +"id":"ocdcaACP_c", +"name":"Octadecanoyl-[acyl-carrier protein]", +"compartment":"c", +"charge":-1, +"formula":"C18H35OSR" +}, +{ +"id":"ichor_c", +"name":"Isochorismate", +"compartment":"c", +"charge":-2, +"formula":"C10H8O6" +}, +{ +"id":"pant__R_c", +"name":"(R)-Pantoate", +"compartment":"c", +"charge":-1, +"formula":"C6H11O4" +}, +{ +"id":"phdp_c", +"name":"Phytyl diphosphate", +"compartment":"c", +"charge":-3, +"formula":"C20H39O7P2" +}, +{ +"id":"r5p_c", +"name":"D-Ribose 5-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C5H9O8P" +}, +{ +"id":"grdp_c", +"name":"Geranyl diphosphate", +"compartment":"c", +"charge":-3, +"formula":"C10H17O7P2" +}, +{ +"id":"ohpb_c", +"name":"2-Oxo-3-hydroxy-4-phosphobutanoate", +"compartment":"c", +"charge":-3, +"formula":"C4H4O8P" +}, +{ +"id":"ipdp_c", +"name":"Isopentenyl diphosphate", +"compartment":"c", +"charge":-3, +"formula":"C5H9O7P2" +}, +{ +"id":"arg__L_c", +"name":"L-Arginine", +"compartment":"c", +"charge":1, +"formula":"C6H15N4O2" +}, +{ +"id":"phe__L_c", +"name":"L-Phenylalanine", +"compartment":"c", +"charge":0, +"formula":"C9H11NO2" +}, +{ +"id":"acgam1p_c", +"name":"N-Acetyl-alpha-D-glucosamine 1-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C8H14NO9P" +}, +{ +"id":"nadp_c", +"name":"NADP+", +"compartment":"c", +"charge":-3, +"formula":"C21H25N7O17P3" +}, +{ +"id":"3ig3p_c", +"name":"Indoleglycerol phosphate", +"compartment":"c", +"charge":-2, +"formula":"C11H12NO6P" +}, +{ +"id":"val__L_c", +"name":"L-Valine", +"compartment":"c", +"charge":0, +"formula":"C5H11NO2" +}, +{ +"id":"dmbzid_c", +"name":"Dimethylbenzimidazole", +"compartment":"c", +"charge":0, +"formula":"C9H10N2" +}, +{ +"id":"2a3pp_c", +"name":"2-Amino-3-oxo-4-phosphonooxybutyrate", +"compartment":"c", +"charge":-2, +"formula":"C4H6NO7P" +}, +{ +"id":"3mob_c", +"name":"3-Methyl-2-oxobutanoic acid", +"compartment":"c", +"charge":-1, +"formula":"C5H7O3" +}, +{ +"id":"5prdmbz_c", +"name":"N1-(5-Phospho-alpha-D-ribosyl)-5,6-dimethylbenzimidazole", +"compartment":"c", +"charge":-2, +"formula":"C14H17N2O7P" +}, +{ +"id":"rdmbzi_c", +"name":"alpha-Ribazole", +"compartment":"c", +"charge":0, +"formula":"C14H18N2O4" +}, +{ +"id":"5mthf_c", +"name":"5-Methyltetrahydrofolate", +"compartment":"c", +"charge":-2, +"formula":"C20H23N7O6" +}, +{ +"id":"3hoctACP_c", +"name":"(3R)-3-Hydroxyoctanoyl-[acyl-carrier protein]", +"compartment":"c", +"charge":-1, +"formula":"C8H15O2SR" +}, +{ +"id":"dvpchlda_c", +"name":"Divinylprotochlorophyllide", +"compartment":"c", +"charge":-1, +"formula":"C35H29MgN4O5" +}, +{ +"id":"10fthf_c", +"name":"10-Formyltetrahydrofolate", +"compartment":"c", +"charge":-2, +"formula":"C20H21N7O7" +}, +{ +"id":"4r5au_c", +"name":"5-Amino-6-(1-D-ribitylamino)uracil", +"compartment":"c", +"charge":0, +"formula":"C9H16N4O6" +}, +{ +"id":"skm_c", +"name":"Shikimate", +"compartment":"c", +"charge":-1, +"formula":"C7H9O5" +}, +{ +"id":"gar_c", +"name":"5'-Phosphoribosylglycinamide", +"compartment":"c", +"charge":-1, +"formula":"C7H14N2O8P" +}, +{ +"id":"for_c", +"name":"Formate", +"compartment":"c", +"charge":-1, +"formula":"CHO2" +}, +{ +"id":"dmtphllqne_c", +"name":"2-Phytyl-1,4-naphthoquinone", +"compartment":"c", +"charge":0, +"formula":"C30H44O2" +}, +{ +"id":"skm5p_c", +"name":"Shikimate 3-phosphate", +"compartment":"c", +"charge":-3, +"formula":"C7H8O8P" +}, +{ +"id":"citm_c", +"name":"(R)-2-Methylmalate", +"compartment":"c", +"charge":-2, +"formula":"C5H6O5" +}, +{ +"id":"udpg_c", +"name":"UDP-glucose", +"compartment":"c", +"charge":-2, +"formula":"C15H22N2O17P2" +}, +{ +"id":"5mta_c", +"name":"5'-Methylthioadenosine", +"compartment":"c", +"charge":0, +"formula":"C11H15N5O3S" +}, +{ +"id":"dcdp_c", +"name":"dCDP", +"compartment":"c", +"charge":-3, +"formula":"C9H12N3O10P2" +}, +{ +"id":"pccu1p_u", +"name":"Reduced plastocyanin", +"compartment":"u", +"charge":0, +"formula":"R" +}, +{ +"id":"myrsACP_c", +"name":"Tetradecanoyl-[acp]", +"compartment":"c", +"charge":-1, +"formula":"C14H27ORS" +}, +{ +"id":"glutrna_c", +"name":"L-Glutamyl-tRNA(Glu)", +"compartment":"c", +"charge":0, +"formula":"C20H28N6O13PR" +}, +{ +"id":"adcobdam_c", +"name":"Adenosyl cobyrinate a,c diamide", +"compartment":"c", +"charge":-4, +"formula":"C55CoH68N11O15" +}, +{ +"id":"nh4_c", +"name":"ammonium ion", +"compartment":"c", +"charge":1, +"formula":"H4N" +}, +{ +"id":"hom__L_c", +"name":"L-Homoserine", +"compartment":"c", +"charge":0, +"formula":"C4H9NO3" +}, +{ +"id":"acser_c", +"name":"O-Acetyl-L-serine", +"compartment":"c", +"charge":0, +"formula":"C5H9NO4" +}, +{ +"id":"pre5_c", +"name":"Precorrin 5", +"compartment":"c", +"charge":-8, +"formula":"C45H46N4O17" +}, +{ +"id":"fdxrd_c", +"name":"Reduced ferredoxin", +"compartment":"c", +"charge":2, +"formula":"R" +}, +{ +"id":"sucbz_c", +"name":"2-Succinylbenzoate", +"compartment":"c", +"charge":-2, +"formula":"C11H8O5" +}, +{ +"id":"prpp_c", +"name":"5-Phospho-alpha-D-ribose 1-diphosphate", +"compartment":"c", +"charge":-5, +"formula":"C5H8O14P3" +}, +{ +"id":"5aizc_c", +"name":"1-(5-Phospho-D-ribosyl)-5-amino-4-imidazolecarboxylate", +"compartment":"c", +"charge":-3, +"formula":"C9H11N3O9P" +}, +{ +"id":"dtdp4d6dm_c", +"name":"dTDP-4-dehydro-6-deoxy-L-mannose", +"compartment":"c", +"charge":-2, +"formula":"C16H22N2O15P2" +}, +{ +"id":"but2eACP_c", +"name":"But-2-enoyl-[acyl-carrier protein]", +"compartment":"c", +"charge":-1, +"formula":"C4H5OSR" +}, +{ +"id":"chlda_c", +"name":"Chlorophyllide", +"compartment":"c", +"charge":-1, +"formula":"C35H33MgN4O5" +}, +{ +"id":"h_u", +"name":"H+", +"compartment":"u", +"charge":1, +"formula":"H" +}, +{ +"id":"gly_c", +"name":"Glycine", +"compartment":"c", +"charge":0, +"formula":"C2H5NO2" +}, +{ +"id":"uppg3_c", +"name":"Uroporphyrinogen III", +"compartment":"c", +"charge":-8, +"formula":"C40H36N4O16" +}, +{ +"id":"dtdp_c", +"name":"dTDP", +"compartment":"c", +"charge":-3, +"formula":"C10H13N2O11P2" +}, +{ +"id":"uamr_c", +"name":"UDP-N-acetylmuramate", +"compartment":"c", +"charge":-3, +"formula":"C20H28N3O19P2" +}, +{ +"id":"trp__L_c", +"name":"L-Tryptophan", +"compartment":"c", +"charge":0, +"formula":"C11H12N2O2" +}, +{ +"id":"udcpdp_c", +"name":"di-trans,poly-cis-Undecaprenyl diphosphate", +"compartment":"c", +"charge":-3, +"formula":"C55H89O7P2" +}, +{ +"id":"lipidAds2_c", +"name":"Lipid A Disaccharide (cyanobacterial)", +"compartment":"c", +"charge":-2, +"formula":"C76H143N2O20P" +}, +{ +"id":"hpyr_c", +"name":"Hydroxypyruvate", +"compartment":"c", +"charge":-1, +"formula":"C3H3O4" +}, +{ +"id":"hcys__L_c", +"name":"L-Homocysteine", +"compartment":"c", +"charge":0, +"formula":"C4H9NO2S" +}, +{ +"id":"prbatp_c", +"name":"1-(5-Phospho-D-ribosyl)-ATP", +"compartment":"c", +"charge":-6, +"formula":"C15H19N5O20P4" +}, +{ +"id":"indole_c", +"name":"Indole", +"compartment":"c", +"charge":0, +"formula":"C8H7N" +}, +{ +"id":"dscl_c", +"name":"Precorrin 2", +"compartment":"c", +"charge":-7, +"formula":"C42H41N4O16" +}, +{ +"id":"glycogen_c", +"name":"Glycogen", +"compartment":"c", +"charge":0, +"formula":"C12H21O10R" +}, +{ +"id":"5aop_c", +"name":"5-Aminolevulinate", +"compartment":"c", +"charge":0, +"formula":"C5H9NO3" +}, +{ +"id":"gthrd_c", +"name":"Glutathione", +"compartment":"c", +"charge":-1, +"formula":"C10H16N3O6S" +}, +{ +"id":"fgam_c", +"name":"5'-Phosphoribosyl-N-formylglycinamide", +"compartment":"c", +"charge":-2, +"formula":"C8H13N2O9P" +}, +{ +"id":"adpglc_c", +"name":"ADP-glucose", +"compartment":"c", +"charge":-2, +"formula":"C16H23N5O15P2" +}, +{ +"id":"air_c", +"name":"Aminoimidazole ribotide", +"compartment":"c", +"charge":-2, +"formula":"C8H12N3O7P" +}, +{ +"id":"3hoctaACP_c", +"name":"3-Hydroxyoctadecanoyl-[acp]", +"compartment":"c", +"charge":-1, +"formula":"C18H35O2SR" +}, +{ +"id":"hmbil_c", +"name":"Hydroxymethylbilane", +"compartment":"c", +"charge":-8, +"formula":"C40H38N4O17" +}, +{ +"id":"3psme_c", +"name":"5-O-(1-Carboxyvinyl)-3-phosphoshikimate", +"compartment":"c", +"charge":-4, +"formula":"C10H9O10P" +}, +{ +"id":"thrp_c", +"name":"L-Threonine O-3-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C4H8NO6P" +}, +{ +"id":"akg_c", +"name":"2-Oxoglutarate", +"compartment":"c", +"charge":-2, +"formula":"C5H4O5" +}, +{ +"id":"dtdpglu_c", +"name":"dTDP-glucose", +"compartment":"c", +"charge":-2, +"formula":"C16H24N2O16P2" +}, +{ +"id":"thmpp_c", +"name":"Thiamin diphosphate", +"compartment":"c", +"charge":-2, +"formula":"C12H16N4O7P2S" +}, +{ +"id":"tpalm2eACP_c", +"name":"trans-Hexadec-2-enoyl-[acp]", +"compartment":"c", +"charge":-1, +"formula":"C16H29OSR" +}, +{ +"id":"h2o2_c", +"name":"H2O2", +"compartment":"c", +"charge":0, +"formula":"H2O2" +}, +{ +"id":"alaala_c", +"name":"D-Alanyl-D-alanine", +"compartment":"c", +"charge":0, +"formula":"C6H12N2O3" +}, +{ +"id":"pran_c", +"name":"N-(5-Phospho-D-ribosyl)anthranilate", +"compartment":"c", +"charge":-3, +"formula":"C12H13NO9P" +}, +{ +"id":"tddec2eACP_c", +"name":"trans-Dodec-2-enoyl-[acp]", +"compartment":"c", +"charge":-1, +"formula":"C12H21OSR" +}, +{ +"id":"icit_c", +"name":"Isocitrate", +"compartment":"c", +"charge":-3, +"formula":"C6H5O7" +}, +{ +"id":"3ooctACP_c", +"name":"3-Oxooctanoyl-[acp]", +"compartment":"c", +"charge":-1, +"formula":"C8H13O2SR" +}, +{ +"id":"4ampm_c", +"name":"4-Amino-2-methyl-5-phosphomethylpyrimidine", +"compartment":"c", +"charge":-2, +"formula":"C6H8N3O4P" +}, +{ +"id":"adn_c", +"name":"Adenosine", +"compartment":"c", +"charge":0, +"formula":"C10H13N5O4" +}, +{ +"id":"4pasp_c", +"name":"4-Phospho-L-aspartate", +"compartment":"c", +"charge":-2, +"formula":"C4H6NO7P" +}, +{ +"id":"3php_c", +"name":"3-Phosphonooxypyruvate", +"compartment":"c", +"charge":-3, +"formula":"C3H2O7P" +}, +{ +"id":"ppbng_c", +"name":"Porphobilinogen", +"compartment":"c", +"charge":-1, +"formula":"C10H13N2O4" +}, +{ +"id":"acorn_c", +"name":"N-Acetylornithine", +"compartment":"c", +"charge":0, +"formula":"C7H14N2O3" +}, +{ +"id":"ile__L_c", +"name":"L-Isoleucine", +"compartment":"c", +"charge":0, +"formula":"C6H13NO2" +}, +{ +"id":"3c3hmp_c", +"name":"(2S)-2-Isopropylmalate", +"compartment":"c", +"charge":-2, +"formula":"C7H10O5" +}, +{ +"id":"phthr_c", +"name":"O-Phospho-4-hydroxy-L-threonine", +"compartment":"c", +"charge":-2, +"formula":"C4H8NO7P" +}, +{ +"id":"cynt_c", +"name":"Cyanate", +"compartment":"c", +"charge":-1, +"formula":"CNO" +}, +{ +"id":"pqh2_c", +"name":"Plastoquinol-9", +"compartment":"c", +"charge":0, +"formula":"C53H82O2" +}, +{ +"id":"cthzp_c", +"name":"4-Methyl-5-[2-(phosphonooxy)ethyl]-1,3-thiazole-2-carboxylate", +"compartment":"c", +"charge":-3, +"formula":"C7H7NO6PS" +}, +{ +"id":"dna5mtc_c", +"name":"DNA 5-methylcytosine", +"compartment":"c", +"charge":0, +"formula":"CH3R" +}, +{ +"id":"dna_c", +"name":"DNA", +"compartment":"c", +"charge":0, +"formula":"RH" +}, +{ +"id":"14glucan_c", +"name":"1,4-alpha-D-glucan", +"compartment":"c", +"charge":0, +"formula":"C6H11O5R" +}, +{ +"id":"cobalt2_p", +"name":"Cobalt ion", +"compartment":"p", +"charge":2, +"formula":"Co" +}, +{ +"id":"zn2_p", +"name":"Zinc", +"compartment":"p", +"charge":2, +"formula":"Zn" +}, +{ +"id":"so4_p", +"name":"Sulfate", +"compartment":"p", +"charge":-2, +"formula":"O4S" +}, +{ +"id":"spmd_p", +"name":"Spermidine", +"compartment":"p", +"charge":3, +"formula":"C7H22N3" +}, +{ +"id":"ca2_p", +"name":"Calcium", +"compartment":"p", +"charge":2, +"formula":"Ca" +}, +{ +"id":"nh4_p", +"name":"ammonium ion", +"compartment":"p", +"charge":1, +"formula":"H4N" +}, +{ +"id":"arg__L_p", +"name":"L-Arginine", +"compartment":"p", +"charge":1, +"formula":"C6H15N4O2" +}, +{ +"id":"gln__L_p", +"name":"L-Glutamine", +"compartment":"p", +"charge":0, +"formula":"C5H10N2O3" +}, +{ +"id":"mn2_p", +"name":"Manganese", +"compartment":"p", +"charge":2, +"formula":"Mn" +}, +{ +"id":"hco3_p", +"name":"HCO3-", +"compartment":"p", +"charge":-1, +"formula":"CHO3" +}, +{ +"id":"mg2_p", +"name":"Magnesium", +"compartment":"p", +"charge":2, +"formula":"Mg" +}, +{ +"id":"ptrc_p", +"name":"Putrescine", +"compartment":"p", +"charge":2, +"formula":"C4H14N2" +}, +{ +"id":"fe2_p", +"name":"Fe2+", +"compartment":"p", +"charge":2, +"formula":"Fe" +}, +{ +"id":"cu2_p", +"name":"Copper", +"compartment":"p", +"charge":2, +"formula":"Cu" +}, +{ +"id":"k_p", +"name":"Potassium", +"compartment":"p", +"charge":1, +"formula":"K" +}, +{ +"id":"no3_p", +"name":"Nitrate", +"compartment":"p", +"charge":-1, +"formula":"NO3" +}, +{ +"id":"fe3_p", +"name":"Fe3+", +"compartment":"p", +"charge":3, +"formula":"Fe" +}, +{ +"id":"mobd_p", +"name":"Molybdate", +"compartment":"p", +"charge":-2, +"formula":"MoO4" +}, +{ +"id":"ni2_p", +"name":"Nickel", +"compartment":"p", +"charge":2, +"formula":"Ni" +}, +{ +"id":"cynt_p", +"name":"Cyanate", +"compartment":"p", +"charge":-1, +"formula":"CNO" +}, +{ +"id":"pi_p", +"name":"Orthophosphate", +"compartment":"p", +"charge":-2, +"formula":"HO4P" +}, +{ +"id":"h2o_e", +"name":"H2O", +"compartment":"e", +"charge":0, +"formula":"H2O" +}, +{ +"id":"o2_e", +"name":"Oxygen", +"compartment":"e", +"charge":0, +"formula":"O2" +}, +{ +"id":"co2_e", +"name":"CO2", +"compartment":"e", +"charge":0, +"formula":"CO2" +}, +{ +"id":"his__L_e", +"name":"L-Histidine", +"compartment":"e", +"charge":0, +"formula":"C6H9N3O2" +}, +{ +"id":"cobalt2_e", +"name":"Cobalt ion", +"compartment":"e", +"charge":2, +"formula":"Co" +}, +{ +"id":"zn2_e", +"name":"Zinc", +"compartment":"e", +"charge":2, +"formula":"Zn" +}, +{ +"id":"so4_e", +"name":"Sulfate", +"compartment":"e", +"charge":-2, +"formula":"O4S" +}, +{ +"id":"spmd_e", +"name":"Spermidine", +"compartment":"e", +"charge":3, +"formula":"C7H22N3" +}, +{ +"id":"ca2_e", +"name":"Calcium", +"compartment":"e", +"charge":2, +"formula":"Ca" +}, +{ +"id":"nh4_e", +"name":"ammonium ion", +"compartment":"e", +"charge":1, +"formula":"H4N" +}, +{ +"id":"arg__L_e", +"name":"L-Arginine", +"compartment":"e", +"charge":1, +"formula":"C6H15N4O2" +}, +{ +"id":"gln__L_e", +"name":"L-Glutamine", +"compartment":"e", +"charge":0, +"formula":"C5H10N2O3" +}, +{ +"id":"mn2_e", +"name":"Manganese", +"compartment":"e", +"charge":2, +"formula":"Mn" +}, +{ +"id":"hco3_e", +"name":"HCO3-", +"compartment":"e", +"charge":-1, +"formula":"CHO3" +}, +{ +"id":"mg2_e", +"name":"Magnesium", +"compartment":"e", +"charge":2, +"formula":"Mg" +}, +{ +"id":"ptrc_e", +"name":"Putrescine", +"compartment":"e", +"charge":2, +"formula":"C4H14N2" +}, +{ +"id":"fe2_e", +"name":"Fe2+", +"compartment":"e", +"charge":2, +"formula":"Fe" +}, +{ +"id":"cu2_e", +"name":"Copper", +"compartment":"e", +"charge":2, +"formula":"Cu" +}, +{ +"id":"k_e", +"name":"Potassium", +"compartment":"e", +"charge":1, +"formula":"K" +}, +{ +"id":"no3_e", +"name":"Nitrate", +"compartment":"e", +"charge":-1, +"formula":"NO3" +}, +{ +"id":"fe3_e", +"name":"Fe3+", +"compartment":"e", +"charge":3, +"formula":"Fe" +}, +{ +"id":"mobd_e", +"name":"Molybdate", +"compartment":"e", +"charge":-2, +"formula":"MoO4" +}, +{ +"id":"ni2_e", +"name":"Nickel", +"compartment":"e", +"charge":2, +"formula":"Ni" +}, +{ +"id":"na1_e", +"name":"Sodium", +"compartment":"e", +"charge":1, +"formula":"Na" +}, +{ +"id":"cynt_e", +"name":"Cyanate", +"compartment":"e", +"charge":-1, +"formula":"CNO" +}, +{ +"id":"co2_p", +"name":"CO2", +"compartment":"p", +"charge":0, +"formula":"CO2" +}, +{ +"id":"h_e", +"name":"H+", +"compartment":"e", +"charge":1, +"formula":"H" +}, +{ +"id":"na1_p", +"name":"Sodium", +"compartment":"p", +"charge":1, +"formula":"Na" +}, +{ +"id":"pi_e", +"name":"Orthophosphate", +"compartment":"e", +"charge":-2, +"formula":"HO4P" +}, +{ +"id":"dkmpp_c", +"name":"2,3-diketo-5-methylthio-1-phosphopentane", +"compartment":"c", +"charge":-2, +"formula":"C6H9O6PS" +}, +{ +"id":"dhmtp_c", +"name":"1,2-Dihydroxy-5-(methylthio)pent-1-en-3-one", +"compartment":"c", +"charge":0, +"formula":"C6H10O3S" +}, +{ +"id":"2kmb_c", +"name":"4-Methylthio-2-oxobutanoic acid", +"compartment":"c", +"charge":-1, +"formula":"C5H7O3S" +}, +{ +"id":"tczcaro_c", +"name":"9,15,9-tricis-zeta-Carotene", +"compartment":"c", +"charge":0, +"formula":"C40H60" +}, +{ +"id":"dczcaro_c", +"name":"9,9-dicis-zeta-Carotene", +"compartment":"c", +"charge":0, +"formula":"C40H60" +}, +{ +"id":"ttclyco_c", +"name":"7,9,7,9-tetracis-Lycopene", +"compartment":"c", +"charge":0, +"formula":"C40H56" +}, +{ +"id":"phptna_c", +"name":"pheophytin a", +"compartment":"c", +"charge":0, +"formula":"C55H74N4O5" +}, +{ +"id":"phphbda_c", +"name":"pheophorbide a", +"compartment":"c", +"charge":-1, +"formula":"C35H35N4O5" +}, +{ +"id":"phytol_c", +"name":"phytol", +"compartment":"c", +"charge":0, +"formula":"C20H40O" +}, +{ +"id":"rcc_c", +"name":"red chlorophyll catabolite", +"compartment":"c", +"charge":-1, +"formula":"C35H37N4O7" +}, +{ +"id":"6pthp_c", +"name":"6-pyruvoyl-5,6,7,8-tetrahydropterin", +"compartment":"c", +"charge":0, +"formula":"C9H11N5O3" +}, +{ +"id":"thbpt_c", +"name":"(6R)-5,6,7,8-tetrahydrobiopterin", +"compartment":"c", +"charge":0, +"formula":"C9H15N5O3" +}, +{ +"id":"gthbpt_c", +"name":"1-O-(L-erythro-biopterin-2-yl)-a-glucose", +"compartment":"c", +"charge":0, +"formula":"C15H25N5O8" +}, +{ +"id":"iscssh_c", +"name":"Thiamine biosynthesis intermediate 3", +"compartment":"c", +"charge":-1, +"formula":"RS2" +}, +{ +"id":"iscsh_c", +"name":"Thiamine biosynthesis intermediate 2", +"compartment":"c", +"charge":0, +"formula":"RSH" +}, +{ +"id":"this_c", +"name":"Thiamine biosynthesis intermediate 1", +"compartment":"c", +"charge":-1, +"formula":"RCO2" +}, +{ +"id":"athis_c", +"name":"Thiamine biosynthesis intermediate 4", +"compartment":"c", +"charge":-1, +"formula":"C11H12N5O8PR" +}, +{ +"id":"thissh_c", +"name":"Thiamine biosynthesis intermediate 5", +"compartment":"c", +"charge":-1, +"formula":"RCOS" +}, +{ +"id":"imgly_c", +"name":"Iminoglycine", +"compartment":"c", +"charge":0, +"formula":"C2H3NO2" +}, +{ +"id":"2c4mthzep_c", +"name":"2-[(2R,5Z)-2-Carboxy-4-methylthiazol-5(2H)-ylidene]ethyl phosphate", +"compartment":"c", +"charge":-3, +"formula":"C7H7NO6PS" +}, +{ +"id":"sheme_c", +"name":"siroheme", +"compartment":"c", +"charge":-8, +"formula":"C42H36FeN4O16" +}, +{ +"id":"malcoame_c", +"name":"Malonyl-CoA methyl ester", +"compartment":"c", +"charge":-4, +"formula":"C25H36N7O19P3S" +}, +{ +"id":"ogmeACP_c", +"name":"3-Oxo-glutaryl-[acyl-carrier protein] methyl ester", +"compartment":"c", +"charge":-1, +"formula":"C6H7O4SR" +}, +{ +"id":"hgmeACP_c", +"name":"3-Hydroxyglutaryl-[acyl-carrier protein] methyl ester", +"compartment":"c", +"charge":-1, +"formula":"C6H9O4SR" +}, +{ +"id":"egmeACP_c", +"name":"Enoylglutaryl-[acyl-carrier protein] methyl ester", +"compartment":"c", +"charge":-1, +"formula":"C6H7O3SR" +}, +{ +"id":"gmeACP_c", +"name":"Glutaryl-[acyl-carrier protein] methyl ester", +"compartment":"c", +"charge":-1, +"formula":"C6H9O3SR" +}, +{ +"id":"opmeACP_c", +"name":"3-Oxo-pimeloyl-[acyl-carrier protein] methyl ester", +"compartment":"c", +"charge":-1, +"formula":"C8H11O4SR" +}, +{ +"id":"hpmeACP_c", +"name":"3-Hydroxypimeloyl-[acyl-carrier protein] methyl ester", +"compartment":"c", +"charge":-1, +"formula":"C8H13O4SR" +}, +{ +"id":"epmeACP_c", +"name":"Enoylpimeloyl-[acyl-carrier protein] methyl ester", +"compartment":"c", +"charge":-1, +"formula":"C8H11O3SR" +}, +{ +"id":"pmeACP_c", +"name":"Pimeloyl-[acyl-carrier protein] methyl ester", +"compartment":"c", +"charge":-1, +"formula":"C8H13O3SR" +}, +{ +"id":"pimACP_c", +"name":"Pimeloyl-[acyl-carrier protein]", +"compartment":"c", +"charge":-1, +"formula":"C7H11O3SR" +}, +{ +"id":"meoh_c", +"name":"Methanol", +"compartment":"c", +"charge":0, +"formula":"CH4O1" +}, +{ +"id":"8aonn_c", +"name":"8-Amino-7-oxononanoate", +"compartment":"c", +"charge":0, +"formula":"C9H17NO3" +}, +{ +"id":"dann_c", +"name":"7,8-Diaminononanoate", +"compartment":"c", +"charge":1, +"formula":"C9H21N2O2" +}, +{ +"id":"amob_c", +"name":"S-Adenosyl-4-methylthio-2-oxobutanoate", +"compartment":"c", +"charge":0, +"formula":"C15H19N5O6S" +}, +{ +"id":"dtbt_c", +"name":"Dethiobiotin", +"compartment":"c", +"charge":-1, +"formula":"C10H17N2O3" +}, +{ +"id":"btn_c", +"name":"Biotin", +"compartment":"c", +"charge":-1, +"formula":"C10H15N2O3S" +}, +{ +"id":"btamp_c", +"name":"Biotinyl 5 AMP C20H27N7O9PS", +"compartment":"c", +"charge":-1, +"formula":"C20H27N7O9PS" +}, +{ +"id":"accp_c", +"name":"apo-carboxylase", +"compartment":"c", +"charge":0, +"formula":"C7H13N3O2R2" +}, +{ +"id":"btnCCP_c", +"name":"Holo-[carboxylase]", +"compartment":"c", +"charge":0, +"formula":"C17H27N5O4SR2" +}, +{ +"id":"octapb_c", +"name":"Octanoate (protein bound)", +"compartment":"c", +"charge":1, +"formula":"C8H15O" +}, +{ +"id":"lipopb_c", +"name":"Lipoate (protein bound)", +"compartment":"c", +"charge":1, +"formula":"C8H13OS2" +}, +{ +"id":"lipoate_c", +"name":"Lipoate", +"compartment":"c", +"charge":-1, +"formula":"C8H13O2S2" +}, +{ +"id":"lipamp_c", +"name":"Lipoyl-AMP", +"compartment":"c", +"charge":-1, +"formula":"C18H25N5O8PS2" +}, +{ +"id":"meoh_p", +"name":"Methanol", +"compartment":"p", +"charge":0, +"formula":"CH4O1" +}, +{ +"id":"meoh_e", +"name":"Methanol", +"compartment":"e", +"charge":0, +"formula":"CH4O1" +}, +{ +"id":"cph4_c", +"name":"6-carboxy-5,6,7,8-tetrahydropterin", +"compartment":"c", +"charge":-1, +"formula":"C7H8N5O3" +}, +{ +"id":"cdg_c", +"name":"7-deaza-7-carboxyguanine", +"compartment":"c", +"charge":-1, +"formula":"C7H5N4O3" +}, +{ +"id":"preq0_c", +"name":"7-cyano-7-carbaguanine", +"compartment":"c", +"charge":0, +"formula":"C7H5N5O" +}, +{ +"id":"preq1_c", +"name":"7-aminomethyl-7-deazaguanine", +"compartment":"c", +"charge":1, +"formula":"C7H10N5O" +}, +{ +"id":"preqtrna_c", +"name":"7-aminomethyl-7-deazaguaninyl tRNA", +"compartment":"a", +"charge":1, +"formula":"C7H10N5O" +}, +{ +"id":"epxqtrna_c", +"name":"epoxyquenosine34 tRNA", +"compartment":"c", +"charge":1, +"formula":"C12H16N5O4" +}, +{ +"id":"quetrna_c", +"name":"quenosine34 tRNA", +"compartment":"c", +"charge":1, +"formula":"C12H16N5O3" +}, +{ +"id":"ura_c", +"name":"Uracil", +"compartment":"c", +"charge":0, +"formula":"C4H4N2O2" +}, +{ +"id":"udpglcur_c", +"name":"UDP-D-glucuronate", +"compartment":"c", +"charge":-3, +"formula":"C15H19N2O18P2" +}, +{ +"id":"udpxyl_c", +"name":"UDP-D-xylose", +"compartment":"c", +"charge":-2, +"formula":"C14H20N2O16P2" +}, +{ +"id":"gdpddman_c", +"name":"GDP-4-dehydro-6-deoxy-D-mannose", +"compartment":"c", +"charge":-2, +"formula":"C16H21N5O15P2" +}, +{ +"id":"gdpfuc_c", +"name":"GDP-L-fucose", +"compartment":"c", +"charge":-2, +"formula":"C16H23N5O15P2" +}, +{ +"id":"glyc_c", +"name":"Glycerol", +"compartment":"c", +"charge":0, +"formula":"C3H8O3" +}, +{ +"id":"cdp4dh6doglc_c", +"name":"CDP-4-dehydro-6-deoxy-D-glucose", +"compartment":"c", +"charge":-2, +"formula":"C15H21N3O15P2" +}, +{ +"id":"sucr_c", +"name":"Sucrose", +"compartment":"c", +"charge":0, +"formula":"C12H22O11" +}, +{ +"id":"ocdca_c", +"name":"Octadecanoate (n-C18:0)", +"compartment":"c", +"charge":-1, +"formula":"C18H35O2" +}, +{ +"id":"ocdcal_c", +"name":"Octadecanal C18H36O", +"compartment":"c", +"charge":0, +"formula":"C18H36O" +}, +{ +"id":"hpdcn_c", +"name":"Heptadecane", +"compartment":"c", +"charge":0, +"formula":"C17H36" +}, +{ +"id":"1hdecg3p_c", +"name":"1-Hexadecanoyl-sn-glycerol-3-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C19H37O7P" +}, +{ +"id":"1hdec9eg3p_c", +"name":"1-9-Hexadecenoyl-sn-glycerol-3-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C19H35O7P" +}, +{ +"id":"1odec9eg3p_c", +"name":"1-9-Octadecenoyl-sn-glycerol-3-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C21H39O7P" +}, +{ +"id":"pa160_c", +"name":"1-hexadecanoyl-2-hexadecanoyl-sn-glycerol-3-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C35H67O8P" +}, +{ +"id":"pa1619Z160_c", +"name":"1-9-Hexadecenoyl-2-Hexadecanoyl-sn-glycerol-3-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C35H65O8P" +}, +{ +"id":"pa161_c", +"name":"1-9-Hexadecenoyl-2-9-Hexadecenoyl-sn-glycerol-3-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C35H63O8P" +}, +{ +"id":"pa1819Z1619Z_c", +"name":"1-9-Octadecenoyl-2-9-Hexadecenoyl-sn-glycerol-3-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C37H67O8P" +}, +{ +"id":"pa1819Z160_c", +"name":"1-9-Octadecenoyl-2-Hexadecanoyl-sn-glycerol-3-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C37H69O8P" +}, +{ +"id":"12dgr160_c", +"name":"1,2-Diacyl-sn-glycerol(16:0/16:0)", +"compartment":"c", +"charge":0, +"formula":"C35H68O5" +}, +{ +"id":"12dgr1619Z160_c", +"name":"1,2-Diacyl-sn-glycerol(16:1(9Z)/16:0)", +"compartment":"c", +"charge":0, +"formula":"C35H66O5" +}, +{ +"id":"12dgr161_c", +"name":"1,2-Diacyl-sn-glycerol(16:1(9Z)/16:1(9Z))", +"compartment":"c", +"charge":0, +"formula":"C35H64O5" +}, +{ +"id":"12dgr1819Z1619Z_c", +"name":"1,2-Diacyl-sn-glycerol(18:1(9Z)/16:1(9Z))", +"compartment":"c", +"charge":0, +"formula":"C37H68O5" +}, +{ +"id":"12dgr1819Z160_c", +"name":"1,2-Diacyl-sn-glycerol(18:1(9Z)/16:0)", +"compartment":"c", +"charge":0, +"formula":"C37H70O5" +}, +{ +"id":"sqdg160_c", +"name":"Sulfoquinovosyl diacylglycerol(16:0/16:0)", +"compartment":"c", +"charge":-1, +"formula":"C41H77O12S" +}, +{ +"id":"sqdg1619Z160_c", +"name":"Sulfoquinovosyl diacylglycerol(16:1(9Z)/16:0)", +"compartment":"c", +"charge":-1, +"formula":"C41H75O12S" +}, +{ +"id":"mgdg1619Z160_c", +"name":"1,2-Diacyl-3-O-galactosyl-sn-glycerol(16:1(9Z)/16:0)", +"compartment":"c", +"charge":0, +"formula":"C41H76O10" +}, +{ +"id":"dgdg1619Z160_c", +"name":"Digalactosyl-diacylglycerol(16:1(9Z)/16:0)", +"compartment":"c", +"charge":0, +"formula":"C47H86O15" +}, +{ +"id":"dgdg161_c", +"name":"Digalactosyl-diacylglycerol(16:1(9Z)/16:1(9Z))", +"compartment":"c", +"charge":0, +"formula":"C47H84O15" +}, +{ +"id":"mgdg161_c", +"name":"1,2-Diacyl-3-O-galactosyl-sn-glycerol(16:1(9Z)/16:1(9Z))", +"compartment":"c", +"charge":0, +"formula":"C41H74O10" +}, +{ +"id":"dgdg1819Z1619Z_c", +"name":"Digalactosyl-diacylglycerol(18:1(9Z)/16:1(9Z))", +"compartment":"c", +"charge":0, +"formula":"C49H88O15" +}, +{ +"id":"mgdg1819Z1619Z_c", +"name":"1,2-Diacyl-3-O-galactosyl-sn-glycerol(18:1(9Z)/16:1(9Z))", +"compartment":"c", +"charge":0, +"formula":"C43H78O10" +}, +{ +"id":"cdp12dgr1819Z160_c", +"name":"CDP-1,2-diacyl-sn-glycerol(18:1(9Z)/16:0)", +"compartment":"c", +"charge":-2, +"formula":"C46H81N3O15P2" +}, +{ +"id":"pgp1819Z160_c", +"name":"Phosphatidylglycerophosphate(18:1(9Z)/16:0)", +"compartment":"c", +"charge":-3, +"formula":"C40H75O13P2" +}, +{ +"id":"pg1819Z160_c", +"name":"Phosphatidylglycerol(18:1(9Z)/16:0)", +"compartment":"c", +"charge":-1, +"formula":"C40H76O10P" +}, +{ +"id":"glcdg1619Z160_c", +"name":"1,2-Diacyl-3-O-(beta-D-glucopyranosyl)-sn-glycerol(16:1(9Z)/16:0)", +"compartment":"c", +"charge":0, +"formula":"C41H76O10" +}, +{ +"id":"glcdg161_c", +"name":"1,2-Diacyl-3-O-(beta-D-glucopyranosyl)-sn-glycerol(16:1(9Z)/16:1(9Z))", +"compartment":"c", +"charge":0, +"formula":"C41H74O10" +}, +{ +"id":"glcdg1819Z1619Z_c", +"name":"1,2-Diacyl-3-O-(beta-D-glucopyranosyl)-sn-glycerol(18:1(9Z)/16:1(9Z))", +"compartment":"c", +"charge":0, +"formula":"C43H78O10" +}, +{ +"id":"glcdg1819Z160_c", +"name":"1,2-Diacyl-3-O-(beta-D-glucopyranosyl)-sn-glycerol(18:1(9Z)/16:0)", +"compartment":"c", +"charge":0, +"formula":"C43H80O10" +}, +{ +"id":"mgdg1819Z160_c", +"name":"1,2-Diacyl-3-O-galactosyl-sn-glycerol(18:1(9Z)/16:0)", +"compartment":"c", +"charge":0, +"formula":"C43H80O10" +}, +{ +"id":"dgdg1819Z160Z_c", +"name":"Digalactosyl-diacylglycerol(18:1(9Z)/16:0)", +"compartment":"c", +"charge":0, +"formula":"C49H90O15" +}, +{ +"id":"glntrna_c", +"name":"L-Glutaminyl-tRNA(Gln)", +"compartment":"c", +"charge":1, +"formula":"C5H10N2O2R" +}, +{ +"id":"trnagln_c", +"name":"tRNA(Gln)", +"compartment":"c", +"charge":0, +"formula":"HR" +}, +{ +"id":"trnatyr_c", +"name":"tRNA(Tyr)", +"compartment":"c", +"charge":0, +"formula":"HR" +}, +{ +"id":"tyrtrna_c", +"name":"L-Tyrosyl-tRNA(Tyr)", +"compartment":"c", +"charge":1, +"formula":"C9H11NO2R" +}, +{ +"id":"trnamet_c", +"name":"tRNA(Met)", +"compartment":"c", +"charge":0, +"formula":"HR" +}, +{ +"id":"mettrna_c", +"name":"L-Methionyl-tRNA", +"compartment":"c", +"charge":1, +"formula":"C5H11NOSR" +}, +{ +"id":"trnaser_c", +"name":"tRNA(Ser)", +"compartment":"c", +"charge":0, +"formula":"HR" +}, +{ +"id":"sertrna_c", +"name":"L-Seryl-tRNA(Ser)", +"compartment":"c", +"charge":1, +"formula":"C3H7NO2R" +}, +{ +"id":"glytrna_c", +"name":"Glycyl-tRNA(Gly)", +"compartment":"c", +"charge":1, +"formula":"C2H5NOR" +}, +{ +"id":"trnagly_c", +"name":"tRNA(Gly)", +"compartment":"c", +"charge":0, +"formula":"HR" +}, +{ +"id":"protrna_c", +"name":"L-Prolyl-tRNA(Pro)", +"compartment":"c", +"charge":1, +"formula":"C5H9NOR" +}, +{ +"id":"trnapro_c", +"name":"tRNA(Pro)", +"compartment":"c", +"charge":0, +"formula":"HR" +}, +{ +"id":"trnacys_c", +"name":"tRNA(Cys)", +"compartment":"c", +"charge":0, +"formula":"HR" +}, +{ +"id":"cystrna_c", +"name":"L-Cysteinyl-tRNA(Cys)", +"compartment":"c", +"charge":1, +"formula":"C3H7NOSR" +}, +{ +"id":"trnaarg_c", +"name":"tRNA(Arg)", +"compartment":"c", +"charge":0, +"formula":"HR" +}, +{ +"id":"argtrna_c", +"name":"L-Arginyl-tRNA(Arg)", +"compartment":"c", +"charge":2, +"formula":"C6H15N4OR" +}, +{ +"id":"trnatrp_c", +"name":"tRNA(Trp)", +"compartment":"c", +"charge":0, +"formula":"HR" +}, +{ +"id":"trptrna_c", +"name":"L-Tryptophanyl-tRNA(Trp)", +"compartment":"c", +"charge":1, +"formula":"C11H12N2OR" +}, +{ +"id":"phetrna_c", +"name":"L-Phenylalanyl-tRNA(Phe)", +"compartment":"c", +"charge":1, +"formula":"C9H11NOR" +}, +{ +"id":"trnaphe_c", +"name":"tRNA(Phe)", +"compartment":"c", +"charge":0, +"formula":"HR" +}, +{ +"id":"trnahis_c", +"name":"tRNA(His)", +"compartment":"c", +"charge":0, +"formula":"HR" +}, +{ +"id":"histrna_c", +"name":"L-Histidyl-tRNA(His)", +"compartment":"c", +"charge":1, +"formula":"C6H9N3OR" +}, +{ +"id":"trnaasn_c", +"name":"tRNA(Asn)", +"compartment":"c", +"charge":0, +"formula":"HR" +}, +{ +"id":"asntrna_c", +"name":"L-Asparaginyl-tRNA(Asn)", +"compartment":"c", +"charge":1, +"formula":"C4H8N2O2R" +}, +{ +"id":"asptrna_c", +"name":"L-Aspartyl-tRNA(Asp)", +"compartment":"c", +"charge":0, +"formula":"C4H6NO3R" +}, +{ +"id":"trnaasp_c", +"name":"tRNA(Asp)", +"compartment":"c", +"charge":0, +"formula":"HR" +}, +{ +"id":"trnathr_c", +"name":"tRNA(Thr)", +"compartment":"c", +"charge":0, +"formula":"HR" +}, +{ +"id":"thrtrna_c", +"name":"L-Threonyl-tRNA(Thr)", +"compartment":"c", +"charge":1, +"formula":"C4H9NO2R" +}, +{ +"id":"trnaleu_c", +"name":"tRNA(Leu)", +"compartment":"c", +"charge":0, +"formula":"HR" +}, +{ +"id":"leutrna_c", +"name":"L-Leucyl-tRNA", +"compartment":"c", +"charge":1, +"formula":"C6H13NOR" +}, +{ +"id":"trnaile_c", +"name":"tRNA(Ile)", +"compartment":"c", +"charge":0, +"formula":"HR" +}, +{ +"id":"iletrna_c", +"name":"L-Isoleucyl-tRNA(Ile)", +"compartment":"c", +"charge":1, +"formula":"C6H13NOR" +}, +{ +"id":"trnalys_c", +"name":"tRNA(Lys)", +"compartment":"c", +"charge":0, +"formula":"HR" +}, +{ +"id":"lystrna_c", +"name":"L-Lysyl-tRNA", +"compartment":"c", +"charge":2, +"formula":"C6H15N2OR" +}, +{ +"id":"alatrna_c", +"name":"L-Alanyl-tRNA(Ala)", +"compartment":"c", +"charge":1, +"formula":"C3H7NOR" +}, +{ +"id":"trnaala_c", +"name":"tRNA(Ala)", +"compartment":"c", +"charge":0, +"formula":"HR" +}, +{ +"id":"valtrna_c", +"name":"L-Valyl-tRNA(Val)", +"compartment":"c", +"charge":1, +"formula":"C5H11NOR" +}, +{ +"id":"trnaval_c", +"name":"tRNA(Val)", +"compartment":"c", +"charge":0, +"formula":"HR" +}, +{ +"id":"fmettrna_c", +"name":"N-Formylmethionyl-tRNA", +"compartment":"c", +"charge":0, +"formula":"C6H10NO2SR" +}, +{ +"id":"photon410_e", +"name":"photon (400nm-420nm)", +"compartment":"e", +"charge":0, +"formula":"Z" +}, +{ +"id":"photon430_e", +"name":"photon (420nm-440nm)", +"compartment":"e", +"charge":0, +"formula":"Z" +}, +{ +"id":"photon450_e", +"name":"photon (440nm-460nm)", +"compartment":"e", +"charge":0, +"formula":"Z" +}, +{ +"id":"photon470_e", +"name":"photon (460nm-480nm)", +"compartment":"e", +"charge":0, +"formula":"Z" +}, +{ +"id":"photon490_e", +"name":"photon (480nm-500nm)", +"compartment":"e", +"charge":0, +"formula":"Z" +}, +{ +"id":"photon510_e", +"name":"photon (500nm-520nm)", +"compartment":"e", +"charge":0, +"formula":"Z" +}, +{ +"id":"photon530_e", +"name":"photon (520nm-540nm)", +"compartment":"e", +"charge":0, +"formula":"Z" +}, +{ +"id":"photon550_e", +"name":"photon (540nm-560nm)", +"compartment":"e", +"charge":0, +"formula":"Z" +}, +{ +"id":"photon570_e", +"name":"photon (560nm-580nm)", +"compartment":"e", +"charge":0, +"formula":"Z" +}, +{ +"id":"photon590_e", +"name":"photon (580nm-600nm)", +"compartment":"e", +"charge":0, +"formula":"Z" +}, +{ +"id":"photon610_e", +"name":"photon (600nm-620nm)", +"compartment":"e", +"charge":0, +"formula":"Z" +}, +{ +"id":"photon630_e", +"name":"photon (620nm-640nm)", +"compartment":"e", +"charge":0, +"formula":"Z" +}, +{ +"id":"photon650_e", +"name":"photon (640nm-660nm)", +"compartment":"e", +"charge":0, +"formula":"Z" +}, +{ +"id":"photon670_e", +"name":"photon (660nm-680nm)", +"compartment":"e", +"charge":0, +"formula":"Z" +}, +{ +"id":"photon690_e", +"name":"photon (680nm-700nm)", +"compartment":"e", +"charge":0, +"formula":"Z" +}, +{ +"id":"calxan_c", +"name":"caloxanthin", +"compartment":"c", +"charge":0, +"formula":"C40H56O3" +}, +{ +"id":"nstxan_c", +"name":"nostoxanthin", +"compartment":"c", +"charge":0, +"formula":"C40H56O4" +}, +{ +"id":"chla_soret*_c", +"name":"Excited chlorophyll A, Soret band (short wavelength)", +"compartment":"c", +"charge":0, +"formula":"C55H72MgN4O5" +}, +{ +"id":"bcaro*_c", +"name":"Excited beta-carotene", +"compartment":"c", +"charge":0, +"formula":"C40H56Z" +}, +{ +"id":"phycy*_c", +"name":"Excited phycocyanin", +"compartment":"c", +"charge":-2, +"formula":"C33H36N4O6Z" +}, +{ +"id":"allocy*_c", +"name":"Excited allocyanobilin (phycobilisome core)", +"compartment":"c", +"charge":-2, +"formula":"C33H36N4O6Z" +}, +{ +"id":"allocy_c", +"name":"Allocyanobilin (phycobilisome core)", +"compartment":"c", +"charge":-2, +"formula":"C33H36N4O6" +}, +{ +"id":"chla_qy1*_c", +"name":"Photosystem I excited chlorophyll A, Qy band (long wavelength)", +"compartment":"c", +"charge":0, +"formula":"C55H72MgN4O5" +}, +{ +"id":"pho_loss_c", +"name":"Photon energy loss (heat/fluorescence)", +"compartment":"c", +"charge":0, +"formula":"Z" +}, +{ +"id":"u23ga2_c", +"name":"UDP-2,3-bis(3-hydroxyhexadecanoyl)glucosamine", +"compartment":"c", +"charge":-2, +"formula":"C47H83N3O20P2" +}, +{ +"id":"u3aga2_c", +"name":"UDP-3-O-(3-hydroxyhexadecanoyl)-N-acetylglucosamine", +"compartment":"c", +"charge":-2, +"formula":"C33H55N3O19P2" +}, +{ +"id":"ara5p_c", +"name":"D-Arabinose 5-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C5H9O8P", +"notes":{ +"original_bigg_ids":[ +"ara5p_c" +] +} +}, +{ +"id":"kdo8p_c", +"name":"3-Deoxy-D-manno-octulosonate 8-phosphate", +"compartment":"c", +"charge":-3, +"formula":"C8H12O11P", +"notes":{ +"original_bigg_ids":[ +"kdo8p_c" +] +} +}, +{ +"id":"kdo_c", +"name":"3-Deoxy-D-manno-2-octulosonate", +"compartment":"c", +"charge":-1, +"formula":"C8H13O8", +"notes":{ +"original_bigg_ids":[ +"kdo_c" +] +} +}, +{ +"id":"ckdo_c", +"name":"CMP-3-deoxy-D-manno-octulosonate", +"compartment":"c", +"charge":-2, +"formula":"C17H24N3O15P", +"notes":{ +"original_bigg_ids":[ +"ckdo_c" +] +} +}, +{ +"id":"uacmam_c", +"name":"UDP-N-acetyl-D-mannosamine", +"compartment":"c", +"charge":-2, +"formula":"C17H25N3O17P2", +"notes":{ +"original_bigg_ids":[ +"uacmam_c" +] +} +}, +{ +"id":"udcpp_c", +"name":"Undecaprenyl phosphate", +"compartment":"c", +"charge":-2, +"formula":"C55H89O4P", +"notes":{ +"original_bigg_ids":[ +"udcpp_c" +] +} +}, +{ +"id":"unaga_c", +"name":"Undecaprenyl diphospho N-acetyl-glucosamine", +"compartment":"c", +"charge":-2, +"formula":"C63H103NO12P2", +"notes":{ +"original_bigg_ids":[ +"unaga_c" +] +} +}, +{ +"id":"kdolipid4cy_c", +"name":"KDO-lipid IV A (Synechococcus elongatus 7942)", +"compartment":"c", +"charge":-2, +"formula":"C84H155N2O27P" +}, +{ +"id":"unagam_c", +"name":"Undecaprenyl-diphospho-N-acetylglucosamine-N-acetylmannosamine", +"compartment":"c", +"charge":-2, +"formula":"C71H116N2O17P2" +}, +{ +"id":"icolipacy_c", +"name":"Inner core oligosaccharide lipid A (Synechococcus elongatus 7942)", +"compartment":"c", +"charge":0, +"formula":"C10.0356H18.3549N0.2846O4.1447P0.0865" +}, +{ +"id":"icolipacy_p", +"name":"Inner core oligosaccharide lipid A (Synechococcus elongatus 7942)", +"compartment":"p", +"charge":0, +"formula":"C10.0356H18.3549N0.2846O4.1447P0.0865" +}, +{ +"id":"oanticy_c", +"name":"O-antigen oligosaccharide (Synechococcus elongatus 7942)", +"compartment":"c", +"charge":0, +"formula":"C15.753H26.255O13.1275" +}, +{ +"id":"oanticy_p", +"name":"O-antigen oligosaccharide (Synechococcus elongatus 7942)", +"compartment":"p", +"charge":0, +"formula":"C15.753H26.255O13.1275" +}, +{ +"id":"colipacy_p", +"name":"O-antigen bound to core oligosaccharide lipid A (Synechococcus elongatus 7942)", +"compartment":"p", +"charge":0, +"formula":"C25.7886H42.6099N0.2846O16.2722P0.0865" +}, +{ +"id":"colipacy_e", +"name":"O-antigen bound to core oligosaccharide lipid A (Synechococcus elongatus 7942)", +"compartment":"e", +"charge":0, +"formula":"C25.7886H42.6099N0.2846O16.2722P0.0865" +}, +{ +"id":"uaagmda_c", +"name":"Undecaprenyl-diphospho-N-acetylmuramoyl-(N-acetylglucosamine)-L-ala-D-glu-meso-2,6-diaminopimeloyl-D-ala-D-ala", +"compartment":"c", +"charge":-4, +"formula":"C95H152N8O28P2", +"notes":{ +"original_bigg_ids":[ +"uaagmda_c" +] +} +}, +{ +"id":"murein5p5p_p", +"name":"Two linked disacharide pentapeptide murein units (uncrosslinked, middle of chain)", +"compartment":"p", +"charge":-4, +"formula":"C80H124N16O42", +"notes":{ +"original_bigg_ids":[ +"murein5p5p_p" +] +} +}, +{ +"id":"murein5p5p5p_p", +"name":"Three linked disacharide pentapeptide murein units (uncrosslinked, middle of chain)", +"compartment":"p", +"charge":-6, +"formula":"C120H186N24O63", +"notes":{ +"original_bigg_ids":[ +"murein5p5p5p_p" +] +} +}, +{ +"id":"ala__D_p", +"name":"D-Alanine", +"compartment":"p", +"charge":0, +"formula":"C3H7NO2", +"notes":{ +"original_bigg_ids":[ +"ala_DASH_D_p" +] +} +}, +{ +"id":"murein5px4px4p_p", +"name":"Three disacharide linked murein units (pentapeptide crosslinked tetrapeptide (A2pm->D-ala) tetrapeptide corsslinked tetrapeptide (A2pm->D-ala)) (middle of chain)", +"compartment":"p", +"charge":-6, +"formula":"C114H172N22O59", +"notes":{ +"original_bigg_ids":[ +"murein5px4px4p_p" +] +} +}, +{ +"id":"murein5px4p_p", +"name":"Two disacharide linked murein units, pentapeptide crosslinked tetrapeptide (A2pm->D-ala) (middle of chain)", +"compartment":"p", +"charge":-4, +"formula":"C77H117N15O40", +"notes":{ +"original_bigg_ids":[ +"murein5px4p_p" +] +} +}, +{ +"id":"alaala_p", +"name":"D-Alanyl-D-alanine", +"compartment":"p", +"charge":0, +"formula":"C6H12N2O3", +"notes":{ +"original_bigg_ids":[ +"alaala_p" +] +} +}, +{ +"id":"murein5px3p_p", +"name":"Two disacharide linked murein units, pentapeptide corsslinked tripeptide (A2pm->A2pm) (middle of chain)", +"compartment":"p", +"charge":-4, +"formula":"C74H112N14O39", +"notes":{ +"original_bigg_ids":[ +"murein5px3p_p" +] +} +}, +{ +"id":"murein4px4p_p", +"name":"Two disacharide linked murein units, tetrapeptide corsslinked tetrapeptide (A2pm->D-ala) (middle of chain)", +"compartment":"p", +"charge":-4, +"formula":"C74H112N14O39", +"notes":{ +"original_bigg_ids":[ +"murein4px4p_p" +] +} +}, +{ +"id":"murein4px4px4p_p", +"name":"Three disacharide linked murein units (tetrapeptide crosslinked tetrapeptide (A2pm->D-ala) & tetrapeptide corsslinked tetrapeptide (A2pm->D-ala)) (middle of chain)", +"compartment":"p", +"charge":-6, +"formula":"C111H167N21O58", +"notes":{ +"original_bigg_ids":[ +"murein4px4px4p_p" +] +} +}, +{ +"id":"murein5p4p_p", +"name":"Two linked disacharide pentapeptide and tetrapeptide murein units (uncrosslinked, middle of chain)", +"compartment":"p", +"charge":-4, +"formula":"C77H119N15O41", +"notes":{ +"original_bigg_ids":[ +"murein5p4p_p" +] +} +}, +{ +"id":"murein4p4p_p", +"name":"Two linked disacharide tetrapeptide murein units (uncrosslinked, middle of chain)", +"compartment":"p", +"charge":-4, +"formula":"C74H114N14O40", +"notes":{ +"original_bigg_ids":[ +"murein4p4p_p" +] +} +}, +{ +"id":"murein4p3p_p", +"name":"Two linked disacharide tetrapeptide and tripeptide murein units (uncrosslinked, middle of chain)", +"compartment":"p", +"charge":-4, +"formula":"C71H109N13O39", +"notes":{ +"original_bigg_ids":[ +"murein4p3p_p" +] +} +}, +{ +"id":"murein5p3p_p", +"name":"Two linked disacharide pentapeptide and tripeptide murein units (uncrosslinked, middle of chain)", +"compartment":"p", +"charge":-4, +"formula":"C74H114N14O40", +"notes":{ +"original_bigg_ids":[ +"murein5p3p_p" +] +} +}, +{ +"id":"murein3px4p_p", +"name":"Two disacharide linked murein units, tripeptide crosslinked tetrapeptide (A2pm->D-ala) (middle of chain)", +"compartment":"p", +"charge":-4, +"formula":"C71H107N13O38", +"notes":{ +"original_bigg_ids":[ +"murein3px4p_p" +] +} +}, +{ +"id":"murein4px4p4p_p", +"name":"Three disacharide linked murein units (tetrapeptide crosslinked tetrapeptide (A2pm->D-ala), one uncrosslinked tetrapaptide) (middle of chain)", +"compartment":"p", +"charge":-6, +"formula":"C111H169N21O59", +"notes":{ +"original_bigg_ids":[ +"murein4px4p4p_p" +] +} +}, +{ +"id":"murein3p3p_p", +"name":"Two linked disacharide tripeptide murein units (uncrosslinked, middle of chain)", +"compartment":"p", +"charge":-4, +"formula":"C68H104N12O38", +"notes":{ +"original_bigg_ids":[ +"murein3p3p_p" +] +} +}, +{ +"id":"anhgm4p_p", +"name":"N-Acetyl-D-glucosamine(anhydrous)N-Acetylmuramyl-tetrapeptide", +"compartment":"p", +"charge":-2, +"formula":"C37H57N7O20", +"notes":{ +"original_bigg_ids":[ +"anhgm4p_p" +] +} +}, +{ +"id":"anhgm3p_p", +"name":"N-Acetyl-D-glucosamine(anhydrous)N-Acetylmuramyl-tripeptide", +"compartment":"p", +"charge":-2, +"formula":"C34H52N6O19", +"notes":{ +"original_bigg_ids":[ +"anhgm3p_p" +] +} +}, +{ +"id":"anhgm_c", +"name":"N-Acetyl-D-glucosamine(anhydrous)N-Acetylmuramic acid", +"compartment":"c", +"charge":-1, +"formula":"C19H29N2O12", +"notes":{ +"original_bigg_ids":[ +"anhgm_c" +] +} +}, +{ +"id":"LalaDgluMdapDala_c", +"name":"L-alanine-D-glutamate-meso-2,6-diaminoheptanedioate-D-alanine", +"compartment":"c", +"charge":-1, +"formula":"C18H30N5O9", +"notes":{ +"original_bigg_ids":[ +"LalaDgluMdapDala_c" +] +} +}, +{ +"id":"anhgm4p_c", +"name":"N-Acetyl-D-glucosamine(anhydrous)N-Acetylmuramyl-tetrapeptide", +"compartment":"c", +"charge":-2, +"formula":"C37H57N7O20", +"notes":{ +"original_bigg_ids":[ +"anhgm4p_c" +] +} +}, +{ +"id":"anhgm_p", +"name":"N-Acetyl-D-glucosamine(anhydrous)N-Acetylmuramic acid", +"compartment":"p", +"charge":-1, +"formula":"C19H29N2O12", +"notes":{ +"original_bigg_ids":[ +"anhgm_p" +] +} +}, +{ +"id":"LalaDgluMdapDala_p", +"name":"L-alanine-D-glutamate-meso-2,6-diaminoheptanedioate-D-alanine", +"compartment":"p", +"charge":-1, +"formula":"C18H30N5O9", +"notes":{ +"original_bigg_ids":[ +"LalaDgluMdapDala_p" +] +} +}, +{ +"id":"anhgm3p_c", +"name":"N-Acetyl-D-glucosamine(anhydrous)N-Acetylmuramyl-tripeptide", +"compartment":"c", +"charge":-2, +"formula":"C34H52N6O19", +"notes":{ +"original_bigg_ids":[ +"anhgm3p_c" +] +} +}, +{ +"id":"acgam_c", +"name":"N-Acetyl-D-glucosamine", +"compartment":"c", +"charge":0, +"formula":"C8H15NO6", +"notes":{ +"original_bigg_ids":[ +"acgam_c" +] +} +}, +{ +"id":"anhm4p_c", +"name":"1,6-anhydrous-N-Acetylmuramyl-tetrapeptide", +"compartment":"c", +"charge":-2, +"formula":"C29H44N6O15", +"notes":{ +"original_bigg_ids":[ +"anhm4p_c" +] +} +}, +{ +"id":"LalaDgluMdap_p", +"name":"L-alanine-D-glutamate-meso-2,6-diaminoheptanedioate", +"compartment":"p", +"charge":-1, +"formula":"C15H25N4O8", +"notes":{ +"original_bigg_ids":[ +"LalaDgluMdap_p" +] +} +}, +{ +"id":"anhm_c", +"name":"1,6-anhydrous-N-Acetylmuramate", +"compartment":"c", +"charge":-1, +"formula":"C11H16NO7", +"notes":{ +"original_bigg_ids":[ +"anhm_c" +] +} +}, +{ +"id":"anhm3p_c", +"name":"1,6-anhydrous-N-Acetylmuramyl-tripeptide", +"compartment":"c", +"charge":-2, +"formula":"C26H39N5O14", +"notes":{ +"original_bigg_ids":[ +"anhm3p_c" +] +} +}, +{ +"id":"LalaDgluMdap_c", +"name":"L-alanine-D-glutamate-meso-2,6-diaminoheptanedioate", +"compartment":"c", +"charge":-1, +"formula":"C15H25N4O8", +"notes":{ +"original_bigg_ids":[ +"LalaDgluMdap_c" +] +} +}, +{ +"id":"LalaDglu_c", +"name":"L-alanine-D-glutamate", +"compartment":"c", +"charge":-1, +"formula":"C8H13N2O5", +"notes":{ +"original_bigg_ids":[ +"LalaDglu_c" +] +} +}, +{ +"id":"um4p_c", +"name":"UDP-N-acetylmuramoyl-L-alanyl-D-gamma-glutamyl-meso-2,6-diaminopimelate-D-alanine", +"compartment":"c", +"charge":-4, +"formula":"C38H56N8O27P2", +"notes":{ +"original_bigg_ids":[ +"um4p_c" +] +} +}, +{ +"id":"LalaLglu_c", +"name":"L-alanine-L-glutamate", +"compartment":"c", +"charge":-1, +"formula":"C8H13N2O5", +"notes":{ +"original_bigg_ids":[ +"LalaLglu_c" +] +} +}, +{ +"id":"pchlld*_c", +"name":"Excited protochlorophyllide", +"compartment":"c", +"charge":-1, +"formula":"C35H31MgN4O5" +}, +{ +"id":"fldox_c", +"name":"Flavodoxin (oxidized)", +"compartment":"c", +"charge":-2, +"formula":"C17H19N4O9P" +}, +{ +"id":"fldrd_c", +"name":"Flavodoxin (reduced)", +"compartment":"c", +"charge":-2, +"formula":"C17H21N4O9P" +}, +{ +"id":"5g2oxpt_p", +"name":"5-Guanidino-2-oxopentanoate", +"compartment":"p", +"charge":0, +"formula":"C6H11N3O3" +}, +{ +"id":"h2o2_p", +"name":"H2O2", +"compartment":"p", +"charge":0, +"formula":"H2O2" +}, +{ +"id":"leu__L_p", +"name":"L-Leucine", +"compartment":"p", +"charge":0, +"formula":"C6H13NO2" +}, +{ +"id":"leu__L_e", +"name":"L-Leucine", +"compartment":"e", +"charge":0, +"formula":"C6H13NO2" +}, +{ +"id":"no2_p", +"name":"Nitrite", +"compartment":"p", +"charge":-1, +"formula":"NO2" +}, +{ +"id":"no2_e", +"name":"Nitrite", +"compartment":"e", +"charge":-1, +"formula":"NO2" +}, +{ +"id":"zeax*_c", +"name":"Zeaxanthin (excited)", +"compartment":"c", +"charge":0, +"formula":"C40H56O2Z" +}, +{ +"id":"chla_qy2*_c", +"name":"Photosystem II excited chlorophyll A, Qy band (long wavelength)", +"compartment":"c", +"charge":0, +"formula":"C55H72MgN4O5" +}, +{ +"id":"p700_um", +"name":"PSI reaction center P700", +"compartment":"m", +"charge":0, +"formula":"C55H71MgN4O5" +}, +{ +"id":"p700*_um", +"name":"PSI reaction center P700, excited", +"compartment":"m", +"charge":0, +"formula":"C55H71MgN4O5" +}, +{ +"id":"p680*_um", +"name":"PSII reaction center P680, excited", +"compartment":"m", +"charge":0, +"formula":"C55H71MgN4O5" +}, +{ +"id":"p680_um", +"name":"PSII reaction center P680", +"compartment":"m", +"charge":0, +"formula":"C55H71MgN4O5" +}, +{ +"id":"b14glucan_c", +"name":"Cellulose (beta-1,4-glucan)", +"compartment":"c", +"charge":0, +"formula":"C12H20O10" +}, +{ +"id":"fald_c", +"name":"Formaldehyde", +"compartment":"c", +"charge":0, +"formula":"CH2O" +}, +{ +"id":"hmgth_c", +"name":"Hydroxymethylglutathione", +"compartment":"c", +"charge":-1, +"formula":"C11H18N3O7S" +}, +{ +"id":"Sfglutth_c", +"name":"S-Formylglutathione", +"compartment":"c", +"charge":-1, +"formula":"C11H16N3O7S" +}, +{ +"id":"5oxpro_c", +"name":"5-Oxoproline", +"compartment":"c", +"charge":-1, +"formula":"C5H6NO3" +}, +{ +"id":"acgam6p_c", +"name":"N-Acetyl-D-glucosamine 6-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C8H14NO9P" +}, +{ +"id":"acmanap_c", +"name":"N-Acetyl-D-mannosamine 6-phosphate", +"compartment":"c", +"charge":-2, +"formula":"C8H14NO9P" +}, +{ +"id":"acmum6p_c", +"name":"N-acetylmuramate 6-phosphate", +"compartment":"c", +"charge":-3, +"formula":"C11H17NO11P" +}, +{ +"id":"cl_p", +"name":"Chloride", +"compartment":"p", +"charge":-1, +"formula":"Cl" +}, +{ +"id":"cl_c", +"name":"Chloride", +"compartment":"c", +"charge":-1, +"formula":"Cl" +}, +{ +"id":"cl_e", +"name":"Chloride", +"compartment":"e", +"charge":-1, +"formula":"Cl" +}, +{ +"id":"k_u", +"name":"Potassium", +"compartment":"u", +"charge":1, +"formula":"K" +}, +{ +"id":"ps2d1_um", +"name":"PSII D1 protein", +"compartment":"m", +"formula":"R" +}, +{ +"id":"ps2d1*_um", +"name":"Damaged PSII D1 protein", +"compartment":"m", +"formula":"R" +}, +{ +"id":"moadamp_c", +"name":"MoaD Protein with bound AMP", +"compartment":"c", +"charge":-1, +"formula":"RC11H12N5O8P1", +"notes":{ +"original_bigg_ids":[ +"moadamp_c" +] +} +}, +{ +"id":"moadcoo_c", +"name":"MoaD Protein with carboxylate", +"compartment":"c", +"charge":-1, +"formula":"RC1O2", +"notes":{ +"original_bigg_ids":[ +"moadcoo_c" +] +} +}, +{ +"id":"iscs_c", +"name":"IscS sulfur acceptor protein", +"compartment":"c", +"formula":"HSR", +"notes":{ +"original_bigg_ids":[ +"iscs_c" +] +} +}, +{ +"id":"moadcosh_c", +"name":"MoaD Protein with thiocarboxylate", +"compartment":"c", +"charge":0, +"formula":"RC1H1O1S1", +"notes":{ +"original_bigg_ids":[ +"moadcosh_c" +] +} +}, +{ +"id":"cdhgtp_c", +"name":"(8S)-3,8-Cyclo-7,8-dihydroguanosine 5-triphosphate", +"compartment":"c", +"charge":-4, +"formula":"C10H12N5O14P3" +}, +{ +"id":"cpmp_c", +"name":"Cyclic pyranopterin monophosphate", +"compartment":"c", +"charge":-1, +"formula":"C10H11N5O7P", +"notes":{ +"original_bigg_ids":[ +"cpmp_c" +] +} +}, +{ +"id":"mpt_c", +"name":"Molybdopterin", +"compartment":"c", +"charge":-2, +"formula":"C10H10N5O6PS2Cu", +"notes":{ +"original_bigg_ids":[ +"mpt_c" +] +} +}, +{ +"id":"mptamp_c", +"name":"Adenylated molybdopterin", +"compartment":"c", +"charge":-2, +"formula":"C20H22N10O12P2S2Cu", +"notes":{ +"original_bigg_ids":[ +"mptamp_c" +] +} +}, +{ +"id":"moco_c", +"name":"Molybdenum cofactor", +"compartment":"c", +"charge":-2, +"formula":"C10H10N5O8PS2Mo", +"notes":{ +"original_bigg_ids":[ +"moco_c" +] +} +}, +{ +"id":"mocogdp_c", +"name":"Molybdopterin guanine dinucleotide", +"compartment":"c", +"charge":-2, +"formula":"C20H22N10O15P2S2Mo", +"notes":{ +"original_bigg_ids":[ +"mocogdp_c" +] +} +} +], +"reactions":[ +{ +"id":"QULNS", +"name":"Quinolinate synthase", +"metabolites":{ +"dhap_c":-1.0, +"h2o_c":2.0, +"iasp_c":-1.0, +"pi_c":1.0, +"quln_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1448", +"subsystem":"Cofactor biosynthesis: Nicotinate and Nicotinamide metabolism" +}, +{ +"id":"ORNDC", +"name":"Ornithine Decarboxylase", +"metabolites":{ +"co2_c":1.0, +"h_c":-1.0, +"orn_c":-1, +"ptrc_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0707", +"subsystem":"Amino acid metabolism: Proline and Arginine metabolism" +}, +{ +"id":"LEUTA", +"name":"Leucine transaminase", +"metabolites":{ +"4mop_c":1.0, +"akg_c":-1.0, +"glu__L_c":1.0, +"leu__L_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1029", +"subsystem":"Amino acid metabolism: Valine, Leucine and Isoleucine biosynthesis" +}, +{ +"id":"MSBENZMT", +"name":"S-adenosyl-L-methionine:2-methyl-6-solanyl-1,4-benzoquinol C3 methyltransferase", +"metabolites":{ +"2m6sbenzq_c":-1.0, +"ahcys_c":1.0, +"amet_c":-1.0, +"h_c":1.0, +"pqh2_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0596", +"subsystem":"Plastoquinol biosynthesis" +}, +{ +"id":"DESAT18a", +"name":"Stearoyl ACP delta-9 desaturase", +"metabolites":{ +"h2o_c":2.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0, +"o2_c":-1.0, +"ocdcaACP_c":-1.0, +"octe9ACP_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2561", +"subsystem":"Galactoglycerolipid metabolism" +}, +{ +"id":"FUM", +"name":"Fumarase", +"metabolites":{ +"fum_c":-1.0, +"h2o_c":-1.0, +"mal__L_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1007", +"subsystem":"Pyruvate metabolism/TCA Reactions" +}, +{ +"id":"PHYFXOR", +"name":"Phycocyanobilin:ferredoxin oxidoreductase", +"metabolites":{ +"biliverd_c":-1.0, +"fdxox_c":4.0, +"fdxrd_c":-4.0, +"h_c":-4.0, +"phycy_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1225", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"VPAMTr", +"name":"Valine-pyruvate aminotransferase", +"metabolites":{ +"3mob_c":-1.0, +"ala__L_c":-1.0, +"pyr_c":1.0, +"val__L_c":1.0 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2258", +"subsystem":"Amino acid metabolism: Valine, Leucine and Isoleucine biosynthesis" +}, +{ +"id":"GLYCL", +"name":"Glycine Cleavage System", +"metabolites":{ +"co2_c":1.0, +"gly_c":-1.0, +"mlthf_c":1.0, +"nad_c":-1.0, +"nadh_c":1.0, +"nh4_c":1.0, +"thf_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2046 and Synpcc7942_2047 and Synpcc7942_2308", +"subsystem":"Amino acid metabolism: Glycine, Serine and Threonine metabolism" +}, +{ +"id":"NDPK7", +"name":"Nucleoside-diphosphate kinase (ATP:dCDP)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"dcdp_c":-1.0, +"dctp_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2497", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"GTPCI", +"name":"GTP cyclohydrolase I", +"metabolites":{ +"ahdt_c":1.0, +"for_c":1.0, +"gtp_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1597", +"subsystem":"Cofactor biosynthesis: Folate biosynthesis" +}, +{ +"id":"MTHFC", +"name":"Methenyltetrahydrofolate cyclohydrolase", +"metabolites":{ +"10fthf_c":1.0, +"h2o_c":-1.0, +"h_c":1.0, +"methf_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0777", +"subsystem":"Cofactor biosynthesis: Folate biosynthesis" +}, +{ +"id":"LYCBC2", +"name":"Lycopene cyclase (beta-carotene producing)", +"metabolites":{ +"caro_c":1.0, +"gcaro_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2062", +"subsystem":"Carotenoid biosynthesis" +}, +{ +"id":"UPPDC1", +"name":"Uroporphyrinogen decarboxylase (uroporphyrinogen III)", +"metabolites":{ +"co2_c":4.0, +"cpppg3_c":1.0, +"h_c":-4.0, +"uppg3_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1086", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"GARFT", +"name":"Phosphoribosylglycinamide formyltransferase", +"metabolites":{ +"10fthf_c":-1.0, +"fgam_c":1.0, +"gar_c":-1.0, +"h_c":1.0, +"thf_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0958", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"H4THDPR", +"name":"4-hydroxy-tetrahydrodipicolinate reductase", +"metabolites":{ +"4hthdp_c":-1.0, +"h2o_c":1.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0, +"thdp_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2136", +"subsystem":"Amino acid metabolism: Lysine biosynthesis" +}, +{ +"id":"UDPG4E", +"name":"UDPglucose 4-epimerase", +"metabolites":{ +"udpg_c":-1.0, +"udpgal_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0320", +"subsystem":"Nucleotide sugar metabolism" +}, +{ +"id":"GLCS3", +"name":"Glycogen synthase (linear extension of glycogen polymer)", +"metabolites":{ +"14glucan_c":1.0, +"adp_c":1.0, +"adpglc_c":-1.0, +"amylose_c":-1.0, +"h_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2518", +"subsystem":"Glycogen and sucrose metabolism" +}, +{ +"id":"ASPTA", +"name":"Aspartate transaminase", +"metabolites":{ +"akg_c":-1.0, +"asp__L_c":-1.0, +"glu__L_c":1.0, +"oaa_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2545", +"subsystem":"Amino acid metabolism: Alanine, Aspartate and Glutamate metabolism" +}, +{ +"id":"PRAGSr", +"name":"Phosphoribosylglycinamide synthase", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"gar_c":1.0, +"gly_c":-1.0, +"h_c":1.0, +"pi_c":1.0, +"pram_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0925", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"ACKr", +"name":"Acetate kinase", +"metabolites":{ +"ac_c":-1.0, +"actp_c":1.0, +"adp_c":1.0, +"atp_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2079", +"subsystem":"Pyruvate metabolism/TCA Reactions" +}, +{ +"id":"KAS14", +"name":"Beta-ketoacyl-ACP synthase", +"metabolites":{ +"ACP_c":1.0, +"acACP_c":-1.0, +"actACP_c":1.0, +"co2_c":1.0, +"h_c":-1.0, +"malACP_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0537", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"UDCPDPS", +"name":"Undecaprenyl diphosphate synthase", +"metabolites":{ +"frdp_c":-1.0, +"ipdp_c":-8.0, +"ppi_c":8.0, +"udcpdp_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0264", +"subsystem":"Terpenoid Biosynthesis" +}, +{ +"id":"GLNS", +"name":"Glutamine synthetase", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"gln__L_c":1.0, +"glu__L_c":-1.0, +"h_c":1.0, +"nh4_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0169 or Synpcc7942_2296 or Synpcc7942_2156", +"subsystem":"Amino acid metabolism: Alanine, Aspartate and Glutamate metabolism" +}, +{ +"id":"SHKK", +"name":"Shikimate kinase", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"h_c":1.0, +"skm5p_c":1.0, +"skm_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0894", +"subsystem":"Amino acid metabolism: Phenylalanine, Tyrosine, Tryptophan biosynthesis" +}, +{ +"id":"G1PACT", +"name":"Glucosamine-1-phosphate N-acetyltransferase", +"metabolites":{ +"accoa_c":-1.0, +"acgam1p_c":1.0, +"coa_c":1.0, +"gam1p_c":-1.0, +"h_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0288", +"subsystem":"Murein Biosynthesis/Recycling" +}, +{ +"id":"5DOAN", +"name":"5'-deoxyadenosine nuclosidase", +"metabolites":{ +"5drib_c":1.0, +"ade_c":1.0, +"dad_5_c":-1.0, +"h2o_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"OHPBAT", +"name":"O-Phospho-4-hydroxy-L-threonine:2-oxoglutarate aminotransferase", +"metabolites":{ +"akg_c":1.0, +"glu__L_c":-1.0, +"ohpb_c":-1.0, +"phthr_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2160", +"subsystem":"Cofactor biosynthesis: Vitamin B6" +}, +{ +"id":"Htex", +"name":"Proton transport via diffusion (extracellular to periplasm)", +"metabolites":{ +"h_e":-1.0, +"h_p":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"3HAD60", +"name":"3-hydroxyacyl-[acyl-carrier-protein] dehydratase (n-C6:0)", +"metabolites":{ +"3hhexACP_c":-1.0, +"h2o_c":1.0, +"thex2eACP_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0930", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"PGI", +"name":"Glucose-6-phosphate isomerase", +"metabolites":{ +"f6p_c":1.0, +"g6p_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2029", +"subsystem":"Glycolysis/Gluconeogenesis" +}, +{ +"id":"PNTK", +"name":"Pantothenate kinase", +"metabolites":{ +"4ppan_c":1.0, +"adp_c":1.0, +"atp_c":-1.0, +"h_c":1.0, +"pnto__R_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1808", +"subsystem":"Cofactor biosynthesis: Pantothenate and CoA biosynthesis" +}, +{ +"id":"3OAR60", +"name":"3-oxoacyl-[acyl-carrier-protein] reductase (n-C6:0)", +"metabolites":{ +"3hhexACP_c":1.0, +"3ohexACP_c":-1.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0684", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"ACGK", +"name":"Acetylglutamate kinase", +"metabolites":{ +"acg5p_c":1.0, +"acglu_c":-1.0, +"adp_c":1.0, +"atp_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1496", +"subsystem":"Amino acid metabolism: Proline and Arginine metabolism" +}, +{ +"id":"LEUabcpp", +"name":"L-leucine transport via ABC system (periplasm)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"leu__L_c":1, +"leu__L_p":-1, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0815 and Synpcc7942_1861 and Synpcc7942_1893 and Synpcc7942_1894 and Synpcc7942_2177", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"G5SD", +"name":"Glutamate-5-semialdehyde dehydrogenase", +"metabolites":{ +"glu5p_c":-1.0, +"glu5sa_c":1.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2243 or Synpcc7942_2265", +"subsystem":"Amino acid metabolism: Proline and Arginine metabolism" +}, +{ +"id":"DTMPK", +"name":"DTMP kinase", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"dtdp_c":1.0, +"dtmp_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0093", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"NOR", +"name":"Neurosporene oxidoreductase", +"metabolites":{ +"h2o_c":2.0, +"h_c":-1.0, +"lyc_c":1.0, +"nadp_c":1.0, +"nadph_c":-1.0, +"norsp_c":-1.0, +"o2_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1512 and Synpcc7942_1246", +"subsystem":"Carotenoid biosynthesis" +}, +{ +"id":"NDH-1(1)um", +"name":"NAD(P)H dehydrogenase (plastoquinone-8 & 4 protons)( Thylakoid)", +"metabolites":{ +"fdxox_c":2, +"fdxrd_c":-2, +"h_c":-5.0, +"h_u":3.0, +"pq_um":-1.0, +"pqh2_um":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1343 and Synpcc7942_1415 and Synpcc7942_1180 and Synpcc7942_1346 and Synpcc7942_1345 and Synpcc7942_1743 and Synpcc7942_1344 and Synpcc7942_1182 and Synpcc7942_1181 and Synpcc7942_0413 and Synpcc7942_2234 and Synpcc7942_1982 and Synpcc7942_2487 and Synpcc7942_2257 and Synpcc7942_1908 and Synpcc7942_1106 and Synpcc7942_0668 and Synpcc7942_0491 and Synpcc7942_1439 and Synpcc7942_1977", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"AOOA", +"name":"5-Amino-2-oxopentanoate:2-oxoglutarate aminotransferase, cytosol", +"metabolites":{ +"akg_c":-1.0, +"glu__L_c":1.0, +"hisp_c":-1.0, +"imacp_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1030", +"subsystem":"Histidine Metabolism" +}, +{ +"id":"CMPA", +"name":"N-carbamoylputrescine amidase", +"metabolites":{ +"cbmp_c":-1.0, +"co2_c":1.0, +"h2o_c":-1.0, +"h_c":-2.0, +"nh4_c":1.0, +"ptrc_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2145", +"subsystem":"Amino acid metabolism: Proline and Arginine metabolism" +}, +{ +"id":"U23GAAT2", +"name":"UDP-3-O-(3-hydroxypalmitoyl)glucosamine acyltransferase (Synechococcus elongatus 7942)", +"metabolites":{ +"3hpalmACP_c":-1, +"ACP_c":1.0, +"h_c":1.0, +"u23ga2_c":1, +"u3hga2_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1449", +"subsystem":"Lipopolysaccharide/O-antigen Biosynthesis" +}, +{ +"id":"PGK", +"name":"Phosphoglycerate kinase", +"metabolites":{ +"13dpg_c":1.0, +"3pg_c":-1.0, +"adp_c":1.0, +"atp_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1116", +"subsystem":"Glycolysis/Gluconeogenesis" +}, +{ +"id":"IMPD", +"name":"IMP dehydrogenase", +"metabolites":{ +"h2o_c":-1.0, +"h_c":1.0, +"imp_c":-1.0, +"nad_c":-1.0, +"nadh_c":1.0, +"xmp_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1831", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"LPOR", +"name":"Light dependent protochlorophyllide oxidoreductase", +"metabolites":{ +"chlda_c":1.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0, +"pchlld*_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2503", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"CHRPL", +"name":"Chorismate pyruvate lyase", +"metabolites":{ +"4hbz_c":1.0, +"chor_c":-1.0, +"pyr_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0091", +"subsystem":"Plastoquinol biosynthesis" +}, +{ +"id":"GCALDDy", +"name":"Glycolaldehyde dehydrogenase (NADPH utilizing)", +"metabolites":{ +"gcald_c":-1.0, +"glyclt_c":1.0, +"h2o_c":-1.0, +"h_c":2.0, +"nadp_c":-1, +"nadph_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0489", +"subsystem":"Cofactor biosynthesis: Folate biosynthesis" +}, +{ +"id":"RNDR1", +"name":"Ribonucleoside-diphosphate reductase (ADP)", +"metabolites":{ +"adp_c":-1.0, +"dadp_c":1.0, +"h2o_c":1.0, +"trdox_c":1.0, +"trdrd_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1609", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"AIRC2", +"name":"Phosphoribosylaminoimidazole carboxylase", +"metabolites":{ +"5caiz_c":1.0, +"adp_c":1.0, +"air_c":-1.0, +"atp_c":-1.0, +"h_c":1.0, +"hco3_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1428", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"MTAP", +"name":"5 methylthioadenosine phosphorylase", +"metabolites":{ +"5mdr1p_c":1.0, +"5mta_c":-1.0, +"ade_c":1.0, +"pi_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0923", +"subsystem":"Amino acid metabolism: Cysteine and Methionine metabolism" +}, +{ +"id":"HEMEAS", +"name":"Heme A synthase", +"metabolites":{ +"h2o_c":-1.0, +"h_c":2.0, +"hemeA_c":1.0, +"hemeO_c":-1.0, +"nad_c":-2.0, +"nadh_c":2.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2601", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"DHORD3um", +"name":"Dihydoorotic acid dehydrogenase (plastoquinone)", +"metabolites":{ +"dhor__S_c":-1.0, +"orot_c":1.0, +"pq_um":-1.0, +"pqh2_um":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0290", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"TRPS1", +"name":"Tryptophan synthase (indoleglycerol phosphate)", +"metabolites":{ +"3ig3p_c":-1.0, +"g3p_c":1.0, +"h2o_c":1.0, +"ser__L_c":-1.0, +"trp__L_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0411 and Synpcc7942_2143", +"subsystem":"Amino acid metabolism: Phenylalanine, Tyrosine, Tryptophan biosynthesis" +}, +{ +"id":"NNATr", +"name":"Nicotinate-nucleotide adenylyltransferase", +"metabolites":{ +"atp_c":-1.0, +"dnad_c":1.0, +"h_c":-1.0, +"nicrnt_c":-1.0, +"ppi_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0205 or Synpcc7942_0106", +"subsystem":"Cofactor biosynthesis: Nicotinate and Nicotinamide metabolism" +}, +{ +"id":"3OAR120", +"name":"3-oxoacyl-[acyl-carrier-protein] reductase (n-C12:0)", +"metabolites":{ +"3hddecACP_c":1.0, +"3oddecACP_c":-1.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0684", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"HISTDb", +"name":"Histidinol dehydrogenase (histidine forming)", +"metabolites":{ +"h2o_c":-1.0, +"h_c":2.0, +"his__L_c":1.0, +"histda_c":-1.0, +"nad_c":-1.0, +"nadh_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1519", +"subsystem":"Histidine Metabolism" +}, +{ +"id":"SPS", +"name":"Sucrose phosphate synthase", +"metabolites":{ +"f6p_c":-1.0, +"h_c":1.0, +"suc6p_c":1.0, +"udp_c":1.0, +"udpg_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0808", +"subsystem":"Glycogen and sucrose metabolism" +}, +{ +"id":"ADCL", +"name":"4-aminobenzoate synthase", +"metabolites":{ +"4abz_c":1.0, +"4adcho_c":-1.0, +"h_c":1.0, +"pyr_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1335", +"subsystem":"Cofactor biosynthesis: Folate biosynthesis" +}, +{ +"id":"CYTK1", +"name":"Cytidylate kinase (CMP)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"cdp_c":1.0, +"cmp_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1151", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"PSIum", +"name":"Photosystem I", +"metabolites":{ +"fdxox_c":-0.99, +"fdxrd_c":0.99, +"o2_c":-0.01, +"o2s_c":0.01, +"p700*_um":-1.0, +"p700_um":1.0, +"pccu1p_u":-1.0, +"pccu2p_u":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0407 and Synpcc7942_0535 and Synpcc7942_0654 and Synpcc7942_0920 and Synpcc7942_1002 and Synpcc7942_1249 and Synpcc7942_1250 and Synpcc7942_1322 and Synpcc7942_1912a and Synpcc7942_2048 and Synpcc7942_2049 and Synpcc7942_2321 and Synpcc7942_2342 and Synpcc7942_2343 and Synpcc7942_2513", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"Cobalt2abcppI", +"name":"Cobalt II transport via ABC system periplasm I", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"cobalt2_c":1.0, +"cobalt2_p":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2341 and Synpcc7942_0560 and Synpcc7942_1639", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"THRS", +"name":"Threonine synthase", +"metabolites":{ +"h2o_c":-1.0, +"phom_c":-1.0, +"pi_c":1.0, +"thr__L_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2612 or Synpcc7942_1782", +"subsystem":"Amino acid metabolism: Glycine, Serine and Threonine metabolism" +}, +{ +"id":"AOXPBDC", +"name":"2-Amino-3-oxo-4-phosphonooxybutyrate decarboxylation (spontaneous)", +"metabolites":{ +"2a3pp_c":-1.0, +"3a2oxpp_c":1.0, +"co2_c":1.0, +"h_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Cofactor biosynthesis: Vitamin B6" +}, +{ +"id":"NAMNPP", +"name":"Nicotinic acid mononucleotide pyrophosphorylase", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"h2o_c":-1.0, +"nac_c":-1.0, +"nicrnt_c":1.0, +"pi_c":1.0, +"ppi_c":1.0, +"prpp_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0206", +"subsystem":"Cofactor biosynthesis: Nicotinate and Nicotinamide metabolism" +}, +{ +"id":"PERD", +"name":"Erythronate 4-phosphate (4per) dehydrogenase", +"metabolites":{ +"4per_c":-1.0, +"h_c":1.0, +"nad_c":-1.0, +"nadh_c":1.0, +"ohpb_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1596", +"subsystem":"Cofactor biosynthesis: Vitamin B6" +}, +{ +"id":"DAPDC", +"name":"Diaminopimelate decarboxylase", +"metabolites":{ +"26dap__M_c":-1.0, +"co2_c":1.0, +"h_c":-1.0, +"lys__L_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0262", +"subsystem":"Amino acid metabolism: Lysine biosynthesis" +}, +{ +"id":"COCHL", +"name":"Cobaltochelatase", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"co2dam_c":1.0, +"cobalt2_c":-1.0, +"h2o_c":-1.0, +"h_c":3.0, +"hgbam_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0097 and Synpcc7942_0827", +"subsystem":"Cofactor biosynthesis: Vitamin B12" +}, +{ +"id":"3OAR100", +"name":"3-oxoacyl-[acyl-carrier-protein] reductase (n-C10:0)", +"metabolites":{ +"3hdecACP_c":1.0, +"3odecACP_c":-1.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0684", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"PFK_3", +"name":"Phosphofructokinase (s7p)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"h_c":1.0, +"s17bp_c":1.0, +"s7p_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0592", +"subsystem":"Calvin cycle/Pentose phosphate pathway" +}, +{ +"id":"PPK2r", +"name":"Polyphosphate kinase", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"ppi_c":-1.0, +"pppi_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1566", +"subsystem":"Inorganic Ion Transport and Metabolism" +}, +{ +"id":"ZNabcpp", +"name":"Zinc (Zn+2) transport via ABC system (periplasm)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"pi_c":1.0, +"zn2_c":1.0, +"zn2_p":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"(Synpcc7942_1316 and Synpcc7942_1317 and Synpcc7942_1318) or (Synpcc7942_2573 and Synpcc7942_2574 and Synpcc7942_2575)", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"GLYDHDA", +"name":"Gylcine dehydrogenase (deamidating)", +"metabolites":{ +"glx_c":1.0, +"gly_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"nad_c":-1.0, +"nadh_c":1.0, +"nh4_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1760", +"subsystem":"Photorespiration/Glyoxylate Degredation" +}, +{ +"id":"ANS", +"name":"Anthranilate synthase", +"metabolites":{ +"anth_c":1.0, +"chor_c":-1.0, +"gln__L_c":-1.0, +"glu__L_c":1.0, +"h_c":1.0, +"pyr_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0400 and Synpcc7942_1003", +"subsystem":"Amino acid metabolism: Phenylalanine, Tyrosine, Tryptophan biosynthesis" +}, +{ +"id":"SUCBZL", +"name":"O-succinylbenzoate-CoA ligase", +"metabolites":{ +"amp_c":1.0, +"atp_c":-1.0, +"coa_c":-1.0, +"ppi_c":1.0, +"sbzcoa_c":1.0, +"sucbz_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1021", +"subsystem":"Phylloquinone biosynthesis" +}, +{ +"id":"ADPT", +"name":"Adenine phosphoribosyltransferase", +"metabolites":{ +"ade_c":-1.0, +"amp_c":1.0, +"ppi_c":1.0, +"prpp_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2454", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"RNDR3", +"name":"Ribonucleoside-diphosphate reductase (CDP)", +"metabolites":{ +"cdp_c":-1.0, +"dcdp_c":1.0, +"h2o_c":1.0, +"trdox_c":1.0, +"trdrd_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1609", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"DHNANT", +"name":"1,4-dihydroxy-2-napthoyl phytyltransferase", +"metabolites":{ +"co2_c":1.0, +"dhna_c":-1.0, +"dmtphllqne_c":1.0, +"nadp_c":-1.0, +"nadph_c":1.0, +"phdp_c":-1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1366 and Synpcc7942_2508", +"subsystem":"Phylloquinone biosynthesis" +}, +{ +"id":"GND", +"name":"Phosphogluconate dehydrogenase", +"metabolites":{ +"6pgc_c":-1.0, +"co2_c":1.0, +"nadp_c":-1.0, +"nadph_c":1.0, +"ru5p__D_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0039", +"subsystem":"Calvin cycle/Pentose phosphate pathway" +}, +{ +"id":"O2tcx", +"name":"Oxygen transport into the carboxyzome via diffusion", +"metabolites":{ +"o2_c":-1.0, +"o2_cx":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: carboxyzome" +}, +{ +"id":"TRPS3", +"name":"Tryptophan synthase (indoleglycerol phosphate)", +"metabolites":{ +"3ig3p_c":-1.0, +"g3p_c":1.0, +"indole_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0411 and Synpcc7942_2143", +"subsystem":"Amino acid metabolism: Phenylalanine, Tyrosine, Tryptophan biosynthesis" +}, +{ +"id":"DNTPPA", +"name":"Dihydroneopterin triphosphate pyrophosphatase", +"metabolites":{ +"ahdt_c":-1.0, +"dhpmp_c":1.0, +"h2o_c":-1.0, +"h_c":1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Cofactor biosynthesis: Folate biosynthesis" +}, +{ +"id":"HOXGfx", +"name":"Heme oxygenase 1 (ferredoxin utilizing)", +"metabolites":{ +"biliverd_c":1.0, +"co_c":1.0, +"fdxox_c":6.0, +"fdxrd_c":-6.0, +"fe2_c":1.0, +"h2o_c":3.0, +"h_c":-8.0, +"o2_c":-3.0, +"pheme_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1858", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"TMPPP", +"name":"Thiamine-phosphate diphoshorylase", +"metabolites":{ +"2mahmp_c":-1.0, +"co2_c":1.0, +"cthzp_c":-1.0, +"h_c":-2.0, +"ppi_c":1.0, +"thmmp_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1057", +"subsystem":"Cofactor biosynthesis: Thiamine (B1)" +}, +{ +"id":"TALA", +"name":"Transaldolase", +"metabolites":{ +"e4p_c":1.0, +"f6p_c":1.0, +"g3p_c":-1.0, +"s7p_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2297", +"subsystem":"Calvin cycle/Pentose phosphate pathway" +}, +{ +"id":"ACONT", +"name":"Aconitase", +"metabolites":{ +"cit_c":-1, +"icit_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0903", +"subsystem":"Pyruvate metabolism/TCA Reactions" +}, +{ +"id":"IGPS", +"name":"Indole-3-glycerol-phosphate synthase", +"metabolites":{ +"2cpr5p_c":-1.0, +"3ig3p_c":1.0, +"co2_c":1.0, +"h2o_c":1.0, +"h_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1197", +"subsystem":"Amino acid metabolism: Phenylalanine, Tyrosine, Tryptophan biosynthesis" +}, +{ +"id":"HBZNPT", +"name":"Hydroxybenzoate nonaprenyltransferase", +"metabolites":{ +"3nphb_c":1.0, +"4hbz_c":-1.0, +"npdp_c":-1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1964", +"subsystem":"Plastoquinol biosynthesis" +}, +{ +"id":"HSDyi", +"name":"Homoserine dehydrogenase NADP irreversible", +"metabolites":{ +"aspsa_c":-1.0, +"h_c":-1.0, +"hom__L_c":1.0, +"nadp_c":1.0, +"nadph_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2090", +"subsystem":"Amino acid metabolism: Glycine, Serine and Threonine metabolism" +}, +{ +"id":"GLYOX", +"name":"Hydroxyacylglutathione hydrolase", +"metabolites":{ +"gthrd_c":1.0, +"h2o_c":-1.0, +"h_c":1.0, +"lac__D_c":1.0, +"lgt__S_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0937 or Synpcc7942_1403", +"subsystem":"Calvin cycle/Pentose phosphate pathway" +}, +{ +"id":"CBMD", +"name":"Carbamate deaminase", +"metabolites":{ +"cbm_c":-1.0, +"co2_c":1.0, +"h_c":-2.0, +"nh4_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Nitrogen metabolism" +}, +{ +"id":"AICART", +"name":"Phosphoribosylaminoimidazolecarboxamide formyltransferase", +"metabolites":{ +"10fthf_c":-1.0, +"aicar_c":-1.0, +"fprica_c":1.0, +"thf_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0396", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"UDPSQS", +"name":"UDP-sulfoquinovose synthase", +"metabolites":{ +"h2o_c":1.0, +"h_c":-1, +"so3_c":-1.0, +"udpg_c":-1.0, +"udpsq_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0578", +"subsystem":"Sulfolipid biosynthesis" +}, +{ +"id":"GK1", +"name":"Guanylate kinase (GMP:ATP)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"gdp_c":1.0, +"gmp_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1191", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"OXADC", +"name":"Oxalate decarboxylase", +"metabolites":{ +"co2_c":1.0, +"for_c":1.0, +"h_c":-1.0, +"oxa_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2388", +"subsystem":"Photorespiration/Glyoxylate Degredation" +}, +{ +"id":"PC6AS", +"name":"Precorrin-6A synthase", +"metabolites":{ +"ac_c":1.0, +"ahcys_c":1.0, +"amet_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"pre5_c":-1.0, +"pre6a_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0190", +"subsystem":"Cofactor biosynthesis: Vitamin B12" +}, +{ +"id":"PPND", +"name":"Prephenate dehydrogenase", +"metabolites":{ +"34hpp_c":1.0, +"co2_c":1.0, +"nad_c":-1.0, +"nadh_c":1.0, +"pphn_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0660", +"subsystem":"Amino acid metabolism: Phenylalanine, Tyrosine, Tryptophan biosynthesis" +}, +{ +"id":"IPDPS", +"name":"1-hydroxy-2-methyl-2-(E)-butenyl 4-diphosphate reductase (ipdp)", +"metabolites":{ +"h2mb4p_c":-1.0, +"h2o_c":1.0, +"h_c":-1.0, +"ipdp_c":1.0, +"nadp_c":1.0, +"nadph_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0073", +"subsystem":"Terpenoid Biosynthesis" +}, +{ +"id":"H4THDPS", +"name":"4-hydroxy-tetrahydrodipicolinate synthase", +"metabolites":{ +"4hthdp_c":1.0, +"aspsa_c":-1.0, +"h2o_c":1.0, +"h_c":1.0, +"pyr_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1847", +"subsystem":"Amino acid metabolism: Lysine biosynthesis" +}, +{ +"id":"BM_PIGMENTS", +"name":"Biomass: pigments and xanthophylls", +"metabolites":{ +"bm_pigm_c":1.0, +"calxan_c":-0.1521, +"caro_c":-0.1014, +"cholphya_c":-0.507, +"hpdcn_c":-0.507, +"nstxan_c":-0.0507, +"phycy_c":-0.2332, +"zeax_c":-0.2028 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Biomass and maintenance functions" +}, +{ +"id":"3HAD160", +"name":"3-hydroxyacyl-[acyl-carrier-protein] dehydratase (n-C16:0)", +"metabolites":{ +"3hpalmACP_c":-1.0, +"h2o_c":1.0, +"tpalm2eACP_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0930", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"HISTDa", +"name":"Histidinol dehydrogenase step (Histidinal forming)", +"metabolites":{ +"h_c":1.0, +"histd_c":-1.0, +"histda_c":1.0, +"nad_c":-1.0, +"nadh_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1519", +"subsystem":"Histidine Metabolism" +}, +{ +"id":"ADSL1r", +"name":"Adenylsuccinate lyase", +"metabolites":{ +"amp_c":1.0, +"dcamp_c":-1.0, +"fum_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0315", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"H2Otu_syn", +"name":"H2O transport via diffusion (tilacoid)", +"metabolites":{ +"h2o_c":1.0, +"h2o_u":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Thylakoid Membrane" +}, +{ +"id":"ADOCBLS", +"name":"Adenosylcobalamin 5'-phosphate synthase", +"metabolites":{ +"adocbl_c":1.0, +"agdpcbi_c":-1.0, +"gmp_c":1.0, +"h_c":1.0, +"rdmbzi_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0454", +"subsystem":"Cofactor biosynthesis: Vitamin B12" +}, +{ +"id":"PDS2", +"name":"Phytofluene dehydrogenase", +"metabolites":{ +"h_c":1.0, +"nadp_c":-1.0, +"nadph_c":1.0, +"phytfl_c":-1.0, +"zcarote_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1983", +"subsystem":"Carotenoid biosynthesis" +}, +{ +"id":"ALAALAr", +"name":"D-alanine-D-alanine ligase (reversible)", +"metabolites":{ +"adp_c":1.0, +"ala__D_c":-2.0, +"alaala_c":1.0, +"atp_c":-1.0, +"h_c":1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2375", +"subsystem":"Murein Biosynthesis/Recycling" +}, +{ +"id":"ACOATA", +"name":"Acetyl-CoA ACP transacylase", +"metabolites":{ +"ACP_c":-1.0, +"acACP_c":1.0, +"accoa_c":-1.0, +"coa_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1455", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"GLCP2", +"name":"Glycogen phosphorylase", +"metabolites":{ +"14glucan_c":-1.0, +"amylose_c":1.0, +"g1p_c":1.0, +"pi_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0244", +"subsystem":"Glycogen and sucrose metabolism" +}, +{ +"id":"GLYCK", +"name":"Glycerate kinase", +"metabolites":{ +"3pg_c":1.0, +"adp_c":1.0, +"atp_c":-1.0, +"glyc__R_c":-1.0, +"h_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0996", +"subsystem":"Photorespiration/Glyoxylate Degredation" +}, +{ +"id":"MAN1PT", +"name":"Mannose 1 phosphate guanylyltransferase", +"metabolites":{ +"gdpmann_c":1.0, +"gtp_c":-1.0, +"h_c":-1.0, +"man1p_c":-1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1608", +"subsystem":"Nucleotide sugar metabolism" +}, +{ +"id":"DMBZIDS2", +"name":"5,6-dimethylbenzimidazole synthase", +"metabolites":{ +"dialurate_c":1.0, +"dmbzid_c":1.0, +"e4p_c":1.0, +"fmnh2_c":-1.0, +"h2o_c":1.0, +"h_c":-1.0, +"nad_c":1.0, +"nadh_c":-1.0, +"o2_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2008 or Synpcc7942_1659", +"subsystem":"Cofactor biosynthesis: Riboflavin biosynthesis" +}, +{ +"id":"CS", +"name":"Citrate synthase", +"metabolites":{ +"accoa_c":-1.0, +"cit_c":1.0, +"coa_c":1.0, +"h2o_c":-1.0, +"h_c":1.0, +"oaa_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0612", +"subsystem":"Pyruvate metabolism/TCA Reactions" +}, +{ +"id":"DMATT", +"name":"Dimethylallyltranstransferase", +"metabolites":{ +"dmpp_c":-1.0, +"grdp_c":1.0, +"ipdp_c":-1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0776", +"subsystem":"Terpenoid Biosynthesis" +}, +{ +"id":"PSP_L", +"name":"Phosphoserine phosphatase (L-serine)", +"metabolites":{ +"h2o_c":-1.0, +"pi_c":1.0, +"pser__L_c":-1.0, +"ser__L_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0485", +"subsystem":"Amino acid metabolism: Glycine, Serine and Threonine metabolism" +}, +{ +"id":"NDPK3", +"name":"Nucleoside-diphosphate kinase (ATP:CDP)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"cdp_c":-1.0, +"ctp_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2497", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"G3PD2", +"name":"Glycerol-3-phosphate dehydrogenase (NADP)", +"metabolites":{ +"dhap_c":1.0, +"glyc3p_c":-1.0, +"h_c":1.0, +"nadp_c":-1, +"nadph_c":1 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2522", +"subsystem":"Phosphoglycerolipid metabolism" +}, +{ +"id":"PHYTES", +"name":"Geranylgeranyl-diphosphate geranylgeranyl-diphosphate geranylgeranyltransferase", +"metabolites":{ +"ggdp_c":-2.0, +"ppi_c":1.0, +"prephytedp_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1984", +"subsystem":"Carotenoid biosynthesis" +}, +{ +"id":"MOHMT", +"name":"3-methyl-2-oxobutanoate hydroxymethyltransferase", +"metabolites":{ +"2dhp_c":1.0, +"3mob_c":-1.0, +"h2o_c":-1.0, +"mlthf_c":-1.0, +"thf_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2381", +"subsystem":"Cofactor biosynthesis: Pantothenate and CoA biosynthesis" +}, +{ +"id":"FBA", +"name":"Fructose-bisphosphate aldolase", +"metabolites":{ +"dhap_c":1.0, +"fdp_c":-1.0, +"g3p_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1443", +"subsystem":"Glycolysis/Gluconeogenesis" +}, +{ +"id":"BOF", +"name":"Biomass objective function", +"metabolites":{ +"adp_c":30.0, +"atp_c":-30.0, +"bm_carbs_c":-0.0975, +"bm_cofactors_c":-0.00119, +"bm_cw_c":-0.0793, +"bm_dna_c":-0.0073, +"bm_memlip_c":-0.1587, +"bm_pigm_c":-0.0221, +"bm_pro_c":-0.5099, +"bm_rna_c":-0.1133, +"h2o_c":-30.0, +"h_c":30.0, +"pi_c":30.0 +}, +"lower_bound":0.0, +"upper_bound":2.0, +"gene_reaction_rule":"", +"objective_coefficient":1.0, +"subsystem":"Biomass and maintenance functions" +}, +{ +"id":"ACLSa", +"name":"Acetolactate synthase (step 1)", +"metabolites":{ +"2ahethmpp_c":1.0, +"co2_c":1.0, +"h_c":-1.0, +"pyr_c":-1.0, +"thmpp_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0139 and Synpcc7942_2434", +"subsystem":"Amino acid metabolism: Valine, Leucine and Isoleucine biosynthesis" +}, +{ +"id":"ASADi", +"name":"Aspartate semialdehyde dehydrogenase irreversible", +"metabolites":{ +"4pasp_c":-1.0, +"aspsa_c":1.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1848", +"subsystem":"Amino acid metabolism: Glycine, Serine and Threonine metabolism" +}, +{ +"id":"PSCVT", +"name":"3-phosphoshikimate 1-carboxyvinyltransferase", +"metabolites":{ +"3psme_c":1.0, +"pep_c":-1.0, +"pi_c":1.0, +"skm5p_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0232", +"subsystem":"Amino acid metabolism: Phenylalanine, Tyrosine, Tryptophan biosynthesis" +}, +{ +"id":"TYRTA", +"name":"Tyrosine transaminase", +"metabolites":{ +"34hpp_c":1.0, +"akg_c":-1.0, +"glu__L_c":1.0, +"tyr__L_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2545", +"subsystem":"Amino acid metabolism: Phenylalanine, Tyrosine, Tryptophan biosynthesis" +}, +{ +"id":"SERAT", +"name":"Serine O-acetyltransferase", +"metabolites":{ +"accoa_c":-1.0, +"acser_c":1.0, +"coa_c":1.0, +"ser__L_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2420 or Synpcc7942_B2663", +"subsystem":"Amino acid metabolism: Cysteine and Methionine metabolism" +}, +{ +"id":"DHFS", +"name":"Dihydrofolate synthase", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"dhf_c":1.0, +"dhpt_c":-1.0, +"glu__L_c":-1.0, +"h_c":1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0944", +"subsystem":"Cofactor biosynthesis: Folate biosynthesis" +}, +{ +"id":"AMPMS3", +"name":"4-amino-2-methyl-5-phosphomethylpyrimidine synthetase", +"metabolites":{ +"4ampm_c":1.0, +"air_c":-1.0, +"amet_c":-1.0, +"co_c":1.0, +"dad_5_c":1.0, +"for_c":1.0, +"h_c":2.0, +"met__L_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1096", +"subsystem":"Cofactor biosynthesis: Thiamine (B1)" +}, +{ +"id":"ACBIPGT", +"name":"Adenosyl cobinamide phosphate guanyltransferase", +"metabolites":{ +"adocbip_c":-1.0, +"agdpcbi_c":1.0, +"gtp_c":-1.0, +"h_c":-1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0990", +"subsystem":"Cofactor biosynthesis: Vitamin B12" +}, +{ +"id":"ATPM", +"name":"Modeling: ATP Maintenance", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Biomass and maintenance functions" +}, +{ +"id":"SEPHCHCS", +"name":"2-succinyl-5-enolpyruvyl-6-hydroxy-3-cyclohexene-1-carboxylate synthase", +"metabolites":{ +"2sephchc_c":1.0, +"akg_c":-1.0, +"co2_c":1.0, +"h_c":-1.0, +"ichor_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1435", +"subsystem":"Phylloquinone biosynthesis" +}, +{ +"id":"NMNDA", +"name":"Nicotinamide-nucleotide amidase", +"metabolites":{ +"h2o_c":-1.0, +"nh4_c":1.0, +"nicrnt_c":1.0, +"nmn_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0280", +"subsystem":"Cofactor biosynthesis: Nicotinate and Nicotinamide metabolism" +}, +{ +"id":"IGPDH", +"name":"Imidazoleglycerol-phosphate dehydratase", +"metabolites":{ +"eig3p_c":-1.0, +"h2o_c":1.0, +"imacp_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0125", +"subsystem":"Histidine Metabolism" +}, +{ +"id":"OMPDC", +"name":"Orotidine-5'-phosphate decarboxylase", +"metabolites":{ +"co2_c":1.0, +"h_c":-1.0, +"orot5p_c":-1.0, +"ump_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2569", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"DCTPD", +"name":"DCTP deaminase", +"metabolites":{ +"dctp_c":-1.0, +"dutp_c":1.0, +"h2o_c":-1.0, +"h_c":-1.0, +"nh4_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0717", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"3OAR80", +"name":"3-oxoacyl-[acyl-carrier-protein] reductase (n-C8:0)", +"metabolites":{ +"3hoctACP_c":1.0, +"3ooctACP_c":-1.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0684", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"3OAR180", +"name":"3-oxoacyl-[acyl-carrier-protein] reductase (n-C18:0)", +"metabolites":{ +"3hoctaACP_c":1.0, +"3ooctdACP_c":-1.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0684", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"GLUSfx", +"name":"Glutamate synthase (ferredoxin)", +"metabolites":{ +"akg_c":-1.0, +"fdxox_c":2.0, +"fdxrd_c":-2.0, +"gln__L_c":-1.0, +"glu__L_c":2.0, +"h_c":-2.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0890", +"subsystem":"Amino acid metabolism: Alanine, Aspartate and Glutamate metabolism" +}, +{ +"id":"NADS2", +"name":"Nicotinate-mononucleotide adenylyltransferase", +"metabolites":{ +"amp_c":1.0, +"atp_c":-1.0, +"dnad_c":-1.0, +"gln__L_c":-1.0, +"glu__L_c":1.0, +"h2o_c":-1.0, +"h_c":1.0, +"nad_c":1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0105", +"subsystem":"Cofactor biosynthesis: Nicotinate and Nicotinamide metabolism" +}, +{ +"id":"GLUTRR", +"name":"Glutamyl-tRNA reductase", +"metabolites":{ +"glu1sa_c":1.0, +"glutrna_c":-1.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0, +"trnaglu_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0504", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"G1PTT", +"name":"Glucose-1-phosphate thymidylyltransferase", +"metabolites":{ +"dtdpglu_c":1.0, +"dttp_c":-1.0, +"g1p_c":-1.0, +"h_c":-1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2101", +"subsystem":"Nucleotide sugar metabolism" +}, +{ +"id":"UAMAGS", +"name":"UDP-N-acetylmuramoyl-L-alanyl-D-glutamate synthetase", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"glu__D_c":-1.0, +"h_c":1.0, +"pi_c":1.0, +"uama_c":-1.0, +"uamag_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1667", +"subsystem":"Murein Biosynthesis/Recycling" +}, +{ +"id":"FOLD3", +"name":"7,8-dihydropteroate synthase", +"metabolites":{ +"2ahhmd_c":-1.0, +"4abz_c":-1.0, +"dhpt_c":1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2303", +"subsystem":"Cofactor biosynthesis: Folate biosynthesis" +}, +{ +"id":"3HAD100", +"name":"3-hydroxyacyl-[acyl-carrier-protein] dehydratase (n-C10:0)", +"metabolites":{ +"3hdecACP_c":-1.0, +"h2o_c":1.0, +"tdec2eACP_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0930", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"MEHLER", +"name":"Mehler reaction", +"metabolites":{ +"h2o_c":2.0, +"h_c":-2.0, +"nadp_c":2.0, +"nadph_c":-2.0, +"o2_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1809 and Synpcc7942_1810", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"GALUi", +"name":"UTP-glucose-1-phosphate uridylyltransferase (irreversible)", +"metabolites":{ +"g1p_c":-1.0, +"h_c":-1.0, +"ppi_c":1.0, +"udpg_c":1.0, +"utp_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1973", +"subsystem":"Nucleotide sugar metabolism" +}, +{ +"id":"P5CR", +"name":"Pyrroline-5-carboxylate reductase", +"metabolites":{ +"1pyr5c_c":-1.0, +"h_c":-2.0, +"nadp_c":1.0, +"nadph_c":-1.0, +"pro__L_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2058", +"subsystem":"Amino acid metabolism: Proline and Arginine metabolism" +}, +{ +"id":"PQH2tum", +"name":"Plastoquinine insertion into the thylakoid membrane", +"metabolites":{ +"pqh2_c":-1.0, +"pqh2_um":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Thylakoid Membrane" +}, +{ +"id":"ICHORS", +"name":"Isochorismate synthase", +"metabolites":{ +"chor_c":-1.0, +"ichor_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2188", +"subsystem":"Phylloquinone biosynthesis" +}, +{ +"id":"3OAS140", +"name":"3-oxoacyl-[acyl-carrier-protein] synthase (n-C14:0)", +"metabolites":{ +"3omrsACP_c":1.0, +"ACP_c":1.0, +"co2_c":1.0, +"ddcaACP_c":-1.0, +"h_c":-1.0, +"malACP_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0537", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"SBP", +"name":"Sedoheptulose-bisphosphatase", +"metabolites":{ +"h2o_c":-1.0, +"pi_c":1.0, +"s17bp_c":-1.0, +"s7p_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0505", +"subsystem":"Calvin cycle/Pentose phosphate pathway" +}, +{ +"id":"EAR60y", +"name":"Enoyl-[acyl-carrier-protein] reductase (NADPH) (n-C6:0)", +"metabolites":{ +"h_c":-1.0, +"hexACP_c":1.0, +"nadp_c":1.0, +"nadph_c":-1.0, +"thex2eACP_c":-1.0 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0126", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"O2tu", +"name":"O2 transport (diffusion), lumen", +"metabolites":{ +"o2_c":1.0, +"o2_u":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Thylakoid Membrane" +}, +{ +"id":"SULabcpp", +"name":"Sulfate transport via ABC system (periplasm)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"pi_c":1.0, +"so4_c":1.0, +"so4_p":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"(Synpcc7942_1680 and Synpcc7942_1681 and Synpcc7942_1682 and Synpcc7942_1722) or (Synpcc7942_1685 and Synpcc7942_1686 and Synpcc7942_1687 and Synpcc7942_1688)", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"PPKr", +"name":"Polyphosphate kinase", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"pi_c":-1.0, +"ppi_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1566", +"subsystem":"Inorganic Ion Transport and Metabolism" +}, +{ +"id":"BM_DNA", +"name":"Biomass: DNA", +"metabolites":{ +"bm_dna_c":1.0, +"datp_c":-0.7237, +"dctp_c":-0.89986, +"dgtp_c":-0.89986, +"dttp_c":-0.7237, +"ppi_c":3.24711 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0194 and Synpcc7942_0570 and Synpcc7942_2199 and Synpcc7942_0001 and Synpcc7942_0405 and Synpcc7942_0094 and Synpcc7942_0912", +"subsystem":"Biomass and maintenance functions" +}, +{ +"id":"UAPGR", +"name":"UDP-N-acetylenolpyruvoylglucosamine reductase", +"metabolites":{ +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0, +"uaccg_c":-1.0, +"uamr_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1740", +"subsystem":"Murein Biosynthesis/Recycling" +}, +{ +"id":"DHAD1", +"name":"Dihydroxy-acid dehydratase (2,3-dihydroxy-3-methylbutanoate)", +"metabolites":{ +"23dhmb_c":-1.0, +"3mob_c":1.0, +"h2o_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0626", +"subsystem":"Amino acid metabolism: Valine, Leucine and Isoleucine biosynthesis" +}, +{ +"id":"IPPS", +"name":"2-isopropylmalate synthase", +"metabolites":{ +"3c3hmp_c":1.0, +"3mob_c":-1.0, +"accoa_c":-1.0, +"coa_c":1.0, +"h2o_c":-1.0, +"h_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0428", +"subsystem":"Amino acid metabolism: Valine, Leucine and Isoleucine biosynthesis" +}, +{ +"id":"PPBNGS", +"name":"Porphobilinogen synthase", +"metabolites":{ +"5aop_c":-2.0, +"h2o_c":2.0, +"h_c":1.0, +"ppbng_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1792", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"PRE3BS", +"name":"Precorrin-3B synthase", +"metabolites":{ +"h2o_c":1.0, +"h_c":-1.0, +"nad_c":1.0, +"nadh_c":-1.0, +"o2_c":-1.0, +"pre3a_c":-1.0, +"pre3b_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1851", +"subsystem":"Cofactor biosynthesis: Vitamin B12" +}, +{ +"id":"PHYTES2", +"name":"Prephytoene diphosphate geranylgeranyl-diphosphategeranylgeranyltransferase", +"metabolites":{ +"phyto_c":1.0, +"ppi_c":1.0, +"prephytedp_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1984", +"subsystem":"Carotenoid biosynthesis" +}, +{ +"id":"3HAD80", +"name":"3-hydroxyacyl-[acyl-carrier-protein] dehydratase (n-C8:0)", +"metabolites":{ +"3hoctACP_c":-1.0, +"h2o_c":1.0, +"toct2eACP_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0930", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"LTHRK", +"name":"L threonine kinase", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"h_c":1.0, +"thr__L_c":-1.0, +"thrp_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1294 or Synpcc7942_0600 or Synpcc7942_0780 or Synpcc7942_1111 or Synpcc7942_1121", +"subsystem":"Cofactor biosynthesis: Vitamin B12" +}, +{ +"id":"PPS", +"name":"Phosphoenolpyruvate synthase", +"metabolites":{ +"amp_c":1.0, +"atp_c":-1.0, +"h2o_c":-1.0, +"h_c":2.0, +"pep_c":1.0, +"pi_c":1.0, +"pyr_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0781", +"subsystem":"Pyruvate metabolism/TCA Reactions" +}, +{ +"id":"ADCPS2", +"name":"Adenosylcobyric acid:(R)-1-aminopropan-2-yl phosphate ligase", +"metabolites":{ +"adcobhex_c":-1.0, +"adocbip_c":1.0, +"adp_c":1.0, +"applp_c":-1.0, +"atp_c":-1.0, +"h_c":1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1441", +"subsystem":"Cofactor biosynthesis: Vitamin B12" +}, +{ +"id":"GF6PTA", +"name":"Glutamine-fructose-6-phosphate transaminase", +"metabolites":{ +"f6p_c":-1.0, +"gam6p_c":1.0, +"gln__L_c":-1.0, +"glu__L_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0534", +"subsystem":"Murein Biosynthesis/Recycling" +}, +{ +"id":"O2tpp", +"name":"O2 transport via diffusion (periplasm)", +"metabolites":{ +"o2_c":1.0, +"o2_p":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"PGMT", +"name":"Phosphoglucomutase", +"metabolites":{ +"g1p_c":-1.0, +"g6p_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0156", +"subsystem":"Glycolysis/Gluconeogenesis" +}, +{ +"id":"3OAR140", +"name":"3-oxoacyl-[acyl-carrier-protein] reductase (n-C14:0)", +"metabolites":{ +"3hmrsACP_c":1.0, +"3omrsACP_c":-1.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0684", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"NMNS", +"name":"NMN synthetase", +"metabolites":{ +"h_c":-1.0, +"ncam_c":-1.0, +"nmn_c":1.0, +"ppi_c":1.0, +"prpp_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0206", +"subsystem":"Cofactor biosynthesis: Nicotinate and Nicotinamide metabolism" +}, +{ +"id":"NDPK2", +"name":"Nucleoside-diphosphate kinase (ATP:UDP)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"udp_c":-1.0, +"utp_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2497", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"AGDI", +"name":"Agmatine deiminase", +"metabolites":{ +"agm_c":-1.0, +"cbmp_c":1.0, +"h2o_c":-1.0, +"nh4_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2402", +"subsystem":"Amino acid metabolism: Proline and Arginine metabolism" +}, +{ +"id":"LPADSS2", +"name":"Lipid A disaccaride synthase (Synechococcus elongatus 7942)", +"metabolites":{ +"h_c":1.0, +"lipidAds2_c":1.0, +"lipidX2_c":-1.0, +"u23ga2_c":-1, +"udp_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0932", +"subsystem":"Lipopolysaccharide/O-antigen Biosynthesis" +}, +{ +"id":"DPR", +"name":"2-dehydropantoate 2-reductase", +"metabolites":{ +"2dhp_c":-1.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0, +"pant__R_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1552", +"subsystem":"Cofactor biosynthesis: Pantothenate and CoA biosynthesis" +}, +{ +"id":"H2Otex", +"name":"H2O transport via diffusion (extracellular to periplasm)", +"metabolites":{ +"h2o_e":-1.0, +"h2o_p":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"TKT2", +"name":"Transketolase", +"metabolites":{ +"e4p_c":-1.0, +"f6p_c":1.0, +"g3p_c":1.0, +"xu5p__D_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0538", +"subsystem":"Calvin cycle/Pentose phosphate pathway" +}, +{ +"id":"DM_for_c", +"name":"Modeling: demand reaction (for_c)", +"metabolites":{ +"for_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Intracellular demand" +}, +{ +"id":"HEX7", +"name":"Hexokinase (D-fructose:ATP)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"f6p_c":1.0, +"fru_c":-1.0, +"h_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0116", +"subsystem":"Glycolysis/Gluconeogenesis" +}, +{ +"id":"PPNCL2", +"name":"Phosphopantothenate-cysteine ligase", +"metabolites":{ +"4ppan_c":-1.0, +"4ppcys_c":1.0, +"cmp_c":1.0, +"ctp_c":-1.0, +"cys__L_c":-1.0, +"h_c":1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0292", +"subsystem":"Cofactor biosynthesis: Pantothenate and CoA biosynthesis" +}, +{ +"id":"CYTBD4cm", +"name":"Cytochrome bd oxidase (plastoquinone utilizing, non-proton translocating)", +"metabolites":{ +"h2o_c":2.0, +"h_c":-4.0, +"h_p":4.0, +"o2_c":-1.0, +"pq_cm":2.0, +"pqh2_cm":-2.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1766 and Synpcc7942_1767", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"GLYCOR_nadp", +"name":"D-Glycerate:NADP+ 2-oxidoreductase", +"metabolites":{ +"glyc__R_c":1.0, +"h_c":-1.0, +"hpyr_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1857", +"subsystem":"Photorespiration/Glyoxylate Degredation" +}, +{ +"id":"CHORS", +"name":"Chorismate synthase", +"metabolites":{ +"3psme_c":-1.0, +"chor_c":1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0212", +"subsystem":"Amino acid metabolism: Phenylalanine, Tyrosine, Tryptophan biosynthesis" +}, +{ +"id":"3OAR160", +"name":"3-oxoacyl-[acyl-carrier-protein] reductase (n-C16:0)", +"metabolites":{ +"3hpalmACP_c":1.0, +"3opalmACP_c":-1.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0684", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"ADMDC", +"name":"Adenosylmethionine decarboxylase", +"metabolites":{ +"amet_c":-1.0, +"ametam_c":1.0, +"co2_c":1.0, +"h_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2043 or Synpcc7942_2249", +"subsystem":"Amino acid metabolism: Cysteine and Methionine metabolism" +}, +{ +"id":"PPPGO2", +"name":"Protoporphyrinogen oxidase (aerobic)", +"metabolites":{ +"h2o2_c":3, +"o2_c":-3.0, +"ppp9_c":1.0, +"pppg9_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0849", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"ASP1DC", +"name":"Aspartate 1-decarboxylase", +"metabolites":{ +"ala_B_c":1.0, +"asp__L_c":-1.0, +"co2_c":1.0, +"h_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2310", +"subsystem":"Cofactor biosynthesis: Pantothenate and CoA biosynthesis" +}, +{ +"id":"DNAMTn2r", +"name":"S-Adenosyl-L-methionine:DNA (cytosine-5-)-methyltransferase", +"metabolites":{ +"ahcys_c":1.0, +"amet_c":-1.0, +"dna5mtc_c":1.0, +"dna_c":-1.0, +"h_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2460", +"subsystem":"Amino acid metabolism: Cysteine and Methionine metabolism" +}, +{ +"id":"MI3PP", +"name":"1D-myo-inositol 3-phosphate phosphohydrolase", +"metabolites":{ +"h2o_c":-1.0, +"inost_c":1.0, +"mi3p__D_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2582", +"subsystem":"Inositol phosphate metabolism" +}, +{ +"id":"CYSS_2", +"name":"Cysteine synthase", +"metabolites":{ +"ac_c":1.0, +"acser_c":-1.0, +"cys__L_c":1.0, +"h2s_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0171 or Synpcc7942_B2623 or Synpcc7942_B2664 or Synpcc7942_1466", +"subsystem":"Amino acid metabolism: Cysteine and Methionine metabolism" +}, +{ +"id":"PROHX", +"name":"Proline hydroxylase", +"metabolites":{ +"4hpro__LT_c":1.0, +"akg_c":-1.0, +"co2_c":1.0, +"o2_c":-1.0, +"pro__L_c":-1.0, +"succ_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2480", +"subsystem":"Amino acid metabolism: Proline and Arginine metabolism" +}, +{ +"id":"FTHFD", +"name":"Formyltetrahydrofolate deformylase", +"metabolites":{ +"10fthf_c":-1.0, +"for_c":1.0, +"h2o_c":-1.0, +"h_c":1.0, +"thf_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1008", +"subsystem":"Cofactor biosynthesis: Folate biosynthesis" +}, +{ +"id":"MEPCT", +"name":"2-C-methyl-D-erythritol 4-phosphate cytidylyltransferase", +"metabolites":{ +"2me4p_c":-1.0, +"4c2me_c":1.0, +"ctp_c":-1.0, +"h_c":-1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0681", +"subsystem":"Terpenoid Biosynthesis" +}, +{ +"id":"PDX5POi", +"name":"Pyridoxine 5'-phosphate oxidase", +"metabolites":{ +"h2o2_c":1.0, +"o2_c":-1.0, +"pdx5p_c":-1.0, +"pydx5p_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0070", +"subsystem":"Cofactor biosynthesis: Vitamin B6" +}, +{ +"id":"PPCDC", +"name":"Phosphopantothenoylcysteine decarboxylase", +"metabolites":{ +"4ppcys_c":-1.0, +"co2_c":1.0, +"h_c":-1.0, +"pan4p_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0292", +"subsystem":"Cofactor biosynthesis: Pantothenate and CoA biosynthesis" +}, +{ +"id":"NTD6", +"name":"5'-nucleotidase (dAMP)", +"metabolites":{ +"dad_2_c":1.0, +"damp_c":-1.0, +"h2o_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2063", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"NNDMBRT", +"name":"Nicotinate-nucleotide dimethylbenzimidazole phosphoribosyltransferase", +"metabolites":{ +"5prdmbz_c":1.0, +"dmbzid_c":-1.0, +"h_c":1.0, +"nac_c":1.0, +"nicrnt_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2268", +"subsystem":"Cofactor biosynthesis: Vitamin B12" +}, +{ +"id":"ASNN", +"name":"L-asparaginase", +"metabolites":{ +"asn__L_c":-1.0, +"asp__L_c":1.0, +"h2o_c":-1.0, +"nh4_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0166", +"subsystem":"Amino acid metabolism: Asparagine metabolism" +}, +{ +"id":"PRAIS", +"name":"Phosphoribosylaminoimidazole synthase", +"metabolites":{ +"adp_c":1.0, +"air_c":1.0, +"atp_c":-1.0, +"fpram_c":-1.0, +"h_c":2.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0851", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"ORNTAC", +"name":"Ornithine transacetylase", +"metabolites":{ +"acglu_c":1.0, +"acorn_c":-1.0, +"glu__L_c":-1.0, +"orn_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1896", +"subsystem":"Amino acid metabolism: Proline and Arginine metabolism" +}, +{ +"id":"SUCBZS", +"name":"O-succinylbenzoate-CoA synthase", +"metabolites":{ +"2shchc_c":-1.0, +"h2o_c":1.0, +"sucbz_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1020", +"subsystem":"Phylloquinone biosynthesis" +}, +{ +"id":"HGYDAS", +"name":"Hydrogenobyrinic acid a,c-diamide synthase", +"metabolites":{ +"adp_c":2.0, +"atp_c":-2.0, +"gln__L_c":-2.0, +"glu__L_c":2.0, +"h2o_c":-2.0, +"h_c":2.0, +"hgbam_c":1.0, +"hgbyr_c":-1.0, +"pi_c":2.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1855", +"subsystem":"Cofactor biosynthesis: Vitamin B12" +}, +{ +"id":"GGDPR", +"name":"Geranylgeranyl diphosphate reductase", +"metabolites":{ +"ggdp_c":-1.0, +"h_c":-3.0, +"nadp_c":3.0, +"nadph_c":-3.0, +"phdp_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0385", +"subsystem":"Terpenoid Biosynthesis" +}, +{ +"id":"ASPCT", +"name":"Aspartate carbamoyltransferase", +"metabolites":{ +"asp__L_c":-1.0, +"cbasp_c":1.0, +"cbp_c":-1.0, +"h_c":1.0, +"pi_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0486 and Synpcc7942_0670", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"PPNDH", +"name":"Prephenate dehydratase", +"metabolites":{ +"co2_c":1.0, +"h2o_c":1.0, +"h_c":-1.0, +"phpyr_c":1.0, +"pphn_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0881", +"subsystem":"Amino acid metabolism: Phenylalanine, Tyrosine, Tryptophan biosynthesis" +}, +{ +"id":"NMNAT", +"name":"Nicotinamide-nucleotide adenylyltransferase", +"metabolites":{ +"atp_c":-1.0, +"h_c":-1.0, +"nad_c":1.0, +"nmn_c":-1.0, +"ppi_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0205 or Synpcc7942_0106", +"subsystem":"Cofactor biosynthesis: Nicotinate and Nicotinamide metabolism" +}, +{ +"id":"ME2", +"name":"Malic enzyme (NADP)", +"metabolites":{ +"co2_c":1.0, +"mal__L_c":-1.0, +"nadp_c":-1.0, +"nadph_c":1.0, +"pyr_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1297", +"subsystem":"Pyruvate metabolism/TCA Reactions" +}, +{ +"id":"APRAUR", +"name":"5-amino-6-(5-phosphoribosylamino)uracil reductase", +"metabolites":{ +"5aprbu_c":1.0, +"5apru_c":-1.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Cofactor biosynthesis: Riboflavin biosynthesis" +}, +{ +"id":"SADT", +"name":"Sulfate adenylyltransferase", +"metabolites":{ +"aps_c":1.0, +"atp_c":-1.0, +"h_c":-1.0, +"ppi_c":1.0, +"so4_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0295", +"subsystem":"Amino acid metabolism: Cysteine and Methionine metabolism" +}, +{ +"id":"LDH_D", +"name":"D-lactate dehydrogenase", +"metabolites":{ +"h_c":1.0, +"lac__D_c":-1.0, +"nad_c":-1.0, +"nadh_c":1.0, +"pyr_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1347", +"subsystem":"Pyruvate metabolism/TCA Reactions" +}, +{ +"id":"DPCOAK", +"name":"Dephospho-CoA kinase", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"coa_c":1.0, +"dpcoa_c":-1.0, +"h_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0273", +"subsystem":"Cofactor biosynthesis: Pantothenate and CoA biosynthesis" +}, +{ +"id":"O2tex", +"name":"Oxygen transport via diffusion (extracellular to periplasm)", +"metabolites":{ +"o2_e":-1.0, +"o2_p":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"DPOR", +"name":"Light independent protochlorophyllide oxidoreductase", +"metabolites":{ +"adp_c":2.0, +"atp_c":-2.0, +"chlda_c":1.0, +"fdxox_c":2.0, +"fdxrd_c":-2.0, +"h2o_c":-2.0, +"pchlld_c":-1.0, +"pi_c":2.0 +}, +"lower_bound":0.0, +"upper_bound":0.0, +"gene_reaction_rule":"Synpcc7942_1419 and Synpcc7942_1420 and Synpcc7942_1838", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"ARGSL", +"name":"Argininosuccinate lyase", +"metabolites":{ +"arg__L_c":1.0, +"argsuc_c":-1.0, +"fum_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2475", +"subsystem":"Amino acid metabolism: Proline and Arginine metabolism" +}, +{ +"id":"HSK", +"name":"Homoserine kinase", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"h_c":1.0, +"hom__L_c":-1.0, +"phom_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1440", +"subsystem":"Amino acid metabolism: Glycine, Serine and Threonine metabolism" +}, +{ +"id":"EAR120y", +"name":"Enoyl-[acyl-carrier-protein] reductase (NADPH) (n-C12:0)", +"metabolites":{ +"ddcaACP_c":1.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0, +"tddec2eACP_c":-1.0 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0126", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"BCAROHX2", +"name":"Beta-carotene hydroxylase (zeaxanthin forming)", +"metabolites":{ +"bcryptox_c":-1.0, +"h2o_c":1.0, +"h_c":-1.0, +"nad_c":1.0, +"nadh_c":-1.0, +"o2_c":-1.0, +"zeax_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2439", +"subsystem":"Carotenoid biosynthesis" +}, +{ +"id":"HPPK", +"name":"ATP:2-amino-4-hydroxy-6-hydroxymethyl-7,8-dihydropteridine 6'-pyrophosphotransferase", +"metabolites":{ +"2ahhmd_c":1.0, +"2ahhmp_c":-1.0, +"amp_c":1.0, +"atp_c":-1.0, +"h_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2272", +"subsystem":"Cofactor biosynthesis: Folate biosynthesis" +}, +{ +"id":"PPNCL3", +"name":"Phosphopantothenate-cysteine ligase", +"metabolites":{ +"4ppan_c":-1.0, +"4ppcys_c":1.0, +"amp_c":1.0, +"atp_c":-1.0, +"cys__L_c":-1.0, +"h_c":1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0292", +"subsystem":"Cofactor biosynthesis: Pantothenate and CoA biosynthesis" +}, +{ +"id":"AHCi", +"name":"Adenosylhomocysteinase", +"metabolites":{ +"adn_c":1.0, +"ahcys_c":-1.0, +"h2o_c":-1.0, +"hcys__L_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0618", +"subsystem":"Amino acid metabolism: Cysteine and Methionine metabolism" +}, +{ +"id":"G6PDH2r", +"name":"Glucose 6-phosphate dehydrogenase", +"metabolites":{ +"6pgl_c":1.0, +"g6p_c":-1.0, +"h_c":1.0, +"nadp_c":-1.0, +"nadph_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2334", +"subsystem":"Calvin cycle/Pentose phosphate pathway" +}, +{ +"id":"MPPM", +"name":"D-Mannose 6-phosphate 1,6-phosphomutase", +"metabolites":{ +"man1p_c":1.0, +"man6p_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1268", +"subsystem":"Nucleotide sugar metabolism" +}, +{ +"id":"CPPPGO2", +"name":"Oxygen Independent coproporphyrinogen-III oxidase", +"metabolites":{ +"amet_c":-2.0, +"co2_c":2.0, +"cpppg3_c":-1.0, +"dad_5_c":2.0, +"met__L_c":2.0, +"pppg9_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":0.0, +"gene_reaction_rule":"Synpcc7942_2382", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"PC17M", +"name":"Precorrin-3B methyltransferase", +"metabolites":{ +"ahcys_c":1.0, +"amet_c":-1.0, +"h_c":2.0, +"pre3b_c":-1.0, +"pre4_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1854", +"subsystem":"Cofactor biosynthesis: Vitamin B12" +}, +{ +"id":"ACCOAC", +"name":"Acetyl-CoA carboxylase", +"metabolites":{ +"accoa_c":-1.0, +"adp_c":1.0, +"atp_c":-1.0, +"h_c":1.0, +"hco3_c":-1.0, +"malcoa_c":1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1379 and Synpcc7942_1595 and Synpcc7942_1956 and Synpcc7942_2564", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"GLUCYS", +"name":"Gamma-glutamylcysteine synthetase", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"cys__L_c":-1.0, +"glu__L_c":-1.0, +"glucys_c":1.0, +"h_c":1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2253", +"subsystem":"Metabolism of other amino acids: Glutathione metabolism" +}, +{ +"id":"CYNL", +"name":"Cyanate lyase", +"metabolites":{ +"cbm_c":1.0, +"co2_c":1.0, +"cynt_c":-1.0, +"h_c":-1.0, +"hco3_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2104", +"subsystem":"Nitrogen metabolism" +}, +{ +"id":"CYOOum", +"name":"Cytochrome aa3 oxidase (plastocyanin utilizing, H+/e-: 0.9)", +"metabolites":{ +"h2o_c":2.0, +"h_c":-7.6, +"h_u":3.6, +"o2_c":-1.0, +"pccu1p_u":-4.0, +"pccu2p_u":4.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2602 and Synpcc7942_2603 and Synpcc7942_2604", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"ACLSb", +"name":"Acetolactate synthase (step 2)", +"metabolites":{ +"2ahethmpp_c":-1.0, +"alac__S_c":1.0, +"pyr_c":-1.0, +"thmpp_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0139 and Synpcc7942_2434", +"subsystem":"Amino acid metabolism: Valine, Leucine and Isoleucine biosynthesis" +}, +{ +"id":"DNMPPA", +"name":"Dihydroneopterin monophosphate dephosphorylase", +"metabolites":{ +"dhnpt_c":1.0, +"dhpmp_c":-1.0, +"h2o_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Cofactor biosynthesis: Folate biosynthesis" +}, +{ +"id":"METS", +"name":"Methionine synthase", +"metabolites":{ +"5mthf_c":-1.0, +"hcys__L_c":-1.0, +"met__L_c":1.0, +"thf_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1372", +"subsystem":"Amino acid metabolism: Cysteine and Methionine metabolism" +}, +{ +"id":"TRPS2", +"name":"Tryptophan synthase (indole)", +"metabolites":{ +"h2o_c":1.0, +"indole_c":-1.0, +"ser__L_c":-1.0, +"trp__L_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0411 and Synpcc7942_2143", +"subsystem":"Amino acid metabolism: Phenylalanine, Tyrosine, Tryptophan biosynthesis" +}, +{ +"id":"PRUK", +"name":"Phosphoribulokinase", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"h_c":1.0, +"rb15bp_c":1.0, +"ru5p__D_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0977", +"subsystem":"Calvin cycle/Pentose phosphate pathway" +}, +{ +"id":"FNOR", +"name":"Ferredoxin:NADPH oxidoreductase", +"metabolites":{ +"fdxox_c":2.0, +"fdxrd_c":-2.0, +"h_c":-1.0, +"nadp_c":-1.0, +"nadph_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0978", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"GART", +"name":"GAR transformylase-T", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"fgam_c":1.0, +"for_c":-1.0, +"gar_c":-1.0, +"h_c":1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0588", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"G5SADs", +"name":"L-glutamate 5-semialdehyde dehydratase (spontaneous)", +"metabolites":{ +"1pyr5c_c":1.0, +"glu5sa_c":-1.0, +"h2o_c":1.0, +"h_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Amino acid metabolism: Proline and Arginine metabolism" +}, +{ +"id":"AMPQT", +"name":"S-adenosylmethionine: 2-demethylphylloquinone methyltransferase", +"metabolites":{ +"ahcys_c":1.0, +"amet_c":-1.0, +"dmtphllqne_c":-1.0, +"h_c":1.0, +"phyQ_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1099", +"subsystem":"Phylloquinone biosynthesis" +}, +{ +"id":"SPMDabcpp", +"name":"Spermidine transport via ABC system (periplasm)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"pi_c":1.0, +"spmd_c":1.0, +"spmd_p":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2266", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"DHAD2", +"name":"Dihydroxy-acid dehydratase (2,3-dihydroxy-3-methylpentanoate)", +"metabolites":{ +"23dhmp_c":-1.0, +"3mop_c":1.0, +"h2o_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0626", +"subsystem":"Amino acid metabolism: Valine, Leucine and Isoleucine biosynthesis" +}, +{ +"id":"PRAMPC", +"name":"Phosphoribosyl-AMP cyclohydrolase", +"metabolites":{ +"h2o_c":-1.0, +"prbamp_c":-1.0, +"prfp_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1995", +"subsystem":"Histidine Metabolism" +}, +{ +"id":"3OAS80", +"name":"3-oxoacyl-[acyl-carrier-protein] synthase (n-C8:0)", +"metabolites":{ +"3ooctACP_c":1.0, +"ACP_c":1.0, +"co2_c":1.0, +"h_c":-1.0, +"hexACP_c":-1.0, +"malACP_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0537", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"G1PCTYT", +"name":"D-glucose cytidylyltransferase", +"metabolites":{ +"cdpglc_c":1.0, +"ctp_c":-1.0, +"g1p_c":-1.0, +"h_c":-1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0062", +"subsystem":"Nucleotide sugar metabolism" +}, +{ +"id":"BM_CELL_WALL", +"name":"Biomass: Cell wall (LPS and peptidoglycan)", +"metabolites":{ +"bm_cw_c":1.0, +"colipacy_e":-0.6941390000000001, +"murein5p5p5p_p":-0.192214 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Biomass and maintenance functions" +}, +{ +"id":"CA2abcpp", +"name":"Calcium transport via ABC system (periplasm)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"ca2_c":1.0, +"ca2_p":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1082", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"UHGADA2", +"name":"UDP-3-O-acetylglucosamine deacetylase (Synechococcus elongatus 7942)", +"metabolites":{ +"ac_c":1.0, +"h2o_c":-1.0, +"u3aga2_c":-1, +"u3hga2_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0929", +"subsystem":"Lipopolysaccharide/O-antigen Biosynthesis" +}, +{ +"id":"ASPO6", +"name":"L-aspartate oxidase", +"metabolites":{ +"asp__L_c":-1.0, +"h2o2_c":1.0, +"h_c":1.0, +"iasp_c":1.0, +"o2_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1881", +"subsystem":"Cofactor biosynthesis: Nicotinate and Nicotinamide metabolism" +}, +{ +"id":"ASPK", +"name":"Aspartate kinase", +"metabolites":{ +"4pasp_c":1.0, +"adp_c":1.0, +"asp__L_c":-1.0, +"atp_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1001", +"subsystem":"Amino acid metabolism: Glycine, Serine and Threonine metabolism" +}, +{ +"id":"DXPS", +"name":"1-deoxy-D-xylulose 5-phosphate synthase", +"metabolites":{ +"co2_c":1.0, +"dxyl5p_c":1.0, +"g3p_c":-1.0, +"h_c":-1.0, +"pyr_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0430", +"subsystem":"Terpenoid Biosynthesis" +}, +{ +"id":"PRATPP", +"name":"Phosphoribosyl-ATP pyrophosphatase", +"metabolites":{ +"h2o_c":-1.0, +"h_c":1.0, +"ppi_c":1.0, +"prbamp_c":1.0, +"prbatp_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1995", +"subsystem":"Histidine Metabolism" +}, +{ +"id":"DDPGA", +"name":"4-hydroxy-2-oxoglutarate glyoxylate-lyase", +"metabolites":{ +"4h2oglt_c":-1.0, +"glx_c":1.0, +"pyr_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0017", +"subsystem":"Amino acid metabolism: Proline and Arginine metabolism" +}, +{ +"id":"NH4tpp", +"name":"Ammonia reversible transport (periplasm)", +"metabolites":{ +"nh4_c":1, +"nh4_p":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0442 or Synpcc7942_2279", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"PAPSR", +"name":"Phosphoadenylyl-sulfate reductase (thioredoxin)", +"metabolites":{ +"h_c":2.0, +"pap_c":1.0, +"paps_c":-1.0, +"so3_c":1.0, +"trdox_c":1.0, +"trdrd_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2506", +"subsystem":"Amino acid metabolism: Cysteine and Methionine metabolism" +}, +{ +"id":"NAD_H2", +"name":"Bidirectional [NiFe] Hydrogenase", +"metabolites":{ +"h2_c":1.0, +"h_c":-1.0, +"nad_c":1.0, +"nadh_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2552 and Synpcc7942_2553 and Synpcc7942_2554 and Synpcc7942_2555 and Synpcc7942_2556 and Synpcc7942_2557 and Synpcc7942_0278 and Synpcc7942_0279 and Synpcc7942_1373", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"CYRDAAT", +"name":"CYRDAAT", +"metabolites":{ +"adcobdam_c":1.0, +"atp_c":-1.0, +"co1dam_c":-1.0, +"h_c":-1.0, +"pppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0957 or Synpcc7942_1072 or Synpcc7942_1386", +"subsystem":"Cofactor biosynthesis: Vitamin B12" +}, +{ +"id":"NTPP8", +"name":"Nucleoside triphosphate pyrophosphorylase (utp)", +"metabolites":{ +"h2o_c":-1.0, +"h_c":1.0, +"ppi_c":1.0, +"ump_c":1.0, +"utp_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1493", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"PC11M", +"name":"S-adenosyl-L-methionine:precorrin-4 C11 methyltransferase", +"metabolites":{ +"ahcys_c":1.0, +"amet_c":-1.0, +"h_c":1.0, +"pre4_c":-1.0, +"pre5_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1229", +"subsystem":"Cofactor biosynthesis: Vitamin B12" +}, +{ +"id":"ARGabcpp", +"name":"L-arginine transport via ABC system (periplasm)", +"metabolites":{ +"adp_c":1.0, +"arg__L_c":1.0, +"arg__L_p":-1.0, +"atp_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0246 and Synpcc7942_0247 and Synpcc7942_0248 and Synpcc7942_0249", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"ARGOXRum", +"name":"Arginine:plastoquinone oxidoreductase (thylakoid)", +"metabolites":{ +"5g2oxpt_c":1.0, +"arg__L_c":-1.0, +"h2o_c":-1.0, +"nh4_c":1.0, +"pq_um":-1.0, +"pqh2_um":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0369", +"subsystem":"Amino acid metabolism: Proline and Arginine metabolism" +}, +{ +"id":"PMDPHT", +"name":"Pyrimidine phosphatase", +"metabolites":{ +"4r5au_c":1.0, +"5aprbu_c":-1.0, +"h2o_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1005", +"subsystem":"Cofactor biosynthesis: Riboflavin biosynthesis" +}, +{ +"id":"DAPE", +"name":"Diaminopimelate epimerase", +"metabolites":{ +"26dap_LL_c":-1.0, +"26dap__M_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1927", +"subsystem":"Amino acid metabolism: Lysine biosynthesis" +}, +{ +"id":"LYCBC1", +"name":"Lycopene cyclase (gamma-carotene producing)", +"metabolites":{ +"gcaro_c":1.0, +"lyc_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2062", +"subsystem":"Carotenoid biosynthesis" +}, +{ +"id":"RB15BPtcx", +"name":"Ribulose-1,5-bisphosphatase transport into the carboxyzome", +"metabolites":{ +"rb15bp_c":-1.0, +"rb15bp_cx":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: carboxyzome" +}, +{ +"id":"GLCBRAN3", +"name":"Glycogen branching enzyme", +"metabolites":{ +"14glucan_c":-1.0, +"adp_c":1.0, +"adpglc_c":-1.0, +"glycogen_c":1.0, +"h_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1085 or Synpcc7942_1889", +"subsystem":"Glycogen and sucrose metabolism" +}, +{ +"id":"DB4PS", +"name":"3,4-Dihydroxy-2-butanone-4-phosphate synthase", +"metabolites":{ +"db4p_c":1.0, +"for_c":1.0, +"h_c":1.0, +"ru5p__D_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1432", +"subsystem":"Cofactor biosynthesis: Riboflavin biosynthesis" +}, +{ +"id":"DXPRIi", +"name":"1-deoxy-D-xylulose reductoisomerase", +"metabolites":{ +"2me4p_c":1.0, +"dxyl5p_c":-1.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1513", +"subsystem":"Terpenoid Biosynthesis" +}, +{ +"id":"GTPCII", +"name":"GTP cyclohydrolase II", +"metabolites":{ +"25dhpp_c":1.0, +"for_c":1.0, +"gtp_c":-1.0, +"h2o_c":-3.0, +"h_c":2.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1432", +"subsystem":"Cofactor biosynthesis: Riboflavin biosynthesis" +}, +{ +"id":"RBFSa", +"name":"Riboflavin synthase", +"metabolites":{ +"4r5au_c":-1.0, +"db4p_c":-1.0, +"dmlz_c":1.0, +"h2o_c":2.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2244", +"subsystem":"Cofactor biosynthesis: Riboflavin biosynthesis" +}, +{ +"id":"GLUTRS", +"name":"Glutamyl-tRNA synthetase", +"metabolites":{ +"amp_c":1.0, +"atp_c":-1.0, +"glu__L_c":-1.0, +"glutrna_c":1.0, +"ppi_c":1.0, +"trnaglu_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2393", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"ALDD2y", +"name":"Aldehyde dehydrogenase (acetaldehyde, NADP)", +"metabolites":{ +"ac_c":-1.0, +"acald_c":1.0, +"h2o_c":1.0, +"h_c":-2.0, +"nad_c":2.0, +"nadh_c":-2.0, +"nadp_c":-1, +"nadph_c":1 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0489", +"subsystem":"Pyruvate metabolism/TCA Reactions" +}, +{ +"id":"EHGLAT", +"name":"L erythro 4 Hydroxyglutamate2 oxoglutarate aminotransferase", +"metabolites":{ +"4h2oglt_c":1.0, +"akg_c":-1.0, +"e4hglu_c":-1.0, +"glu__L_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2545", +"subsystem":"Amino acid metabolism: Proline and Arginine metabolism" +}, +{ +"id":"METAT", +"name":"Methionine adenosyltransferase", +"metabolites":{ +"amet_c":1.0, +"atp_c":-1.0, +"h2o_c":-1.0, +"met__L_c":-1.0, +"pi_c":1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2463", +"subsystem":"Amino acid metabolism: Cysteine and Methionine metabolism" +}, +{ +"id":"DHORTS", +"name":"Dihydroorotase", +"metabolites":{ +"cbasp_c":1.0, +"dhor__S_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0488", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"PDX5PS2", +"name":"Pyridoxine 5'-phosphate synthase", +"metabolites":{ +"3a2oxpp_c":-1.0, +"dxyl5p_c":-1.0, +"h2o_c":2.0, +"h_c":1.0, +"pdx5p_c":1.0, +"pi_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1194", +"subsystem":"Cofactor biosynthesis: Vitamin B6" +}, +{ +"id":"ARGDC", +"name":"Arginine decarboxylase", +"metabolites":{ +"agm_c":1.0, +"arg__L_c":-1.0, +"co2_c":1.0, +"h_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1037", +"subsystem":"Amino acid metabolism: Proline and Arginine metabolism" +}, +{ +"id":"GAPDi_nadp", +"name":"Glyceraldehyde-3-phosphate dehydrogenase (NAD(P)+) (phosphorylating)", +"metabolites":{ +"13dpg_c":-1.0, +"g3p_c":1.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1742", +"subsystem":"Glycolysis/Gluconeogenesis" +}, +{ +"id":"GLXO3r", +"name":"Glyoxylate dehydrogenase", +"metabolites":{ +"glx_c":-1.0, +"h2o2_c":1.0, +"h2o_c":-1.0, +"h_c":1.0, +"o2_c":-1.0, +"oxa_c":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Photorespiration/Glyoxylate Degredation" +}, +{ +"id":"PGCD", +"name":"Phosphoglycerate dehydrogenase", +"metabolites":{ +"3pg_c":-1.0, +"3php_c":1.0, +"h_c":1.0, +"nad_c":-1.0, +"nadh_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1501", +"subsystem":"Amino acid metabolism: Glycine, Serine and Threonine metabolism" +}, +{ +"id":"AIRC3", +"name":"Phosphoribosylaminoimidazole carboxylase (mutase rxn)", +"metabolites":{ +"5aizc_c":-1.0, +"5caiz_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0441", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"UMPK", +"name":"UMP kinase", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"udp_c":1.0, +"ump_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0506", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"CBPS", +"name":"Carbamoyl-phosphate synthase (glutamine-hydrolysing)", +"metabolites":{ +"adp_c":2.0, +"atp_c":-2.0, +"cbp_c":1.0, +"gln__L_c":-1.0, +"glu__L_c":1.0, +"h2o_c":-1.0, +"h_c":2.0, +"hco3_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0711 and Synpcc7942_2122", +"subsystem":"Amino acid metabolism: Proline and Arginine metabolism" +}, +{ +"id":"3HAD180", +"name":"3-hydroxyacyl-[acyl-carrier-protein] dehydratase (n-C18:0)", +"metabolites":{ +"3hoctaACP_c":-1.0, +"h2o_c":1.0, +"toctd2eACP_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0930", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"IMDHT", +"name":"3-isopropylmalate dehydratase", +"metabolites":{ +"2ippm_c":1.0, +"3c3hmp_c":-1.0, +"h2o_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1898 and Synpcc7942_2548", +"subsystem":"Amino acid metabolism: Valine, Leucine and Isoleucine biosynthesis" +}, +{ +"id":"RZ5PP", +"name":"Alpha-ribazole 5-phosphate phosphatase", +"metabolites":{ +"5prdmbz_c":-1.0, +"h2o_c":-1.0, +"pi_c":1.0, +"rdmbzi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Cofactor biosynthesis: Vitamin B12" +}, +{ +"id":"RBFSb", +"name":"Riboflavin synthase", +"metabolites":{ +"4r5au_c":1.0, +"dmlz_c":-2.0, +"h_c":1.0, +"ribflv_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1624", +"subsystem":"Cofactor biosynthesis: Riboflavin biosynthesis" +}, +{ +"id":"GLNabcpp", +"name":"L-glutamine transport via ABC system (periplasm)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"gln__L_c":1.0, +"gln__L_p":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0246 and Synpcc7942_0247 and Synpcc7942_0248 and Synpcc7942_0249", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"NDPK8", +"name":"Nucleoside-diphosphate kinase (ATP:dADP)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"dadp_c":-1.0, +"datp_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2497", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"PC6YM", +"name":"Precorrin-6B methyltransferase", +"metabolites":{ +"ahcys_c":2.0, +"amet_c":-2.0, +"co2_c":1.0, +"h_c":3.0, +"pre6b_c":-1.0, +"pre8_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1850", +"subsystem":"Cofactor biosynthesis: Vitamin B12" +}, +{ +"id":"DDPA", +"name":"3-deoxy-D-arabino-heptulosonate 7-phosphate synthetase", +"metabolites":{ +"2dda7p_c":1.0, +"e4p_c":-1.0, +"h2o_c":-1.0, +"pep_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2501", +"subsystem":"Amino acid metabolism: Phenylalanine, Tyrosine, Tryptophan biosynthesis" +}, +{ +"id":"ACOTA", +"name":"Acetylornithine transaminase", +"metabolites":{ +"acg5sa_c":1.0, +"acorn_c":-1.0, +"akg_c":-1.0, +"glu__L_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0943", +"subsystem":"Amino acid metabolism: Proline and Arginine metabolism" +}, +{ +"id":"FBP", +"name":"Fructose-bisphosphatase", +"metabolites":{ +"f6p_c":1.0, +"fdp_c":-1.0, +"h2o_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0505 or Synpcc7942_2335", +"subsystem":"Glycolysis/Gluconeogenesis" +}, +{ +"id":"MNabc_1", +"name":"Manganese Mn2 transport via ABC system periplasm ", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"mn2_c":1.0, +"mn2_p":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"(Synpcc7942_1316 and Synpcc7942_1317 and Synpcc7942_1318) or (Synpcc7942_2573 and Synpcc7942_2574 and Synpcc7942_2575)", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"NTD7", +"name":"5'-nucleotidase (AMP)", +"metabolites":{ +"adn_c":1.0, +"amp_c":-1.0, +"h2o_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2063", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"MPOMMM", +"name":"Magnesium-protoporphyrin-IX 13-monomethyl ester,NADPH oxygen oxidoreductase (hydroxylating)", +"metabolites":{ +"h2o_c":2.0, +"h_c":-1.0, +"hmppp9_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0, +"o2_c":-1.0, +"omppp9_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1907", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"MTHFD", +"name":"Methylenetetrahydrofolate dehydrogenase (NADP)", +"metabolites":{ +"methf_c":1.0, +"mlthf_c":-1.0, +"nadp_c":-1.0, +"nadph_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0777", +"subsystem":"Cofactor biosynthesis: Folate biosynthesis" +}, +{ +"id":"PANTS", +"name":"Pantothenate synthase", +"metabolites":{ +"ala_B_c":-1.0, +"amp_c":1.0, +"atp_c":-1.0, +"h_c":1.0, +"pant__R_c":-1.0, +"pnto__R_c":1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1151", +"subsystem":"Cofactor biosynthesis: Pantothenate and CoA biosynthesis" +}, +{ +"id":"TMPK", +"name":"Thiamine-phosphate kinase", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"thmmp_c":-1.0, +"thmpp_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2567", +"subsystem":"Cofactor biosynthesis: Thiamine (B1)" +}, +{ +"id":"ASNS1", +"name":"Asparagine synthase (glutamine-hydrolysing)", +"metabolites":{ +"amp_c":1.0, +"asn__L_c":1.0, +"asp__L_c":-1.0, +"atp_c":-1.0, +"gln__L_c":-1.0, +"glu__L_c":1.0, +"h2o_c":-1.0, +"h_c":1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0118 and Synpcc7942_2117 and Synpcc7942_2322 and Synpcc7942_1313", +"subsystem":"Amino acid metabolism: Lysine biosynthesis" +}, +{ +"id":"AGPR", +"name":"N-acetyl-g-glutamyl-phosphate reductase", +"metabolites":{ +"acg5p_c":1.0, +"acg5sa_c":-1.0, +"h_c":1.0, +"nadp_c":-1.0, +"nadph_c":1.0, +"pi_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1433", +"subsystem":"Amino acid metabolism: Proline and Arginine metabolism" +}, +{ +"id":"KARI_23dhmp", +"name":"Ketol-acid reductoisomerase, (R)-2,3-Dihydroxy-3-methylpentanoate forming", +"metabolites":{ +"23dhmp_c":1.0, +"3hmop_c":-1.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1552", +"subsystem":"Amino acid metabolism: Valine, Leucine and Isoleucine biosynthesis" +}, +{ +"id":"IPMD", +"name":"3-isopropylmalate dehydrogenase", +"metabolites":{ +"3c2hmp_c":-1.0, +"3c4mop_c":1.0, +"h_c":1.0, +"nad_c":-1.0, +"nadh_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1505", +"subsystem":"Amino acid metabolism: Valine, Leucine and Isoleucine biosynthesis" +}, +{ +"id":"3PGtcx", +"name":"3-phosphoglycerate transport out of the carboxyzome", +"metabolites":{ +"3pg_c":1.0, +"3pg_cx":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: carboxyzome" +}, +{ +"id":"CDPMEK", +"name":"4-(cytidine 5'-diphospho)-2-C-methyl-D-erythritol kinase", +"metabolites":{ +"2p4c2me_c":1.0, +"4c2me_c":-1.0, +"adp_c":1.0, +"atp_c":-1.0, +"h_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0310", +"subsystem":"Terpenoid Biosynthesis" +}, +{ +"id":"CITCIa", +"name":"Citramalate dehydratase", +"metabolites":{ +"citac_c":1.0, +"citm_c":-1.0, +"h2o_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1898 and Synpcc7942_2548", +"subsystem":"Amino acid metabolism: Valine, Leucine and Isoleucine biosynthesis" +}, +{ +"id":"SUCDum", +"name":"Succinate dehydrogenase (plastoquinone utilizing, thylakoid membrane localized)", +"metabolites":{ +"fum_c":1.0, +"pq_um":-1.0, +"pqh2_um":1.0, +"succ_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0314 and Synpcc7942_0641 and Synpcc7942_1533", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"DVOCHR", +"name":"Divinyl protochlorophyllide a 8-vinyl-reductase", +"metabolites":{ +"dvpchlda_c":-1.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0, +"pchlld_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1359", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"H2CO3_NAt_syn", +"name":"Sodium/bicarbonate symporter (SbtA)", +"metabolites":{ +"hco3_c":1.0, +"hco3_p":-1.0, +"na1_c":1.0, +"na1_p":-1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1475", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"HEMEOS", +"name":"Heme O synthase", +"metabolites":{ +"frdp_c":-1.0, +"h2o_c":-1.0, +"hemeO_c":1.0, +"pheme_c":-1.0, +"ppi_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2600", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"ALAD_L", +"name":"L-alanine dehydrogenase", +"metabolites":{ +"ala__L_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"nad_c":-1.0, +"nadh_c":1.0, +"nh4_c":1.0, +"pyr_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1760", +"subsystem":"Amino acid metabolism: Alanine, Aspartate and Glutamate metabolism" +}, +{ +"id":"RPE", +"name":"Ribulose 5-phosphate 3-epimerase", +"metabolites":{ +"ru5p__D_c":-1.0, +"xu5p__D_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0604", +"subsystem":"Calvin cycle/Pentose phosphate pathway" +}, +{ +"id":"MPOMT", +"name":"S-adenosyl-L-methionine magnesium-protoporphyrin-IX O-methyltransferase", +"metabolites":{ +"ahcys_c":1.0, +"amet_c":-1.0, +"mppp9_c":-1.0, +"mppp9me_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0439", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"NDHPQRum", +"name":"NADH:plastoquinone reductase (non-electrogenic)", +"metabolites":{ +"h_c":-1.0, +"nad_c":1.0, +"nadh_c":-1.0, +"pq_um":-1.0, +"pqh2_um":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0198 or Synpcc7942_0101", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"UAMAS", +"name":"UDP-N-acetylmuramoyl-L-alanine synthetase", +"metabolites":{ +"adp_c":1.0, +"ala__L_c":-1.0, +"atp_c":-1.0, +"h_c":1.0, +"pi_c":1.0, +"uama_c":1.0, +"uamr_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1741", +"subsystem":"Murein Biosynthesis/Recycling" +}, +{ +"id":"CITCIb", +"name":"3-methylmalate hydratase", +"metabolites":{ +"citac_c":-1.0, +"h2o_c":-1.0, +"r3mmal_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1898 and Synpcc7942_2548", +"subsystem":"Amino acid metabolism: Valine, Leucine and Isoleucine biosynthesis" +}, +{ +"id":"BPNT2", +"name":"3'-phospho-5'-adenylyl sulfate 3'-phosphohydrolase", +"metabolites":{ +"aps_c":1.0, +"h2o_c":-1.0, +"paps_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0173 or Synpcc7942_0965", +"subsystem":"Amino acid metabolism: Cysteine and Methionine metabolism" +}, +{ +"id":"BM_COFACTORS", +"name":"Biomass: cofactor pool", +"metabolites":{ +"5mthf_c":-0.0213, +"adocbl_c":-0.0043, +"bm_cofactors_c":1.0, +"btamp_c":-0.022, +"coa_c":-0.016, +"fad_c":-0.0214, +"fe2_c":-0.6518, +"fe3_c":-0.6518, +"gthbpt_c":-1.5013, +"hemeO_c":-0.0213, +"k_c":-0.0013, +"lipopb_c":-0.022, +"mlthf_c":-0.0214, +"na1_c":-0.0001, +"nad_c":-0.1708, +"nadh_c":-0.0043, +"nadp_c":-0.0107, +"nadph_c":-0.032, +"phyQ_c":-0.0169, +"pq_um":-0.015, +"ptrc_c":-0.0344, +"pydx5p_c":-0.022, +"sheme_c":-0.0213, +"spmd_c":-0.0736, +"thf_c":-0.0214, +"thmpp_c":-0.0213, +"udcpdp_c":-0.0096 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Biomass and maintenance functions" +}, +{ +"id":"DCTPD2", +"name":"CTP aminohydrolase", +"metabolites":{ +"ctp_c":-1.0, +"h2o_c":-1.0, +"h_c":-1.0, +"nh4_c":1.0, +"utp_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1900", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"HSERTA", +"name":"Homoserine O trans acetylase", +"metabolites":{ +"accoa_c":-1.0, +"achms_c":1.0, +"coa_c":1.0, +"hom__L_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1714 or Synpcc7942_0371", +"subsystem":"Amino acid metabolism: Cysteine and Methionine metabolism" +}, +{ +"id":"NDPK1", +"name":"Nucleoside-diphosphate kinase (ATP:GDP)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"gdp_c":-1.0, +"gtp_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2497", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"PGL", +"name":"6-phosphogluconolactonase", +"metabolites":{ +"6pgc_c":1.0, +"6pgl_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0529", +"subsystem":"Calvin cycle/Pentose phosphate pathway" +}, +{ +"id":"EAR160y", +"name":"Enoyl-[acyl-carrier-protein] reductase (NADPH) (n-C16:0)", +"metabolites":{ +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0, +"palmACP_c":1.0, +"tpalm2eACP_c":-1.0 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0126", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"MECDPDHf", +"name":"2-C-methyl-D-erythritol 2,4 cyclodiphosphate dehydratase (ferredoxin utilizing)", +"metabolites":{ +"2mecdp_c":-1.0, +"fdxox_c":2.0, +"fdxrd_c":-2.0, +"h2mb4p_c":1.0, +"h2o_c":1.0, +"h_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0713", +"subsystem":"Terpenoid Biosynthesis" +}, +{ +"id":"MTHFR3_1", +"name":"5, 10 methylenetetrahydrofolate reductase NADPH ", +"metabolites":{ +"5mthf_c":1.0, +"h_c":-1.0, +"mlthf_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1309", +"subsystem":"Cofactor biosynthesis: Folate biosynthesis" +}, +{ +"id":"3HAD140", +"name":"3-hydroxyacyl-[acyl-carrier-protein] dehydratase (n-C14:0)", +"metabolites":{ +"3hmrsACP_c":-1.0, +"h2o_c":1.0, +"tmrs2eACP_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0930", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"FBA3", +"name":"Sedoheptulose 1,7-bisphosphate D-glyceraldehyde-3-phosphate-lyase", +"metabolites":{ +"dhap_c":1.0, +"e4p_c":1.0, +"s17bp_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1443", +"subsystem":"Calvin cycle/Pentose phosphate pathway" +}, +{ +"id":"DAPNH4T", +"name":"LL-diaminopimelate aminotransferase", +"metabolites":{ +"26dap_LL_c":1.0, +"akg_c":1.0, +"glu__L_c":-1.0, +"h2o_c":-1.0, +"h_c":-1.0, +"thdp_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0853", +"subsystem":"Amino acid metabolism: Lysine biosynthesis" +}, +{ +"id":"MG2uabcpp", +"name":"Magnesium (Mg+2) ABC transporter (uptake, periplasm)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"mg2_c":1.0, +"mg2_p":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1269", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"HCO3E_1_cx", +"name":"Carbonic anhydrase", +"metabolites":{ +"co2_cx":1.0, +"h2o_cx":1.0, +"h_cx":-1.0, +"hco3_cx":-1 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1423 and Synpcc7942_1447", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"ACODA", +"name":"Acetylornithine deacetylase", +"metabolites":{ +"ac_c":1.0, +"acorn_c":-1.0, +"h2o_c":-1.0, +"orn_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0256 or Synpcc7942_1971", +"subsystem":"Amino acid metabolism: Proline and Arginine metabolism" +}, +{ +"id":"GLU5K", +"name":"Glutamate 5-kinase", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"glu5p_c":1.0, +"glu__L_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2197", +"subsystem":"Amino acid metabolism: Proline and Arginine metabolism" +}, +{ +"id":"EAR100y", +"name":"Enoyl-[acyl-carrier-protein] reductase (NADPH) (n-C10:0)", +"metabolites":{ +"dcaACP_c":1.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0, +"tdec2eACP_c":-1.0 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0126", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"PGM", +"name":"Phosphoglycerate mutase", +"metabolites":{ +"2pg_c":-1.0, +"3pg_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0469 or Synpcc7942_2078", +"subsystem":"Glycolysis/Gluconeogenesis" +}, +{ +"id":"ASPOb", +"name":"L-aspartate oxidase (oxaloacetate forming)", +"metabolites":{ +"h2o_c":-1.0, +"h_c":-1, +"iasp_c":-1, +"nh4_c":1.0, +"oaa_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1881", +"subsystem":"Amino acid metabolism: Alanine, Aspartate and Glutamate metabolism" +}, +{ +"id":"DM_h2_c", +"name":"Modeling: demand reaction (h2_c)", +"metabolites":{ +"h2_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Intracellular demand" +}, +{ +"id":"ACS", +"name":"Acetyl-CoA synthetase", +"metabolites":{ +"ac_c":-1.0, +"accoa_c":1.0, +"amp_c":1.0, +"atp_c":-1.0, +"coa_c":-1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1352", +"subsystem":"Pyruvate metabolism/TCA Reactions" +}, +{ +"id":"PKETX", +"name":"Phosphoketolase (xylulose-5-phosphate utilizing)", +"metabolites":{ +"actp_c":1.0, +"g3p_c":1.0, +"h2o_c":1.0, +"pi_c":-1.0, +"xu5p__D_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2080", +"subsystem":"Calvin cycle/Pentose phosphate pathway" +}, +{ +"id":"AMPTASECG", +"name":"Alanyl aminopeptidase (cys-gly)", +"metabolites":{ +"cgly_c":-1.0, +"cys__L_c":1.0, +"gly_c":1.0, +"h2o_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1136 or Synpcc7942_1190", +"subsystem":"Metabolism of other amino acids: Glutathione metabolism" +}, +{ +"id":"SHCHCS3", +"name":"2-succinyl-6-hydroxy-2,4-cyclohexadiene 1-carboxylate synthase", +"metabolites":{ +"2sephchc_c":-1.0, +"2shchc_c":1.0, +"pyr_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0774 or Synpcc7942_2527", +"subsystem":"Phylloquinone biosynthesis" +}, +{ +"id":"ATPPRT", +"name":"ATP phosphoribosyltransferase", +"metabolites":{ +"atp_c":-1.0, +"ppi_c":1.0, +"prbatp_c":1.0, +"prpp_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0783 and Synpcc7942_0813", +"subsystem":"Histidine Metabolism" +}, +{ +"id":"NDH-1(4)um", +"name":"NAD(P)H dehydrogenase, carbon dioxide coupled (plastoquinone-8 & 4 protons)( Thylakoid)", +"metabolites":{ +"co2_c":-1.0, +"fdxox_c":2, +"fdxrd_c":-2, +"h2o_c":-1.0, +"h_c":-4.0, +"h_u":3.0, +"hco3_c":1.0, +"pq_um":-1.0, +"pqh2_um":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1343 and Synpcc7942_1415 and Synpcc7942_1180 and Synpcc7942_1346 and Synpcc7942_1345 and Synpcc7942_1743 and Synpcc7942_1344 and Synpcc7942_1182 and Synpcc7942_1181 and Synpcc7942_0413 and Synpcc7942_2234 and Synpcc7942_1982 and Synpcc7942_2487 and Synpcc7942_2257 and Synpcc7942_1908 and Synpcc7942_1106 and Synpcc7942_2092 and Synpcc7942_2091 and Synpcc7942_2093 and Synpcc7942_2094", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"UAGCVT", +"name":"UDP-N-acetylglucosamine 1-carboxyvinyltransferase", +"metabolites":{ +"pep_c":-1.0, +"pi_c":1.0, +"uaccg_c":1.0, +"uacgam_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0715", +"subsystem":"Murein Biosynthesis/Recycling" +}, +{ +"id":"TDPGDH", +"name":"DTDPglucose 4,6-dehydratase", +"metabolites":{ +"dtdp4d6dg_c":1.0, +"dtdpglu_c":-1.0, +"h2o_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2100", +"subsystem":"Nucleotide sugar metabolism" +}, +{ +"id":"ADSL2r", +"name":"Adenylosuccinate lyase", +"metabolites":{ +"25aics_c":-1.0, +"aicar_c":1.0, +"fum_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0315", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"PRASCSi", +"name":"Phosphoribosylaminoimidazolesuccinocarboxamide synthase", +"metabolites":{ +"25aics_c":1.0, +"5aizc_c":-1.0, +"adp_c":1.0, +"asp__L_c":-1.0, +"atp_c":-1.0, +"h_c":1.0, +"pi_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0927", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"MG2tex", +"name":"Magnesium (Mg+2) transport via diffusion (extracellular to periplasm)", +"metabolites":{ +"mg2_e":-1.0, +"mg2_p":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1371", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"HPROb", +"name":"L-hydroxyproline reductase NADP", +"metabolites":{ +"1p3h5c_c":-1.0, +"4hpro__LT_c":1.0, +"h_c":-2.0, +"nadp_c":1.0, +"nadph_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2058", +"subsystem":"Amino acid metabolism: Proline and Arginine metabolism" +}, +{ +"id":"NTPP2", +"name":"Nucleoside triphosphate pyrophosphorylase (gtp)", +"metabolites":{ +"gmp_c":1.0, +"gtp_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1493", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"TRDR", +"name":"Thioredoxin reductase (NADPH)", +"metabolites":{ +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0, +"trdox_c":-1.0, +"trdrd_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0623", +"subsystem":"Cofactor Regeneration" +}, +{ +"id":"PKETF", +"name":"Phosphoketolase (fructose-6-phosphate utilizing)", +"metabolites":{ +"actp_c":1.0, +"e4p_c":1.0, +"f6p_c":-1.0, +"h2o_c":1.0, +"pi_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2080", +"subsystem":"Calvin cycle/Pentose phosphate pathway" +}, +{ +"id":"NDPK6", +"name":"Nucleoside-diphosphate kinase (ATP:dUDP)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"dudp_c":-1.0, +"dutp_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2497", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"GLUPRT", +"name":"Glutamine phosphoribosyldiphosphate amidotransferase", +"metabolites":{ +"gln__L_c":-1.0, +"glu__L_c":1.0, +"h2o_c":-1.0, +"ppi_c":1.0, +"pram_c":1.0, +"prpp_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0004", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"PTRCabcpp", +"name":"Putrescine transport via ABC system (periplasm)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"pi_c":1.0, +"ptrc_c":1.0, +"ptrc_p":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2266", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"UPP3MT", +"name":"Uroporphyrinogen methyltransferase", +"metabolites":{ +"ahcys_c":2.0, +"amet_c":-2.0, +"dscl_c":1.0, +"h_c":1.0, +"uppg3_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0271", +"subsystem":"Cofactor biosynthesis: Vitamin B12" +}, +{ +"id":"DHNCOAS", +"name":"1,4-dihydroxy-2-napthoyl-CoA synthase", +"metabolites":{ +"14dhncoa_c":1.0, +"h2o_c":1.0, +"h_c":-1.0, +"sbzcoa_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0597", +"subsystem":"Phylloquinone biosynthesis" +}, +{ +"id":"MCOATA", +"name":"Malonyl-CoA-ACP transacylase", +"metabolites":{ +"ACP_c":-1.0, +"coa_c":1.0, +"malACP_c":1.0, +"malcoa_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1456", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"PMPK", +"name":"Phosphomethylpyrimidine kinase", +"metabolites":{ +"2mahmp_c":1.0, +"4ampm_c":-1.0, +"adp_c":1.0, +"atp_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2379", +"subsystem":"Cofactor biosynthesis: Thiamine (B1)" +}, +{ +"id":"HMBS", +"name":"Hydroxymethylbilane synthase", +"metabolites":{ +"h2o_c":-1.0, +"hmbil_c":1.0, +"nh4_c":4.0, +"ppbng_c":-4.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0967", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"PGLYCP", +"name":"Phosphoglycolate phosphatase", +"metabolites":{ +"2pglyc_c":-1.0, +"glyclt_c":1.0, +"h2o_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2613", +"subsystem":"Photorespiration/Glyoxylate Degredation" +}, +{ +"id":"UAGAAT2", +"name":"UDP-N-acetylglucosamine acyltransferase (Synechococcus elongatus 7942)", +"metabolites":{ +"3hpalmACP_c":-1, +"ACP_c":1.0, +"u3aga2_c":1, +"uacgam_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0931 or Synpcc7942_2371", +"subsystem":"Lipopolysaccharide/O-antigen Biosynthesis" +}, +{ +"id":"HTHRPDH", +"name":"4-hydroxythreonine-4-phosphate dehydrogenase", +"metabolites":{ +"2a3pp_c":1.0, +"h_c":1.0, +"nad_c":-1.0, +"nadh_c":1.0, +"phthr_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0804", +"subsystem":"Cofactor biosynthesis: Vitamin B6" +}, +{ +"id":"BCT1_syn", +"name":"Bicarbonate transport via ABC system (periplasm)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"hco3_c":1.0, +"hco3_p":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1488 and Synpcc7942_1489 and Synpcc7942_1490 and Synpcc7942_1491", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"IPDDI", +"name":"Isopentenyl-diphosphate D-isomerase", +"metabolites":{ +"dmpp_c":1.0, +"ipdp_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1933", +"subsystem":"Terpenoid Biosynthesis" +}, +{ +"id":"GLYALDDy", +"name":"Alcohol dehydrogenase (glycerol/NADPH utilizing)", +"metabolites":{ +"glyald_c":-1.0, +"glyc__R_c":1.0, +"h2o_c":-1.0, +"h_c":2.0, +"nadp_c":-1, +"nadph_c":1 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0489", +"subsystem":"Glycolysis/Gluconeogenesis" +}, +{ +"id":"CITMS", +"name":"Citramalate synthase", +"metabolites":{ +"accoa_c":-1.0, +"citm_c":1.0, +"coa_c":1.0, +"h2o_c":-1.0, +"h_c":1.0, +"pyr_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0428 or Synpcc7942_1410", +"subsystem":"Amino acid metabolism: Valine, Leucine and Isoleucine biosynthesis" +}, +{ +"id":"IMPC", +"name":"IMP cyclohydrolase", +"metabolites":{ +"fprica_c":1.0, +"h2o_c":-1.0, +"imp_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0396", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"OMCDC", +"name":"2-Oxo-4-methyl-3-carboxypentanoate decarboxylation", +"metabolites":{ +"3c4mop_c":-1.0, +"4mop_c":1.0, +"co2_c":1.0, +"h_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Amino acid metabolism: Valine, Leucine and Isoleucine biosynthesis" +}, +{ +"id":"Htcx", +"name":"Proton transport to carboxysome via diffusion", +"metabolites":{ +"h_c":-1.0, +"h_cx":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: carboxyzome" +}, +{ +"id":"DHQTi", +"name":"3-dehydroquinate dehydratase, irreversible", +"metabolites":{ +"3dhq_c":-1.0, +"3dhsk_c":1.0, +"h2o_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0915", +"subsystem":"Amino acid metabolism: Phenylalanine, Tyrosine, Tryptophan biosynthesis" +}, +{ +"id":"SPODM", +"name":"Superoxide dismutase", +"metabolites":{ +"h2o2_c":1.0, +"h_c":-2.0, +"o2_c":1.0, +"o2s_c":-2.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0801", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"MAN6PI", +"name":"Mannose-6-phosphate isomerase", +"metabolites":{ +"f6p_c":1.0, +"man6p_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1608", +"subsystem":"Nucleotide sugar metabolism" +}, +{ +"id":"3OAS120", +"name":"3-oxoacyl-[acyl-carrier-protein] synthase (n-C12:0)", +"metabolites":{ +"3oddecACP_c":1.0, +"ACP_c":1.0, +"co2_c":1.0, +"dcaACP_c":-1.0, +"h_c":-1.0, +"malACP_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0537", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"PGAMT", +"name":"Phosphoglucosamine mutase", +"metabolites":{ +"gam1p_c":-1.0, +"gam6p_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2132", +"subsystem":"Murein Biosynthesis/Recycling" +}, +{ +"id":"ZDS", +"name":"Zeta-carotene desaturase", +"metabolites":{ +"h2o_c":2.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0, +"norsp_c":1.0, +"o2_c":-1.0, +"zcarote_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1512", +"subsystem":"Carotenoid biosynthesis" +}, +{ +"id":"PSERT", +"name":"Phosphoserine transaminase", +"metabolites":{ +"3php_c":-1.0, +"akg_c":1.0, +"glu__L_c":-1.0, +"pser__L_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0191", +"subsystem":"Amino acid metabolism: Glycine, Serine and Threonine metabolism" +}, +{ +"id":"HISTP", +"name":"Histidinol-phosphatase", +"metabolites":{ +"h2o_c":-1.0, +"hisp_c":-1.0, +"histd_c":1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Histidine Metabolism" +}, +{ +"id":"NNDPR", +"name":"Nicotinate-nucleotide diphosphorylase (carboxylating)", +"metabolites":{ +"co2_c":1.0, +"h_c":-2.0, +"nicrnt_c":1.0, +"ppi_c":1.0, +"prpp_c":-1.0, +"quln_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0951", +"subsystem":"Cofactor biosynthesis: Nicotinate and Nicotinamide metabolism" +}, +{ +"id":"ADSK", +"name":"Adenylyl-sulfate kinase", +"metabolites":{ +"adp_c":1.0, +"aps_c":-1.0, +"atp_c":-1.0, +"h_c":1.0, +"paps_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0939", +"subsystem":"Amino acid metabolism: Cysteine and Methionine metabolism" +}, +{ +"id":"MECDPS", +"name":"2-C-methyl-D-erythritol 2,4-cyclodiphosphate synthase", +"metabolites":{ +"2mecdp_c":1.0, +"2p4c2me_c":-1.0, +"cmp_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1170", +"subsystem":"Terpenoid Biosynthesis" +}, +{ +"id":"CUabcpp", +"name":"Copper transport via ABC system (periplasm)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"cu2_c":1.0, +"cu2_p":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1570 or Synpcc7942_2317", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"ADCYRS", +"name":"Adenosylcobyric acid synthase (glutamine-hydrolysing)", +"metabolites":{ +"adcobdam_c":-1.0, +"adcobhex_c":1.0, +"adp_c":4.0, +"atp_c":-4.0, +"gln__L_c":-4.0, +"glu__L_c":4.0, +"h2o_c":-4.0, +"h_c":4.0, +"pi_c":4.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0211", +"subsystem":"Cofactor biosynthesis: Vitamin B12" +}, +{ +"id":"RBPCcx", +"name":"Ribulose-bisphosphate carboxylase", +"metabolites":{ +"2pglyc_cx":0.009999999999999998, +"3pg_cx":1.99, +"co2_cx":-0.99, +"h2o_cx":-0.99, +"h_cx":2.0, +"o2_cx":-0.009999999999999998, +"rb15bp_cx":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1426 and Synpcc7942_1427 and Synpcc7942_1423 and Synpcc7942_1421 and Synpcc7942_1422 and Synpcc7942_0285 and Synpcc7942_0284 and Synpcc7942_1424 and Synpcc7942_1425", +"subsystem":"Calvin cycle/Pentose phosphate pathway" +}, +{ +"id":"3HAD40_1", +"name":"3-hydroxyacyl-[acyl-carrier-protein] dehydratase (n-C4:0)", +"metabolites":{ +"3hbutACP_c":-1.0, +"but2eACP_c":1.0, +"h2o_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0930", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"EAR180y", +"name":"Enoyl-[acyl-carrier-protein] reductase (NADPH) (n-C18:0)", +"metabolites":{ +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0, +"ocdcaACP_c":1.0, +"toctd2eACP_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0126", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"GTHRDH", +"name":"Glutathione hydrolase", +"metabolites":{ +"cgly_c":1.0, +"glu__L_c":1.0, +"gthrd_c":-1.0, +"h2o_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0185 or Synpcc7942_B2624", +"subsystem":"Metabolism of other amino acids: Glutathione metabolism" +}, +{ +"id":"PRAIi", +"name":"Phosphoribosylanthranilate isomerase (irreversible)", +"metabolites":{ +"2cpr5p_c":1.0, +"pran_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0408", +"subsystem":"Amino acid metabolism: Phenylalanine, Tyrosine, Tryptophan biosynthesis" +}, +{ +"id":"CYNTtabcpp", +"name":"Cyanate transport", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"cynt_c":1.0, +"cynt_p":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2105 and Synpcc7942_2106 and Synpcc7942_2107", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"TRSARyr", +"name":"Tartronate semialdehyde reductase (NADP)", +"metabolites":{ +"2h3oppan_c":-1.0, +"glyc__R_c":1.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1857", +"subsystem":"Photorespiration/Glyoxylate Degredation" +}, +{ +"id":"PTPATi", +"name":"Pantetheine-phosphate adenylyltransferase", +"metabolites":{ +"atp_c":-1.0, +"dpcoa_c":1.0, +"h_c":-1.0, +"pan4p_c":-1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2007", +"subsystem":"Cofactor biosynthesis: Pantothenate and CoA biosynthesis" +}, +{ +"id":"PC6AR", +"name":"Precorrin-6A reductase", +"metabolites":{ +"h_c":2.0, +"nadp_c":-1.0, +"nadph_c":1.0, +"pre6a_c":1.0, +"pre6b_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0021", +"subsystem":"Cofactor biosynthesis: Vitamin B12" +}, +{ +"id":"Kabcpp", +"name":"Potassium ABC transporter (periplasm)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"k_c":1.0, +"k_p":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1668 and Synpcc7942_1669 and Synpcc7942_1671 and Synpcc7942_1729", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"ENO", +"name":"Enolase", +"metabolites":{ +"2pg_c":-1.0, +"h2o_c":1.0, +"pep_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0639", +"subsystem":"Glycolysis/Gluconeogenesis" +}, +{ +"id":"TDPDRR", +"name":"DTDP-4-dehydrorhamnose reductase", +"metabolites":{ +"dtdp4d6dm_c":-1.0, +"dtdprmn_c":1.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2099", +"subsystem":"Nucleotide sugar metabolism" +}, +{ +"id":"PRFGS", +"name":"Phosphoribosylformylglycinamidine synthase", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"fgam_c":-1.0, +"fpram_c":1.0, +"gln__L_c":-1.0, +"glu__L_c":1.0, +"h2o_c":-1.0, +"h_c":1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0003 and Synpcc7942_0818 and Synpcc7942_0819", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"PC8XM", +"name":"Precorrin-8X methylmutase", +"metabolites":{ +"h_c":-1.0, +"hgbyr_c":1.0, +"pre8_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1852", +"subsystem":"Cofactor biosynthesis: Vitamin B12" +}, +{ +"id":"3OAS60", +"name":"3-oxoacyl-[acyl-carrier-protein] synthase (n-C6:0)", +"metabolites":{ +"3ohexACP_c":1.0, +"ACP_c":1.0, +"butACP_c":-1.0, +"co2_c":1.0, +"h_c":-1.0, +"malACP_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0537", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"GMPS2", +"name":"GMP synthase", +"metabolites":{ +"amp_c":1.0, +"atp_c":-1.0, +"gln__L_c":-1.0, +"glu__L_c":1.0, +"gmp_c":1.0, +"h2o_c":-1.0, +"h_c":2.0, +"ppi_c":1.0, +"xmp_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0189", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"RBFK", +"name":"Riboflavin kinase", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"fmn_c":1.0, +"h_c":1.0, +"ribflv_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0492", +"subsystem":"Cofactor biosynthesis: Riboflavin biosynthesis" +}, +{ +"id":"NTRIRfx", +"name":"Nitrite reductase (ferredoxin)", +"metabolites":{ +"fdxox_c":6.0, +"fdxrd_c":-6.0, +"h2o_c":2.0, +"h_c":-8.0, +"nh4_c":1.0, +"no2_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1240", +"subsystem":"Nitrogen metabolism" +}, +{ +"id":"GTHPi", +"name":"Glutathione peridoxase", +"metabolites":{ +"gthox_c":1.0, +"gthrd_c":-2.0, +"h2o2_c":-1.0, +"h2o_c":2.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1214", +"subsystem":"Cofactor Regeneration" +}, +{ +"id":"ARGSS", +"name":"Argininosuccinate synthase", +"metabolites":{ +"amp_c":1.0, +"argsuc_c":1.0, +"asp__L_c":-1.0, +"atp_c":-1.0, +"citr__L_c":-1.0, +"h_c":1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0009", +"subsystem":"Amino acid metabolism: Proline and Arginine metabolism" +}, +{ +"id":"SPTr", +"name":"Serine-pyruvate aminotransferase", +"metabolites":{ +"ala__L_c":-1.0, +"hpyr_c":-1.0, +"pyr_c":1.0, +"ser__L_c":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2160", +"subsystem":"Amino acid metabolism: Alanine, Aspartate and Glutamate metabolism" +}, +{ +"id":"H2Otpp", +"name":"H2O transport via diffusion (periplasm)", +"metabolites":{ +"h2o_c":1.0, +"h2o_p":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"TDPDRE", +"name":"DTDP-4-dehydrorhamnose 3,5-epimerase", +"metabolites":{ +"dtdp4d6dg_c":-1.0, +"dtdp4d6dm_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2098 or Synpcc7942_0058", +"subsystem":"Nucleotide sugar metabolism" +}, +{ +"id":"GTHOr", +"name":"Glutathione oxidoreductase", +"metabolites":{ +"gthox_c":-1.0, +"gthrd_c":2.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0842", +"subsystem":"Cofactor Regeneration" +}, +{ +"id":"SHK3Dr", +"name":"Shikimate dehydrogenase", +"metabolites":{ +"3dhsk_c":-1.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0, +"skm_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2467", +"subsystem":"Amino acid metabolism: Phenylalanine, Tyrosine, Tryptophan biosynthesis" +}, +{ +"id":"CYRDAR", +"name":"Cob(II)yrinic acid a,c-diamide reductase", +"metabolites":{ +"co1dam_c":2.0, +"co2dam_c":-2.0, +"h_c":1.0, +"nad_c":1, +"nadh_c":-1 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Cofactor biosynthesis: Vitamin B12" +}, +{ +"id":"ORPT", +"name":"Orotate phosphoribosyltransferase", +"metabolites":{ +"orot5p_c":-1.0, +"orot_c":1.0, +"ppi_c":-1.0, +"prpp_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2592", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"GRTT", +"name":"Geranyltranstransferase", +"metabolites":{ +"frdp_c":1.0, +"grdp_c":-1.0, +"ipdp_c":-1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0776", +"subsystem":"Terpenoid Biosynthesis" +}, +{ +"id":"TRDRf", +"name":"Thioredoxin:ferredoxin reductase", +"metabolites":{ +"fdxox_c":2.0, +"fdxrd_c":-2.0, +"h_c":-2.0, +"trdox_c":-1.0, +"trdrd_c":1.0 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1131 and Synpcc7942_1734", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"BM_MEM_LIPIDS", +"name":"BioLip", +"metabolites":{ +"bm_memlip_c":1.0, +"dgdg1619Z160_c":-0.06332548303, +"dgdg161_c":-0.040390132370000005, +"dgdg1819Z160Z_c":-0.04396080608, +"dgdg1819Z1619Z_c":-0.02102545542, +"mgdg1619Z160_c":-0.2673176249, +"mgdg161_c":-0.1992320953, +"mgdg1819Z160_c":-0.1720707022, +"mgdg1819Z1619Z_c":-0.1039851725, +"pg1819Z160_c":-0.2726231733, +"sqdg160_c":-0.07211355618000001, +"sqdg1619Z160_c":-0.0482903278 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Biomass and maintenance functions" +}, +{ +"id":"PRPPS", +"name":"Phosphoribosylpyrophosphate synthetase", +"metabolites":{ +"amp_c":1.0, +"atp_c":-1.0, +"h_c":1.0, +"prpp_c":1.0, +"r5p_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2113", +"subsystem":"Calvin cycle/Pentose phosphate pathway" +}, +{ +"id":"KARA1i", +"name":"Acetohydroxy acid isomeroreductase", +"metabolites":{ +"23dhmb_c":1.0, +"alac__S_c":-1.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1552", +"subsystem":"Amino acid metabolism: Valine, Leucine and Isoleucine biosynthesis" +}, +{ +"id":"SPRMS", +"name":"Spermine synthase", +"metabolites":{ +"5mta_c":1.0, +"ametam_c":-1.0, +"h_c":1.0, +"spmd_c":-1.0, +"sprm_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0628", +"subsystem":"Amino acid metabolism: Proline and Arginine metabolism" +}, +{ +"id":"FCLT", +"name":"Ferrochelatase", +"metabolites":{ +"fe2_c":-1.0, +"h_c":2.0, +"pheme_c":1.0, +"ppp9_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0137", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"PPA", +"name":"Inorganic diphosphatase", +"metabolites":{ +"h2o_c":-1.0, +"h_c":1.0, +"pi_c":2.0, +"ppi_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1383", +"subsystem":"Inorganic Ion Transport and Metabolism" +}, +{ +"id":"DHQS", +"name":"3-dehydroquinate synthase", +"metabolites":{ +"2dda7p_c":-1.0, +"3dhq_c":1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0525", +"subsystem":"Amino acid metabolism: Phenylalanine, Tyrosine, Tryptophan biosynthesis" +}, +{ +"id":"ANPRT", +"name":"Anthranilate phosphoribosyltransferase", +"metabolites":{ +"anth_c":-1.0, +"ppi_c":1.0, +"pran_c":1.0, +"prpp_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2123", +"subsystem":"Amino acid metabolism: Phenylalanine, Tyrosine, Tryptophan biosynthesis" +}, +{ +"id":"ADK1", +"name":"Adenylate kinase", +"metabolites":{ +"adp_c":2.0, +"amp_c":-1.0, +"atp_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2213", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"UPP3S", +"name":"Uroporphyrinogen-III synthase", +"metabolites":{ +"h2o_c":1.0, +"hmbil_c":-1.0, +"uppg3_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0272", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"NDPK5", +"name":"Nucleoside-diphosphate kinase (ATP:dGDP)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"dgdp_c":-1.0, +"dgtp_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2497", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"NDHPQRcm", +"name":"NADH:plastoquinone reductase (non-electrogenic)", +"metabolites":{ +"h_c":-1.0, +"nad_c":1.0, +"nadh_c":-1.0, +"pq_cm":-1.0, +"pqh2_cm":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0198 or Synpcc7942_0101", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"DHNPA_1", +"name":"Dihydroneopterin aldolase", +"metabolites":{ +"2ahhmp_c":1.0, +"dhnpt_c":-1.0, +"gcald_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0040", +"subsystem":"Cofactor biosynthesis: Folate biosynthesis" +}, +{ +"id":"NDPK4", +"name":"Nucleoside-diphosphate kinase (ATP:dTDP)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"dtdp_c":-1.0, +"dttp_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2497", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"RNDR4", +"name":"Ribonucleoside-diphosphate reductase (UDP)", +"metabolites":{ +"dudp_c":1.0, +"h2o_c":1.0, +"trdox_c":1.0, +"trdrd_c":-1.0, +"udp_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1609", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"NADK", +"name":"NAD kinase", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"h_c":1.0, +"nad_c":-1.0, +"nadp_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1865 or Synpcc7942_2304", +"subsystem":"Cofactor biosynthesis: Nicotinate and Nicotinamide metabolism" +}, +{ +"id":"3OAR40_1", +"name":"3-oxoacyl-[acyl-carrier-protein] reductase (n-C4:0)", +"metabolites":{ +"3hbutACP_c":-1.0, +"actACP_c":1.0, +"h_c":1.0, +"nadp_c":-1.0, +"nadph_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0684", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"TKT1", +"name":"Transketolase", +"metabolites":{ +"g3p_c":1.0, +"r5p_c":-1.0, +"s7p_c":1.0, +"xu5p__D_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0538", +"subsystem":"Calvin cycle/Pentose phosphate pathway" +}, +{ +"id":"NO3abcpp", +"name":"Nitrate transport via ABC system (periplasm)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"no3_c":1.0, +"no3_p":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1236 and Synpcc7942_1237 and Synpcc7942_1238 and Synpcc7942_1239", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"FE3abcpp", +"name":"Iron (III) transport via ABC system (periplasm to cytoplasm)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"fe3_c":1.0, +"fe3_p":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"(Synpcc7942_1406 and Synpcc7942_1407 and Synpcc7942_1409) or (Synpcc7942_1406 and Synpcc7942_1407 and Synpcc7942_2175)", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"MOBDabcpp", +"name":"Molybdate transport via ABC system (periplasm)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"mobd_c":1.0, +"mobd_p":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1530 and Synpcc7942_1531 and Synpcc7942_1532", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"NPHBDC", +"name":"Nonaprenyl-hydroxybenzoate decarboxylase", +"metabolites":{ +"2m6sbenzq_c":1.0, +"3nphb_c":-1.0, +"ahcys_c":1.0, +"amet_c":-1.0, +"co2_c":1.0, +"h2o_c":-1.0, +"h_c":1.0, +"nad_c":-1.0, +"nadh_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2588 and Synpcc7942_2055 and Synpcc7942_0135", +"subsystem":"Plastoquinol biosynthesis" +}, +{ +"id":"NPDPS", +"name":"Nonaprenyl-diphosphate synthase (gyeranyl-diphosphate specific)", +"metabolites":{ +"grdp_c":-1.0, +"ipdp_c":-7.0, +"npdp_c":1.0, +"ppi_c":7.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2362", +"subsystem":"Terpenoid Biosynthesis" +}, +{ +"id":"NI2uabcpp", +"name":"Nickel transport via ABC system (uptake, periplasm)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"ni2_c":1.0, +"ni2_p":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1570 or Synpcc7942_2317", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"HCO3tcx", +"name":"Bicarbonate transport to carboxyzome", +"metabolites":{ +"hco3_c":-1.0, +"hco3_cx":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: carboxyzome" +}, +{ +"id":"RNDR2", +"name":"Ribonucleoside-diphosphate reductase (GDP)", +"metabolites":{ +"dgdp_c":1.0, +"gdp_c":-1.0, +"h2o_c":1.0, +"trdox_c":1.0, +"trdrd_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1609", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"KARI", +"name":"Ketol-acid reductoisomerase", +"metabolites":{ +"2ahbut_c":-1.0, +"3hmop_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1552", +"subsystem":"Amino acid metabolism: Valine, Leucine and Isoleucine biosynthesis" +}, +{ +"id":"EAR40y", +"name":"Enoyl-[acyl-carrier-protein] reductase (NADPH) (n-C4:0)", +"metabolites":{ +"but2eACP_c":-1.0, +"butACP_c":1.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0126", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"NADTRHD", +"name":"NAD transhydrogenase", +"metabolites":{ +"nad_c":-1.0, +"nadh_c":1.0, +"nadp_c":1.0, +"nadph_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1610 and Synpcc7942_1611 and Synpcc7942_1612", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"DHNCOAT", +"name":"1,4-dihydroxy-2-napthoyl-CoA thioesterase", +"metabolites":{ +"14dhncoa_c":-1.0, +"coa_c":1.0, +"dhna_c":1.0, +"h2o_c":-1.0, +"h_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1744", +"subsystem":"Phylloquinone biosynthesis" +}, +{ +"id":"BM_PROTEIN", +"name":"Biomass: protein", +"metabolites":{ +"adp_c":9.0199, +"alatrna_c":-0.7662, +"argtrna_c":-0.4548, +"asntrna_c":-0.3658, +"asptrna_c":-0.4539, +"atp_c":-9.0199, +"bm_pro_c":1.0, +"cystrna_c":-0.0899, +"gdp_c":18.0398, +"glntrna_c":-0.502, +"glutrna_c":-0.5465, +"glytrna_c":-0.6663, +"gtp_c":-18.0398, +"h2o_c":-27.0597, +"h_c":36.0797, +"histrna_c":-0.1679, +"iletrna_c":-0.5665, +"leutrna_c":-1.0294, +"lystrna_c":-0.3777, +"mettrna_c":-0.177, +"phetrna_c":-0.3622, +"pi_c":27.0597, +"protrna_c":-0.463, +"sertrna_c":-0.5238, +"thrtrna_c":-0.4957, +"trnaala_c":0.7662, +"trnaarg_c":0.4548, +"trnaasn_c":0.3658, +"trnaasp_c":0.4539, +"trnacys_c":0.0899, +"trnagln_c":0.502, +"trnaglu_c":0.5465, +"trnagly_c":0.6663, +"trnahis_c":0.1679, +"trnaile_c":0.5665, +"trnaleu_c":1.0294, +"trnalys_c":0.3777, +"trnamet_c":0.177, +"trnaphe_c":0.3622, +"trnapro_c":0.463, +"trnaser_c":0.5238, +"trnathr_c":0.4957, +"trnatrp_c":0.1398, +"trnatyr_c":0.2633, +"trnaval_c":0.6082, +"trptrna_c":-0.1398, +"tyrtrna_c":-0.2633, +"valtrna_c":-0.6082 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Biomass and maintenance functions" +}, +{ +"id":"3OAS100", +"name":"3-oxoacyl-[acyl-carrier-protein] synthase (n-C10:0)", +"metabolites":{ +"3odecACP_c":1.0, +"ACP_c":1.0, +"co2_c":1.0, +"h_c":-1.0, +"malACP_c":-1.0, +"ocACP_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0537", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"G1SAT", +"name":"Glutamate-1-semialdehyde aminotransferase", +"metabolites":{ +"5aop_c":1.0, +"glu1sa_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0645", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"ILETA", +"name":"Isoleucine transaminase", +"metabolites":{ +"3mop_c":1.0, +"akg_c":-1.0, +"glu__L_c":1.0, +"ile__L_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1029", +"subsystem":"Amino acid metabolism: Valine, Leucine and Isoleucine biosynthesis" +}, +{ +"id":"PDS1", +"name":"Phytoene dehydrogenase", +"metabolites":{ +"h_c":1.0, +"nadp_c":-1.0, +"nadph_c":1.0, +"phytfl_c":1.0, +"phyto_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1983", +"subsystem":"Carotenoid biosynthesis" +}, +{ +"id":"UAAGDS", +"name":"UDP-N-acetylmuramoyl-L-alanyl-D-glutamyl-meso-2,6-diaminopimelate synthetase", +"metabolites":{ +"26dap__M_c":-1.0, +"adp_c":1.0, +"atp_c":-1.0, +"h_c":1.0, +"pi_c":1.0, +"uamag_c":-1.0, +"ugmd_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1484", +"subsystem":"Murein Biosynthesis/Recycling" +}, +{ +"id":"GLCDBRAN3", +"name":"Glycogen debranching enzyme", +"metabolites":{ +"14glucan_c":1.0, +"glc__D_c":1.0, +"glycogen_c":-1.0, +"h2o_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0086 and Synpcc7942_1019", +"subsystem":"Glycogen and sucrose metabolism" +}, +{ +"id":"HEX1", +"name":"Hexokinase (D-glucose:ATP)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"g6p_c":1.0, +"glc__D_c":-1.0, +"h_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0221", +"subsystem":"Glycolysis/Gluconeogenesis" +}, +{ +"id":"ATPSum", +"name":"ATP synthase (thylakoid membrane)", +"metabolites":{ +"adp_c":-3.0, +"atp_c":3.0, +"h2o_c":3.0, +"h_c":10.0, +"h_u":-13.0, +"pi_c":-3.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0330 and Synpcc7942_0331 and Synpcc7942_0332 and Synpcc7942_0333 and Synpcc7942_0334 and Synpcc7942_0335 and Synpcc7942_0336 and Synpcc7942_0337 and Synpcc7942_2315 and Synpcc7942_2316", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"CHPHYS", +"name":"Chlorophyll a synthase", +"metabolites":{ +"chlda_c":-1.0, +"cholphya_c":1.0, +"h_c":-1, +"phdp_c":-1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2084", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"BCAROHX", +"name":"Beta-carotene hydroxylase (beta-cryptoxanthin forming)", +"metabolites":{ +"bcryptox_c":1.0, +"caro_c":-1.0, +"h2o_c":1.0, +"h_c":-1.0, +"nad_c":1.0, +"nadh_c":-1.0, +"o2_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2439", +"subsystem":"Carotenoid biosynthesis" +}, +{ +"id":"GLYCLTDx", +"name":"Glycolate dehydrogenase (NAD)", +"metabolites":{ +"glx_c":1.0, +"glyclt_c":-1.0, +"h_c":1.0, +"nad_c":-1, +"nadh_c":1 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"(Synpcc7942_0276 and Synpcc7942_1717 and Synpcc7942_1718) or (Synpcc7942_0567)", +"subsystem":"Photorespiration/Glyoxylate Degredation" +}, +{ +"id":"PIuabcpp", +"name":"Phosphate transport via ABC system (uptake, periplasm)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"pi_c":2.0, +"pi_p":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2441 and Synpcc7942_2442 and Synpcc7942_2443 and Synpcc7942_2444 and Synpcc7942_2445", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"PC20M", +"name":"S-adenosyl-L-methionine:precorrin-4 C20-methyltransferase", +"metabolites":{ +"ahcys_c":1.0, +"amet_c":-1.0, +"dscl_c":-1.0, +"h_c":1.0, +"pre3a_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1853", +"subsystem":"Cofactor biosynthesis: Vitamin B12" +}, +{ +"id":"ADSS", +"name":"Adenylosuccinate synthase", +"metabolites":{ +"asp__L_c":-1.0, +"dcamp_c":1.0, +"gdp_c":1.0, +"gtp_c":-1.0, +"h_c":2.0, +"imp_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2409", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"BM_RNA", +"name":"Biomass: RNA", +"metabolites":{ +"atp_c":-0.6946599999999999, +"bm_rna_c":1.0, +"ctp_c":-0.86375, +"gtp_c":-0.86375, +"ppi_c":3.1168299999999998, +"utp_c":-0.6946599999999999 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Biomass and maintenance functions" +}, +{ +"id":"DM_dialurate_c", +"name":"Modeling: demand reaction (dialurate_c)", +"metabolites":{ +"dialurate_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Intracellular demand" +}, +{ +"id":"THRPD", +"name":"Threonine-phosphate decarboxylase", +"metabolites":{ +"applp_c":1.0, +"co2_c":1.0, +"h_c":-1.0, +"thrp_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1109", +"subsystem":"Cofactor biosynthesis: Vitamin B12" +}, +{ +"id":"TMDS3", +"name":"Thymidylate synthase (FAD dependent)", +"metabolites":{ +"dtmp_c":1.0, +"dump_c":-1.0, +"h_c":-1.0, +"mlthf_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0, +"thf_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1044", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"DHFR", +"name":"Dihydrofolate reductase", +"metabolites":{ +"dhf_c":-1.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0, +"thf_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1186", +"subsystem":"Cofactor biosynthesis: Folate biosynthesis" +}, +{ +"id":"ACGS", +"name":"N-acetylglutamate synthase", +"metabolites":{ +"accoa_c":-1.0, +"acglu_c":1.0, +"coa_c":1.0, +"glu__L_c":-1.0, +"h_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1896", +"subsystem":"Amino acid metabolism: Proline and Arginine metabolism" +}, +{ +"id":"VALTA", +"name":"Valine transaminase", +"metabolites":{ +"3mob_c":1.0, +"akg_c":-1.0, +"glu__L_c":1.0, +"val__L_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1029", +"subsystem":"Amino acid metabolism: Valine, Leucine and Isoleucine biosynthesis" +}, +{ +"id":"AFAT", +"name":"ATP:FMN adenylyltransferase", +"metabolites":{ +"atp_c":-1.0, +"fad_c":1.0, +"fmn_c":-1.0, +"h_c":-2.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0492", +"subsystem":"Cofactor biosynthesis: Riboflavin biosynthesis" +}, +{ +"id":"GLYOX_1", +"name":"Glyoxalase I; Ni-dependent", +"metabolites":{ +"gthrd_c":1.0, +"lgt__S_c":-1.0, +"mthgxl_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0638", +"subsystem":"Calvin cycle/Pentose phosphate pathway" +}, +{ +"id":"EAR140y", +"name":"Enoyl-[acyl-carrier-protein] reductase (NADPH) (n-C14:0)", +"metabolites":{ +"h_c":-1.0, +"myrsACP_c":1.0, +"nadp_c":1.0, +"nadph_c":-1.0, +"tmrs2eACP_c":-1.0 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0126", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"FRTT", +"name":"Farnesyltranstransferase", +"metabolites":{ +"frdp_c":-1.0, +"ggdp_c":1.0, +"ipdp_c":-1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0776", +"subsystem":"Terpenoid Biosynthesis" +}, +{ +"id":"CTPS2", +"name":"CTP synthase (glutamine)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"ctp_c":1.0, +"gln__L_c":-1.0, +"glu__L_c":1.0, +"h2o_c":-1.0, +"h_c":2.0, +"pi_c":1.0, +"utp_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1954", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"DESAT16a", +"name":"Palmitoyl ACP delta-9 desaturase", +"metabolites":{ +"h2o_c":2.0, +"h_c":-1.0, +"hdeACP_c":1.0, +"nadp_c":1.0, +"nadph_c":-1.0, +"o2_c":-1.0, +"palmACP_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2561", +"subsystem":"Galactoglycerolipid metabolism" +}, +{ +"id":"CO2tex", +"name":"CO2 transport via diffusion (extracellular to periplasm)", +"metabolites":{ +"co2_e":-1.0, +"co2_p":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"GTHS", +"name":"Glutathione synthetase", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"glucys_c":-1.0, +"gly_c":-1.0, +"gthrd_c":1.0, +"h_c":1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2324", +"subsystem":"Metabolism of other amino acids: Glutathione metabolism" +}, +{ +"id":"UAGDP", +"name":"UDP-N-acetylglucosamine diphosphorylase", +"metabolites":{ +"acgam1p_c":-1.0, +"h_c":-1.0, +"ppi_c":1.0, +"uacgam_c":1.0, +"utp_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0288", +"subsystem":"Murein Biosynthesis/Recycling" +}, +{ +"id":"DADK", +"name":"Deoxyadenylate kinase", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"dadp_c":1.0, +"damp_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2213", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"MPOMC1", +"name":"Magnesium-protoporphyrin-IX 13-monomethyl ester,NADPH oxygen oxidoreductase (hydroxylating)", +"metabolites":{ +"h2o_c":1.0, +"h_c":-1.0, +"hmppp9_c":1.0, +"mppp9me_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0, +"o2_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1907", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"Nat_Kpp", +"name":"Sodium:potassium antiporter (periplasm to cytosol)", +"metabolites":{ +"k_c":1.0, +"k_p":-1.0, +"na1_c":-1.0, +"na1_p":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1081 and Synpcc7942_1080", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"3OAS180", +"name":"3-oxoacyl-[acyl-carrier-protein] synthase (n-C18:0)", +"metabolites":{ +"3ooctdACP_c":1.0, +"ACP_c":1.0, +"co2_c":1.0, +"h_c":-1.0, +"malACP_c":-1.0, +"palmACP_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0537", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"ARGDHpp", +"name":"L-arginine oxidoreductase", +"metabolites":{ +"5g2oxpt_p":1, +"arg__L_p":-1, +"h2o2_p":1, +"h2o_p":-1, +"nh4_p":1, +"o2_p":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0946", +"subsystem":"Amino acid metabolism: Proline and Arginine metabolism" +}, +{ +"id":"EAR80y", +"name":"Enoyl-[acyl-carrier-protein] reductase (NADH) (n-C8:0)", +"metabolites":{ +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0, +"ocACP_c":1.0, +"toct2eACP_c":-1.0 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0126", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"ERTHMMOR", +"name":"D-erythro-3-methylmalate: NAD oxidoreductase", +"metabolites":{ +"2obut_c":1.0, +"co2_c":1.0, +"nad_c":-1.0, +"nadh_c":1.0, +"r3mmal_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1505", +"subsystem":"Amino acid metabolism: Valine, Leucine and Isoleucine biosynthesis" +}, +{ +"id":"PDH", +"name":"Pyruvate dehydrogenase", +"metabolites":{ +"accoa_c":1.0, +"co2_c":1.0, +"coa_c":-1.0, +"nad_c":-1.0, +"nadh_c":1.0, +"pyr_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1068 and Synpcc7942_1198 and Synpcc7942_0143 and Synpcc7942_1944", +"subsystem":"Pyruvate metabolism/TCA Reactions" +}, +{ +"id":"MPML", +"name":"Mg-protoporphyrin IX magnesium-lyase", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"h2o_c":-1.0, +"h_c":3.0, +"mg2_c":-1.0, +"mppp9_c":1.0, +"pi_c":1.0, +"ppp9_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0583 and Synpcc7942_2137 and Synpcc7942_2274", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"USHD2", +"name":"UDP-sugar hydrolase (Synechococcus elongatus 7942)", +"metabolites":{ +"h2o_c":-1.0, +"h_c":2.0, +"lipidX2_c":1.0, +"u23ga2_c":-1, +"ump_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Lipopolysaccharide/O-antigen Biosynthesis" +}, +{ +"id":"TPI", +"name":"Triose-phosphate isomerase", +"metabolites":{ +"dhap_c":-1.0, +"g3p_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1261", +"subsystem":"Glycolysis/Gluconeogenesis" +}, +{ +"id":"DHPPDA", +"name":"Diaminohydroxyphosphoribosylaminopyrimidine deaminase", +"metabolites":{ +"25dhpp_c":-1.0, +"5apru_c":1.0, +"h2o_c":-1.0, +"h_c":-1.0, +"nh4_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0203", +"subsystem":"Cofactor biosynthesis: Riboflavin biosynthesis" +}, +{ +"id":"PRMICI", +"name":"1-(5-phosphoribosyl)-5-[(5-phosphoribosylamino)methylideneamino)imidazole-4-carboxamide isomerase", +"metabolites":{ +"prfp_c":-1.0, +"prlp_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1829", +"subsystem":"Histidine Metabolism" +}, +{ +"id":"CYTBD4um", +"name":"Cytochrome bd oxidase (plastoquinone utilizing, non-proton translocating)", +"metabolites":{ +"h2o_c":2.0, +"h_c":-4.0, +"h_u":4.0, +"o2_c":-1.0, +"pq_um":2.0, +"pqh2_um":-2.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1766 and Synpcc7942_1767", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"DM_co_c", +"name":"Modeling: demand reaction (co_c)", +"metabolites":{ +"co_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Intracellular demand" +}, +{ +"id":"CAT", +"name":"Catalase", +"metabolites":{ +"h2o2_c":-2.0, +"h2o_c":2.0, +"o2_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1656", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"GLUR", +"name":"Glutamate racemase", +"metabolites":{ +"glu__D_c":-1.0, +"glu__L_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2361", +"subsystem":"Murein Biosynthesis/Recycling" +}, +{ +"id":"ALAR", +"name":"Alanine racemase", +"metabolites":{ +"ala__D_c":1.0, +"ala__L_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2201", +"subsystem":"Murein Biosynthesis/Recycling" +}, +{ +"id":"SULR", +"name":"Ferredoxin-sulfite reductase", +"metabolites":{ +"fdxox_c":6.0, +"fdxrd_c":-6.0, +"h2o_c":3.0, +"h2s_c":1.0, +"h_c":-7.0, +"so3_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0019", +"subsystem":"Amino acid metabolism: Cysteine and Methionine metabolism" +}, +{ +"id":"NAt3ipp", +"name":"Sodium transport out via proton antiport (cytoplasm to periplasm)", +"metabolites":{ +"h_c":1.0, +"h_p":-1.0, +"na1_c":-1.0, +"na1_p":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2359 or Synpcc7942_0811 or Synpcc7942_1264 or Synpcc7942_0546 or Synpcc7942_0307 or Synpcc7942_2394 or Synpcc7942_2186", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"ADCS", +"name":"4-amino-4-deoxychorismate synthase", +"metabolites":{ +"4adcho_c":1.0, +"chor_c":-1.0, +"gln__L_c":-1.0, +"glu__L_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1334", +"subsystem":"Cofactor biosynthesis: Folate biosynthesis" +}, +{ +"id":"UGMDDS", +"name":"UDP-N-acetylmuramoyl-L-alanyl-D-glutamyl-meso-2,6-diaminopimeloyl-D-alanyl-D-alanine synthetase", +"metabolites":{ +"adp_c":1.0, +"alaala_c":-1.0, +"atp_c":-1.0, +"h_c":1.0, +"pi_c":1.0, +"ugmd_c":-1.0, +"ugmda_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1841", +"subsystem":"Murein Biosynthesis/Recycling" +}, +{ +"id":"BM_CARB", +"name":"Biomass: carbohydrates (storage and misc.)", +"metabolites":{ +"14glucan_c":-4.382, +"bm_carbs_c":1.0, +"glycogen_c":-0.8764 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Biomass and maintenance functions" +}, +{ +"id":"ICDHyr", +"name":"Isocitrate dehydrogenase (NADP)", +"metabolites":{ +"akg_c":1.0, +"co2_c":1.0, +"icit_c":-1.0, +"nadp_c":-1.0, +"nadph_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1719", +"subsystem":"Pyruvate metabolism/TCA Reactions" +}, +{ +"id":"ACHBSb", +"name":"2-aceto-2-hydroxybutanoate synthase (step 2)", +"metabolites":{ +"2ahbut_c":1.0, +"2ahethmpp_c":-1.0, +"2obut_c":-1.0, +"thmpp_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0139 and Synpcc7942_2434", +"subsystem":"Amino acid metabolism: Valine, Leucine and Isoleucine biosynthesis" +}, +{ +"id":"MTRI", +"name":"5-methylthioribose-1-phosphate isomerase", +"metabolites":{ +"5mdr1p_c":-1.0, +"5mdru1p_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1992", +"subsystem":"Amino acid metabolism: Cysteine and Methionine metabolism" +}, +{ +"id":"SPMS", +"name":"Spermidine synthase", +"metabolites":{ +"5mta_c":1.0, +"ametam_c":-1.0, +"h_c":1.0, +"ptrc_c":-1.0, +"spmd_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0628", +"subsystem":"Amino acid metabolism: Proline and Arginine metabolism" +}, +{ +"id":"AHSERL2", +"name":"O-aceytlhomoserine thiol lyase", +"metabolites":{ +"ac_c":1.0, +"achms_c":-1.0, +"h2s_c":-1.0, +"hcys__L_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0370", +"subsystem":"Amino acid metabolism: Cysteine and Methionine metabolism" +}, +{ +"id":"PEPC", +"name":"Phosphoenolpyruvate carboxylase", +"metabolites":{ +"hco3_c":-1.0, +"oaa_c":1.0, +"pep_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2252", +"subsystem":"Pyruvate metabolism/TCA Reactions" +}, +{ +"id":"PHETA1", +"name":"Phenylalanine transaminase", +"metabolites":{ +"akg_c":-1.0, +"glu__L_c":1.0, +"phe__L_c":-1.0, +"phpyr_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1030", +"subsystem":"Amino acid metabolism: Phenylalanine, Tyrosine, Tryptophan biosynthesis" +}, +{ +"id":"CHORM", +"name":"Chorismate mutase", +"metabolites":{ +"chor_c":-1.0, +"pphn_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1915", +"subsystem":"Amino acid metabolism: Phenylalanine, Tyrosine, Tryptophan biosynthesis" +}, +{ +"id":"GAPD", +"name":"Glyceraldehyde-3-phosphate dehydrogenase", +"metabolites":{ +"13dpg_c":1.0, +"g3p_c":-1.0, +"h_c":1.0, +"nad_c":-1.0, +"nadh_c":1.0, +"pi_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0245 or Synpcc7942_1939", +"subsystem":"Glycolysis/Gluconeogenesis" +}, +{ +"id":"PQH2tcm", +"name":"Plastoquinine insertion into the cytoplasmic membrane", +"metabolites":{ +"pqh2_c":-1.0, +"pqh2_cm":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"CPPPGO", +"name":"Coproporphyrinogen oxidase (O2 required)", +"metabolites":{ +"co2_c":2.0, +"cpppg3_c":-1.0, +"h2o_c":2.0, +"h_c":-2.0, +"o2_c":-1.0, +"pppg9_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0674", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"URIDK2r", +"name":"Uridylate kinase (dUMP)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"dudp_c":1.0, +"dump_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0093", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"OCBT", +"name":"Ornithine carbamoyltransferase", +"metabolites":{ +"cbp_c":-1.0, +"citr__L_c":1.0, +"h_c":1.0, +"orn_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2514", +"subsystem":"Amino acid metabolism: Proline and Arginine metabolism" +}, +{ +"id":"E4PD", +"name":"Erythrose 4-phosphate dehydrogenase", +"metabolites":{ +"4per_c":1.0, +"e4p_c":-1.0, +"h2o_c":-1.0, +"h_c":2.0, +"nad_c":-1.0, +"nadh_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0245 or Synpcc7942_1939", +"subsystem":"Cofactor biosynthesis: Vitamin B6" +}, +{ +"id":"IMDHT_3c2hmp", +"name":"3-isopropylmalate dehydratase, 3-Carboxy-2-hydroxy-4-methylpentanoate forming", +"metabolites":{ +"2ippm_c":-1.0, +"3c2hmp_c":1.0, +"h2o_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1898 and Synpcc7942_2548", +"subsystem":"Amino acid metabolism: Valine, Leucine and Isoleucine biosynthesis" +}, +{ +"id":"GLGC", +"name":"Glucose-1-phosphate adenylyltransferase", +"metabolites":{ +"adpglc_c":1.0, +"atp_c":-1.0, +"g1p_c":-1.0, +"h_c":-1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0603", +"subsystem":"Glycogen and sucrose metabolism" +}, +{ +"id":"PYK", +"name":"Pyruvate kinase", +"metabolites":{ +"adp_c":-1.0, +"atp_c":1.0, +"h_c":-1.0, +"pep_c":-1.0, +"pyr_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0098", +"subsystem":"Pyruvate metabolism/TCA Reactions" +}, +{ +"id":"3HAD120", +"name":"3-hydroxyacyl-[acyl-carrier-protein] dehydratase (n-C12:0)", +"metabolites":{ +"3hddecACP_c":-1.0, +"h2o_c":1.0, +"tddec2eACP_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0930", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"2PGLYCtcx", +"name":"2-phosphoglycolate transport out of the carboxyzome", +"metabolites":{ +"2pglyc_c":1.0, +"2pglyc_cx":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: carboxyzome" +}, +{ +"id":"MPOMOR", +"name":"Magnesium-protoporphyrin-IX 13-monomethyl ester NADPH oxygen oxidoreductase (hydroxylating)", +"metabolites":{ +"dvpchlda_c":1.0, +"h2o_c":2.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0, +"o2_c":-1.0, +"omppp9_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1907", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"3OAS160", +"name":"3-oxoacyl-[acyl-carrier-protein] synthase (n-C16:0)", +"metabolites":{ +"3opalmACP_c":1.0, +"ACP_c":1.0, +"co2_c":1.0, +"h_c":-1.0, +"malACP_c":-1.0, +"myrsACP_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0537", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"IG3PS", +"name":"Imidazole-glycerol-3-phosphate synthase", +"metabolites":{ +"aicar_c":1.0, +"eig3p_c":1.0, +"gln__L_c":-1.0, +"glu__L_c":1.0, +"h_c":1.0, +"prlp_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2087 and Synpcc7942_1481", +"subsystem":"Histidine Metabolism" +}, +{ +"id":"DMPPS_syn", +"name":"1-hydroxy-2-methyl-2-(E)-butenyl 4-diphosphate reductase (dmpp)", +"metabolites":{ +"dmpp_c":1.0, +"h2mb4p_c":-1.0, +"h2o_c":1.0, +"h_c":-1.0, +"nadp_c":1.0, +"nadph_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0073", +"subsystem":"Terpenoid Biosynthesis" +}, +{ +"id":"NTRARf2", +"name":"Nitrite reductase (ferredoxin)", +"metabolites":{ +"fdxox_c":2.0, +"fdxrd_c":-2.0, +"h2o_c":1.0, +"h_c":-2.0, +"no2_c":1.0, +"no3_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1235", +"subsystem":"Nitrogen metabolism" +}, +{ +"id":"G6PDA", +"name":"Glucosamine-6-phosphate deaminase", +"metabolites":{ +"f6p_c":1.0, +"gam6p_c":-1.0, +"h2o_c":-1.0, +"nh4_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1103", +"subsystem":"Murein Biosynthesis/Recycling" +}, +{ +"id":"PFK", +"name":"Phosphofructokinase", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"f6p_c":-1.0, +"fdp_c":1.0, +"h_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0592", +"subsystem":"Glycolysis/Gluconeogenesis" +}, +{ +"id":"CA2t2pp", +"name":"Calcium (Ca+2) transport out via proton antiport (periplasm)", +"metabolites":{ +"ca2_c":-1.0, +"ca2_p":1.0 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0023", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"DM_5drib_c", +"name":"Modeling: demand reaction (5drib_c)", +"metabolites":{ +"5drib_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Intracellular demand" +}, +{ +"id":"RPI", +"name":"Ribose-5-phosphate isomerase", +"metabolites":{ +"r5p_c":-1.0, +"ru5p__D_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0584", +"subsystem":"Calvin cycle/Pentose phosphate pathway" +}, +{ +"id":"FMNRy", +"name":"FMN reductase NADPH dependent", +"metabolites":{ +"fmn_c":-1.0, +"fmnh2_c":1.0, +"h_c":-2.0, +"nadp_c":1.0, +"nadph_c":-1.0 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0543", +"subsystem":"Cofactor biosynthesis: Riboflavin biosynthesis" +}, +{ +"id":"ANS2", +"name":"Anthranilate synthase", +"metabolites":{ +"anth_c":1.0, +"chor_c":-1.0, +"h2o_c":1.0, +"h_c":1.0, +"nh4_c":-1.0, +"pyr_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0400 and Synpcc7942_1003", +"subsystem":"Amino acid metabolism: Phenylalanine, Tyrosine, Tryptophan biosynthesis" +}, +{ +"id":"GHMT2r", +"name":"Glycine hydroxymethyltransferase, reversible", +"metabolites":{ +"gly_c":1.0, +"h2o_c":1.0, +"mlthf_c":1.0, +"ser__L_c":-1.0, +"thf_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0282", +"subsystem":"Amino acid metabolism: Glycine, Serine and Threonine metabolism" +}, +{ +"id":"BPNT", +"name":"3',5'-bisphosphate nucleotidase", +"metabolites":{ +"amp_c":1.0, +"h2o_c":-1.0, +"pap_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0173 or Synpcc7942_0965", +"subsystem":"Amino acid metabolism: Cysteine and Methionine metabolism" +}, +{ +"id":"PSIIum", +"name":"Photosystem II", +"metabolites":{ +"h2o_u":-2.0, +"h_c":-3.9996, +"h_u":4.0, +"o2_u":1.0, +"p680*_um":-4.0, +"p680_um":4.0, +"pq_um":-1.9998, +"pqh2_um":1.9998, +"ps2d1*_um":0.0004, +"ps2d1_um":-0.0004 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"(Synpcc7942_0224 and Synpcc7942_0225 and Synpcc7942_0294 and Synpcc7942_0343 and Synpcc7942_0424 and Synpcc7942_0456 and Synpcc7942_0655 and Synpcc7942_0656 and Synpcc7942_0696 and Synpcc7942_0697 and Synpcc7942_0699 and Synpcc7942_0893 and Synpcc7942_1038 and Synpcc7942_1174 and Synpcc7942_1175 and Synpcc7942_1176 and Synpcc7942_1177 and Synpcc7942_1637 and Synpcc7942_1678 and Synpcc7942_1679 and Synpcc7942_1705 and Synpcc7942_1882 and Synpcc7942_1962 and Synpcc7942_2016 and Synpcc7942_2245 and Synpcc7942_2478 and Synpcc7942_2010) or (Synpcc7942_0224 and Synpcc7942_0225 and Synpcc7942_0294 and Synpcc7942_0343 and Synpcc7942_0424 and Synpcc7942_0456 and Synpcc7942_0655 and Synpcc7942_0656 and Synpcc7942_0696 and Synpcc7942_0697 and Synpcc7942_0699 and Synpcc7942_1038 and Synpcc7942_1174 and Synpcc7942_1175 and Synpcc7942_1176 and Synpcc7942_1177 and Synpcc7942_1389 and Synpcc7942_1637 and Synpcc7942_1678 and Synpcc7942_1679 and Synpcc7942_1705 and Synpcc7942_1882 and Synpcc7942_1962 and Synpcc7942_2016 and Synpcc7942_2245 and Synpcc7942_2478 and Synpcc7942_2010)", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"CBFCum", +"name":"Cytb6f complex", +"metabolites":{ +"h_c":-2.0, +"h_u":4.0, +"pccu1p_u":2.0, +"pccu2p_u":-2.0, +"pq_um":1.0, +"pqh2_um":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0113 and Synpcc7942_0475 and Synpcc7942_0322 and Synpcc7942_0323 and Synpcc7942_1478 and Synpcc7942_0511 and Synpcc7942_1231 and Synpcc7942_1232 and Synpcc7942_1479 and Synpcc7942_2331 and Synpcc7942_2332 and Synpcc7942_2426", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"SK_amylose_c", +"name":"Modeling: sink reaction (amylose_c)", +"metabolites":{ +"amylose_c":-1.0 +}, +"lower_bound":-1000.0, +"upper_bound":0, +"gene_reaction_rule":"", +"subsystem":"Intracellular demand" +}, +{ +"id":"SK_14glucan_c", +"name":"Modeling: sink reaction (14glucan_c)", +"metabolites":{ +"14glucan_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":0.0, +"gene_reaction_rule":"", +"subsystem":"Intracellular demand" +}, +{ +"id":"SK_glycogen_c", +"name":"Modeling: sink reaction (glycogen_c)", +"metabolites":{ +"glycogen_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":0.0, +"gene_reaction_rule":"", +"subsystem":"Intracellular demand" +}, +{ +"id":"EX_h2o_e", +"name":"Modeling: exchange reaction (h2o_e)", +"metabolites":{ +"h2o_e":-1.0 +}, +"lower_bound":-100, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_o2_e", +"name":"Modeling: exchange reaction (o2_e)", +"metabolites":{ +"o2_e":-1.0 +}, +"lower_bound":-100, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_co2_e", +"name":"Modeling: exchange reaction (co2_e)", +"metabolites":{ +"co2_e":-1.0 +}, +"lower_bound":-1.99, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_leu__L_e", +"name":"Modeling: exchange reaction (his__L_e)", +"metabolites":{ +"leu__L_e":1 +}, +"lower_bound":0, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_cobalt2_e", +"name":"Modeling: exchange reaction (cobalt2_e)", +"metabolites":{ +"cobalt2_e":-1.0 +}, +"lower_bound":-1.7e-05, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_zn2_e", +"name":"Modeling: exchange reaction (zn2_e)", +"metabolites":{ +"zn2_e":-1.0 +}, +"lower_bound":-7.7e-05, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_so4_e", +"name":"Modeling: exchange reaction (so4_e)", +"metabolites":{ +"so4_e":-1.0 +}, +"lower_bound":-0.03, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_spmd_e", +"name":"Modeling: exchange reaction (spmd_e)", +"metabolites":{ +"spmd_e":-1.0 +}, +"lower_bound":0, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_ca2_e", +"name":"EX_ca2_ext", +"metabolites":{ +"ca2_e":-1.0 +}, +"lower_bound":-0.024, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_nh4_e", +"name":"Modeling: exchange reaction (nh4_e)", +"metabolites":{ +"nh4_e":-1.0 +}, +"lower_bound":-0.0031, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_arg__L_e", +"name":"EX_arg__L_ext", +"metabolites":{ +"arg__L_e":-1.0 +}, +"lower_bound":0, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_gln__L_e", +"name":"Modeling: exchange reaction (gln__L_e)", +"metabolites":{ +"gln__L_e":-1.0 +}, +"lower_bound":0, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_mn2_e", +"name":"Modeling: exchange reaction (mn2_e)", +"metabolites":{ +"mn2_e":-1.0 +}, +"lower_bound":-0.0009, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_hco3_e", +"name":"Modeling: exchange reaction (hco3_e)", +"metabolites":{ +"hco3_e":-1.0 +}, +"lower_bound":-1.99, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_mg2_e", +"name":"Modeling: exchange reaction (mg2_e)", +"metabolites":{ +"mg2_e":-1.0 +}, +"lower_bound":-0.03, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_ptrc_e", +"name":"Modeling: exchange reaction (ptrc_e)", +"metabolites":{ +"ptrc_e":-1.0 +}, +"lower_bound":0, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_fe2_e", +"name":"Modeling: exchange reaction (fe2_e)", +"metabolites":{ +"fe2_e":-1.0 +}, +"lower_bound":0, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_cu2_e", +"name":"Modeling: exchange reaction (cu2_e)", +"metabolites":{ +"cu2_e":-1.0 +}, +"lower_bound":-3e-05, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_k_e", +"name":"Modeling: exchange reaction (k_e)", +"metabolites":{ +"k_e":-1.0 +}, +"lower_bound":-0.046, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_no3_e", +"name":"Modeling: exchange reaction (no3_e)", +"metabolites":{ +"no3_e":-1.0 +}, +"lower_bound":-1.76, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_fe3_e", +"name":"Modeling: exchange reaction (fe3_e)", +"metabolites":{ +"fe3_e":-1.0 +}, +"lower_bound":-0.001, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_mobd_e", +"name":"Modeling: exchange reaction (modb_e)", +"metabolites":{ +"mobd_e":-1.0 +}, +"lower_bound":-0.00016, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_ni2_e", +"name":"Modeling: exchange reaction (ni2_e)", +"metabolites":{ +"ni2_e":-1.0 +}, +"lower_bound":0, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_na1_e", +"name":"Modeling: exchange reaction (na1_e)", +"metabolites":{ +"na1_e":-1.0 +}, +"lower_bound":-1.79854, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_cynt_e", +"name":"Modeling: exchange reaction (cynt_e)", +"metabolites":{ +"cynt_e":-1.0 +}, +"lower_bound":0, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_h_e", +"name":"Modeling: exchange reaction (h_e)", +"metabolites":{ +"h_e":-1.0 +}, +"lower_bound":-100, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"FE3tex", +"name":"Cation transport, Fe3", +"metabolites":{ +"fe3_e":-1.0, +"fe3_p":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"FE2tex", +"name":"Cation transport, Fe2", +"metabolites":{ +"fe2_e":-1.0, +"fe2_p":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"NI2tex", +"name":"Cation transport, Ni(2+)", +"metabolites":{ +"ni2_e":-1.0, +"ni2_p":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"MNtex", +"name":"Cation transport, Mn(2+)", +"metabolites":{ +"mn2_e":-1.0, +"mn2_p":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"COBALT2tex", +"name":"Cation transport, Cobalt(2+)", +"metabolites":{ +"cobalt2_e":-1.0, +"cobalt2_p":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"CU2tex", +"name":"Cation transport, Cu(2+)", +"metabolites":{ +"cu2_e":-1.0, +"cu2_p":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"Zn2tex", +"name":"Cation transport, Zn(2+)", +"metabolites":{ +"zn2_e":-1.0, +"zn2_p":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"SPMDtex", +"name":"Spermidine transport via diffusion (ext to pps)", +"metabolites":{ +"spmd_e":-1.0, +"spmd_p":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"LEUtex", +"name":"Histidine transport via diffusion (ext to pps)", +"metabolites":{ +"leu__L_e":-1, +"leu__L_p":1 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"HCO3tex", +"name":"Bicarbonate transport via diffusion (ext to pps)", +"metabolites":{ +"hco3_e":-1.0, +"hco3_p":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"GLNtex", +"name":"Glutamine transport via diffusion (ext to pps)", +"metabolites":{ +"gln__L_e":-1.0, +"gln__L_p":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"CYNTtex", +"name":"Cyanate transport via diffusion (ext to pps)", +"metabolites":{ +"cynt_e":-1.0, +"cynt_p":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"ARGtex", +"name":"Arginine transport via diffusion (ext to pps)", +"metabolites":{ +"arg__L_e":-1.0, +"arg__L_p":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"MOBDtex", +"name":"Molybdate transport via diffusion (ext to pps)", +"metabolites":{ +"mobd_e":-1.0, +"mobd_p":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"NH4tex", +"name":"Ammonium transport via diffusion (ext to pps)", +"metabolites":{ +"nh4_e":-1.0, +"nh4_p":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"SO4tex", +"name":"Sulfate transport via diffusion (ext to pps)", +"metabolites":{ +"so4_e":-1.0, +"so4_p":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"PTRCtex", +"name":"Putrescine transport via diffusion (ext to pps)", +"metabolites":{ +"ptrc_e":-1.0, +"ptrc_p":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"NO3tex", +"name":"Nitrate transport via diffusion (ext to pps)", +"metabolites":{ +"no3_e":-1.0, +"no3_p":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"NAtex", +"name":"Sodium ion transport via diffusion (ext to pps)", +"metabolites":{ +"na1_e":-1.0, +"na1_p":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"CA2tex", +"name":"Calcium ion transport via diffusion (ext to pps)", +"metabolites":{ +"ca2_e":-1.0, +"ca2_p":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"Ktex", +"name":"Potassium ion transport via diffusion (ext to pps)", +"metabolites":{ +"k_e":-1.0, +"k_p":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"CO2tpp", +"name":"Carbon dioxide transport via diffusion (pps to cytosol)", +"metabolites":{ +"co2_c":1.0, +"co2_p":-1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"EX_pi_e", +"name":"Modeling: exchange reaction (pi_e)", +"metabolites":{ +"pi_e":-1.0 +}, +"lower_bound":-0.023, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"PItex", +"name":"Phosphate transport via diffusion (ext to pps)", +"metabolites":{ +"pi_e":-1.0, +"pi_p":1.0 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"MDRPD", +"name":"5-Methylthio-5-deoxy-D-ribulose 1-phosphate dehydratase", +"metabolites":{ +"5mdru1p_c":-1.0, +"dkmpp_c":1.0, +"h2o_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1993", +"subsystem":"Amino acid metabolism: Cysteine and Methionine metabolism" +}, +{ +"id":"ENOPH", +"name":"2,3-Diketo-5-methylthiopentyl-1-phosphate phosphohydrolase", +"metabolites":{ +"dhmtp_c":1.0, +"dkmpp_c":-1.0, +"h2o_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1994", +"subsystem":"Amino acid metabolism: Cysteine and Methionine metabolism" +}, +{ +"id":"ARD", +"name":"1,2-dihydroxy-5-(methylthio)pent-1-en-3-one:oxygen oxidoreductase ", +"metabolites":{ +"2kmb_c":1.0, +"dhmtp_c":-1.0, +"for_c":1.0, +"h_c":2.0, +"o2_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0608", +"subsystem":"Amino acid metabolism: Cysteine and Methionine metabolism" +}, +{ +"id":"UNK3", +"name":"4-Methylthio-2-oxobutanoate transaminase", +"metabolites":{ +"2kmb_c":-1.0, +"akg_c":1.0, +"glu__L_c":-1.0, +"met__L_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1794", +"subsystem":"Amino acid metabolism: Cysteine and Methionine metabolism" +}, +{ +"id":"PHYPQOX", +"name":"15-cis-phytoene:plastoquinone oxidoreductase", +"metabolites":{ +"phyto_c":-1, +"pq_um":-2, +"pqh2_um":2, +"tczcaro_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1983", +"subsystem":"Carotenoid biosynthesis" +}, +{ +"id":"ZISO", +"name":"9,15,9-tricis-zeta-carotene cis-trans-isomerase", +"metabolites":{ +"dczcaro_c":1, +"tczcaro_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1979", +"subsystem":"Carotenoid biosynthesis" +}, +{ +"id":"ZCARDS", +"name":"7,9,9-tricis-neurosporene:quinone oxidoreductase", +"metabolites":{ +"dczcaro_c":-1, +"pq_um":-2, +"pqh2_um":2, +"ttclyco_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1512", +"subsystem":"Carotenoid biosynthesis" +}, +{ +"id":"PLYCOI", +"name":"7,9,7,9-tetracis-lycopene cis-trans-isomerase", +"metabolites":{ +"lyc_c":1, +"ttclyco_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1246 or Synpcc7942_1723 or Synpcc7942_0970", +"subsystem":"Carotenoid biosynthesis" +}, +{ +"id":"CHLADMT", +"name":"Chlorophyll Mg dechelatase", +"metabolites":{ +"cholphya_c":-1, +"h_c":-2, +"mg2_c":1, +"phptna_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"PHEOASE", +"name":"Pheophytin pheophorbide hydrolase", +"metabolites":{ +"h2o_c":-1, +"h_c":1, +"phphbda_c":1, +"phptna_c":-1, +"phytol_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2532", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"PHEOX", +"name":"Pheophorbide a oxygenase", +"metabolites":{ +"fdxox_c":2, +"fdxrd_c":-2, +"h_c":-2, +"o2_c":-1, +"phphbda_c":-1, +"rcc_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2164", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"PHYTK", +"name":"Phytol kinase", +"metabolites":{ +"adp_c":1, +"atp_c":-1, +"cdp_c":1, +"ctp_c":-1, +"h_c":1, +"phdp_c":1, +"phytol_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1043", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"TRNFE", +"name":"Transferrin: NAD+ oxidoreductase", +"metabolites":{ +"fe2_c":2, +"fe3_c":-2, +"h_c":1, +"nad_c":1, +"nadh_c":-1 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"PTHPS", +"name":"6-pyruvoyltetrahydropterin synthase", +"metabolites":{ +"6pthp_c":1, +"ahdt_c":-1, +"pppi_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1184", +"subsystem":"Cofactor biosynthesis: Folate biosynthesis" +}, +{ +"id":"SPR", +"name":"pyruvoyl-tetrahydropterin reductase", +"metabolites":{ +"6pthp_c":-1, +"h_c":-2, +"nadp_c":2, +"nadph_c":-2, +"thbpt_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1819", +"subsystem":"Cofactor biosynthesis: Folate biosynthesis" +}, +{ +"id":"THBTGT", +"name":"UDP-glucose:tetrahydrobiopterin glucosyltransferase", +"metabolites":{ +"gthbpt_c":1, +"h_c":1, +"thbpt_c":-1, +"udp_c":1, +"udpg_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1918", +"subsystem":"Cofactor biosynthesis: Folate biosynthesis" +}, +{ +"id":"NADDP", +"name":"NAD diphosphatase", +"metabolites":{ +"amp_c":1, +"h2o_c":-1, +"h_c":2, +"nad_c":-1, +"nmn_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0205", +"subsystem":"Cofactor biosynthesis: Nicotinate and Nicotinamide metabolism" +}, +{ +"id":"CYSDES", +"name":"Cysteine desulfurase", +"metabolites":{ +"ala__L_c":1, +"cys__L_c":-1, +"h_c":1, +"iscsh_c":-1, +"iscssh_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0450 and Synpcc7942_1929", +"subsystem":"Cofactor biosynthesis: Thiamine (B1)" +}, +{ +"id":"THISAT", +"name":"ThiS adenylyltransferase sulfur carrier protein", +"metabolites":{ +"athis_c":1, +"atp_c":-1, +"h_c":-1, +"ppi_c":1, +"this_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0158 and Synpcc7942_1058", +"subsystem":"Cofactor biosynthesis: Thiamine (B1)" +}, +{ +"id":"THII", +"name":"Thiamine biosynthesis step ThiI", +"metabolites":{ +"amp_c":1, +"athis_c":-1, +"iscsh_c":1, +"iscssh_c":-1, +"nadp_c":1, +"nadph_c":-1, +"thissh_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0158 and Synpcc7942_1058", +"subsystem":"Cofactor biosynthesis: Thiamine (B1)" +}, +{ +"id":"GLYCOX1", +"name":"Glycine oxidase (ThiO)", +"metabolites":{ +"gly_c":-1, +"h2o2_c":1, +"imgly_c":1, +"o2_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2406", +"subsystem":"Cofactor biosynthesis: Thiamine (B1)" +}, +{ +"id":"GLYCOX2", +"name":"Glycine oxidase", +"metabolites":{ +"glx_c":1, +"h2o_c":-1, +"imgly_c":-1, +"nh4_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2406", +"subsystem":"Cofactor biosynthesis: Thiamine (B1)" +}, +{ +"id":"DXYTST", +"name":"1-deoxy-D-xylulose 5-phosphate:thiol sulfurtransferase (ThiG)", +"metabolites":{ +"2c4mthzep_c":1, +"dxyl5p_c":-1, +"h2o_c":2, +"h_c":1, +"imgly_c":-1, +"this_c":1, +"thissh_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0576", +"subsystem":"Cofactor biosynthesis: Thiamine (B1)" +}, +{ +"id":"THZT", +"name":"Thiazole tautomerase (TenI)", +"metabolites":{ +"2c4mthzep_c":-1, +"cthzp_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1057", +"subsystem":"Cofactor biosynthesis: Thiamine (B1)" +}, +{ +"id":"SHS1", +"name":"Siroheme synthsis", +"metabolites":{ +"ahcys_c":2, +"amet_c":-2, +"fe2_c":-1, +"h_c":5, +"nad_c":-1, +"nadh_c":1, +"sheme_c":1, +"uppg3_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2610 and Synpcc7942_2611", +"subsystem":"Cofactor biosynthesis: Vitamin B12" +}, +{ +"id":"MALCOAMT", +"name":"Malonyl-CoA methyltransferase", +"metabolites":{ +"ahcys_c":1, +"amet_c":-1, +"malcoa_c":-1, +"malcoame_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0029", +"subsystem":"Cofactor biosynthesis: Biotin biosynthesis" +}, +{ +"id":"OGMEACPS", +"name":"3-Oxo-glutaryl-[ACP] methyl ester synthase", +"metabolites":{ +"co2_c":1, +"coa_c":1, +"h_c":-1, +"malACP_c":-1, +"malcoame_c":-1, +"ogmeACP_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0537", +"subsystem":"Cofactor biosynthesis: Biotin biosynthesis" +}, +{ +"id":"OGMEACPR", +"name":"3-Oxo-glutaryl-[ACP] methyl ester reductase", +"metabolites":{ +"h_c":-1, +"hgmeACP_c":1, +"nadp_c":1, +"nadph_c":-1, +"ogmeACP_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0684", +"subsystem":"Cofactor biosynthesis: Biotin biosynthesis" +}, +{ +"id":"OGMEACPD", +"name":"3-Oxo-glutaryl-[ACP] methyl ester dehydratase", +"metabolites":{ +"egmeACP_c":1, +"h2o_c":1, +"hgmeACP_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0930", +"subsystem":"Cofactor biosynthesis: Biotin biosynthesis" +}, +{ +"id":"EGMEACPR", +"name":"Enoylglutaryl-[ACP] methyl ester reductase", +"metabolites":{ +"egmeACP_c":-1, +"gmeACP_c":1, +"h_c":-1, +"nadp_c":1, +"nadph_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0126", +"subsystem":"Cofactor biosynthesis: Biotin biosynthesis" +}, +{ +"id":"OPMEACPS", +"name":"3-Oxo-pimeloyl-[ACP] methyl ester synthase", +"metabolites":{ +"ACP_c":1, +"co2_c":1, +"gmeACP_c":-1, +"h_c":-1, +"malACP_c":-1, +"opmeACP_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0537", +"subsystem":"Cofactor biosynthesis: Biotin biosynthesis" +}, +{ +"id":"OPMEACPR", +"name":"3-Oxo-pimeloyl-[ACP] methyl ester reductase", +"metabolites":{ +"h_c":-1, +"hpmeACP_c":1, +"nadp_c":1, +"nadph_c":-1, +"opmeACP_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0684", +"subsystem":"Cofactor biosynthesis: Biotin biosynthesis" +}, +{ +"id":"OPMEACPD", +"name":"3-Oxo-pimeloyl-[ACP] methyl ester dehydratase", +"metabolites":{ +"epmeACP_c":1, +"h2o_c":1, +"hpmeACP_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0930", +"subsystem":"Cofactor biosynthesis: Biotin biosynthesis" +}, +{ +"id":"EPMEACPR", +"name":"Enoylpimeloyl-[ACP] methyl ester reductase", +"metabolites":{ +"epmeACP_c":-1, +"h_c":-1, +"nadp_c":1, +"nadph_c":-1, +"pmeACP_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0126", +"subsystem":"Cofactor biosynthesis: Biotin biosynthesis" +}, +{ +"id":"PMEACPE", +"name":"Pimeloyl-[ACP] methyl ester esterase", +"metabolites":{ +"h2o_c":-1, +"meoh_c":1, +"pimACP_c":1, +"pmeACP_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0028", +"subsystem":"Cofactor biosynthesis: Biotin biosynthesis" +}, +{ +"id":"AOXSr2", +"name":"8-amino-7-oxononanoate synthase", +"metabolites":{ +"8aonn_c":1, +"ACP_c":1, +"ala__L_c":-1, +"co2_c":1, +"pimACP_c":-1 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0027", +"subsystem":"Cofactor biosynthesis: Biotin biosynthesis" +}, +{ +"id":"AMAOTr", +"name":"Adenosylmethionine-8-amino-7-oxononanoate transaminase", +"metabolites":{ +"8aonn_c":-1, +"amet_c":-1, +"amob_c":1, +"dann_c":1 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0031", +"subsystem":"Cofactor biosynthesis: Biotin biosynthesis" +}, +{ +"id":"DBTS", +"name":"Dethiobiotin synthase", +"metabolites":{ +"adp_c":1, +"atp_c":-1, +"co2_c":-1, +"dann_c":-1, +"dtbt_c":1, +"h_c":3, +"pi_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0030", +"subsystem":"Cofactor biosynthesis: Biotin biosynthesis" +}, +{ +"id":"BTS6", +"name":"Biotin synthase", +"metabolites":{ +"ala__L_c":1, +"amet_c":-1, +"btn_c":1, +"cys__L_c":-1, +"dad_5_c":1, +"dtbt_c":-1, +"h_c":1, +"met__L_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0419 and Synpcc7942_0450 and Synpcc7942_1734 and Synpcc7942_1735 and Synpcc7942_1736 and Synpcc7942_1737 and Synpcc7942_1738", +"subsystem":"Cofactor biosynthesis: Biotin biosynthesis" +}, +{ +"id":"BACCL", +"name":"Biotin acetyl CoA carboxylase ligase", +"metabolites":{ +"atp_c":-1, +"btamp_c":1, +"btn_c":-1, +"h_c":-1, +"ppi_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0345", +"subsystem":"Cofactor biosynthesis: Biotin biosynthesis" +}, +{ +"id":"BTNPL2", +"name":"Holocarboxylase synthestase (biotin protein ligase)", +"metabolites":{ +"accp_c":-1, +"amp_c":1, +"btamp_c":-1, +"btnCCP_c":1, +"h_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0345", +"subsystem":"Cofactor biosynthesis: Biotin biosynthesis" +}, +{ +"id":"LIPOCT", +"name":"Lipoyl(octanoyl) transferase", +"metabolites":{ +"ACP_c":1, +"h_c":-1, +"ocACP_c":-1, +"octapb_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0542 or Synpcc7942_1507", +"subsystem":"Cofactor biosynthesis: Lipoate biosynthesis" +}, +{ +"id":"LIPOS2", +"name":"Lipoate synthase", +"metabolites":{ +"ala__L_c":2, +"amet_c":-2, +"cys__L_c":-2, +"dad_5_c":2, +"fdxox_c":2, +"fdxrd_c":-2, +"lipopb_c":1, +"met__L_c":2, +"octapb_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2353 and Synpcc7942_1929 and Synpcc7942_0450", +"subsystem":"Cofactor biosynthesis: Lipoate biosynthesis" +}, +{ +"id":"LIPATPT", +"name":"Lipoate-ATP adenylate transferase", +"metabolites":{ +"atp_c":-1, +"h_c":-1, +"lipamp_c":1, +"lipoate_c":-1, +"ppi_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1411", +"subsystem":"Cofactor biosynthesis: Lipoate biosynthesis" +}, +{ +"id":"LIPAMPL", +"name":"Lipoyl-adenylate protein ligase", +"metabolites":{ +"amp_c":1, +"lipamp_c":-1, +"lipopb_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1411", +"subsystem":"Cofactor biosynthesis: Lipoate biosynthesis" +}, +{ +"id":"MEOHtpp", +"name":"Methanol reversible transport via diffusion (periplasm)", +"metabolites":{ +"meoh_c":-1, +"meoh_p":1 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Cofactor biosynthesis: Lipoate biosynthesis" +}, +{ +"id":"MEOHtex", +"name":"Methanol reversible transport via diffusion (extracellular to periplasm)", +"metabolites":{ +"meoh_e":1, +"meoh_p":-1 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Cofactor biosynthesis: Lipoate biosynthesis" +}, +{ +"id":"DM_amob_c", +"name":"Sink needed to allow S-Adenosyl-4-methylthio-2-oxobutanoate to leave system", +"metabolites":{ +"amob_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Intracellular demand" +}, +{ +"id":"AGTi", +"name":"Alanine glyoxylate aminotransferase", +"metabolites":{ +"ala__L_c":-1, +"glx_c":-1, +"gly_c":1, +"pyr_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2160", +"subsystem":"Photorespiration/Glyoxylate Degredation" +}, +{ +"id":"ADNK1", +"name":"Adenosine kinase", +"metabolites":{ +"adn_c":-1, +"adp_c":1, +"amp_c":1, +"atp_c":-1, +"h_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"CPH4S", +"name":"6-carboxy-5,6,7,8-tetrahydropterin synthase", +"metabolites":{ +"acald_c":1, +"ahdt_c":-1, +"cph4_c":1, +"h2o_c":-1, +"h_c":1, +"pppi_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1953", +"subsystem":"tRNA modification: queuosine" +}, +{ +"id":"CDGS", +"name":"7-deaza-7-carboxyguanine synthase", +"metabolites":{ +"cdg_c":1, +"cph4_c":-1, +"h_c":-1, +"nh4_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1332", +"subsystem":"tRNA modification: queuosine" +}, +{ +"id":"CCGS", +"name":"7-cyano-7-carbaguanine synthase", +"metabolites":{ +"adp_c":1, +"atp_c":-1, +"cdg_c":-1, +"h2o_c":1, +"h_c":1, +"nh4_c":-1, +"pi_c":1, +"preq0_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1333", +"subsystem":"tRNA modification: queuosine" +}, +{ +"id":"CDGR", +"name":"7-cyano-7-deazaguanine reductase", +"metabolites":{ +"h_c":-3, +"nadp_c":2, +"nadph_c":-2, +"preq0_c":-1, +"preq1_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1844", +"subsystem":"tRNA modification: queuosine" +}, +{ +"id":"QUERT", +"name":"Querine tRNA-ribosyltransferase", +"metabolites":{ +"preq1_c":-1, +"preqtrna_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0455", +"subsystem":"tRNA modification: queuosine" +}, +{ +"id":"SAMTRI", +"name":"S-adenosylmethionine:tRNA ribosyltransferase-isomerase", +"metabolites":{ +"ade_c":1, +"amet_c":-1, +"epxqtrna_c":1, +"h_c":1, +"met__L_c":1, +"preqtrna_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2348", +"subsystem":"tRNA modification: queuosine" +}, +{ +"id":"EPXQR", +"name":"Epoxyqueuosine reductase", +"metabolites":{ +"epxqtrna_c":-1, +"h2o_c":1, +"h_c":-1, +"nadp_c":1, +"nadph_c":-1, +"quetrna_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0530", +"subsystem":"tRNA modification: queuosine" +}, +{ +"id":"UPPRT", +"name":"Uracil phosphoribosyltransferase", +"metabolites":{ +"ppi_c":1, +"prpp_c":-1, +"ump_c":1, +"ura_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1715", +"subsystem":"Purine and Pyrimidine Biosynthesis" +}, +{ +"id":"UDPGD", +"name":"UDPglucose 6-dehydrogenase", +"metabolites":{ +"h2o_c":-1, +"h_c":3, +"nad_c":-2, +"nadh_c":2, +"udpg_c":-1, +"udpglcur_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0973", +"subsystem":"Nucleotide sugar metabolism" +}, +{ +"id":"UDPGLDC", +"name":"UDP-D-glucuronate decarboxylase", +"metabolites":{ +"co2_c":1, +"h_c":-1, +"udpglcur_c":-1, +"udpxyl_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1149", +"subsystem":"Nucleotide sugar metabolism" +}, +{ +"id":"GMAND", +"name":"GDP-D-mannose dehydratase", +"metabolites":{ +"gdpddman_c":1, +"gdpmann_c":-1, +"h2o_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1342", +"subsystem":"Nucleotide sugar metabolism" +}, +{ +"id":"GFUCS", +"name":"GDP-L-fucose synthase", +"metabolites":{ +"gdpddman_c":-1, +"gdpfuc_c":1, +"h_c":-1, +"nadp_c":1, +"nadph_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1700", +"subsystem":"Nucleotide sugar metabolism" +}, +{ +"id":"ALCD19", +"name":"Alcohol dehydrogenase (glycerol)", +"metabolites":{ +"glyald_c":-1, +"glyc_c":1, +"h_c":-1, +"nad_c":1, +"nadh_c":-1 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2285 or Synpcc7942_1653", +"subsystem":"Glycolysis/Gluconeogenesis" +}, +{ +"id":"CDPGLC46DH", +"name":"CDP glucose 4 6 dehydratase", +"metabolites":{ +"cdp4dh6doglc_c":1, +"cdpglc_c":-1, +"h2o_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0061", +"subsystem":"Nucleotide sugar metabolism" +}, +{ +"id":"SPP", +"name":"Sucrose-phosphate phosphatase", +"metabolites":{ +"h2o_c":-1, +"pi_c":1, +"suc6p_c":-1, +"sucr_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0808", +"subsystem":"Glycogen and sucrose metabolism" +}, +{ +"id":"NDH-1(2)um", +"name":"NAD(P)H dehydrogenase (plastoquinone-8 & 4 protons)( Thylakoid)", +"metabolites":{ +"fdxox_c":2, +"fdxrd_c":-2, +"h_c":-5.0, +"h_u":3.0, +"pq_um":-1.0, +"pqh2_um":1.0 +}, +"lower_bound":0.0, +"upper_bound":0.0, +"gene_reaction_rule":"Synpcc7942_1343 and Synpcc7942_1415 and Synpcc7942_1180 and Synpcc7942_1346 and Synpcc7942_1345 and Synpcc7942_1743 and Synpcc7942_1344 and Synpcc7942_1182 and Synpcc7942_1181 and Synpcc7942_0413 and Synpcc7942_2234 and Synpcc7942_1982 and Synpcc7942_2487 and Synpcc7942_2257 and Synpcc7942_1908 and Synpcc7942_1106 and Synpcc7942_1977 and Synpcc7942_0668 and Synpcc7942_0491 and Synpcc7942_1976", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"NDH-1(3)um", +"name":"NAD(P)H dehydrogenase, carbon dioxide coupled (plastoquinone-8 & 4 protons)( Thylakoid)", +"metabolites":{ +"co2_c":-1.0, +"fdxox_c":2, +"fdxrd_c":-2, +"h2o_c":-1.0, +"h_c":-4.0, +"h_u":3.0, +"hco3_c":1.0, +"pq_um":-1.0, +"pqh2_um":1.0 +}, +"lower_bound":0.0, +"upper_bound":0.0, +"gene_reaction_rule":"Synpcc7942_1343 and Synpcc7942_1415 and Synpcc7942_1180 and Synpcc7942_1346 and Synpcc7942_1345 and Synpcc7942_1743 and Synpcc7942_1344 and Synpcc7942_1182 and Synpcc7942_1181 and Synpcc7942_0413 and Synpcc7942_2234 and Synpcc7942_1982 and Synpcc7942_2487 and Synpcc7942_2257 and Synpcc7942_1908 and Synpcc7942_1106 and Synpcc7942_0609 and Synpcc7942_0309 and Synpcc7942_0308", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"KAS15", +"name":"Beta-ketoacyl-ACP synthase (2)", +"metabolites":{ +"accoa_c":-1, +"actACP_c":1.0, +"co2_c":1.0, +"coa_c":1, +"h_c":-1.0, +"malACP_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1455", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"AACPS6", +"name":"Acyl-[acyl-carrier-protein] synthetase (n-C18:0)", +"metabolites":{ +"ACP_c":-1, +"amp_c":1, +"atp_c":-1, +"ocdcaACP_c":1, +"ocdca_c":-1, +"ppi_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0918", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"ALDR18", +"name":"Aldehyde reductase octadecanal NADP", +"metabolites":{ +"ACP_c":1, +"h_c":-1, +"nadp_c":1, +"nadph_c":-1, +"ocdcaACP_c":-1, +"ocdcal_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1594", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"ALDDC17", +"name":"Aldehyde decarbonylase- C17 forming", +"metabolites":{ +"for_c":1, +"h2o_c":1, +"h_c":-1, +"hpdcn_c":1, +"nadp_c":2, +"nadph_c":-2, +"o2_c":-1, +"ocdcal_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1593", +"subsystem":"Fatty acid biosynthesis" +}, +{ +"id":"G3PAT160", +"name":"glycerol-3-phosphate: acyl-ACP acyltransferase (16:0)", +"metabolites":{ +"1hdecg3p_c":1.0, +"ACP_c":1.0, +"glyc3p_c":-1.0, +"palmACP_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2057 and Synpcc7942_1454", +"subsystem":"Phosphoglycerolipid metabolism" +}, +{ +"id":"G3PAT161", +"name":"glycerol-3-phosphate: acyl-ACP acyltransferase (16:1(9Z))", +"metabolites":{ +"1hdec9eg3p_c":1.0, +"ACP_c":1.0, +"glyc3p_c":-1.0, +"hdeACP_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2057 and Synpcc7942_1454", +"subsystem":"Phosphoglycerolipid metabolism" +}, +{ +"id":"G3PAT1819Z", +"name":"glycerol-3-phosphate: acyl-ACP acyltransferase (18:1(9Z))", +"metabolites":{ +"1odec9eg3p_c":1.0, +"ACP_c":1.0, +"glyc3p_c":-1.0, +"octe9ACP_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2057 and Synpcc7942_1454", +"subsystem":"Phosphoglycerolipid metabolism" +}, +{ +"id":"AGPAT160", +"name":"1-Hexadecanoyl-sn-glycerol-3-phosphate O-acyltransferase (16:0) (ACP Substrate)", +"metabolites":{ +"1hdecg3p_c":-1.0, +"ACP_c":1.0, +"pa160_c":1.0, +"palmACP_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1457", +"subsystem":"Phosphoglycerolipid metabolism" +}, +{ +"id":"AGPATACP_HDE_PALM", +"name":"1-9-Hexadecenoyl-sn-glycerol-3-phosphate O-acyltransferase (16:0) (ACP Substrate)", +"metabolites":{ +"1hdec9eg3p_c":-1.0, +"ACP_c":1.0, +"pa1619Z160_c":1.0, +"palmACP_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1457", +"subsystem":"Phosphoglycerolipid metabolism" +}, +{ +"id":"AGPAT161", +"name":"1-9-Hexadecenoyl-sn-glycerol-3-phosphate O-acyltransferase (16:1(9Z)) (ACP Substrate)", +"metabolites":{ +"1hdec9eg3p_c":-1.0, +"ACP_c":1.0, +"hdeACP_c":-1.0, +"pa161_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1457", +"subsystem":"Phosphoglycerolipid metabolism" +}, +{ +"id":"AGPATACP_OLE_HDE", +"name":"1-9-Octadecenoyl-sn-glycerol-3-phosphate O-acyltransferase (16:1(9Z)) (ACP Substrate)", +"metabolites":{ +"1odec9eg3p_c":-1.0, +"ACP_c":1.0, +"hdeACP_c":-1.0, +"pa1819Z1619Z_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1457", +"subsystem":"Phosphoglycerolipid metabolism" +}, +{ +"id":"AGPATACP_OLE_PALM", +"name":"1-9-Octadecenoyl-sn-glycerol-3-phosphate O-acyltransferase (16:0) (ACP Substrate)", +"metabolites":{ +"1odec9eg3p_c":-1.0, +"ACP_c":1.0, +"pa1819Z160_c":1.0, +"palmACP_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1457", +"subsystem":"Phosphoglycerolipid metabolism" +}, +{ +"id":"PAPA160", +"name":"Phosphatidate phosphatase (16:0/16:0)", +"metabolites":{ +"12dgr160_c":1.0, +"h2o_c":-1.0, +"pa160_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0775", +"subsystem":"Phosphoglycerolipid metabolism" +}, +{ +"id":"PAPA_HDE_PALM", +"name":"Phosphatidate phosphatase(16:1(9Z)/16:0)", +"metabolites":{ +"12dgr1619Z160_c":1.0, +"h2o_c":-1.0, +"pa1619Z160_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0775", +"subsystem":"Phosphoglycerolipid metabolism" +}, +{ +"id":"PAPA161", +"name":"Phosphatidate phosphatase(16:1(9Z)/16:1(9Z))", +"metabolites":{ +"12dgr161_c":1.0, +"h2o_c":-1.0, +"pa161_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0775", +"subsystem":"Phosphoglycerolipid metabolism" +}, +{ +"id":"PAPA_OLE_HDE", +"name":"Phosphatidate phosphatase(18:1(9Z)/16:1(9Z))", +"metabolites":{ +"12dgr1819Z1619Z_c":1.0, +"h2o_c":-1.0, +"pa1819Z1619Z_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0775", +"subsystem":"Phosphoglycerolipid metabolism" +}, +{ +"id":"PAPA_OLE_PALM", +"name":"Phosphatidate phosphatase(18:1(9Z)/16:0)", +"metabolites":{ +"12dgr1819Z160_c":1.0, +"h2o_c":-1.0, +"pa1819Z160_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0775", +"subsystem":"Phosphoglycerolipid metabolism" +}, +{ +"id":"SQDGS_PALM_PALM", +"name":"Sulfoquinovosyldiacylglycerol synthase(16:0/16:0)", +"metabolites":{ +"12dgr160_c":-1.0, +"h_c":1.0, +"sqdg160_c":1.0, +"udp_c":1.0, +"udpsq_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0579", +"subsystem":"Sulfolipid biosynthesis" +}, +{ +"id":"SQDGS_HDE_PALM", +"name":"Sulfoquinovosyldiacylglycerol synthase(16:1(9Z)/16:0)", +"metabolites":{ +"12dgr1619Z160_c":-1.0, +"h_c":1.0, +"sqdg1619Z160_c":1.0, +"udp_c":1.0, +"udpsq_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0579", +"subsystem":"Sulfolipid biosynthesis" +}, +{ +"id":"DGDGS_HDE_PALM", +"name":"UDP-galactose-dependent DGDG synthase(16:1(9Z)/16:0)", +"metabolites":{ +"dgdg1619Z160_c":1.0, +"h_c":1.0, +"mgdg1619Z160_c":-1.0, +"udp_c":1.0, +"udpgal_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0986", +"subsystem":"Galactoglycerolipid metabolism" +}, +{ +"id":"DGDGS_HDE_HDE", +"name":"UDP-galactose-dependent DGDG synthase(16:1(9Z)/16:1(9Z))", +"metabolites":{ +"dgdg161_c":1.0, +"h_c":1.0, +"mgdg161_c":-1.0, +"udp_c":1.0, +"udpgal_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0986", +"subsystem":"Galactoglycerolipid metabolism" +}, +{ +"id":"DGDGS_OLE_HDE", +"name":"UDP-galactose-dependent DGDG synthase(18:1(9Z)/16:1(9Z))", +"metabolites":{ +"dgdg1819Z1619Z_c":1.0, +"h_c":1.0, +"mgdg1819Z1619Z_c":-1.0, +"udp_c":1.0, +"udpgal_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0986", +"subsystem":"Galactoglycerolipid metabolism" +}, +{ +"id":"CDPDAGS_OLE_PALM", +"name":"CDP-diacylglycerol synthase (18:1(9Z)/16:0)", +"metabolites":{ +"cdp12dgr1819Z160_c":1.0, +"ctp_c":-1.0, +"h_c":-1.0, +"pa1819Z160_c":-1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0394", +"subsystem":"Phosphoglycerolipid metabolism" +}, +{ +"id":"PGPS_OLE_PALM", +"name":"Phosphatidylglycerol phosphate synthetase (18:1(9Z)/16:0)", +"metabolites":{ +"cdp12dgr1819Z160_c":-1.0, +"cmp_c":1.0, +"glyc3p_c":-1.0, +"h_c":1.0, +"pgp1819Z160_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1825", +"subsystem":"Phosphoglycerolipid metabolism" +}, +{ +"id":"PGPP_OLE_PALM", +"name":"Phosphatidylglycerol phosphate phosphatase (18:1(9Z)/16:0)", +"metabolites":{ +"h2o_c":-1.0, +"pg1819Z160_c":1.0, +"pgp1819Z160_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Phosphoglycerolipid metabolism" +}, +{ +"id":"DAGK160", +"name":"Diacylglycerol kinase(16:0/16:0)", +"metabolites":{ +"12dgr160_c":-1.0, +"adp_c":1.0, +"atp_c":-1.0, +"h_c":1.0, +"pa160_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0401", +"subsystem":"Phosphoglycerolipid metabolism" +}, +{ +"id":"DAGK_HDE_PALM", +"name":"Diacylglycerol kinase(16:1(9Z)/16:0)", +"metabolites":{ +"12dgr1619Z160_c":-1.0, +"adp_c":1.0, +"atp_c":-1.0, +"h_c":1.0, +"pa1619Z160_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0401", +"subsystem":"Phosphoglycerolipid metabolism" +}, +{ +"id":"DAGK161", +"name":"Diacylglycerol kinase(16:1(9Z)/16:1(9Z))", +"metabolites":{ +"12dgr161_c":-1.0, +"adp_c":1.0, +"atp_c":-1.0, +"h_c":1.0, +"pa161_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0401", +"subsystem":"Phosphoglycerolipid metabolism" +}, +{ +"id":"DAGK_OLE_HDE", +"name":"Diacylglycerol kinase(18:1(9Z)/16:1(9Z))", +"metabolites":{ +"12dgr1819Z1619Z_c":-1.0, +"adp_c":1.0, +"atp_c":-1.0, +"h_c":1.0, +"pa1819Z1619Z_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0401", +"subsystem":"Phosphoglycerolipid metabolism" +}, +{ +"id":"DAGK_OLE_PALM", +"name":"Diacylglycerol kinase(18:1(9Z)/16:0)", +"metabolites":{ +"12dgr1819Z160_c":-1.0, +"adp_c":1.0, +"atp_c":-1.0, +"h_c":1.0, +"pa1819Z160_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0401", +"subsystem":"Phosphoglycerolipid metabolism" +}, +{ +"id":"GLUDGS_HDE_PALM", +"name":"Monoglucosyldiacylglycerol synthase(16:1(9Z)/16:0)", +"metabolites":{ +"12dgr1619Z160_c":-1.0, +"glcdg1619Z160_c":1, +"h_c":1, +"udp_c":1, +"udpg_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1083", +"subsystem":"Galactoglycerolipid metabolism" +}, +{ +"id":"GLUDGE_HDE_PALM", +"name":"Monoglucosyldiacylglycerol epimerase(16:1(9Z)/16:0)", +"metabolites":{ +"glcdg1619Z160_c":-1, +"mgdg1619Z160_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0861", +"subsystem":"Galactoglycerolipid metabolism" +}, +{ +"id":"GLUDGS_HDE_HDE", +"name":"Monoglucosyldiacylglycerol synthase(16:1(9Z)/16:1(9Z))", +"metabolites":{ +"12dgr161_c":-1.0, +"glcdg161_c":1, +"h_c":1, +"udp_c":1, +"udpg_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1083", +"subsystem":"Galactoglycerolipid metabolism" +}, +{ +"id":"GLUDGE_HDE_HDE", +"name":"Monoglucosyldiacylglycerol epimerase(16:1(9Z)/16:1(9Z))", +"metabolites":{ +"glcdg161_c":-1, +"mgdg161_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0861", +"subsystem":"Galactoglycerolipid metabolism" +}, +{ +"id":"GLUDGS_OLE_HDE", +"name":"Monoglucosyldiacylglycerol synthase(18:1(9Z)/16:1(9Z))", +"metabolites":{ +"12dgr1819Z1619Z_c":-1.0, +"glcdg1819Z1619Z_c":1, +"h_c":1, +"udp_c":1, +"udpg_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1083", +"subsystem":"Galactoglycerolipid metabolism" +}, +{ +"id":"GLUDGE_OLE_HDE", +"name":"Monoglucosyldiacylglycerol epimerase(18:1(9Z)/16:1(9Z))", +"metabolites":{ +"glcdg1819Z1619Z_c":-1, +"mgdg1819Z1619Z_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0861", +"subsystem":"Galactoglycerolipid metabolism" +}, +{ +"id":"GLUDGS_OLE_PALM", +"name":"Monoglucosyldiacylglycerol synthase(18:1(9Z)/16:0)", +"metabolites":{ +"12dgr1819Z160_c":-1.0, +"glcdg1819Z160_c":1, +"h_c":1, +"udp_c":1, +"udpg_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1083", +"subsystem":"Galactoglycerolipid metabolism" +}, +{ +"id":"GLUDGE_OLE_PALM", +"name":"Monoglucosyldiacylglycerol epimerase(18:1(9Z)/16:0)", +"metabolites":{ +"glcdg1819Z160_c":-1, +"mgdg1819Z160_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0861", +"subsystem":"Galactoglycerolipid metabolism" +}, +{ +"id":"DGDGS_OLE_PALM", +"name":"UDP-galactose-dependent DGDG synthase(18:1(9Z)/16:0)", +"metabolites":{ +"dgdg1819Z160Z_c":1, +"h_c":1, +"mgdg1819Z160_c":-1, +"udp_c":1, +"udpgal_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0986", +"subsystem":"Galactoglycerolipid metabolism" +}, +{ +"id":"H2Otcx", +"name":"H2O transport into CAX (diffusion)", +"metabolites":{ +"h2o_c":-1, +"h2o_cx":1 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: carboxyzome" +}, +{ +"id":"GLNTRS", +"name":"Glutamine-tRNA ligase", +"metabolites":{ +"amp_c":1.0, +"atp_c":-1.0, +"gln__L_c":-1.0, +"glntrna_c":1.0, +"ppi_c":1.0, +"trnagln_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0118 and Synpcc7942_2117 and Synpcc7942_2322 and Synpcc7942_2393", +"subsystem":"tRNA Charging" +}, +{ +"id":"TYRTRS", +"name":"Tyrosine-tRNA ligase", +"metabolites":{ +"amp_c":1.0, +"atp_c":-1.0, +"ppi_c":1.0, +"trnatyr_c":-1.0, +"tyr__L_c":-1.0, +"tyrtrna_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2570", +"subsystem":"tRNA Charging" +}, +{ +"id":"METTRS", +"name":"Methionine-tRNA ligase", +"metabolites":{ +"amp_c":1.0, +"atp_c":-1.0, +"met__L_c":-1.0, +"mettrna_c":1.0, +"ppi_c":1.0, +"trnamet_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1142", +"subsystem":"tRNA Charging" +}, +{ +"id":"SERTRS", +"name":"Serine-tRNA ligase", +"metabolites":{ +"amp_c":1.0, +"atp_c":-1.0, +"ppi_c":1.0, +"ser__L_c":-1.0, +"sertrna_c":1.0, +"trnaser_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0449", +"subsystem":"tRNA Charging" +}, +{ +"id":"GLYTRS", +"name":"Glycine-tRNA ligase", +"metabolites":{ +"amp_c":1.0, +"atp_c":-1.0, +"gly_c":-1.0, +"glytrna_c":1.0, +"ppi_c":1.0, +"trnagly_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0018 and Synpcc7942_2457", +"subsystem":"tRNA Charging" +}, +{ +"id":"PROTRS", +"name":"Proline-tRNA ligase", +"metabolites":{ +"amp_c":1.0, +"atp_c":-1.0, +"ppi_c":1.0, +"pro__L_c":-1.0, +"protrna_c":1.0, +"trnapro_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1959", +"subsystem":"tRNA Charging" +}, +{ +"id":"CYSTRS", +"name":"Cysteine-tRNA ligase", +"metabolites":{ +"amp_c":1.0, +"atp_c":-1.0, +"cys__L_c":-1.0, +"cystrna_c":1.0, +"ppi_c":1.0, +"trnacys_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1662", +"subsystem":"tRNA Charging" +}, +{ +"id":"ARGTRS", +"name":"Arginine-tRNA ligase", +"metabolites":{ +"amp_c":1.0, +"arg__L_c":-1.0, +"argtrna_c":1.0, +"atp_c":-1.0, +"ppi_c":1.0, +"trnaarg_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1577", +"subsystem":"tRNA Charging" +}, +{ +"id":"TRPTRS", +"name":"Tryptophane-tRNA ligase", +"metabolites":{ +"amp_c":1.0, +"atp_c":-1.0, +"ppi_c":1.0, +"trnatrp_c":-1.0, +"trp__L_c":-1.0, +"trptrna_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1308", +"subsystem":"tRNA Charging" +}, +{ +"id":"PHETRS", +"name":"Phenylalanine-tRNA ligase", +"metabolites":{ +"amp_c":1.0, +"atp_c":-1.0, +"phe__L_c":-1.0, +"phetrna_c":1.0, +"ppi_c":1.0, +"trnaphe_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1293 and Synpcc7942_2064", +"subsystem":"tRNA Charging" +}, +{ +"id":"HISTRS", +"name":"Histidine-tRNA ligase", +"metabolites":{ +"amp_c":1.0, +"atp_c":-1.0, +"his__L_c":-1.0, +"histrna_c":1.0, +"ppi_c":1.0, +"trnahis_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2263", +"subsystem":"tRNA Charging" +}, +{ +"id":"ASNTRS", +"name":"Asparagine-tRNA ligase", +"metabolites":{ +"amp_c":1.0, +"asn__L_c":-1.0, +"asntrna_c":1.0, +"atp_c":-1.0, +"ppi_c":1.0, +"trnaasn_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0830", +"subsystem":"tRNA Charging" +}, +{ +"id":"ASPTRS", +"name":"Aspartate-tRNA ligase", +"metabolites":{ +"amp_c":1.0, +"asp__L_c":-1.0, +"asptrna_c":1.0, +"atp_c":-1.0, +"ppi_c":1.0, +"trnaasp_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1313", +"subsystem":"tRNA Charging" +}, +{ +"id":"THRTRS", +"name":"Threonine-tRNA ligase", +"metabolites":{ +"amp_c":1.0, +"atp_c":-1.0, +"ppi_c":1.0, +"thr__L_c":-1.0, +"thrtrna_c":1.0, +"trnathr_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2606", +"subsystem":"tRNA Charging" +}, +{ +"id":"LEUTRS", +"name":"Leucine-tRNA ligase", +"metabolites":{ +"amp_c":1.0, +"atp_c":-1.0, +"leu__L_c":-1.0, +"leutrna_c":1.0, +"ppi_c":1.0, +"trnaleu_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1920", +"subsystem":"tRNA Charging" +}, +{ +"id":"ILETRS", +"name":"Isoleucine-tRNA ligase", +"metabolites":{ +"amp_c":1.0, +"atp_c":-1.0, +"ile__L_c":-1.0, +"iletrna_c":1.0, +"ppi_c":1.0, +"trnaile_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2437", +"subsystem":"tRNA Charging" +}, +{ +"id":"LYSTRS", +"name":"Lysine-tRNA ligase", +"metabolites":{ +"amp_c":1.0, +"atp_c":-1.0, +"lys__L_c":-1.0, +"lystrna_c":1.0, +"ppi_c":1.0, +"trnalys_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2415", +"subsystem":"tRNA Charging" +}, +{ +"id":"ALATRS", +"name":"Alanine-tRNA ligase", +"metabolites":{ +"ala__L_c":-1.0, +"alatrna_c":1.0, +"amp_c":1.0, +"atp_c":-1.0, +"ppi_c":1.0, +"trnaala_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0876", +"subsystem":"tRNA Charging" +}, +{ +"id":"VALTRS", +"name":"Valine-tRNA ligase", +"metabolites":{ +"amp_c":1.0, +"atp_c":-1.0, +"ppi_c":1.0, +"trnaval_c":-1.0, +"val__L_c":-1.0, +"valtrna_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0587", +"subsystem":"tRNA Charging" +}, +{ +"id":"FMETTRS", +"name":"Methionyl-tRNA formyltransferase", +"metabolites":{ +"10fthf_c":-1.0, +"fmettrna_c":1.0, +"h_c":1.0, +"mettrna_c":-1.0, +"thf_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2110", +"subsystem":"tRNA Charging" +}, +{ +"id":"EX_photon410_e", +"name":"Modeling: exchange reaction, photon absorption (400nm-420nm)", +"metabolites":{ +"photon410_e":-1 +}, +"lower_bound":-1000, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_photon430_e", +"name":"Modeling: exchange reaction, photon absorption (420nm-440nm) ", +"metabolites":{ +"photon430_e":-1 +}, +"lower_bound":-1000, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_photon450_e", +"name":"Modeling: exchange reaction, photon absorption (440nm-460nm) ", +"metabolites":{ +"photon450_e":-1 +}, +"lower_bound":-1000, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_photon470_e", +"name":"Modeling: exchange reaction, photon absorption (460nm-480nm) ", +"metabolites":{ +"photon470_e":-1 +}, +"lower_bound":-1000, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_photon490_e", +"name":"Modeling: exchange reaction, photon absorption (480-500nm) ", +"metabolites":{ +"photon490_e":-1 +}, +"lower_bound":-1000, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_photon510_e", +"name":"Modeling: exchange reaction, photon absorption (500nm-520nm)", +"metabolites":{ +"photon510_e":-1 +}, +"lower_bound":-1000, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_photon530_e", +"name":"Modeling: exchange reaction, photon absorption (520nm-540nm) ", +"metabolites":{ +"photon530_e":-1 +}, +"lower_bound":-1000, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_photon550_e", +"name":"Modeling: exchange reaction, photon absorption (540nm-560nm) ", +"metabolites":{ +"photon550_e":-1 +}, +"lower_bound":-1000, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_photon570_e", +"name":"Modeling: exchange reaction, photon absorption (560nm-580nm) ", +"metabolites":{ +"photon570_e":-1 +}, +"lower_bound":-1000, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_photon590_e", +"name":"Modeling: exchange reaction, photon absorption (580-600nm) ", +"metabolites":{ +"photon590_e":-1 +}, +"lower_bound":-1000, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_photon610_e", +"name":"Modeling: exchange reaction, photon absorption (600nm-620nm)", +"metabolites":{ +"photon610_e":-1 +}, +"lower_bound":-1000, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_photon630_e", +"name":"Modeling: exchange reaction, photon absorption (620nm-640nm) ", +"metabolites":{ +"photon630_e":-1 +}, +"lower_bound":-1000, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_photon650_e", +"name":"Modeling: exchange reaction, photon absorption (640nm-660nm) ", +"metabolites":{ +"photon650_e":-1 +}, +"lower_bound":-1000, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_photon670_e", +"name":"Modeling: exchange reaction, photon absorption (660nm-680nm) ", +"metabolites":{ +"photon670_e":-1 +}, +"lower_bound":-1000, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"EX_photon690_e", +"name":"Modeling: exchange reaction, photon absorption (680-700nm) ", +"metabolites":{ +"photon690_e":-1 +}, +"lower_bound":-1000, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"ZXANHX", +"name":"Zeaxanthin hydroxylase (caloxanthin forming)", +"metabolites":{ +"calxan_c":1, +"h2o_c":1, +"h_c":-1, +"nadp_c":1, +"nadph_c":-1, +"o2_c":-1, +"zeax_c":-1 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0680", +"subsystem":"Carotenoid biosynthesis" +}, +{ +"id":"CXANHX", +"name":"Caloxanthin hydroxylase (nostoxanthin forming)", +"metabolites":{ +"calxan_c":-1, +"h2o_c":1, +"h_c":-1, +"nadp_c":1, +"nadph_c":-1, +"nstxan_c":1, +"o2_c":-1 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0680", +"subsystem":"Carotenoid biosynthesis" +}, +{ +"id":"PHOA410um", +"name":"Photon absorption (400nm-420nm)", +"metabolites":{ +"bcaro*_c":0.092, +"caro_c":-0.092, +"chla_soret*_c":0.9, +"cholphya_c":-0.9, +"photon410_e":-1, +"zeax*_c":0.008, +"zeax_c":-0.008 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"PHOA430um", +"name":"Photon absorption (420nm-440nm) ", +"metabolites":{ +"bcaro*_c":0.13799999999999998, +"caro_c":-0.13799999999999998, +"chla_soret*_c":0.85, +"cholphya_c":-0.85, +"photon430_e":-1, +"zeax*_c":0.012, +"zeax_c":-0.012 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"PHOA450um", +"name":"Photon absorption (440nm-460nm) ", +"metabolites":{ +"bcaro*_c":0.27599999999999997, +"caro_c":-0.27599999999999997, +"chla_soret*_c":0.7, +"cholphya_c":-0.7, +"photon450_e":-1, +"zeax*_c":0.024, +"zeax_c":-0.024 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"PHOA470um", +"name":"Photon absorption (460nm-480nm) ", +"metabolites":{ +"bcaro*_c":0.92, +"caro_c":-0.92, +"photon470_e":-1, +"zeax*_c":0.08, +"zeax_c":-0.08 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"PHOA490um", +"name":"Photon absorption (480-500nm) ", +"metabolites":{ +"bcaro*_c":0.92, +"caro_c":-0.92, +"photon490_e":-1, +"zeax*_c":0.08, +"zeax_c":-0.08 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"PHOA510um", +"name":"Photon absorption (500nm-520nm)", +"metabolites":{ +"bcaro*_c":0.92, +"caro_c":-0.92, +"photon510_e":-1, +"zeax*_c":0.08, +"zeax_c":-0.08 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"PHOA530um", +"name":"Photon absorption (520nm-540nm) ", +"metabolites":{ +"photon530_e":-1, +"phycy*_c":1, +"phycy_c":-1 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"PHOA550um", +"name":"Photon absorption (540nm-560nm) ", +"metabolites":{ +"photon550_e":-1, +"phycy*_c":1, +"phycy_c":-1 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"PHOA570um", +"name":"Photon absorption (560nm-580nm) ", +"metabolites":{ +"photon570_e":-1, +"phycy*_c":1, +"phycy_c":-1 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"PHOA590um", +"name":"Photon absorption (580-600nm) ", +"metabolites":{ +"photon590_e":-1, +"phycy*_c":1, +"phycy_c":-1 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"PHOA610um", +"name":"Photon absorption (600nm-620nm)", +"metabolites":{ +"photon610_e":-1, +"phycy*_c":1, +"phycy_c":-1 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"PHOA630um", +"name":"Photon absorption (620nm-640nm) ", +"metabolites":{ +"photon630_e":-1, +"phycy*_c":1, +"phycy_c":-1 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"PHOA650um", +"name":"Photon absorption (640nm-660nm) ", +"metabolites":{ +"photon650_e":-1, +"phycy*_c":1, +"phycy_c":-1 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"PHOA670um", +"name":"Photon absorption (660nm-680nm) ", +"metabolites":{ +"photon670_e":-1, +"phycy*_c":1.0, +"phycy_c":-1.0 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"PHOA690um", +"name":"Photon absorption (680-700nm) ", +"metabolites":{ +"chla_qy1*_c":0.9, +"chla_qy2*_c":0.1, +"cholphya_c":-1, +"photon690_e":-1 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"DM_pho_loss_c", +"name":"Photon energy loss (heat/fluorescence)", +"metabolites":{ +"pho_loss_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Intracellular demand" +}, +{ +"id":"ETCHLAS", +"name":"Energy transfer (ChlA Soret to ChlA Qy)", +"metabolites":{ +"chla_qy1*_c":0.315, +"chla_qy2*_c":0.035, +"chla_soret*_c":-1, +"cholphya_c":0.65, +"pho_loss_c":0.65 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"ETBCARO", +"name":"Energy transfer (Beta carotene to ChlA Qy)", +"metabolites":{ +"bcaro*_c":-1, +"caro_c":1.0, +"chla_qy1*_c":0.75, +"cholphya_c":-0.75, +"pho_loss_c":0.25 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"ETCPC", +"name":"Energy transfer (Phycocyanin to allophycocyanin)", +"metabolites":{ +"allocy*_c":1, +"allocy_c":-1, +"phycy*_c":-1, +"phycy_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0325 and Synpcc7942_0326 and Synpcc7942_0327 and Synpcc7942_0328 and Synpcc7942_1047 and Synpcc7942_1048 and Synpcc7942_1052 and Synpcc7942_1053 and Synpcc7942_1055 and Synpcc7942_1049 and Synpcc7942_1050 and Synpcc7942_2030 and Synpcc7942_1051", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"STACPSI", +"name":"State transition energy transfer (Allophycocyanin to PSI ChlA Qy)", +"metabolites":{ +"allocy*_c":-1, +"allocy_c":1, +"chla_qy1*_c":0.9, +"cholphya_c":-0.9, +"pho_loss_c":0.1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0240", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"A5PISO", +"name":"Arabinose-5-phosphate isomerase", +"metabolites":{ +"ara5p_c":1.0, +"ru5p__D_c":-1 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2291", +"subsystem":"Lipopolysaccharide/O-antigen Biosynthesis", +"notes":{ +"original_bigg_ids":[ +"A5PISO" +] +} +}, +{ +"id":"KDOPS", +"name":"3-deoxy -D-manno-octulosonic -acid 8-phosphate synthase", +"metabolites":{ +"ara5p_c":-1.0, +"h2o_c":-1.0, +"kdo8p_c":1.0, +"pep_c":-1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2289", +"subsystem":"Lipopolysaccharide/O-antigen Biosynthesis", +"notes":{ +"original_bigg_ids":[ +"KDOPS" +] +} +}, +{ +"id":"KDOPP", +"name":"3-deoxy-manno-octulosonate-8-phosphatase", +"metabolites":{ +"h2o_c":-1.0, +"kdo8p_c":-1.0, +"kdo_c":1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2288", +"subsystem":"Lipopolysaccharide/O-antigen Biosynthesis", +"notes":{ +"original_bigg_ids":[ +"KDOPP" +] +} +}, +{ +"id":"KDOCT2", +"name":"3-deoxy-manno-octulosonate cytidylyltransferase", +"metabolites":{ +"ckdo_c":1.0, +"ctp_c":-1.0, +"kdo_c":-1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2290", +"subsystem":"Lipopolysaccharide/O-antigen Biosynthesis", +"notes":{ +"original_bigg_ids":[ +"KDOCT2" +] +} +}, +{ +"id":"MOAT", +"name":"3-deoxy-D-manno-octulosonic acid transferase", +"metabolites":{ +"ckdo_c":-1.0, +"cmp_c":1.0, +"kdolipid4cy_c":1, +"lipidAds2_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2286 and Synpcc7942_2287", +"subsystem":"Lipopolysaccharide/O-antigen Biosynthesis", +"notes":{ +"original_bigg_ids":[ +"MOAT" +] +} +}, +{ +"id":"UAG2E", +"name":"UDP-N-acetylglucosamine 2-epimerase", +"metabolites":{ +"uacgam_c":-1.0, +"uacmam_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0552", +"subsystem":"Lipopolysaccharide/O-antigen Biosynthesis", +"notes":{ +"original_bigg_ids":[ +"UAG2E" +] +} +}, +{ +"id":"ACGAMT", +"name":"UDP-N-acetylglucosamine:undecaprenylphosphate N-acetylglucosamine -1-phosphate transferase", +"metabolites":{ +"uacgam_c":-1.0, +"udcpp_c":-1.0, +"ump_c":1.0, +"unaga_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0281", +"subsystem":"Lipopolysaccharide/O-antigen Biosynthesis", +"notes":{ +"original_bigg_ids":[ +"ACGAMT" +] +} +}, +{ +"id":"ACMAMT", +"name":"UDP-N-acetyl-D-mannosamine transferase", +"metabolites":{ +"h_c":1, +"uacmam_c":-1, +"udp_c":1, +"unaga_c":-1, +"unagam_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1651", +"subsystem":"Lipopolysaccharide/O-antigen Biosynthesis" +}, +{ +"id":"ICLIPAS", +"name":"Inner core lipid A biosynthesis", +"metabolites":{ +"gdp_c":0.3128, +"gdpfuc_c":-0.3128, +"icolipacy_c":1, +"kdolipid4cy_c":-0.0865, +"udcpdp_c":0.0558, +"unagam_c":-0.0558 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2339 and Synpcc7942_1884 and Synpcc7942_2025 and Synpcc7942_2026 and Synpcc7942_2027 and Synpcc7942_2028", +"subsystem":"Lipopolysaccharide/O-antigen Biosynthesis" +}, +{ +"id":"ICLIPAabcpp", +"name":"Inner core lipid A transport (periplasm)", +"metabolites":{ +"adp_c":1, +"atp_c":-1, +"h2o_c":-1, +"h_c":1, +"icolipacy_c":-1, +"icolipacy_p":1, +"pi_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0082", +"subsystem":"Lipopolysaccharide/O-antigen Biosynthesis" +}, +{ +"id":"OANTS", +"name":"O-antigen synthesis (Synechococcus elongatus 7942)", +"metabolites":{ +"gdp_c":2.2481, +"gdpmann_c":-2.2481, +"h_c":2.6255, +"oanticy_c":1, +"udp_c":0.3774, +"udpg_c":-0.0999, +"udpgal_c":-0.2775 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0281 and Synpcc7942_1901 and Synpcc7942_1902 and Synpcc7942_1903 and Synpcc7942_1887", +"subsystem":"Lipopolysaccharide/O-antigen Biosynthesis" +}, +{ +"id":"OANTIabcpp", +"name":"O-antigen transport (periplasm)", +"metabolites":{ +"adp_c":1, +"atp_c":-1, +"h2o_c":-1, +"h_c":1, +"oanticy_c":-1, +"oanticy_p":1, +"pi_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1244 and Synpcc7942_1126", +"subsystem":"Lipopolysaccharide/O-antigen Biosynthesis" +}, +{ +"id":"OANTILpp", +"name":"O-antigen ligation (periplasm)", +"metabolites":{ +"colipacy_p":1, +"h2o_p":1, +"icolipacy_p":-1, +"oanticy_p":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1244 and Synpcc7942_1126", +"subsystem":"Lipopolysaccharide/O-antigen Biosynthesis" +}, +{ +"id":"COLIPAabcex", +"name":"O-antigen LPS transport (extracellular)", +"metabolites":{ +"adp_c":1, +"atp_c":-1, +"colipacy_e":1, +"colipacy_p":-1, +"h2o_c":-1, +"h_c":1, +"pi_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Lipopolysaccharide/O-antigen Biosynthesis" +}, +{ +"id":"MPTG", +"name":"Murein polymerizing transglycosylase", +"metabolites":{ +"h_c":2.0, +"murein5p5p_p":1.0, +"uaagmda_c":-2.0, +"udcpdp_c":2.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2041 and Synpcc7942_2000", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"MPTG" +] +} +}, +{ +"id":"MPTG2", +"name":"Murein polymerizing transglycosylase 2 (three linked units)", +"metabolites":{ +"h_c":1.0, +"murein5p5p5p_p":1.0, +"murein5p5p_p":-1.0, +"uaagmda_c":-1.0, +"udcpdp_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2041 and Synpcc7942_2000", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"MPTG2" +] +} +}, +{ +"id":"MCTP2App", +"name":"Murein crosslinking transpeptidase 1A:(A2pm->D-ala) (periplasm)", +"metabolites":{ +"ala__D_p":2.0, +"murein5p5p5p_p":-1.0, +"murein5px4px4p_p":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0482 or Synpcc7942_0580", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"MCTP2App" +] +} +}, +{ +"id":"MCTP1App", +"name":"Murein crosslinking transpeptidase 1A:(A2pm->D-ala) (periplasm)", +"metabolites":{ +"ala__D_p":1.0, +"murein5p5p_p":-1.0, +"murein5px4p_p":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0482 or Synpcc7942_0580", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"MCTP1App" +] +} +}, +{ +"id":"MCTP1Bpp", +"name":"Murein crosslinking transpeptidase 1B:(A2pm->A2pm) (periplasm)", +"metabolites":{ +"alaala_p":1.0, +"murein5p5p_p":-1.0, +"murein5px3p_p":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0482 or Synpcc7942_0580", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"MCTP1Bpp" +] +} +}, +{ +"id":"MDDCP1pp", +"name":"Murein D,D-carboxypeptidase (murein5px4p) (periplasm)", +"metabolites":{ +"ala__D_p":1.0, +"h2o_p":-1.0, +"murein4px4p_p":1.0, +"murein5px4p_p":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1672 or Synpcc7942_1934", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"MDDCP1pp" +] +} +}, +{ +"id":"MDDCP2pp", +"name":"Murein D,D-carboxypeptidase (murein5px4px4p) (periplasm)", +"metabolites":{ +"ala__D_p":1.0, +"h2o_p":-1.0, +"murein4px4px4p_p":1.0, +"murein5px4px4p_p":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1672 or Synpcc7942_1934", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"MDDCP2pp" +] +} +}, +{ +"id":"MDDCP3pp", +"name":"Murein D,D-carboxypeptidase (murein5p5p) (periplasm)", +"metabolites":{ +"ala__D_p":1.0, +"h2o_p":-1.0, +"murein5p4p_p":1.0, +"murein5p5p_p":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1672 or Synpcc7942_1934", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"MDDCP3pp" +] +} +}, +{ +"id":"MDDCP4pp", +"name":"Murein D,D-carboxypeptidase (murein5p4p) (periplasm)", +"metabolites":{ +"ala__D_p":1.0, +"h2o_p":-1.0, +"murein4p4p_p":1.0, +"murein5p4p_p":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1672 or Synpcc7942_1934", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"MDDCP4pp" +] +} +}, +{ +"id":"MDDCP5pp", +"name":"Murein D,D-carboxypeptidase (murein5p3p) (periplasm)", +"metabolites":{ +"ala__D_p":1.0, +"h2o_p":-1.0, +"murein4p3p_p":1.0, +"murein5p3p_p":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1672 or Synpcc7942_1934", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"MDDCP5pp" +] +} +}, +{ +"id":"MDDEP1pp", +"name":"Murein D,D-endopeptidase (murein4px4p) (periplasm)", +"metabolites":{ +"h2o_p":-1.0, +"murein4p4p_p":1.0, +"murein4px4p_p":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0138 or Synpcc7942_0344 or Synpcc7942_1934", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"MDDEP1pp" +] +} +}, +{ +"id":"MDDEP2pp", +"name":"Murein D,D-endopeptidase (murein3px4p) (periplasm)", +"metabolites":{ +"h2o_p":-1.0, +"murein3px4p_p":-1.0, +"murein4p3p_p":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0138 or Synpcc7942_0344 or Synpcc7942_1934", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"MDDEP2pp" +] +} +}, +{ +"id":"MDDEP3pp", +"name":"Murein D,D-endopeptidase (murein5px4p) (periplasm)", +"metabolites":{ +"h2o_p":-1.0, +"murein5p4p_p":1.0, +"murein5px4p_p":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0138 or Synpcc7942_0344 or Synpcc7942_1934", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"MDDEP3pp" +] +} +}, +{ +"id":"MDDEP4pp", +"name":"Murein D,D-endopeptidase (murein4px4px4p) (periplasm)", +"metabolites":{ +"h2o_p":-1.0, +"murein4px4p4p_p":1.0, +"murein4px4px4p_p":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0138 or Synpcc7942_0344 or Synpcc7942_1934", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"MDDEP4pp" +] +} +}, +{ +"id":"MLDCP1App", +"name":"Murein L,D-carboxypeptidase (murein5px4p) (periplasm)", +"metabolites":{ +"alaala_p":1.0, +"h2o_p":-1.0, +"murein3px4p_p":1.0, +"murein5px4p_p":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"MLDCP1App" +] +} +}, +{ +"id":"MLDCP1Bpp", +"name":"Murein L,D-carboxypeptidase (murein4p4p) (periplasm)", +"metabolites":{ +"ala__D_p":1.0, +"h2o_p":-1.0, +"murein4p3p_p":1.0, +"murein4p4p_p":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"MLDCP1Bpp" +] +} +}, +{ +"id":"MLDCP2App", +"name":"Murein L,D-carboxypeptidase (murein5p5p) (periplasm)", +"metabolites":{ +"alaala_p":1.0, +"h2o_p":-1.0, +"murein5p3p_p":1.0, +"murein5p5p_p":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"MLDCP2App" +] +} +}, +{ +"id":"MLDCP2Bpp", +"name":"Murein L,D-carboxypeptidase (murein4p3p) (periplasm)", +"metabolites":{ +"ala__D_p":1.0, +"h2o_p":-1.0, +"murein3p3p_p":1.0, +"murein4p3p_p":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"MLDCP2Bpp" +] +} +}, +{ +"id":"MLTGY1pp", +"name":"Murein lytic transglycosylase (murein4p4p) (periplasm)", +"metabolites":{ +"anhgm4p_p":2.0, +"murein4p4p_p":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0392", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"MLTGY1pp" +] +} +}, +{ +"id":"MLTGY2pp", +"name":"Murein lytic transglycosylase (murein4p3p) (periplasm)", +"metabolites":{ +"anhgm3p_p":1.0, +"anhgm4p_p":1.0, +"murein4p3p_p":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0392", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"MLTGY2pp" +] +} +}, +{ +"id":"MLTGY3pp", +"name":"Murein lytic transglycosylase (murein3p3p) (periplasm)", +"metabolites":{ +"anhgm3p_p":2.0, +"murein3p3p_p":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0392", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"MLTGY3pp" +] +} +}, +{ +"id":"MLTGY4pp", +"name":"Murein lytic transglycosylase (murein4px4p4p) (periplasm)", +"metabolites":{ +"anhgm4p_p":1.0, +"murein4px4p4p_p":-1.0, +"murein4px4p_p":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0392", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"MLTGY4pp" +] +} +}, +{ +"id":"AGM4PA", +"name":"N-Acetyl-D-glucosamine(anhydrous)N-Acetylmuramyl-tetrapeptide amidase", +"metabolites":{ +"LalaDgluMdapDala_c":1.0, +"anhgm4p_c":-1.0, +"anhgm_c":1.0, +"h2o_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2360", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"AGM4PA" +] +} +}, +{ +"id":"AGM4PApp", +"name":"N-Acetyl-D-glucosamine(anhydrous)N-Acetylmuramyl-tetrapeptide amidase (periplasm)", +"metabolites":{ +"LalaDgluMdapDala_p":1.0, +"anhgm4p_p":-1.0, +"anhgm_p":1.0, +"h2o_p":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2134", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"AGM4PApp" +] +} +}, +{ +"id":"AGM4PCP", +"name":"N-Acetyl-D-glucosamine(anhydrous)N-Acetylmuramyl-tetrapeptide L,D-carboxypeptidase", +"metabolites":{ +"ala__D_c":1.0, +"anhgm3p_c":1.0, +"anhgm4p_c":-1.0, +"h2o_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1963", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"AGM4PCP" +] +} +}, +{ +"id":"AGM4PH", +"name":"N-Acetyl-D-glucosamine(anhydrous)N-Acetylmuramyl-tetrapeptide beta -1,4-N-acetylglucosaminidase", +"metabolites":{ +"acgam_c":1.0, +"anhgm4p_c":-1.0, +"anhm4p_c":1.0, +"h2o_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0354", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"AGM4PH" +] +} +}, +{ +"id":"AGM3PApp", +"name":"N-Acetyl-D-glucosamine(anhydrous)N-Acetylmuramyl-tripeptide amidase (periplasm)", +"metabolites":{ +"LalaDgluMdap_p":1.0, +"anhgm3p_p":-1.0, +"anhgm_p":1.0, +"h2o_p":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2134", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"AGM3PApp" +] +} +}, +{ +"id":"AGMH", +"name":"N-Acetyl-D-glucosamine(anhydrous)N-Acetylmuramyl beta -1,4-N-acetylglucosaminidase", +"metabolites":{ +"acgam_c":1.0, +"anhgm_c":-1.0, +"anhm_c":1.0, +"h2o_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0354", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"AGMH" +] +} +}, +{ +"id":"AGM3PH", +"name":"N-Acetyl-D-glucosamine(anhydrous)N-Acetylmuramyl-tripeptide beta -1,4-N-acetylglucosaminidase", +"metabolites":{ +"acgam_c":1.0, +"anhgm3p_c":-1.0, +"anhm3p_c":1.0, +"h2o_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0354", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"AGM3PH" +] +} +}, +{ +"id":"AM4PCP", +"name":"Anhydrous-N-Acetylmuramyl-tetrapeptide L,D-carboxypeptidase", +"metabolites":{ +"ala__D_c":1.0, +"anhm3p_c":1.0, +"anhm4p_c":-1.0, +"h2o_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1963", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"AM4PCP" +] +} +}, +{ +"id":"4PCP", +"name":"Tetrapeptide L,D-carboxypeptidase", +"metabolites":{ +"LalaDgluMdapDala_c":-1.0, +"LalaDgluMdap_c":1.0, +"ala__D_c":1.0, +"h2o_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1963", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"4PCP" +] +} +}, +{ +"id":"AM3PA", +"name":"Anhydrous-N-Acetylmuramyl-tripeptide amidase", +"metabolites":{ +"LalaDgluMdap_c":1.0, +"anhm3p_c":-1.0, +"anhm_c":1.0, +"h2o_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2360", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"AM3PA" +] +} +}, +{ +"id":"AM4PA", +"name":"Anhydrous-N-Acetylmuramyl-tetrapeptide amidase", +"metabolites":{ +"LalaDgluMdapDala_c":1.0, +"anhm4p_c":-1.0, +"anhm_c":1.0, +"h2o_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2360", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"AM4PA" +] +} +}, +{ +"id":"LADGMDH", +"name":"L-alanyl-gamma-D-glutamyl-meso-diaminopimelate hydrolase", +"metabolites":{ +"26dap__M_c":1.0, +"LalaDgluMdap_c":-1.0, +"LalaDglu_c":1.0, +"h2o_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1581", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"LADGMDH" +] +} +}, +{ +"id":"UM4PL", +"name":"UDP-N-acetylmuramate:L-alanyl-gamma-D-glutamyl-meso-diaminopimelate-D-alanine ligase", +"metabolites":{ +"LalaDgluMdapDala_c":-1.0, +"adp_c":1.0, +"atp_c":-1.0, +"h_c":1.0, +"pi_c":1.0, +"uamr_c":-1.0, +"um4p_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1741", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"UM4PL" +] +} +}, +{ +"id":"ALAGLUE", +"name":"L-alanyl-gamma-glutamate epimerase", +"metabolites":{ +"LalaDglu_c":-1.0, +"LalaLglu_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2373", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"ALAGLUE" +] +} +}, +{ +"id":"UM3PL", +"name":"UDP-N-acetylmuramate:L-alanyl-gamma-D-glutamyl-meso-diaminopimelate ligase", +"metabolites":{ +"LalaDgluMdap_c":-1.0, +"adp_c":1.0, +"atp_c":-1.0, +"h_c":1.0, +"pi_c":1.0, +"uamr_c":-1.0, +"ugmd_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1741", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"UM3PL" +] +} +}, +{ +"id":"UM4PCP", +"name":"UDP-N-acetylmuramoyl-L-alanyl-D-gamma-glutamyl-meso-2,6-diaminopimelate-D-alanine L,D-carboxypeptidase", +"metabolites":{ +"ala__D_c":1.0, +"h2o_c":-1.0, +"ugmd_c":1.0, +"um4p_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1963", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"UM4PCP" +] +} +}, +{ +"id":"LALGP", +"name":"L-alanyl-gamma-L-glutamate peptidase", +"metabolites":{ +"LalaLglu_c":-1.0, +"ala__L_c":1.0, +"glu__L_c":1.0, +"h2o_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1971", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"LALGP" +] +} +}, +{ +"id":"AGM4Pt2pp", +"name":"GlcNAc-anhMurNAc tetrapeptide transport in via proton symport (periplasm)", +"metabolites":{ +"anhgm4p_c":1.0, +"anhgm4p_p":-1.0, +"h_c":1.0, +"h_p":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Inner Membrane", +"notes":{ +"original_bigg_ids":[ +"AGM4Pt2pp" +] +} +}, +{ +"id":"AGMt2pp", +"name":"GlcNAc-anhMurNAc transport in via proton symport (periplasm)", +"metabolites":{ +"anhgm_c":1.0, +"anhgm_p":-1.0, +"h_c":1.0, +"h_p":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"AGMt2pp" +] +} +}, +{ +"id":"4PEPTabcpp", +"name":"Tetrapeptide (LalaDgluMdapDala) transport via ABC system (periplasm)", +"metabolites":{ +"LalaDgluMdapDala_c":1.0, +"LalaDgluMdapDala_p":-1.0, +"adp_c":1.0, +"atp_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2236 and Synpcc7942_0822 and Synpcc7942_1169 and Synpcc7942_0445 and Synpcc7942_0821 and Synpcc7942_1305", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"4PEPTabcpp" +] +} +}, +{ +"id":"UAGPT3", +"name":"UDP-N-acetylglucosamine-N-acetylmuramyl-(pentapeptide)pyrophosphoryl-undecaprenol N-acetylglucosamine transferase", +"metabolites":{ +"h_c":1.0, +"uaagmda_c":1.0, +"uacgam_c":-1.0, +"uagmda_c":-1.0, +"udp_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2312", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"UAGPT3" +] +} +}, +{ +"id":"UDCPDP", +"name":"Undecaprenyl-diphosphatase", +"metabolites":{ +"h2o_c":-1.0, +"h_c":1.0, +"pi_c":1.0, +"udcpdp_c":-1.0, +"udcpp_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1967", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"UDCPDP" +] +} +}, +{ +"id":"PAPPT3", +"name":"Phospho-N-acetylmuramoyl-pentapeptide-transferase (meso-2,6-diaminopimelate)", +"metabolites":{ +"uagmda_c":1.0, +"udcpp_c":-1.0, +"ugmda_c":-1.0, +"ump_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0152", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"PAPPT3" +] +} +}, +{ +"id":"ALAALAD", +"name":"D-alanine-D-alanine dipeptidase", +"metabolites":{ +"ala__D_c":2.0, +"alaala_c":-1.0, +"h2o_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0432", +"subsystem":"Murein Biosynthesis/Recycling", +"notes":{ +"original_bigg_ids":[ +"ALAALAD" +] +} +}, +{ +"id":"DALAabcpp", +"name":"D-alanine transport via ABC peptide transporter", +"metabolites":{ +"adp_c":1, +"ala__D_c":1, +"ala__D_p":-1, +"atp_c":-1, +"h2o_c":-1, +"h_c":1, +"pi_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2236 and Synpcc7942_0822 and Synpcc7942_1169 and Synpcc7942_0445 and Synpcc7942_0821 and Synpcc7942_1305", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"ALAALAabcpp", +"name":"D-alanyl-D-alanine transport back into the cytoplasm", +"metabolites":{ +"adp_c":1, +"alaala_c":1, +"alaala_p":-1, +"atp_c":-1, +"h2o_c":-1, +"h_c":1, +"pi_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2236 and Synpcc7942_0822 and Synpcc7942_1169 and Synpcc7942_0445 and Synpcc7942_0821 and Synpcc7942_1305", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"3PEPTabcpp", +"name":"D-alanine transport back into the cytoplasm", +"metabolites":{ +"adp_c":1, +"ala__D_c":1, +"ala__D_p":-1, +"atp_c":-1, +"h2o_c":-1, +"h_c":1, +"pi_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2236 and Synpcc7942_0822 and Synpcc7942_1169 and Synpcc7942_0445 and Synpcc7942_0821 and Synpcc7942_1305", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"PCHLDA430", +"name":"Protochlorophyllide excitation (430nm photon)", +"metabolites":{ +"pchlld*_c":1, +"pchlld_c":-1, +"photon430_e":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2503", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"PCHLDA650", +"name":"Protochlorophyllide excitation (650nm photon)", +"metabolites":{ +"pchlld*_c":1, +"pchlld_c":-1, +"photon650_e":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2503", +"subsystem":"Porphyrin and chlorophyll metabolism" +}, +{ +"id":"EX_meoh_e", +"name":"Modeling: exchange reaction (meoh_e)", +"metabolites":{ +"meoh_e":-1 +}, +"lower_bound":0, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"PFOR", +"name":"Pyruvate flavodoxin oxidoreductase", +"metabolites":{ +"accoa_c":1, +"co2_c":1, +"coa_c":-1, +"fldox_c":-1, +"fldrd_c":1, +"h_c":-1, +"pyr_c":-1 +}, +"lower_bound":0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2384", +"subsystem":"Pyruvate metabolism/TCA Reactions" +}, +{ +"id":"NO2tabcpp", +"name":"Nitrite ABC ATPase (uptake, periplasm)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"h2o_c":-1.0, +"h_c":1.0, +"no2_c":1, +"no2_p":-1, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2105 and Synpcc7942_2106 and Synpcc7942_2107", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"NO2tex", +"name":"Nitrite transport via diffusion (ext to pps)", +"metabolites":{ +"no2_e":-1, +"no2_p":1 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"Htabcpp", +"name":"Proton (H+) P-type ATPase (uptake, periplasm)", +"metabolites":{ +"adp_c":1.0, +"atp_c":-1.0, +"h2o_c":-1.0, +"h_c":2.0, +"h_p":-1, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"ETAPCPSII", +"name":"Energy transfer (Allophycocyanin to PSII ChlA Qy)", +"metabolites":{ +"allocy*_c":-1, +"allocy_c":1, +"chla_qy2*_c":0.95, +"cholphya_c":-0.95, +"pho_loss_c":0.05 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"PSICSum", +"name":"Photosystem I charge separation", +"metabolites":{ +"chla_qy1*_c":-1.0, +"cholphya_c":1.0, +"p700*_um":1.0, +"p700_um":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0407 and Synpcc7942_0535 and Synpcc7942_0654 and Synpcc7942_0920 and Synpcc7942_1002 and Synpcc7942_1249 and Synpcc7942_1250 and Synpcc7942_1322 and Synpcc7942_1912a and Synpcc7942_2048 and Synpcc7942_2049 and Synpcc7942_2321 and Synpcc7942_2342 and Synpcc7942_2343 and Synpcc7942_2513", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"PSIICSum", +"name":"Photosystem II charge separation", +"metabolites":{ +"chla_qy2*_c":-1.0, +"cholphya_c":1.0, +"p680*_um":1.0, +"p680_um":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"(Synpcc7942_0224 and Synpcc7942_0225 and Synpcc7942_0294 and Synpcc7942_0343 and Synpcc7942_0424 and Synpcc7942_0456 and Synpcc7942_0655 and Synpcc7942_0656 and Synpcc7942_0696 and Synpcc7942_0697 and Synpcc7942_0699 and Synpcc7942_0893 and Synpcc7942_1038 and Synpcc7942_1174 and Synpcc7942_1175 and Synpcc7942_1176 and Synpcc7942_1177 and Synpcc7942_1637 and Synpcc7942_1678 and Synpcc7942_1679 and Synpcc7942_1705 and Synpcc7942_1882 and Synpcc7942_1962 and Synpcc7942_2016 and Synpcc7942_2245 and Synpcc7942_2478 and Synpcc7942_2010) or (Synpcc7942_0224 and Synpcc7942_0225 and Synpcc7942_0294 and Synpcc7942_0343 and Synpcc7942_0424 and Synpcc7942_0456 and Synpcc7942_0655 and Synpcc7942_0656 and Synpcc7942_0696 and Synpcc7942_0697 and Synpcc7942_0699 and Synpcc7942_1038 and Synpcc7942_1174 and Synpcc7942_1175 and Synpcc7942_1176 and Synpcc7942_1177 and Synpcc7942_1389 and Synpcc7942_1637 and Synpcc7942_1678 and Synpcc7942_1679 and Synpcc7942_1705 and Synpcc7942_1882 and Synpcc7942_1962 and Synpcc7942_2016 and Synpcc7942_2245 and Synpcc7942_2478 and Synpcc7942_2010)", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"STCHLPSIum", +"name":"State transition energy transfer (PSII ChlA Qy to PSI ChlA Qy)", +"metabolites":{ +"chla_qy1*_c":0.9, +"chla_qy2*_c":-1.0, +"cholphya_c":0.1, +"pho_loss_c":0.1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"DEXZEAX", +"name":"Pigment de-excitation (xanthophylls)", +"metabolites":{ +"pho_loss_c":1, +"zeax*_c":-1.0, +"zeax_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"CELLSYN", +"name":"Cellulose synthase", +"metabolites":{ +"b14glucan_c":1.0, +"glc__D_c":-1.0, +"h2o_c":1, +"h_c":1, +"udp_c":1.0, +"udpg_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1398 and Synpcc7942_0466 and Synpcc7942_2151", +"subsystem":"Glycogen and sucrose metabolism" +}, +{ +"id":"ADPGDP", +"name":"ADP-glucose diphosphatase", +"metabolites":{ +"adpglc_c":-1.0, +"amp_c":1.0, +"g1p_c":1.0, +"h2o_c":-1.0, +"h_c":2.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2271", +"subsystem":"Glycogen and sucrose metabolism" +}, +{ +"id":"ALCD1", +"name":"Alcohol dehydrogenase (methanol)", +"metabolites":{ +"fald_c":1.0, +"h_c":1.0, +"meoh_c":-1.0, +"nad_c":-1.0, +"nadh_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2285 or Synpcc7942_1653", +"subsystem":"Cofactor biosynthesis: Lipoate biosynthesis" +}, +{ +"id":"FALGTHLs", +"name":"Formaldehyde glutathione ligase (spontaneous)", +"metabolites":{ +"fald_c":-1.0, +"gthrd_c":-1.0, +"hmgth_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Cofactor biosynthesis: Lipoate biosynthesis" +}, +{ +"id":"FALDH2", +"name":"Formaldehyde dehydrogenase", +"metabolites":{ +"Sfglutth_c":1.0, +"h_c":1.0, +"hmgth_c":-1.0, +"nad_c":-1.0, +"nadh_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0459", +"subsystem":"Cofactor biosynthesis: Lipoate biosynthesis" +}, +{ +"id":"SFGTHi", +"name":"S-Formylglutathione hydralase", +"metabolites":{ +"Sfglutth_c":-1.0, +"for_c":1.0, +"gthrd_c":1.0, +"h2o_c":-1.0, +"h_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0458", +"subsystem":"Cofactor biosynthesis: Lipoate biosynthesis" +}, +{ +"id":"GGCLUT2", +"name":"Glutathione-specific gamma-glutamylcyclotransferase", +"metabolites":{ +"5oxpro_c":1, +"cgly_c":1.0, +"gthrd_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1135", +"subsystem":"Metabolism of other amino acids: Glutathione metabolism" +}, +{ +"id":"OPAH", +"name":"5-oxoprolinase (ATP-hydrolyzing)", +"metabolites":{ +"5oxpro_c":-1.0, +"adp_c":1.0, +"atp_c":-1.0, +"glu__L_c":1.0, +"h2o_c":-2.0, +"h_c":1.0, +"pi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2390", +"subsystem":"Metabolism of other amino acids: Glutathione metabolism" +}, +{ +"id":"ACGAMK", +"name":"N-acetylglucosamine kinase", +"metabolites":{ +"acgam6p_c":1, +"acgam_c":-1, +"adp_c":1, +"atp_c":-1, +"h_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2111", +"subsystem":"Nucleotide sugar metabolism" +}, +{ +"id":"AMANAPEr", +"name":"N-acetylmannosamine 6-phosphate epimerase", +"metabolites":{ +"acgam6p_c":-1, +"acmanap_c":1 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2464", +"subsystem":"Nucleotide sugar metabolism" +}, +{ +"id":"AGDC", +"name":"N-acetylglucosamine-6-phosphate deacetylase", +"metabolites":{ +"ac_c":1, +"acgam6p_c":-1, +"gam6p_c":1, +"h2o_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0440", +"subsystem":"Nucleotide sugar metabolism" +}, +{ +"id":"ANHMK", +"name":"1,6-anhydrous-N-Acetylmuramate kinase", +"metabolites":{ +"acmum6p_c":1, +"adp_c":1, +"anhm_c":-1, +"atp_c":-1, +"h2o_c":-1, +"h_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1093", +"subsystem":"Nucleotide sugar metabolism" +}, +{ +"id":"ACM6PH", +"name":"N-acetylmuramate 6-phosphate hydrolase", +"metabolites":{ +"acgam6p_c":1, +"acmum6p_c":-1, +"h2o_c":-1, +"lac__D_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2577", +"subsystem":"Nucleotide sugar metabolism" +}, +{ +"id":"SUCR", +"name":"Sucrose hydrolyzing enzyme", +"metabolites":{ +"fru_c":1, +"glc__D_c":1, +"h2o_c":-1, +"sucr_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0397", +"subsystem":"Glycogen and sucrose metabolism" +}, +{ +"id":"CLt3_1pp", +"name":"Chloride transport out via proton antiport (1:1) (periplasm)", +"metabolites":{ +"cl_c":-1.0, +"cl_p":1.0, +"h_c":-1.0, +"h_p":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1576 and Synpcc7942_1588 and Synpcc7942_1257", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"Cltex", +"name":"Chloride (Cl-1) transport via diffusion (extracellular to periplasm)", +"metabolites":{ +"cl_e":-1.0, +"cl_p":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"EX_cl_e", +"name":"Modeling: exchange reaction (cl_e)", +"metabolites":{ +"cl_e":-1.0 +}, +"lower_bound":0, +"upper_bound":1000, +"gene_reaction_rule":"", +"subsystem":"Extracellular exchange" +}, +{ +"id":"Ktu", +"name":"Potassium transport (thylakoid)", +"metabolites":{ +"k_c":-1, +"k_u":1 +}, +"lower_bound":-1000, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1233", +"subsystem":"Transport: Outer Membrane" +}, +{ +"id":"FDH6", +"name":"Formate dehydrogenase (cytochrome c553)", +"metabolites":{ +"co2_c":2, +"for_c":-2, +"h2o_c":2, +"h_c":-2, +"o2_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_2387", +"subsystem":"Photorespiration/Glyoxylate Degredation" +}, +{ +"id":"DM_fum_c", +"name":"Modeling: demand reaction (fum_c)", +"metabolites":{ +"fum_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Intracellular demand" +}, +{ +"id":"DM_succ_c", +"name":"Modeling: demand reaction (succ_c)", +"metabolites":{ +"succ_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Intracellular demand" +}, +{ +"id":"DM_akg_c", +"name":"Modeling: demand reaction (akg_c)", +"metabolites":{ +"akg_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Intracellular demand" +}, +{ +"id":"NGAM_D1um", +"name":"Non-growth associated maintenance: PSII D1 protein repair", +"metabolites":{ +"adp_c":360.0, +"atp_c":-360.0, +"gdp_c":720.0, +"gtp_c":-720.0, +"h2o_c":-1080.0, +"h_c":1080.0, +"pi_c":1080.0, +"ps2d1*_um":-1.0, +"ps2d1_um":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"PSICRum", +"name":"Photosystem I charge recombination", +"metabolites":{ +"o2_c":-1, +"o2s_c":1, +"p700*_um":-1, +"p700_um":1, +"pccu1p_u":-1, +"pccu2p_u":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"PSIICRum", +"name":"Photosystem II charge recombination", +"metabolites":{ +"p680*_um":-1, +"p680_um":1, +"ps2d1*_um":0.009999999999999998, +"ps2d1_um":-0.009999999999999998 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Photosynthesis/respiration" +}, +{ +"id":"DM_ac_c", +"name":"Modeling: demand reaction (ac_c)", +"metabolites":{ +"ac_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Intracellular demand" +}, +{ +"id":"DM_lac__D_c", +"name":"Modeling: demand reaction (lac__D_c)", +"metabolites":{ +"lac__D_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Intracellular demand" +}, +{ +"id":"ASPO5", +"name":"L-Aspartate oxidase (fumarate utilizing)", +"metabolites":{ +"asp__L_c":-1.0, +"fum_c":-1, +"h_c":1.0, +"iasp_c":1.0, +"succ_c":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1881", +"subsystem":"Cofactor biosynthesis: Nicotinate and Nicotinamide metabolism" +}, +{ +"id":"MNHNAtpp", +"name":"Na+ export via NADPH dependent Mnh complex", +"metabolites":{ +"h_p":-1, +"na1_c":-1, +"na1_p":1, +"nadp_c":1, +"nadph_c":-1, +"pq_cm":-1, +"pqh2_cm":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1474 and Synpcc7942_1473 and Synpcc7942_1472 and Synpcc7942_1471 and Synpcc7942_1470 and Synpcc7942_1469 and Synpcc7942_1468", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"PCXHtpp", +"name":"H+ export PcxA", +"metabolites":{ +"h_c":-1, +"h_p":1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0991", +"subsystem":"Transport: Inner Membrane" +}, +{ +"id":"NGAM", +"name":"Modeling: Non-growth associated maintenance", +"metabolites":{ +"h2o_c":2.0, +"o2_c":-1.0, +"pq_um":2.0, +"pqh2_um":-2.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Biomass and maintenance functions" +}, +{ +"id":"MPTSS", +"name":"Molybdopterin synthase sulfurylase", +"metabolites":{ +"atp_c":-1.0, +"h_c":-1.0, +"moadamp_c":1.0, +"moadcoo_c":-1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0158", +"subsystem":"Cofactor and Prosthetic Group Biosynthesis", +"notes":{ +"original_bigg_ids":[ +"MPTSS" +] +} +}, +{ +"id":"MOADSUx", +"name":"MoaD sulfuration (nadh, assumed)", +"metabolites":{ +"amp_c":1.0, +"h_c":-1, +"iscs_c":1.0, +"iscssh_c":-1.0, +"moadamp_c":-1.0, +"moadcosh_c":1.0, +"nad_c":1.0, +"nadh_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_0158", +"subsystem":"Cofactor and Prosthetic Group Biosynthesis", +"notes":{ +"original_bigg_ids":[ +"MOADSUx" +] +} +}, +{ +"id":"GTPC", +"name":"GTP 3,8-cyclase", +"metabolites":{ +"amet_c":-1, +"cdhgtp_c":1, +"dad_5_c":1, +"gtp_c":-1, +"met__L_c":1, +"nad_c":1, +"nadh_c":-1 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1282", +"subsystem":"Cofactor biosynthesis: Molybdenum cofactor biosynthesis" +}, +{ +"id":"CPMPS", +"name":"Cyclic pyranopterin monophosphate synthase", +"metabolites":{ +"cdhgtp_c":-1, +"cpmp_c":1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1282", +"subsystem":"Cofactor and Prosthetic Group Biosynthesis", +"notes":{ +"original_bigg_ids":[ +"CPMPS" +] +} +}, +{ +"id":"MPTS", +"name":"Molybdopterin synthase", +"metabolites":{ +"cpmp_c":-1.0, +"cu2_c":-1.0, +"h2o_c":-1, +"h_c":5.0, +"moadcoo_c":2.0, +"moadcosh_c":-2.0, +"mpt_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"(Synpcc7942_1283 and Synpcc7942_1284)", +"subsystem":"Cofactor and Prosthetic Group Biosynthesis", +"notes":{ +"original_bigg_ids":[ +"MPTS" +] +} +}, +{ +"id":"MPTAT", +"name":"Molybdopterin adenylyltransferase", +"metabolites":{ +"atp_c":-1.0, +"h_c":-1.0, +"mpt_c":-1.0, +"mptamp_c":1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"(Synpcc7942_1285 and Synpcc7942_1286)", +"subsystem":"Cofactor and Prosthetic Group Biosynthesis", +"notes":{ +"original_bigg_ids":[ +"MPTAT" +] +} +}, +{ +"id":"MOCOS", +"name":"Molybdenum cofactor synthase", +"metabolites":{ +"amp_c":1.0, +"cu2_c":1.0, +"h2o_c":1.0, +"h_c":-2.0, +"mobd_c":-1.0, +"moco_c":1.0, +"mptamp_c":-1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"(Synpcc7942_1285 and Synpcc7942_1286)", +"subsystem":"Cofactor and Prosthetic Group Biosynthesis", +"notes":{ +"original_bigg_ids":[ +"MOCOS" +] +} +}, +{ +"id":"MOGDS", +"name":"Molybdopterin guanine dinucleotide synthase", +"metabolites":{ +"gtp_c":-1.0, +"h_c":-1.0, +"moco_c":-1.0, +"mocogdp_c":1.0, +"ppi_c":1.0 +}, +"lower_bound":0.0, +"upper_bound":1000.0, +"gene_reaction_rule":"Synpcc7942_1189 or Synpcc7942_1211", +"subsystem":"Cofactor and Prosthetic Group Biosynthesis", +"notes":{ +"original_bigg_ids":[ +"MOGDS" +] +} +}, +{ +"id":"MDH", +"name":"Malate dehydrogenase", +"metabolites":{ +"h_c":1.0, +"mal__L_c":-1.0, +"nadp_c":-1.0, +"nadph_c":1.0, +"oaa_c":1.0 +}, +"lower_bound":-1000.0, +"upper_bound":1000.0, +"gene_reaction_rule":"", +"subsystem":"Pyruvate metabolism/TCA Reactions" +} +], +"genes":[ +{ +"id":"Synpcc7942_1448", +"name":"None" +}, +{ +"id":"Synpcc7942_0707", +"name":"None" +}, +{ +"id":"Synpcc7942_1029", +"name":"None" +}, +{ +"id":"Synpcc7942_0596", +"name":"None" +}, +{ +"id":"Synpcc7942_2561", +"name":"None" +}, +{ +"id":"Synpcc7942_1007", +"name":"None" +}, +{ +"id":"Synpcc7942_1225", +"name":"None" +}, +{ +"id":"Synpcc7942_2258", +"name":"None" +}, +{ +"id":"Synpcc7942_2047", +"name":"None" +}, +{ +"id":"Synpcc7942_2308", +"name":"None" +}, +{ +"id":"Synpcc7942_2046", +"name":"None" +}, +{ +"id":"Synpcc7942_2497", +"name":"None" +}, +{ +"id":"Synpcc7942_1597", +"name":"None" +}, +{ +"id":"Synpcc7942_0777", +"name":"None" +}, +{ +"id":"Synpcc7942_2062", +"name":"None" +}, +{ +"id":"Synpcc7942_0943", +"name":"None" +}, +{ +"id":"Synpcc7942_1086", +"name":"None" +}, +{ +"id":"Synpcc7942_0958", +"name":"None" +}, +{ +"id":"Synpcc7942_2136", +"name":"None" +}, +{ +"id":"Synpcc7942_0775", +"name":"None" +}, +{ +"id":"Synpcc7942_0320", +"name":"None" +}, +{ +"id":"Synpcc7942_2518", +"name":"None" +}, +{ +"id":"Synpcc7942_2545", +"name":"None" +}, +{ +"id":"Synpcc7942_0925", +"name":"None" +}, +{ +"id":"Synpcc7942_2079", +"name":"None" +}, +{ +"id":"Synpcc7942_1455", +"name":"None" +}, +{ +"id":"Synpcc7942_0264", +"name":"None" +}, +{ +"id":"Synpcc7942_2296", +"name":"None" +}, +{ +"id":"Synpcc7942_0169", +"name":"None" +}, +{ +"id":"Synpcc7942_0894", +"name":"None" +}, +{ +"id":"Synpcc7942_0288", +"name":"None" +}, +{ +"id":"Synpcc7942_0861", +"name":"None" +}, +{ +"id":"Synpcc7942_0930", +"name":"None" +}, +{ +"id":"Synpcc7942_2029", +"name":"None" +}, +{ +"id":"Synpcc7942_1808", +"name":"None" +}, +{ +"id":"Synpcc7942_0684", +"name":"None" +}, +{ +"id":"Synpcc7942_1496", +"name":"None" +}, +{ +"id":"Synpcc7942_1861", +"name":"None" +}, +{ +"id":"Synpcc7942_0815", +"name":"None" +}, +{ +"id":"Synpcc7942_2177", +"name":"None" +}, +{ +"id":"Synpcc7942_1893", +"name":"None" +}, +{ +"id":"Synpcc7942_1894", +"name":"None" +}, +{ +"id":"Synpcc7942_2243", +"name":"None" +}, +{ +"id":"Synpcc7942_2265", +"name":"None" +}, +{ +"id":"Synpcc7942_0093", +"name":"None" +}, +{ +"id":"Synpcc7942_1246", +"name":"None" +}, +{ +"id":"Synpcc7942_1512", +"name":"None" +}, +{ +"id":"Synpcc7942_1344", +"name":"None" +}, +{ +"id":"Synpcc7942_1346", +"name":"None" +}, +{ +"id":"Synpcc7942_1743", +"name":"None" +}, +{ +"id":"Synpcc7942_0609", +"name":"None" +}, +{ +"id":"Synpcc7942_2091", +"name":"None" +}, +{ +"id":"Synpcc7942_2092", +"name":"None" +}, +{ +"id":"Synpcc7942_1982", +"name":"None" +}, +{ +"id":"Synpcc7942_2557", +"name":"None" +}, +{ +"id":"Synpcc7942_1415", +"name":"None" +}, +{ +"id":"Synpcc7942_2257", +"name":"None" +}, +{ +"id":"Synpcc7942_1976", +"name":"None" +}, +{ +"id":"Synpcc7942_1182", +"name":"None" +}, +{ +"id":"Synpcc7942_1343", +"name":"None" +}, +{ +"id":"Synpcc7942_1977", +"name":"None" +}, +{ +"id":"Synpcc7942_1181", +"name":"None" +}, +{ +"id":"Synpcc7942_1180", +"name":"None" +}, +{ +"id":"Synpcc7942_2234", +"name":"None" +}, +{ +"id":"Synpcc7942_0278", +"name":"None" +}, +{ +"id":"Synpcc7942_1439", +"name":"None" +}, +{ +"id":"Synpcc7942_0309", +"name":"None" +}, +{ +"id":"Synpcc7942_0413", +"name":"None" +}, +{ +"id":"Synpcc7942_1345", +"name":"None" +}, +{ +"id":"Synpcc7942_1030", +"name":"None" +}, +{ +"id":"Synpcc7942_2145", +"name":"None" +}, +{ +"id":"Synpcc7942_1449", +"name":"None" +}, +{ +"id":"Synpcc7942_1116", +"name":"None" +}, +{ +"id":"Synpcc7942_1831", +"name":"None" +}, +{ +"id":"Synpcc7942_2503", +"name":"None" +}, +{ +"id":"Synpcc7942_0091", +"name":"None" +}, +{ +"id":"Synpcc7942_0489", +"name":"None" +}, +{ +"id":"Synpcc7942_1609", +"name":"None" +}, +{ +"id":"Synpcc7942_1428", +"name":"None" +}, +{ +"id":"Synpcc7942_0923", +"name":"None" +}, +{ +"id":"Synpcc7942_2601", +"name":"None" +}, +{ +"id":"Synpcc7942_0290", +"name":"None" +}, +{ +"id":"Synpcc7942_2143", +"name":"None" +}, +{ +"id":"Synpcc7942_0411", +"name":"None" +}, +{ +"id":"Synpcc7942_1479", +"name":"None" +}, +{ +"id":"Synpcc7942_2426", +"name":"None" +}, +{ +"id":"Synpcc7942_0113", +"name":"None" +}, +{ +"id":"Synpcc7942_2332", +"name":"None" +}, +{ +"id":"Synpcc7942_2331", +"name":"None" +}, +{ +"id":"Synpcc7942_1231", +"name":"None" +}, +{ +"id":"Synpcc7942_0475", +"name":"None" +}, +{ +"id":"Synpcc7942_1232", +"name":"None" +}, +{ +"id":"Synpcc7942_0106", +"name":"None" +}, +{ +"id":"Synpcc7942_1519", +"name":"None" +}, +{ +"id":"Synpcc7942_0808", +"name":"None" +}, +{ +"id":"Synpcc7942_1335", +"name":"None" +}, +{ +"id":"Synpcc7942_1151", +"name":"None" +}, +{ +"id":"Synpcc7942_0407", +"name":"None" +}, +{ +"id":"Synpcc7942_1322", +"name":"None" +}, +{ +"id":"Synpcc7942_0920", +"name":"None" +}, +{ +"id":"Synpcc7942_1002", +"name":"None" +}, +{ +"id":"Synpcc7942_2048", +"name":"None" +}, +{ +"id":"Synpcc7942_0535", +"name":"None" +}, +{ +"id":"Synpcc7942_2049", +"name":"None" +}, +{ +"id":"Synpcc7942_1912a", +"name":"None" +}, +{ +"id":"Synpcc7942_2343", +"name":"None" +}, +{ +"id":"Synpcc7942_1249", +"name":"None" +}, +{ +"id":"Synpcc7942_1250", +"name":"None" +}, +{ +"id":"Synpcc7942_2342", +"name":"None" +}, +{ +"id":"Synpcc7942_0560", +"name":"None" +}, +{ +"id":"Synpcc7942_2341", +"name":"None" +}, +{ +"id":"Synpcc7942_1639", +"name":"None" +}, +{ +"id":"Synpcc7942_2612", +"name":"None" +}, +{ +"id":"Synpcc7942_1782", +"name":"None" +}, +{ +"id":"Synpcc7942_0206", +"name":"None" +}, +{ +"id":"Synpcc7942_0262", +"name":"None" +}, +{ +"id":"Synpcc7942_0097", +"name":"None" +}, +{ +"id":"Synpcc7942_0592", +"name":"None" +}, +{ +"id":"Synpcc7942_1566", +"name":"None" +}, +{ +"id":"Synpcc7942_1760", +"name":"None" +}, +{ +"id":"Synpcc7942_1003", +"name":"None" +}, +{ +"id":"Synpcc7942_0400", +"name":"None" +}, +{ +"id":"Synpcc7942_1021", +"name":"None" +}, +{ +"id":"Synpcc7942_2454", +"name":"None" +}, +{ +"id":"Synpcc7942_1366", +"name":"None" +}, +{ +"id":"Synpcc7942_0039", +"name":"None" +}, +{ +"id":"Synpcc7942_0205", +"name":"None" +}, +{ +"id":"Synpcc7942_1858", +"name":"None" +}, +{ +"id":"Synpcc7942_1057", +"name":"None" +}, +{ +"id":"Synpcc7942_2297", +"name":"None" +}, +{ +"id":"Synpcc7942_0903", +"name":"None" +}, +{ +"id":"Synpcc7942_1197", +"name":"None" +}, +{ +"id":"Synpcc7942_1964", +"name":"None" +}, +{ +"id":"Synpcc7942_2090", +"name":"None" +}, +{ +"id":"Synpcc7942_0937", +"name":"None" +}, +{ +"id":"Synpcc7942_1403", +"name":"None" +}, +{ +"id":"Synpcc7942_0396", +"name":"None" +}, +{ +"id":"Synpcc7942_0578", +"name":"None" +}, +{ +"id":"Synpcc7942_1191", +"name":"None" +}, +{ +"id":"Synpcc7942_2388", +"name":"None" +}, +{ +"id":"Synpcc7942_0190", +"name":"None" +}, +{ +"id":"Synpcc7942_0660", +"name":"None" +}, +{ +"id":"Synpcc7942_1457", +"name":"None" +}, +{ +"id":"Synpcc7942_2057", +"name":"None" +}, +{ +"id":"Synpcc7942_1454", +"name":"None" +}, +{ +"id":"Synpcc7942_0073", +"name":"None" +}, +{ +"id":"Synpcc7942_1847", +"name":"None" +}, +{ +"id":"Synpcc7942_0315", +"name":"None" +}, +{ +"id":"Synpcc7942_0454", +"name":"None" +}, +{ +"id":"Synpcc7942_1983", +"name":"None" +}, +{ +"id":"Synpcc7942_2375", +"name":"None" +}, +{ +"id":"Synpcc7942_0244", +"name":"None" +}, +{ +"id":"Synpcc7942_0996", +"name":"None" +}, +{ +"id":"Synpcc7942_1973", +"name":"None" +}, +{ +"id":"Synpcc7942_1608", +"name":"None" +}, +{ +"id":"Synpcc7942_2008", +"name":"None" +}, +{ +"id":"Synpcc7942_0612", +"name":"None" +}, +{ +"id":"Synpcc7942_0776", +"name":"None" +}, +{ +"id":"Synpcc7942_2522", +"name":"None" +}, +{ +"id":"Synpcc7942_1984", +"name":"None" +}, +{ +"id":"Synpcc7942_2381", +"name":"None" +}, +{ +"id":"Synpcc7942_1443", +"name":"None" +}, +{ +"id":"Synpcc7942_2434", +"name":"None" +}, +{ +"id":"Synpcc7942_0139", +"name":"None" +}, +{ +"id":"Synpcc7942_1848", +"name":"None" +}, +{ +"id":"Synpcc7942_0232", +"name":"None" +}, +{ +"id":"Synpcc7942_B2663", +"name":"None" +}, +{ +"id":"Synpcc7942_2420", +"name":"None" +}, +{ +"id":"Synpcc7942_0944", +"name":"None" +}, +{ +"id":"Synpcc7942_1096", +"name":"None" +}, +{ +"id":"Synpcc7942_0990", +"name":"None" +}, +{ +"id":"Synpcc7942_2384", +"name":"None" +}, +{ +"id":"Synpcc7942_2362", +"name":"None" +}, +{ +"id":"Synpcc7942_0482", +"name":"None" +}, +{ +"id":"Synpcc7942_2000", +"name":"None" +}, +{ +"id":"Synpcc7942_1435", +"name":"None" +}, +{ +"id":"Synpcc7942_0280", +"name":"None" +}, +{ +"id":"Synpcc7942_0125", +"name":"None" +}, +{ +"id":"Synpcc7942_2569", +"name":"None" +}, +{ +"id":"Synpcc7942_0717", +"name":"None" +}, +{ +"id":"Synpcc7942_0890", +"name":"None" +}, +{ +"id":"Synpcc7942_0105", +"name":"None" +}, +{ +"id":"Synpcc7942_0504", +"name":"None" +}, +{ +"id":"Synpcc7942_2101", +"name":"None" +}, +{ +"id":"Synpcc7942_1667", +"name":"None" +}, +{ +"id":"Synpcc7942_2303", +"name":"None" +}, +{ +"id":"Synpcc7942_0711", +"name":"None" +}, +{ +"id":"Synpcc7942_2122", +"name":"None" +}, +{ +"id":"Synpcc7942_1810", +"name":"None" +}, +{ +"id":"Synpcc7942_1809", +"name":"None" +}, +{ +"id":"Synpcc7942_2058", +"name":"None" +}, +{ +"id":"Synpcc7942_2188", +"name":"None" +}, +{ +"id":"Synpcc7942_0537", +"name":"None" +}, +{ +"id":"Synpcc7942_0505", +"name":"None" +}, +{ +"id":"Synpcc7942_1493", +"name":"None" +}, +{ +"id":"Synpcc7942_0126", +"name":"None" +}, +{ +"id":"Synpcc7942_1688", +"name":"None" +}, +{ +"id":"Synpcc7942_1680", +"name":"None" +}, +{ +"id":"Synpcc7942_1722", +"name":"None" +}, +{ +"id":"Synpcc7942_1682", +"name":"None" +}, +{ +"id":"Synpcc7942_1686", +"name":"None" +}, +{ +"id":"Synpcc7942_1687", +"name":"None" +}, +{ +"id":"Synpcc7942_1685", +"name":"None" +}, +{ +"id":"Synpcc7942_1681", +"name":"None" +}, +{ +"id":"Synpcc7942_1740", +"name":"None" +}, +{ +"id":"Synpcc7942_0626", +"name":"None" +}, +{ +"id":"Synpcc7942_0428", +"name":"None" +}, +{ +"id":"Synpcc7942_1792", +"name":"None" +}, +{ +"id":"Synpcc7942_1294", +"name":"None" +}, +{ +"id":"Synpcc7942_0781", +"name":"None" +}, +{ +"id":"Synpcc7942_1441", +"name":"None" +}, +{ +"id":"Synpcc7942_0534", +"name":"None" +}, +{ +"id":"Synpcc7942_0156", +"name":"None" +}, +{ +"id":"Synpcc7942_2402", +"name":"None" +}, +{ +"id":"Synpcc7942_0932", +"name":"None" +}, +{ +"id":"Synpcc7942_1552", +"name":"None" +}, +{ +"id":"Synpcc7942_0538", +"name":"None" +}, +{ +"id":"Synpcc7942_0116", +"name":"None" +}, +{ +"id":"Synpcc7942_0292", +"name":"None" +}, +{ +"id":"Synpcc7942_1767", +"name":"None" +}, +{ +"id":"Synpcc7942_1766", +"name":"None" +}, +{ +"id":"Synpcc7942_1347", +"name":"None" +}, +{ +"id":"Synpcc7942_1501", +"name":"None" +}, +{ +"id":"Synpcc7942_0212", +"name":"None" +}, +{ +"id":"Synpcc7942_2043", +"name":"None" +}, +{ +"id":"Synpcc7942_2249", +"name":"None" +}, +{ +"id":"Synpcc7942_0849", +"name":"None" +}, +{ +"id":"Synpcc7942_2460", +"name":"None" +}, +{ +"id":"Synpcc7942_1083", +"name":"None" +}, +{ +"id":"Synpcc7942_2582", +"name":"None" +}, +{ +"id":"Synpcc7942_1466", +"name":"None" +}, +{ +"id":"Synpcc7942_B2664", +"name":"None" +}, +{ +"id":"Synpcc7942_2480", +"name":"None" +}, +{ +"id":"Synpcc7942_1008", +"name":"None" +}, +{ +"id":"Synpcc7942_0681", +"name":"None" +}, +{ +"id":"Synpcc7942_0070", +"name":"None" +}, +{ +"id":"Synpcc7942_2063", +"name":"None" +}, +{ +"id":"Synpcc7942_2268", +"name":"None" +}, +{ +"id":"Synpcc7942_0166", +"name":"None" +}, +{ +"id":"Synpcc7942_0851", +"name":"None" +}, +{ +"id":"Synpcc7942_1896", +"name":"None" +}, +{ +"id":"Synpcc7942_1020", +"name":"None" +}, +{ +"id":"Synpcc7942_1855", +"name":"None" +}, +{ +"id":"Synpcc7942_0385", +"name":"None" +}, +{ +"id":"Synpcc7942_0670", +"name":"None" +}, +{ +"id":"Synpcc7942_0881", +"name":"None" +}, +{ +"id":"Synpcc7942_1297", +"name":"None" +}, +{ +"id":"Synpcc7942_0203", +"name":"None" +}, +{ +"id":"Synpcc7942_1186", +"name":"None" +}, +{ +"id":"Synpcc7942_0295", +"name":"None" +}, +{ +"id":"Synpcc7942_0273", +"name":"None" +}, +{ +"id":"Synpcc7942_1419", +"name":"None" +}, +{ +"id":"Synpcc7942_1838", +"name":"None" +}, +{ +"id":"Synpcc7942_1420", +"name":"None" +}, +{ +"id":"Synpcc7942_2475", +"name":"None" +}, +{ +"id":"Synpcc7942_1440", +"name":"None" +}, +{ +"id":"Synpcc7942_2439", +"name":"None" +}, +{ +"id":"Synpcc7942_2272", +"name":"None" +}, +{ +"id":"Synpcc7942_0618", +"name":"None" +}, +{ +"id":"Synpcc7942_2334", +"name":"None" +}, +{ +"id":"Synpcc7942_1268", +"name":"None" +}, +{ +"id":"Synpcc7942_2382", +"name":"None" +}, +{ +"id":"Synpcc7942_1854", +"name":"None" +}, +{ +"id":"Synpcc7942_1595", +"name":"None" +}, +{ +"id":"Synpcc7942_1956", +"name":"None" +}, +{ +"id":"Synpcc7942_1379", +"name":"None" +}, +{ +"id":"Synpcc7942_2564", +"name":"None" +}, +{ +"id":"Synpcc7942_2253", +"name":"None" +}, +{ +"id":"Synpcc7942_2104", +"name":"None" +}, +{ +"id":"Synpcc7942_2602", +"name":"None" +}, +{ +"id":"Synpcc7942_2604", +"name":"None" +}, +{ +"id":"Synpcc7942_2603", +"name":"None" +}, +{ +"id":"Synpcc7942_2312", +"name":"None" +}, +{ +"id":"Synpcc7942_1372", +"name":"None" +}, +{ +"id":"Synpcc7942_0977", +"name":"None" +}, +{ +"id":"Synpcc7942_0978", +"name":"None" +}, +{ +"id":"Synpcc7942_0588", +"name":"None" +}, +{ +"id":"Synpcc7942_1099", +"name":"None" +}, +{ +"id":"Synpcc7942_2508", +"name":"None" +}, +{ +"id":"Synpcc7942_2266", +"name":"None" +}, +{ +"id":"Synpcc7942_1995", +"name":"None" +}, +{ +"id":"Synpcc7942_0062", +"name":"None" +}, +{ +"id":"Synpcc7942_1082", +"name":"None" +}, +{ +"id":"Synpcc7942_0929", +"name":"None" +}, +{ +"id":"Synpcc7942_1881", +"name":"None" +}, +{ +"id":"Synpcc7942_1001", +"name":"None" +}, +{ +"id":"Synpcc7942_0430", +"name":"None" +}, +{ +"id":"Synpcc7942_0017", +"name":"None" +}, +{ +"id":"Synpcc7942_0442", +"name":"None" +}, +{ +"id":"Synpcc7942_2279", +"name":"None" +}, +{ +"id":"Synpcc7942_2506", +"name":"None" +}, +{ +"id":"Synpcc7942_2556", +"name":"None" +}, +{ +"id":"Synpcc7942_2555", +"name":"None" +}, +{ +"id":"Synpcc7942_0279", +"name":"None" +}, +{ +"id":"Synpcc7942_0957", +"name":"None" +}, +{ +"id":"Synpcc7942_1386", +"name":"None" +}, +{ +"id":"Synpcc7942_1229", +"name":"None" +}, +{ +"id":"Synpcc7942_0249", +"name":"None" +}, +{ +"id":"Synpcc7942_0369", +"name":"None" +}, +{ +"id":"Synpcc7942_0641", +"name":"None" +}, +{ +"id":"Synpcc7942_0314", +"name":"None" +}, +{ +"id":"Synpcc7942_1533", +"name":"None" +}, +{ +"id":"Synpcc7942_1927", +"name":"None" +}, +{ +"id":"Synpcc7942_1889", +"name":"None" +}, +{ +"id":"Synpcc7942_1085", +"name":"None" +}, +{ +"id":"Synpcc7942_1432", +"name":"None" +}, +{ +"id":"Synpcc7942_1513", +"name":"None" +}, +{ +"id":"Synpcc7942_2244", +"name":"None" +}, +{ +"id":"Synpcc7942_2393", +"name":"None" +}, +{ +"id":"Synpcc7942_2463", +"name":"None" +}, +{ +"id":"Synpcc7942_0488", +"name":"None" +}, +{ +"id":"Synpcc7942_0486", +"name":"None" +}, +{ +"id":"Synpcc7942_1194", +"name":"None" +}, +{ +"id":"Synpcc7942_1037", +"name":"None" +}, +{ +"id":"Synpcc7942_1742", +"name":"None" +}, +{ +"id":"Synpcc7942_1933", +"name":"None" +}, +{ +"id":"Synpcc7942_0441", +"name":"None" +}, +{ +"id":"Synpcc7942_0506", +"name":"None" +}, +{ +"id":"Synpcc7942_2548", +"name":"None" +}, +{ +"id":"Synpcc7942_1898", +"name":"None" +}, +{ +"id":"Synpcc7942_1624", +"name":"None" +}, +{ +"id":"Synpcc7942_1850", +"name":"None" +}, +{ +"id":"Synpcc7942_2501", +"name":"None" +}, +{ +"id":"Synpcc7942_0034", +"name":"None" +}, +{ +"id":"Synpcc7942_2335", +"name":"None" +}, +{ +"id":"Synpcc7942_1317", +"name":"None" +}, +{ +"id":"Synpcc7942_2575", +"name":"None" +}, +{ +"id":"Synpcc7942_2573", +"name":"None" +}, +{ +"id":"Synpcc7942_1316", +"name":"None" +}, +{ +"id":"Synpcc7942_1318", +"name":"None" +}, +{ +"id":"Synpcc7942_2574", +"name":"None" +}, +{ +"id":"Synpcc7942_0401", +"name":"None" +}, +{ +"id":"Synpcc7942_1907", +"name":"None" +}, +{ +"id":"Synpcc7942_2567", +"name":"None" +}, +{ +"id":"Synpcc7942_0576", +"name":"None" +}, +{ +"id":"Synpcc7942_1433", +"name":"None" +}, +{ +"id":"Synpcc7942_1505", +"name":"None" +}, +{ +"id":"Synpcc7942_0310", +"name":"None" +}, +{ +"id":"Synpcc7942_1359", +"name":"None" +}, +{ +"id":"Synpcc7942_1475", +"name":"None" +}, +{ +"id":"Synpcc7942_2600", +"name":"None" +}, +{ +"id":"Synpcc7942_0604", +"name":"None" +}, +{ +"id":"Synpcc7942_0439", +"name":"None" +}, +{ +"id":"Synpcc7942_0198", +"name":"None" +}, +{ +"id":"Synpcc7942_0101", +"name":"None" +}, +{ +"id":"Synpcc7942_1741", +"name":"None" +}, +{ +"id":"Synpcc7942_0965", +"name":"None" +}, +{ +"id":"Synpcc7942_0173", +"name":"None" +}, +{ +"id":"Synpcc7942_1900", +"name":"None" +}, +{ +"id":"Synpcc7942_0371", +"name":"None" +}, +{ +"id":"Synpcc7942_1714", +"name":"None" +}, +{ +"id":"Synpcc7942_0529", +"name":"None" +}, +{ +"id":"Synpcc7942_0713", +"name":"None" +}, +{ +"id":"Synpcc7942_1309", +"name":"None" +}, +{ +"id":"Synpcc7942_0853", +"name":"None" +}, +{ +"id":"Synpcc7942_1269", +"name":"None" +}, +{ +"id":"Synpcc7942_0256", +"name":"None" +}, +{ +"id":"Synpcc7942_1971", +"name":"None" +}, +{ +"id":"Synpcc7942_2197", +"name":"None" +}, +{ +"id":"Synpcc7942_2078", +"name":"None" +}, +{ +"id":"Synpcc7942_1352", +"name":"None" +}, +{ +"id":"Synpcc7942_2080", +"name":"None" +}, +{ +"id":"Synpcc7942_1136", +"name":"None" +}, +{ +"id":"Synpcc7942_1190", +"name":"None" +}, +{ +"id":"Synpcc7942_0774", +"name":"None" +}, +{ +"id":"Synpcc7942_2527", +"name":"None" +}, +{ +"id":"Synpcc7942_0813", +"name":"None" +}, +{ +"id":"Synpcc7942_0783", +"name":"None" +}, +{ +"id":"Synpcc7942_0715", +"name":"None" +}, +{ +"id":"Synpcc7942_2100", +"name":"None" +}, +{ +"id":"Synpcc7942_1149", +"name":"None" +}, +{ +"id":"Synpcc7942_0927", +"name":"None" +}, +{ +"id":"Synpcc7942_1371", +"name":"None" +}, +{ +"id":"Synpcc7942_0623", +"name":"None" +}, +{ +"id":"Synpcc7942_0004", +"name":"None" +}, +{ +"id":"Synpcc7942_0191", +"name":"None" +}, +{ +"id":"Synpcc7942_0271", +"name":"None" +}, +{ +"id":"Synpcc7942_0597", +"name":"None" +}, +{ +"id":"Synpcc7942_1456", +"name":"None" +}, +{ +"id":"Synpcc7942_2379", +"name":"None" +}, +{ +"id":"Synpcc7942_0967", +"name":"None" +}, +{ +"id":"Synpcc7942_2613", +"name":"None" +}, +{ +"id":"Synpcc7942_0931", +"name":"None" +}, +{ +"id":"Synpcc7942_2371", +"name":"None" +}, +{ +"id":"Synpcc7942_0804", +"name":"None" +}, +{ +"id":"Synpcc7942_0152", +"name":"None" +}, +{ +"id":"Synpcc7942_1491", +"name":"None" +}, +{ +"id":"Synpcc7942_1490", +"name":"None" +}, +{ +"id":"Synpcc7942_1488", +"name":"None" +}, +{ +"id":"Synpcc7942_1489", +"name":"None" +}, +{ +"id":"Synpcc7942_1410", +"name":"None" +}, +{ +"id":"Synpcc7942_0579", +"name":"None" +}, +{ +"id":"Synpcc7942_1967", +"name":"None" +}, +{ +"id":"Synpcc7942_0915", +"name":"None" +}, +{ +"id":"Synpcc7942_0801", +"name":"None" +}, +{ +"id":"Synpcc7942_2132", +"name":"None" +}, +{ +"id":"Synpcc7942_0951", +"name":"None" +}, +{ +"id":"Synpcc7942_0939", +"name":"None" +}, +{ +"id":"Synpcc7942_1170", +"name":"None" +}, +{ +"id":"Synpcc7942_1570", +"name":"None" +}, +{ +"id":"Synpcc7942_2317", +"name":"None" +}, +{ +"id":"Synpcc7942_0211", +"name":"None" +}, +{ +"id":"Synpcc7942_1427", +"name":"None" +}, +{ +"id":"Synpcc7942_1426", +"name":"None" +}, +{ +"id":"Synpcc7942_0185", +"name":"None" +}, +{ +"id":"Synpcc7942_0408", +"name":"None" +}, +{ +"id":"Synpcc7942_2107", +"name":"None" +}, +{ +"id":"Synpcc7942_2105", +"name":"None" +}, +{ +"id":"Synpcc7942_2106", +"name":"None" +}, +{ +"id":"Synpcc7942_1857", +"name":"None" +}, +{ +"id":"Synpcc7942_2007", +"name":"None" +}, +{ +"id":"Synpcc7942_0456", +"name":"None" +}, +{ +"id":"Synpcc7942_0655", +"name":"None" +}, +{ +"id":"Synpcc7942_2016", +"name":"None" +}, +{ +"id":"Synpcc7942_0699", +"name":"None" +}, +{ +"id":"Synpcc7942_0294", +"name":"None" +}, +{ +"id":"Synpcc7942_2010", +"name":"None" +}, +{ +"id":"Synpcc7942_1175", +"name":"None" +}, +{ +"id":"Synpcc7942_0225", +"name":"None" +}, +{ +"id":"Synpcc7942_1962", +"name":"None" +}, +{ +"id":"Synpcc7942_1174", +"name":"None" +}, +{ +"id":"Synpcc7942_0424", +"name":"None" +}, +{ +"id":"Synpcc7942_0697", +"name":"None" +}, +{ +"id":"Synpcc7942_1177", +"name":"None" +}, +{ +"id":"Synpcc7942_0893", +"name":"None" +}, +{ +"id":"Synpcc7942_1705", +"name":"None" +}, +{ +"id":"Synpcc7942_0696", +"name":"None" +}, +{ +"id":"Synpcc7942_1176", +"name":"None" +}, +{ +"id":"Synpcc7942_2245", +"name":"None" +}, +{ +"id":"Synpcc7942_1389", +"name":"None" +}, +{ +"id":"Synpcc7942_0656", +"name":"None" +}, +{ +"id":"Synpcc7942_0343", +"name":"None" +}, +{ +"id":"Synpcc7942_1637", +"name":"None" +}, +{ +"id":"Synpcc7942_1038", +"name":"None" +}, +{ +"id":"Synpcc7942_0224", +"name":"None" +}, +{ +"id":"Synpcc7942_1679", +"name":"None" +}, +{ +"id":"Synpcc7942_1882", +"name":"None" +}, +{ +"id":"Synpcc7942_2478", +"name":"None" +}, +{ +"id":"Synpcc7942_0021", +"name":"None" +}, +{ +"id":"Synpcc7942_1668", +"name":"None" +}, +{ +"id":"Synpcc7942_1671", +"name":"None" +}, +{ +"id":"Synpcc7942_1729", +"name":"None" +}, +{ +"id":"Synpcc7942_1669", +"name":"None" +}, +{ +"id":"Synpcc7942_0639", +"name":"None" +}, +{ +"id":"Synpcc7942_2099", +"name":"None" +}, +{ +"id":"Synpcc7942_0003", +"name":"None" +}, +{ +"id":"Synpcc7942_0819", +"name":"None" +}, +{ +"id":"Synpcc7942_0818", +"name":"None" +}, +{ +"id":"Synpcc7942_1852", +"name":"None" +}, +{ +"id":"Synpcc7942_0189", +"name":"None" +}, +{ +"id":"Synpcc7942_0492", +"name":"None" +}, +{ +"id":"Synpcc7942_1851", +"name":"None" +}, +{ +"id":"Synpcc7942_1240", +"name":"None" +}, +{ +"id":"Synpcc7942_1214", +"name":"None" +}, +{ +"id":"Synpcc7942_0009", +"name":"None" +}, +{ +"id":"Synpcc7942_2160", +"name":"None" +}, +{ +"id":"Synpcc7942_2098", +"name":"None" +}, +{ +"id":"Synpcc7942_0058", +"name":"None" +}, +{ +"id":"Synpcc7942_0842", +"name":"None" +}, +{ +"id":"Synpcc7942_2467", +"name":"None" +}, +{ +"id":"Synpcc7942_2592", +"name":"None" +}, +{ +"id":"Synpcc7942_1131", +"name":"None" +}, +{ +"id":"Synpcc7942_1734", +"name":"None" +}, +{ +"id":"Synpcc7942_2113", +"name":"None" +}, +{ +"id":"Synpcc7942_0628", +"name":"None" +}, +{ +"id":"Synpcc7942_0137", +"name":"None" +}, +{ +"id":"Synpcc7942_1383", +"name":"None" +}, +{ +"id":"Synpcc7942_0525", +"name":"None" +}, +{ +"id":"Synpcc7942_2123", +"name":"None" +}, +{ +"id":"Synpcc7942_2213", +"name":"None" +}, +{ +"id":"Synpcc7942_0272", +"name":"None" +}, +{ +"id":"Synpcc7942_0040", +"name":"None" +}, +{ +"id":"Synpcc7942_1825", +"name":"None" +}, +{ +"id":"Synpcc7942_2304", +"name":"None" +}, +{ +"id":"Synpcc7942_1865", +"name":"None" +}, +{ +"id":"Synpcc7942_1239", +"name":"None" +}, +{ +"id":"Synpcc7942_1238", +"name":"None" +}, +{ +"id":"Synpcc7942_1237", +"name":"None" +}, +{ +"id":"Synpcc7942_1236", +"name":"None" +}, +{ +"id":"Synpcc7942_1409", +"name":"None" +}, +{ +"id":"Synpcc7942_1406", +"name":"None" +}, +{ +"id":"Synpcc7942_2175", +"name":"None" +}, +{ +"id":"Synpcc7942_1532", +"name":"None" +}, +{ +"id":"Synpcc7942_1531", +"name":"None" +}, +{ +"id":"Synpcc7942_2588", +"name":"None" +}, +{ +"id":"Synpcc7942_2055", +"name":"None" +}, +{ +"id":"Synpcc7942_1610", +"name":"None" +}, +{ +"id":"Synpcc7942_1611", +"name":"None" +}, +{ +"id":"Synpcc7942_1612", +"name":"None" +}, +{ +"id":"Synpcc7942_1744", +"name":"None" +}, +{ +"id":"Synpcc7942_0645", +"name":"None" +}, +{ +"id":"Synpcc7942_1484", +"name":"None" +}, +{ +"id":"Synpcc7942_0086", +"name":"None" +}, +{ +"id":"Synpcc7942_0221", +"name":"None" +}, +{ +"id":"Synpcc7942_2315", +"name":"None" +}, +{ +"id":"Synpcc7942_0337", +"name":"None" +}, +{ +"id":"Synpcc7942_0331", +"name":"None" +}, +{ +"id":"Synpcc7942_0336", +"name":"None" +}, +{ +"id":"Synpcc7942_0333", +"name":"None" +}, +{ +"id":"Synpcc7942_0332", +"name":"None" +}, +{ +"id":"Synpcc7942_2316", +"name":"None" +}, +{ +"id":"Synpcc7942_0334", +"name":"None" +}, +{ +"id":"Synpcc7942_0335", +"name":"None" +}, +{ +"id":"Synpcc7942_2084", +"name":"None" +}, +{ +"id":"Synpcc7942_1718", +"name":"None" +}, +{ +"id":"Synpcc7942_0276", +"name":"None" +}, +{ +"id":"Synpcc7942_2445", +"name":"None" +}, +{ +"id":"Synpcc7942_2441", +"name":"None" +}, +{ +"id":"Synpcc7942_2443", +"name":"None" +}, +{ +"id":"Synpcc7942_2444", +"name":"None" +}, +{ +"id":"Synpcc7942_2442", +"name":"None" +}, +{ +"id":"Synpcc7942_1853", +"name":"None" +}, +{ +"id":"Synpcc7942_2409", +"name":"None" +}, +{ +"id":"Synpcc7942_1109", +"name":"None" +}, +{ +"id":"Synpcc7942_1044", +"name":"None" +}, +{ +"id":"Synpcc7942_0638", +"name":"None" +}, +{ +"id":"Synpcc7942_1954", +"name":"None" +}, +{ +"id":"Synpcc7942_2324", +"name":"None" +}, +{ +"id":"Synpcc7942_0986", +"name":"None" +}, +{ +"id":"Synpcc7942_1080", +"name":"None" +}, +{ +"id":"Synpcc7942_1081", +"name":"None" +}, +{ +"id":"Synpcc7942_1068", +"name":"None" +}, +{ +"id":"Synpcc7942_1944", +"name":"None" +}, +{ +"id":"Synpcc7942_1198", +"name":"None" +}, +{ +"id":"Synpcc7942_0143", +"name":"None" +}, +{ +"id":"Synpcc7942_0583", +"name":"None" +}, +{ +"id":"Synpcc7942_2274", +"name":"None" +}, +{ +"id":"Synpcc7942_2137", +"name":"None" +}, +{ +"id":"Synpcc7942_1261", +"name":"None" +}, +{ +"id":"Synpcc7942_1829", +"name":"None" +}, +{ +"id":"Synpcc7942_1656", +"name":"None" +}, +{ +"id":"Synpcc7942_0394", +"name":"None" +}, +{ +"id":"Synpcc7942_2361", +"name":"None" +}, +{ +"id":"Synpcc7942_2201", +"name":"None" +}, +{ +"id":"Synpcc7942_0019", +"name":"None" +}, +{ +"id":"Synpcc7942_1334", +"name":"None" +}, +{ +"id":"Synpcc7942_1841", +"name":"None" +}, +{ +"id":"Synpcc7942_1719", +"name":"None" +}, +{ +"id":"Synpcc7942_1992", +"name":"None" +}, +{ +"id":"Synpcc7942_0370", +"name":"None" +}, +{ +"id":"Synpcc7942_2252", +"name":"None" +}, +{ +"id":"Synpcc7942_1915", +"name":"None" +}, +{ +"id":"Synpcc7942_1939", +"name":"None" +}, +{ +"id":"Synpcc7942_0245", +"name":"None" +}, +{ +"id":"Synpcc7942_0674", +"name":"None" +}, +{ +"id":"Synpcc7942_2514", +"name":"None" +}, +{ +"id":"Synpcc7942_2406", +"name":"None" +}, +{ +"id":"Synpcc7942_1929", +"name":"None" +}, +{ +"id":"Synpcc7942_1058", +"name":"None" +}, +{ +"id":"Synpcc7942_0603", +"name":"None" +}, +{ +"id":"Synpcc7942_0098", +"name":"None" +}, +{ +"id":"Synpcc7942_2087", +"name":"None" +}, +{ +"id":"Synpcc7942_1481", +"name":"None" +}, +{ +"id":"Synpcc7942_1235", +"name":"None" +}, +{ +"id":"Synpcc7942_1103", +"name":"None" +}, +{ +"id":"Synpcc7942_0023", +"name":"None" +}, +{ +"id":"Synpcc7942_0584", +"name":"None" +}, +{ +"id":"Synpcc7942_0543", +"name":"None" +}, +{ +"id":"Synpcc7942_0282", +"name":"None" +}, +{ +"id":"Synpcc7942_1993", +"name":"None" +}, +{ +"id":"Synpcc7942_1994", +"name":"None" +}, +{ +"id":"Synpcc7942_0608", +"name":"None" +}, +{ +"id":"Synpcc7942_1794", +"name":"None" +}, +{ +"id":"Synpcc7942_2156", +"name":"None" +}, +{ +"id":"Synpcc7942_2310", +"name":"None" +}, +{ +"id":"Synpcc7942_1979", +"name":"None" +}, +{ +"id":"Synpcc7942_0970", +"name":"None" +}, +{ +"id":"Synpcc7942_1723", +"name":"None" +}, +{ +"id":"Synpcc7942_2532", +"name":"None" +}, +{ +"id":"Synpcc7942_2164", +"name":"None" +}, +{ +"id":"Synpcc7942_1043", +"name":"None" +}, +{ +"id":"Synpcc7942_1184", +"name":"None" +}, +{ +"id":"Synpcc7942_1819", +"name":"None" +}, +{ +"id":"Synpcc7942_1918", +"name":"None" +}, +{ +"id":"Synpcc7942_1659", +"name":"None" +}, +{ +"id":"Synpcc7942_1596", +"name":"None" +}, +{ +"id":"Synpcc7942_1738", +"name":"None" +}, +{ +"id":"Synpcc7942_0158", +"name":"None" +}, +{ +"id":"Synpcc7942_0827", +"name":"None" +}, +{ +"id":"Synpcc7942_1072", +"name":"None" +}, +{ +"id":"Synpcc7942_0029", +"name":"None" +}, +{ +"id":"Synpcc7942_0028", +"name":"None" +}, +{ +"id":"Synpcc7942_0027", +"name":"None" +}, +{ +"id":"Synpcc7942_0031", +"name":"None" +}, +{ +"id":"Synpcc7942_0030", +"name":"None" +}, +{ +"id":"Synpcc7942_1735", +"name":"None" +}, +{ +"id":"Synpcc7942_1737", +"name":"None" +}, +{ +"id":"Synpcc7942_0450", +"name":"None" +}, +{ +"id":"Synpcc7942_0419", +"name":"None" +}, +{ +"id":"Synpcc7942_1736", +"name":"None" +}, +{ +"id":"Synpcc7942_0345", +"name":"None" +}, +{ +"id":"Synpcc7942_1507", +"name":"None" +}, +{ +"id":"Synpcc7942_0542", +"name":"None" +}, +{ +"id":"Synpcc7942_2353", +"name":"None" +}, +{ +"id":"Synpcc7942_1411", +"name":"None" +}, +{ +"id":"Synpcc7942_B2623", +"name":"None" +}, +{ +"id":"Synpcc7942_0171", +"name":"None" +}, +{ +"id":"Synpcc7942_1953", +"name":"None" +}, +{ +"id":"Synpcc7942_1332", +"name":"None" +}, +{ +"id":"Synpcc7942_1333", +"name":"None" +}, +{ +"id":"Synpcc7942_1844", +"name":"None" +}, +{ +"id":"Synpcc7942_0455", +"name":"None" +}, +{ +"id":"Synpcc7942_2348", +"name":"None" +}, +{ +"id":"Synpcc7942_0530", +"name":"None" +}, +{ +"id":"Synpcc7942_1715", +"name":"None" +}, +{ +"id":"Synpcc7942_0469", +"name":"None" +}, +{ +"id":"Synpcc7942_1019", +"name":"None" +}, +{ +"id":"Synpcc7942_0973", +"name":"None" +}, +{ +"id":"Synpcc7942_1342", +"name":"None" +}, +{ +"id":"Synpcc7942_1700", +"name":"None" +}, +{ +"id":"Synpcc7942_1653", +"name":"None" +}, +{ +"id":"Synpcc7942_0061", +"name":"None" +}, +{ +"id":"Synpcc7942_1717", +"name":"None" +}, +{ +"id":"Synpcc7942_1678", +"name":"None" +}, +{ +"id":"Synpcc7942_0511", +"name":"None" +}, +{ +"id":"Synpcc7942_1478", +"name":"None" +}, +{ +"id":"Synpcc7942_0323", +"name":"None" +}, +{ +"id":"Synpcc7942_0322", +"name":"None" +}, +{ +"id":"Synpcc7942_2487", +"name":"None" +}, +{ +"id":"Synpcc7942_1908", +"name":"None" +}, +{ +"id":"Synpcc7942_0491", +"name":"None" +}, +{ +"id":"Synpcc7942_1106", +"name":"None" +}, +{ +"id":"Synpcc7942_0668", +"name":"None" +}, +{ +"id":"Synpcc7942_2094", +"name":"None" +}, +{ +"id":"Synpcc7942_2093", +"name":"None" +}, +{ +"id":"Synpcc7942_0308", +"name":"None" +}, +{ +"id":"Synpcc7942_2513", +"name":"None" +}, +{ +"id":"Synpcc7942_2321", +"name":"None" +}, +{ +"id":"Synpcc7942_0654", +"name":"None" +}, +{ +"id":"Synpcc7942_0330", +"name":"None" +}, +{ +"id":"Synpcc7942_1373", +"name":"None" +}, +{ +"id":"Synpcc7942_2554", +"name":"None" +}, +{ +"id":"Synpcc7942_2552", +"name":"None" +}, +{ +"id":"Synpcc7942_2553", +"name":"None" +}, +{ +"id":"Synpcc7942_1447", +"name":"None" +}, +{ +"id":"Synpcc7942_1423", +"name":"None" +}, +{ +"id":"Synpcc7942_0918", +"name":"None" +}, +{ +"id":"Synpcc7942_1594", +"name":"None" +}, +{ +"id":"Synpcc7942_1593", +"name":"None" +}, +{ +"id":"Synpcc7942_0118", +"name":"None" +}, +{ +"id":"Synpcc7942_2117", +"name":"None" +}, +{ +"id":"Synpcc7942_2322", +"name":"None" +}, +{ +"id":"Synpcc7942_2570", +"name":"None" +}, +{ +"id":"Synpcc7942_1142", +"name":"None" +}, +{ +"id":"Synpcc7942_0449", +"name":"None" +}, +{ +"id":"Synpcc7942_0018", +"name":"None" +}, +{ +"id":"Synpcc7942_2457", +"name":"None" +}, +{ +"id":"Synpcc7942_1959", +"name":"None" +}, +{ +"id":"Synpcc7942_1662", +"name":"None" +}, +{ +"id":"Synpcc7942_1577", +"name":"None" +}, +{ +"id":"Synpcc7942_1308", +"name":"None" +}, +{ +"id":"Synpcc7942_1293", +"name":"None" +}, +{ +"id":"Synpcc7942_2064", +"name":"None" +}, +{ +"id":"Synpcc7942_2263", +"name":"None" +}, +{ +"id":"Synpcc7942_0830", +"name":"None" +}, +{ +"id":"Synpcc7942_1313", +"name":"None" +}, +{ +"id":"Synpcc7942_2606", +"name":"None" +}, +{ +"id":"Synpcc7942_1920", +"name":"None" +}, +{ +"id":"Synpcc7942_2437", +"name":"None" +}, +{ +"id":"Synpcc7942_2415", +"name":"None" +}, +{ +"id":"Synpcc7942_0876", +"name":"None" +}, +{ +"id":"Synpcc7942_0587", +"name":"None" +}, +{ +"id":"Synpcc7942_2110", +"name":"None" +}, +{ +"id":"Synpcc7942_0680", +"name":"None" +}, +{ +"id":"Synpcc7942_2291", +"name":"None" +}, +{ +"id":"Synpcc7942_2289", +"name":"None" +}, +{ +"id":"Synpcc7942_2288", +"name":"None" +}, +{ +"id":"Synpcc7942_2290", +"name":"None" +}, +{ +"id":"Synpcc7942_0552", +"name":"None" +}, +{ +"id":"Synpcc7942_0281", +"name":"None" +}, +{ +"id":"Synpcc7942_1651", +"name":"None" +}, +{ +"id":"Synpcc7942_1884", +"name":"None" +}, +{ +"id":"Synpcc7942_2026", +"name":"None" +}, +{ +"id":"Synpcc7942_2028", +"name":"None" +}, +{ +"id":"Synpcc7942_2025", +"name":"None" +}, +{ +"id":"Synpcc7942_2339", +"name":"None" +}, +{ +"id":"Synpcc7942_2027", +"name":"None" +}, +{ +"id":"Synpcc7942_2286", +"name":"None" +}, +{ +"id":"Synpcc7942_2287", +"name":"None" +}, +{ +"id":"Synpcc7942_0082", +"name":"None" +}, +{ +"id":"Synpcc7942_1902", +"name":"None" +}, +{ +"id":"Synpcc7942_1887", +"name":"None" +}, +{ +"id":"Synpcc7942_1901", +"name":"None" +}, +{ +"id":"Synpcc7942_1903", +"name":"None" +}, +{ +"id":"Synpcc7942_1126", +"name":"None" +}, +{ +"id":"Synpcc7942_1244", +"name":"None" +}, +{ +"id":"Synpcc7942_2041", +"name":"None" +}, +{ +"id":"Synpcc7942_0580", +"name":"None" +}, +{ +"id":"Synpcc7942_1934", +"name":"None" +}, +{ +"id":"Synpcc7942_1672", +"name":"None" +}, +{ +"id":"Synpcc7942_0138", +"name":"None" +}, +{ +"id":"Synpcc7942_0344", +"name":"None" +}, +{ +"id":"Synpcc7942_0392", +"name":"None" +}, +{ +"id":"Synpcc7942_2360", +"name":"None" +}, +{ +"id":"Synpcc7942_2134", +"name":"None" +}, +{ +"id":"Synpcc7942_1963", +"name":"None" +}, +{ +"id":"Synpcc7942_0354", +"name":"None" +}, +{ +"id":"Synpcc7942_1581", +"name":"None" +}, +{ +"id":"Synpcc7942_2373", +"name":"None" +}, +{ +"id":"Synpcc7942_2236", +"name":"None" +}, +{ +"id":"Synpcc7942_1169", +"name":"None" +}, +{ +"id":"Synpcc7942_0822", +"name":"None" +}, +{ +"id":"Synpcc7942_1305", +"name":"None" +}, +{ +"id":"Synpcc7942_0445", +"name":"None" +}, +{ +"id":"Synpcc7942_0821", +"name":"None" +}, +{ +"id":"Synpcc7942_0432", +"name":"None" +}, +{ +"id":"Synpcc7942_2611", +"name":"" +}, +{ +"id":"Synpcc7942_0946", +"name":"" +}, +{ +"id":"Synpcc7942_0135", +"name":"" +}, +{ +"id":"Synpcc7942_1005", +"name":"" +}, +{ +"id":"Synpcc7942_0240", +"name":"" +}, +{ +"id":"Synpcc7942_1049", +"name":"" +}, +{ +"id":"Synpcc7942_1048", +"name":"" +}, +{ +"id":"Synpcc7942_1055", +"name":"" +}, +{ +"id":"Synpcc7942_1052", +"name":"" +}, +{ +"id":"Synpcc7942_1053", +"name":"" +}, +{ +"id":"Synpcc7942_1050", +"name":"" +}, +{ +"id":"Synpcc7942_1051", +"name":"" +}, +{ +"id":"Synpcc7942_1047", +"name":"" +}, +{ +"id":"Synpcc7942_2030", +"name":"" +}, +{ +"id":"Synpcc7942_0328", +"name":"" +}, +{ +"id":"Synpcc7942_0327", +"name":"" +}, +{ +"id":"Synpcc7942_0326", +"name":"" +}, +{ +"id":"Synpcc7942_0325", +"name":"" +}, +{ +"id":"Synpcc7942_0284", +"name":"" +}, +{ +"id":"Synpcc7942_0285", +"name":"" +}, +{ +"id":"Synpcc7942_1425", +"name":"" +}, +{ +"id":"Synpcc7942_1424", +"name":"" +}, +{ +"id":"Synpcc7942_1422", +"name":"" +}, +{ +"id":"Synpcc7942_1421", +"name":"" +}, +{ +"id":"Synpcc7942_1398", +"name":"" +}, +{ +"id":"Synpcc7942_0466", +"name":"" +}, +{ +"id":"Synpcc7942_2151", +"name":"" +}, +{ +"id":"Synpcc7942_0246", +"name":"" +}, +{ +"id":"Synpcc7942_0247", +"name":"" +}, +{ +"id":"Synpcc7942_0248", +"name":"" +}, +{ +"id":"Synpcc7942_1407", +"name":"" +}, +{ +"id":"Synpcc7942_2271", +"name":"" +}, +{ +"id":"Synpcc7942_2285", +"name":"" +}, +{ +"id":"Synpcc7942_0459", +"name":"" +}, +{ +"id":"Synpcc7942_0458", +"name":"" +}, +{ +"id":"Synpcc7942_B2624", +"name":"" +}, +{ +"id":"Synpcc7942_1135", +"name":"" +}, +{ +"id":"Synpcc7942_2390", +"name":"" +}, +{ +"id":"Synpcc7942_2111", +"name":"" +}, +{ +"id":"Synpcc7942_2464", +"name":"" +}, +{ +"id":"Synpcc7942_0440", +"name":"" +}, +{ +"id":"Synpcc7942_1093", +"name":"" +}, +{ +"id":"Synpcc7942_2577", +"name":"" +}, +{ +"id":"Synpcc7942_0912", +"name":"" +}, +{ +"id":"Synpcc7942_0405", +"name":"" +}, +{ +"id":"Synpcc7942_0194", +"name":"" +}, +{ +"id":"Synpcc7942_0001", +"name":"" +}, +{ +"id":"Synpcc7942_0094", +"name":"" +}, +{ +"id":"Synpcc7942_0570", +"name":"" +}, +{ +"id":"Synpcc7942_2199", +"name":"" +}, +{ +"id":"Synpcc7942_2610", +"name":"" +}, +{ +"id":"Synpcc7942_0397", +"name":"" +}, +{ +"id":"Synpcc7942_1470", +"name":"" +}, +{ +"id":"Synpcc7942_1471", +"name":"" +}, +{ +"id":"Synpcc7942_1472", +"name":"" +}, +{ +"id":"Synpcc7942_1473", +"name":"" +}, +{ +"id":"Synpcc7942_1474", +"name":"" +}, +{ +"id":"Synpcc7942_2359", +"name":"" +}, +{ +"id":"Synpcc7942_1469", +"name":"" +}, +{ +"id":"Synpcc7942_1468", +"name":"" +}, +{ +"id":"Synpcc7942_1257", +"name":"" +}, +{ +"id":"Synpcc7942_1576", +"name":"" +}, +{ +"id":"Synpcc7942_1588", +"name":"" +}, +{ +"id":"Synpcc7942_1530", +"name":"" +}, +{ +"id":"Synpcc7942_1233", +"name":"" +}, +{ +"id":"Synpcc7942_2387", +"name":"" +}, +{ +"id":"Synpcc7942_0546", +"name":"" +}, +{ +"id":"Synpcc7942_2394", +"name":"" +}, +{ +"id":"Synpcc7942_1264", +"name":"" +}, +{ +"id":"Synpcc7942_0811", +"name":"" +}, +{ +"id":"Synpcc7942_0307", +"name":"" +}, +{ +"id":"Synpcc7942_2186", +"name":"" +}, +{ +"id":"Synpcc7942_0600", +"name":"" +}, +{ +"id":"Synpcc7942_0780", +"name":"" +}, +{ +"id":"Synpcc7942_1111", +"name":"" +}, +{ +"id":"Synpcc7942_1121", +"name":"" +}, +{ +"id":"Synpcc7942_0485", +"name":"" +}, +{ +"id":"Synpcc7942_0991", +"name":"" +}, +{ +"id":"Synpcc7942_0567", +"name":"" +}, +{ +"id":"Synpcc7942_1282", +"name":"" +}, +{ +"id":"Synpcc7942_1283", +"name":"" +}, +{ +"id":"Synpcc7942_1284", +"name":"" +}, +{ +"id":"Synpcc7942_1285", +"name":"" +}, +{ +"id":"Synpcc7942_1286", +"name":"" +}, +{ +"id":"Synpcc7942_1211", +"name":"" +}, +{ +"id":"Synpcc7942_1189", +"name":"" +} +], +"id":"iJB785", +"compartments":{ +"a":"", +"c":"", +"e":"", +"m":"", +"p":"", +"u":"", +"x":"" +}, +"version":"1" +} \ No newline at end of file diff --git a/syn_elong/media.py b/syn_elong/media.py index 81403e4..4139490 100644 --- a/syn_elong/media.py +++ b/syn_elong/media.py @@ -5,12 +5,12 @@ m9_path = path.joinpath('data', 'media', 'min_media_all_wavelength.csv').__str__() -m9_media = pd.read_csv(m9_path) +min_media = pd.read_csv(m9_path) -m9_media = m9_media.set_index('exchange')['uptake'].to_dict() +min_media = min_media.set_index('exchange')['uptake'].to_dict() syn_min_media_path = path.joinpath('data', 'media', 'syn_min_media.csv').__str__() syn_min_media = pd.read_csv(syn_min_media_path) -syn_min_media = syn_min_media.set_index('exchange')['uptake'].to_dict() +syn_min_media = syn_min_media.set_index('exchange')['uptake'].to_dict() \ No newline at end of file diff --git a/syn_elong/model_changes.py b/syn_elong/model_changes.py index f62ede9..f189d41 100644 --- a/syn_elong/model_changes.py +++ b/syn_elong/model_changes.py @@ -13,9 +13,9 @@ import cobra import os import logging - +from cobra import Reaction, Metabolite from concerto.utils.biolog_help import add_biolog_exchanges, universal_model - +from syn_elong.updates_from_ims837 import update_5 log = logging.getLogger() _file_path = os.path.dirname(__file__) @@ -23,6 +23,7 @@ s_model_path = os.path.join(_file_path, starting_model_f_name) starting_model = cobra.io.read_sbml_model(s_model_path) + # starting_model = cobra.io.load_json_model('iJB792.json') starting_model.id = "syn_elong" @@ -73,9 +74,12 @@ def update_3(model): reactions_to_add.add(reaction.copy()) model.add_reactions(reactions_to_add) model.remove_reactions([universal_model.reactions.get_by_id('ORNTA')]) + + return model + def update_4(model): # adding reactions from gapfilling reaction_ids = { @@ -91,13 +95,14 @@ def update_4(model): return model +def update_model(model, update_func): + return update_func(model) + def process_model_steps(): - # Fix compartments - model = update_1(starting_model) - model = update_2(model) - model = update_3(model) - # don't add these reactions yet - # model = update_4(model) + model = starting_model + update_funcs = [update_1, update_2, update_3, update_5] + for update_func in update_funcs: + model = update_model(model, update_func) write_model(model) @@ -109,4 +114,4 @@ def process_model_steps(): *model_paths, '--filename', os.path.join(_file_path, 'model_differences.html') ] - ) + ) \ No newline at end of file diff --git a/syn_elong/notebooks/add_reactions_for_essential_improvement_with_gapfill.ipynb b/syn_elong/notebooks/add_reactions_for_essential_improvement_with_gapfill.ipynb index 9295584..efd2744 100644 --- a/syn_elong/notebooks/add_reactions_for_essential_improvement_with_gapfill.ipynb +++ b/syn_elong/notebooks/add_reactions_for_essential_improvement_with_gapfill.ipynb @@ -4,7 +4,11 @@ "cell_type": "code", "execution_count": 1, "id": "cf8248f8", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "name": "stdout", @@ -19,26 +23,33 @@ "source": [ "from concerto.utils import universal_model\n", "from cobra.flux_analysis.gapfilling import gapfill\n", - "from memote.experimental.config import ExperimentConfiguration\n", "from concerto.utils.gene_essentiality import create_ge_confusion_matrix\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "a29b5793", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "from syn_elong import model, exp_file_path as syn_pathfrom\n", - "from syn_elong.media import m9_media, syn_min_media" + "from syn_elong.media import m9_media" ] }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 4, "id": "99f803b2", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "import matplotlib.pyplot as plt" @@ -48,7 +59,11 @@ "cell_type": "code", "execution_count": 3, "id": "b2311be1", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "model.medium = m9_media" @@ -56,16 +71,18 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 5, "id": "f522ce3f", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "data": { - "image/png": "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x1lZWYqKivLudAAAAL/idrz07NlTr7/+epn7X3/9dfXs2dMrQwEAAJTF7Xh54okntHTpUt16661at26djh49qqNHjyotLU39+/fXsmXL9MQTT/hyVgAAAPc/Kv2HP/xBCxYs0IgRI5ScnOyyr0aNGpo/f77++Mc/en1AAACAs3l8b6OCggJ98cUXysrKkiS1atVKV199tapVq+aTAS8E9zYCKi/ubQRUYr66t1HVqlXVr18/j+cBAADwBrfXvAAAAFQExAsAADAK8QIAAIxCvAAAAKO4tWD32LFjbr9heHj4BQ8DAADwW9yKl8jISNlsNrfesKSk5HcNBAAAcD5uxUtKSorz+927d2vs2LEaOnSounXrJklas2aNZs+eraSkJN9MCQAA8F8eX6SuV69eGjFihAYOHOiy/f3339eMGTO0YsUKb853QaydG/w9AgAfub9lgr9HAOAj0y33lql4vGB3zZo1io2NLbU9NjZWaWlpnr4dAACARzyOl0aNGumtt94qtX3mzJlq1KiRV4YCAAAoi8e3B5g8ebL69++vJUuWqGvXrpKktLQ0ZWVlaeHChV4fEAAA4GweH3lJTEzU9u3bdcMNNygvL095eXm64YYbtH37diUmJvpiRgAAACePF+yagAW7QOXFgl2g8vLZgl1JWrVqle644w51795de/fulSS99957Sk1NvZC3AwAAcJvH8bJw4UJdc801Cg0N1YYNG1RUVCRJOnr0qCZMmOD1AQEAAM7mcbz89a9/1fTp0/XWW28pKCjIuT0uLk4bNnC6BgAA+JbH8ZKZmamePXuW2h4REaGff/7ZGzMBAACUyeN4qVu3rnbs2FFqe2pqqpo3b+6VoQAAAMricbzcfffdGjVqlNauXSubzaZ9+/Zp7ty5GjNmjO6//35fzAgAAODk8UXqxo4dK4fDoV69eqmgoEA9e/aU3W7XmDFj9NBDD/liRgAAAKcLvs7LqVOntGPHDuXn56tdu3YKCwvz9mwXjOu8AJUX13kBKi+fXedl2LBhOn78uIKDg9WuXTt16dJFYWFhOnHihIYNG+bxoAAAAJ7wOF5mz56twsLCUtsLCws1Z84crwwFAABQFrfXvBw7dkyWZcmyLB0/flwhISHOfSUlJfrss89Uu3ZtnwwJAADwC7fjJTIyUjabTTabTTExMaX222w2Pf/8814dDgAA4NfcjpeUlBRZlqUrr7xSCxcuVFRUlHNfcHCwmjRpovr16/tkSAAAgF+4HS/x8fGSpF27dqlx48ay2Ww+GwoAAKAsHi/Y/fLLL/Xhhx+W2v7BBx9o9uzZXhkKAACgLB7HS1JSkqKjo0ttr127NneVBgAAPudxvGRnZ6tZs2altjdp0kTZ2dleGQoAAKAsHsdL7dq1tXnz5lLb09PTVbNmTa8MBQAAUBaP42XgwIF6+OGHlZKSopKSEpWUlOjLL7/UqFGjdPvtt/tiRgAAACePb8z44osvavfu3erVq5cCA8+83OFwaPDgwax5AQAAPnfBN2bcvn270tPTFRoaqg4dOqhJkybenu2CcWNGoPLixoxA5eXujRk9PvLyi5iYmHNeaRcAAMCX3IqXxx57TC+++KKqVaumxx577LzPnTRpklcGAwAAOBe34mXjxo06ffq08/uycNVdAADga27FS0pKyjm/BwAAKG8ef1QaAADAn9w68nLzzTe7/YbJyckXPAwAAMBvcevIS0REhPMrPDxcy5cv1/r16537v/32Wy1fvlwRERE+GxQAAEBy88jLO++84/z+iSee0G233abp06crICBAklRSUqIHHnhA4eHhvpkSAADgvzy+SF2tWrWUmpqq1q1bu2zPzMxU9+7ddfjwYa8OeCG4SB1QeXGROqDycvcidR4v2C0uLta2bdtKbd+2bZscDoenbwcAAOARj6+we9ddd2n48OHauXOnunTpIklau3atXnrpJd11111eHxAAAOBsHsfLK6+8orp16+rVV19Vbm6uJKlevXp6/PHHNXr0aK8PCAAAcLYLvjGjJB07dubcVEVbqMuaF6DyYs0LUHn5bM2LdGbdy7JlyzRv3jznLQH27dun/Pz8C3k7AAAAt3l82ujHH3/Utddeq+zsbBUVFal3796qXr26Jk6cqKKiIk2fPt0XcwIAAEi6gCMvo0aNUmxsrI4cOaLQ0FDn9n79+mn58uVeHQ4AAODXPD7ysmrVKn399dcKDg522d60aVPt3bvXa4MBAACci8dHXhwOh0pKSkpt37Nnj6pXr+6VoQAAAMricbxcffXVmjJlivOxzWZTfn6+xo0bp8TERG/OBgAAUIrHH5XOycnRtddeK8uylJWVpdjYWGVlZSk6OlorV65U7dq1fTWr2/ioNFB58VFpoPJy96PSHq95adSokdLT07Vg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\n", - "text/plain": [ - "
" - ] + "text/plain": "
", + "image/png": "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i8IBFRcXhQMqMCcvCufSFWzz8vKUnp6urKwshYSEqH379goICLjWEcsNsQJUXMQKUIGV9xVsJcnf31/dunW7pnkAAACuhVMLbAEAADyFWAEAAEYjVgAAgNGIFQAAYDSnFtjGxsbKYrH84j5paWnlMhAAAMCPORUrTz31lCRp//79SktL06BBg1SnTh2dOnVKc+bMUYcOHdw6JAAAqLxcus7KAw88oEmTJql+/fqOx7755hs99thjWrNmjVsGdMql7z333gDcami12p4eAYCbzLCfd2o/l9asHD9+XHXq1CnzWGhoqM6cOePKywAAADjNpVi544479PLLL6uwsFCSlJ+frxdffFGRkZFuGQ4AAMCl00BHjhzRkCFDdOrUKQUGBio3N1e33nqrZs2apZtvvtmdc/4yTgMBFRangYCKy9nTQC7FiiQVFxdr9+7dysrKUlhYmJo1ayYvLw9/A5pYASosYgWouNyyZkWSbDabvvvuO507d06///3vdfDgQZeHAwAAcJZLNzI8duyYHn74YRUVFen8+fNq166devTooWnTpunee+9114wAAKASc+nIyvjx45WQkKANGzbI29tbt956q8aNG6cpU6a4az4AAFDJuRQre/bs0aOPPiqLxeK4om23bt10/PhxtwwHAADgUqz4+/vr3LlzZR47e/asbrzxxnIdCgAAoJRLsRIfH6+kpCRt2bJFNptNe/fu1XPPPacuXbq4az4AAFDJubTA9oknnlBBQYGSkpKUn5+vP/3pT3rooYeUlJTkrvkAAEAl59J1Vs6ePauaNWtKknJychQYGCiLxaL//Oc/atCggduGvCquswJUWFxnBai43HKdlbi4OMfPQUFBslgsKikpUWJiomvTAQAAOOmqp4G++eYbPfLII7Lb7crPz1eHDh3KbC8oKFB4eLjbBgQAAJXbVWOlbt26euGFF5Sbm6vk5OQr1qf4+vqqRYsWbhsQAABUbk4tsC29Om2tWrXUuHFj+fn5yWq16siRIwoMDFRgYKBbhwQAAJWXS2tWbDab2rVrpy+++EKStGLFCsXFxWnv3r1uGQ4AAMClbwP16NFDvXv3Vs+ePR2Pvf/++1qyZIkWL17slgGdwreBgAqLbwMBFZdbvg309ddflwkVSUpISNChQ4dceRkAAACnuRQrwcHBV5zy2bdvn2666aZyHQoAAKCUS1ew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1s3xWHFxsWbPnq2hQ4dKksLDwx3batasqZo1a7r8Pna7XZMmTdL69esVFBSkJk2aqKioyKm1JiEhIVdEwJw5cxw/x8bGymazldm/VHZ2tmrXrl3mubVq1VJBQYGys7PVqVMnJSUlqbCwUBkZGVq1apVSU1O1f/9+paWlKS4u7mfnCggIcPxstVol/fANKQDljyMrQCV1+fJlLV26VOPHj9fy5csdf6ZPn64NGzY4/uH99ttvHc85dOiQJk+efMVrValSRZLKLEL98QLcV199Vd9++63S09O1evVqTZo0SdWqVXNqzri4OO3atUuHDx92an+LxeL4OTw8XMeOHSuz/dixY7JarbrxxhvVtGlTeXl5afHixbr55psVGhqq1q1ba926ddq5c6c6duzo1HsCcC9iBaikVq5cKYvFovj4eIWFhTn+tG3bVg0bNlRqaqqio6OVkpKi8+fP68KFC3rllVccRzmsVqtjYWtwcLBuvPFGrVq1Sna7Xfv379fq1asd73XhwgX5+vqqSpUqunz5smbPnq2DBw869Q2b9u3bKyEhQY888ohWr16t/Px82e12HTx4UM8//7xOnz6t4ODgn3xuly5ddPjwYc2bN0+FhYU6duyYXnvtNcXHx8tqtcrLy0uxsbF64403FBMTI+mH0zvz589X48aNFRoaKkny9fWVJMfnBXB9EStAJbVo0SLFx8fLx8fnim2JiYlavny5UlJSVL16dXXu3FkdOnRQUFCQxo4dK0nq3r273n//ffXt21dWq1UvvviiPv74YzVr1kwTJ05Ur169HK83fPhwFRQUqHXr1oqNjdWePXvUrVs3HTx40KlZx40bp5EjR+q9997Tvffeq4iICA0dOlReXl764IMP1K5du598Xq1atfTmm29qzZo1at26tfr27avo6GiNHj3asU/Hjh2Vm5ur6OhoSVKbNm2Un5+vTp06OfZp2LChIiMj1aZNG23cuNGpmQGUH4vd3RcoAAAA+BU4sgIAAIxGrAAAAKMRKwAAwGjECgAAMBqxAgAAjEasAAAAoxErAADAaMQKAAAwGrECAACMRqwAAACjESsAAMBo/wsrGCE7VkEMFwAAAABJRU5ErkJggg==" }, "metadata": {}, "output_type": "display_data" @@ -73,53 +90,24 @@ ], "source": [ "results = create_ge_confusion_matrix(model, syn_pathfrom)\n", - "plt.savefig(\"before_gapfill.png\")" + "plt.savefig(\"before_gapfill_after_update.png\")" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 6, "id": "85f10cb9", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "data": { - "text/plain": [ - "array(['SYNPCC7942_RS00005', 'SYNPCC7942_RS00015', 'SYNPCC7942_RS00345',\n", - " 'SYNPCC7942_RS00575', 'SYNPCC7942_RS00685', 'SYNPCC7942_RS00790',\n", - " 'SYNPCC7942_RS00985', 'SYNPCC7942_RS01045', 'SYNPCC7942_RS01140',\n", - " 'SYNPCC7942_RS01500', 'SYNPCC7942_RS01505', 'SYNPCC7942_RS01750',\n", - " 'SYNPCC7942_RS01885', 'SYNPCC7942_RS02010', 'SYNPCC7942_RS02075',\n", - " 'SYNPCC7942_RS02165', 'SYNPCC7942_RS02185', 'SYNPCC7942_RS02255',\n", - " 'SYNPCC7942_RS13675', 'SYNPCC7942_RS02490', 'SYNPCC7942_RS02765',\n", - " 'SYNPCC7942_RS02940', 'SYNPCC7942_RS02945', 'SYNPCC7942_RS03055',\n", - " 'SYNPCC7942_RS03095', 'SYNPCC7942_RS03120', 'SYNPCC7942_RS03225',\n", - " 'SYNPCC7942_RS03355', 'SYNPCC7942_RS03380', 'SYNPCC7942_RS03485',\n", - " 'SYNPCC7942_RS03570', 'SYNPCC7942_RS04180', 'SYNPCC7942_RS04290',\n", - " 'SYNPCC7942_RS04440', 'SYNPCC7942_RS04735', 'SYNPCC7942_RS04750',\n", - " 'SYNPCC7942_RS04830', 'SYNPCC7942_RS04890', 'SYNPCC7942_RS05155',\n", - " 'SYNPCC7942_RS05285', 'SYNPCC7942_RS05330', 'SYNPCC7942_RS05635',\n", - " 'SYNPCC7942_RS05765', 'SYNPCC7942_RS13745', 'SYNPCC7942_RS06065',\n", - " 'SYNPCC7942_RS06375', 'SYNPCC7942_RS06405', 'SYNPCC7942_RS06760',\n", - " 'SYNPCC7942_RS06820', 'SYNPCC7942_RS06825', 'SYNPCC7942_RS07015',\n", - " 'SYNPCC7942_RS07410', 'Synpcc7942_1478', 'SYNPCC7942_RS08000',\n", - " 'SYNPCC7942_RS08150', 'SYNPCC7942_RS08350', 'SYNPCC7942_RS08550',\n", - " 'SYNPCC7942_RS08555', 'SYNPCC7942_RS13795', 'SYNPCC7942_RS09115',\n", - " 'SYNPCC7942_RS09235', 'SYNPCC7942_RS09260', 'SYNPCC7942_RS09540',\n", - " 'SYNPCC7942_RS09545', 'SYNPCC7942_RS09570', 'SYNPCC7942_RS09640',\n", - " 'SYNPCC7942_RS09645', 'SYNPCC7942_RS09650', 'SYNPCC7942_RS09705',\n", - " 'SYNPCC7942_RS09735', 'SYNPCC7942_RS09955', 'SYNPCC7942_RS10100',\n", - " 'SYNPCC7942_RS10105', 'SYNPCC7942_RS10110', 'SYNPCC7942_RS10140',\n", - " 'SYNPCC7942_RS10225', 'SYNPCC7942_RS10815', 'SYNPCC7942_RS10975',\n", - " 'SYNPCC7942_RS11400', 'SYNPCC7942_RS11630', 'SYNPCC7942_RS11775',\n", - " 'SYNPCC7942_RS11900', 'SYNPCC7942_RS11905', 'SYNPCC7942_RS12090',\n", - " 'SYNPCC7942_RS12325', 'SYNPCC7942_RS12420', 'SYNPCC7942_RS12425',\n", - " 'Synpcc7942_2454', 'SYNPCC7942_RS12590', 'SYNPCC7942_RS12670',\n", - " 'SYNPCC7942_RS12715', 'SYNPCC7942_RS12725', 'SYNPCC7942_RS12785',\n", - " 'SYNPCC7942_RS13245', 'SYNPCC7942_RS13310'], dtype=object)" - ] + "text/plain": "array(['SYNPCC7942_RS00005', 'SYNPCC7942_RS00015', 'SYNPCC7942_RS00345',\n 'SYNPCC7942_RS00790', 'SYNPCC7942_RS00985', 'SYNPCC7942_RS01045',\n 'SYNPCC7942_RS01140', 'SYNPCC7942_RS01500', 'SYNPCC7942_RS01505',\n 'SYNPCC7942_RS01750', 'SYNPCC7942_RS01885', 'SYNPCC7942_RS02010',\n 'SYNPCC7942_RS02165', 'SYNPCC7942_RS02185', 'SYNPCC7942_RS02255',\n 'SYNPCC7942_RS13675', 'SYNPCC7942_RS02490', 'SYNPCC7942_RS02765',\n 'SYNPCC7942_RS02940', 'SYNPCC7942_RS02945', 'SYNPCC7942_RS03055',\n 'SYNPCC7942_RS03095', 'SYNPCC7942_RS03120', 'SYNPCC7942_RS03225',\n 'SYNPCC7942_RS03355', 'SYNPCC7942_RS03380', 'SYNPCC7942_RS03485',\n 'SYNPCC7942_RS03570', 'SYNPCC7942_RS04180', 'SYNPCC7942_RS04290',\n 'SYNPCC7942_RS04440', 'SYNPCC7942_RS04750', 'SYNPCC7942_RS04830',\n 'SYNPCC7942_RS04890', 'SYNPCC7942_RS05155', 'SYNPCC7942_RS05285',\n 'SYNPCC7942_RS05330', 'SYNPCC7942_RS05635', 'SYNPCC7942_RS05765',\n 'SYNPCC7942_RS13745', 'SYNPCC7942_RS06065', 'SYNPCC7942_RS06375',\n 'SYNPCC7942_RS06820', 'SYNPCC7942_RS06825', 'SYNPCC7942_RS07015',\n 'SYNPCC7942_RS07410', 'SYNPCC7942_RS08000', 'SYNPCC7942_RS08150',\n 'SYNPCC7942_RS08350', 'SYNPCC7942_RS08550', 'SYNPCC7942_RS08555',\n 'SYNPCC7942_RS13795', 'SYNPCC7942_RS09115', 'SYNPCC7942_RS09235',\n 'SYNPCC7942_RS09260', 'SYNPCC7942_RS09540', 'SYNPCC7942_RS09545',\n 'SYNPCC7942_RS09570', 'SYNPCC7942_RS09640', 'SYNPCC7942_RS09645',\n 'SYNPCC7942_RS09650', 'SYNPCC7942_RS09735', 'SYNPCC7942_RS09955',\n 'SYNPCC7942_RS10100', 'SYNPCC7942_RS10105', 'SYNPCC7942_RS10110',\n 'SYNPCC7942_RS10140', 'SYNPCC7942_RS10225', 'SYNPCC7942_RS10815',\n 'SYNPCC7942_RS10975', 'SYNPCC7942_RS11400', 'SYNPCC7942_RS11630',\n 'SYNPCC7942_RS11775', 'SYNPCC7942_RS12090', 'Synpcc7942_2454',\n 'SYNPCC7942_RS12590', 'SYNPCC7942_RS12670', 'SYNPCC7942_RS12715',\n 'SYNPCC7942_RS12725', 'SYNPCC7942_RS12785', 'SYNPCC7942_RS13245'],\n dtype=object)" }, - "execution_count": 9, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -130,26 +118,31 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "id": "da8845c4", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n", + "is_executing": true + } + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpd869hr6d.lp\n", - "Reading time = 0.01 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmppzjhxdg4.lp\n", - "Reading time = 0.18 seconds\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpygm5g962.lp\n", + "Reading time = 0.02 seconds\n", + ": 924 rows, 2030 columns, 8354 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpaxfwz71z.lp\n", + "Reading time = 0.25 seconds\n", ": 15638 rows, 56602 columns, 243784 nonzeros\n", "SYNPCC7942_RS00005 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpb9_41qax.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpnlfrd2e3.lp\n", - "Reading time = 0.22 seconds\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmppdhgwk39.lp\n", + "Reading time = 0.01 seconds\n", + ": 924 rows, 2030 columns, 8354 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpb6rth227.lp\n", + "Reading time = 0.17 seconds\n", ": 15638 rows, 56602 columns, 243784 nonzeros\n", "---- Run 1 ----\n", "PRFGS_1\n", @@ -159,1095 +152,13 @@ "PRFGS_1\n", "---- Run 4 ----\n", "PRFGS_1\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpf7qyo1kt.lp\n", - "Reading time = 0.01 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpxfkroc52.lp\n", - "Reading time = 0.15 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS00345 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpjx5r_2nv.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpui6h6sqh.lp\n", - "Reading time = 0.24 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "GLGB\n", - "---- Run 2 ----\n", - "SUCptspp_1\n", - "---- Run 3 ----\n", - "FPRA\n", - "---- Run 4 ----\n", - "GLYOX_2\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpiqrvh2dw.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpeecuxnxt.lp\n", - "Reading time = 0.20 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS00685 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpiggdd_mk.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpce07m7db.lp\n", - "Reading time = 0.26 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "UGP_PGM_c\n", - "---- Run 2 ----\n", - "UGP_PGM_c\n", - "---- Run 3 ----\n", - "SUCptspp_1\n", - "SUCP\n", - "---- Run 4 ----\n", - "UGP_PGM_c\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmps0t1dydy.lp\n", - "Reading time = 0.01 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpcbxc_ewz.lp\n", - "Reading time = 0.23 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS00985 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpmb267qgt.lp\n", - "Reading time = 0.01 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpfrt1r3v4.lp\n", - "Reading time = 0.22 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS01045 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpqxkiqmjz.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpx3cyu_qa.lp\n", - "Reading time = 0.20 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "FASC161ACP\n", - "GLYOX_2\n", - "---- Run 2 ----\n", - "AACPS4\n", - "HDECH\n", - "---- Run 3 ----\n", - "SUCptspp_1\n", - "C161SN\n", - "---- Run 4 ----\n", - "PYDXO\n", - "PDYXPT_c\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpjfaqysup.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp1ou_8_wy.lp\n", - "Reading time = 0.22 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "FASC161ACP\n", - "GLYOX_2\n", - "---- Run 2 ----\n", - "AACPS4\n", - "HDECH\n", - "---- Run 3 ----\n", - "SUCptspp_1\n", - "C161SN\n", - "---- Run 4 ----\n", - "PYDXO\n", - "PDYXPT_c\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpyb9_do_2.lp\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpcu0_9_aa.lp\n", "Reading time = 0.01 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpnsvxys0l.lp\n", - "Reading time = 0.22 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "SADT2\n", - "---- Run 2 ----\n", - "SLFAT\n", - "---- Run 3 ----\n", - "PAPSSH\n", - "---- Run 4 ----\n", - "PAPSSH\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpgi8oauzi.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp3o06rst7.lp\n", - "Reading time = 0.23 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "FASC161ACP\n", - "GLYOX_2\n", - "---- Run 2 ----\n", - "AACPS4\n", - "HDECH\n", - "---- Run 3 ----\n", - "SUCptspp_1\n", - "C161SN\n", - "---- Run 4 ----\n", - "PYDXO\n", - "PDYXPT_c\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpox5856uf.lp\n", - "Reading time = 0.00 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp_dpplj27.lp\n", - "Reading time = 0.18 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "AHSERL2\n", - "---- Run 2 ----\n", - "AHSERL2\n", - "---- Run 3 ----\n", - "CYSTL\n", - "METB1\n", - "---- Run 4 ----\n", - "AHSERL2\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp2u204_lw.lp\n", - "Reading time = 0.01 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp9hr2dz3f.lp\n", - "Reading time = 0.21 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "CDPDAGS1819Z160\n", - "---- Run 2 ----\n", - "CDPDAGS1819Z160\n", - "---- Run 3 ----\n", - "CDPDAGS1819Z160\n", - "---- Run 4 ----\n", - "CDPDAGS1819Z160\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp9rj1oz87.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmph20dae_s.lp\n", - "Reading time = 0.20 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "FRDO\n", - "---- Run 2 ----\n", - "GLYOX_2\n", - "---- Run 3 ----\n", - "GLGB\n", - "---- Run 4 ----\n", - "SUCptspp_1\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpxcoypk1r.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp8izez315.lp\n", - "Reading time = 0.30 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "FASC161ACP\n", - "GLYOX_2\n", - "---- Run 2 ----\n", - "AACPS4\n", - "HDECH\n", - "---- Run 3 ----\n", - "SUCptspp_1\n", - "C161SN\n", - "---- Run 4 ----\n", - "PYDXO\n", - "PDYXPT_c\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp08ov00qx.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp4befp2g1.lp\n", - "Reading time = 0.22 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS02185 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpu41g80s4.lp\n", - "Reading time = 0.00 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpspi_yx6k.lp\n", - "Reading time = 0.18 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "AIRC1\n", - "---- Run 2 ----\n", - "PRAIC\n", - "---- Run 3 ----\n", - "AIRCr\n", - "---- Run 4 ----\n", - "AIRC4\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpe4h6v18s.lp\n", - "Reading time = 0.01 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp3j810nl6.lp\n", - "Reading time = 0.29 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "FASC161ACP\n", - "GLYOX_2\n", - "---- Run 2 ----\n", - "AACPS4\n", - "HDECH\n", - "---- Run 3 ----\n", - "SUCptspp_1\n", - "C161SN\n", - "---- Run 4 ----\n", - "PYDXO\n", - "PDYXPT_c\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpvln6g6i2.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp1q4ep4wn.lp\n", - "Reading time = 0.26 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS02490 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpmr2qugrh.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp1ls_53n8.lp\n", - "Reading time = 0.20 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS02765 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp05okecpi.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpbyo8cw25.lp\n", - "Reading time = 0.25 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS02940 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpyximhkge.lp\n", - "Reading time = 0.01 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmptgiw49fp.lp\n", - "Reading time = 0.22 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS02945 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp4yyxk8hg.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpjmmuhu2b.lp\n", - "Reading time = 0.23 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS03055 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp0z2dgjti.lp\n", - "Reading time = 0.01 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpz2dmf_cr.lp\n", - "Reading time = 0.24 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "GLCS2\n", - "---- Run 2 ----\n", - "GLCS2\n", - "---- Run 3 ----\n", - "GBEZY\n", - "GLYGS\n", - "---- Run 4 ----\n", - "GLCS2\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpfmt6knrc.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp_rnjwrvf.lp\n", - "Reading time = 0.18 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS03120 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpxjvz46cx.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpnjgeff15.lp\n", + ": 924 rows, 2030 columns, 8354 nonzeros\n", + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp1b2bt3z7.lp\n", "Reading time = 0.19 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS03225 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpgb6r1idt.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpvhrx1y2a.lp\n", - "Reading time = 0.21 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "FASC161ACP\n", - "GLYOX_2\n", - "---- Run 2 ----\n", - "AACPS4\n", - "HDECH\n", - "---- Run 3 ----\n", - "SUCptspp_1\n", - "C161SN\n", - "---- Run 4 ----\n", - "PYDXO\n", - "PDYXPT_c\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpmh1rnqzw.lp\n", - "Reading time = 0.01 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp27na2m8e.lp\n", - "Reading time = 0.30 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "PPND2\n", - "---- Run 2 ----\n", - "PPND2\n", - "---- Run 3 ----\n", - "AROAT\n", - "ARNO\n", - "---- Run 4 ----\n", - "PHETHPTOX3\n", - "DHMPTR\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmprq6il4gd.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpgxvscm6d.lp\n", - "Reading time = 0.24 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS03485 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp1legws4g.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp0_y85f1z.lp\n", - "Reading time = 0.19 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "FASC161ACP\n", - "GLYOX_2\n", - "---- Run 2 ----\n", - "AACPS4\n", - "HDECH\n", - "---- Run 3 ----\n", - "SUCptspp_1\n", - "C161SN\n", - "---- Run 4 ----\n", - "PYDXO\n", - "PDYXPT_c\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpz310jm0p.lp\n", - "Reading time = 0.00 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpn3n8wf0a.lp\n", - "Reading time = 0.17 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS04180 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp9fa8eq_x.lp\n", - "Reading time = 0.00 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpqzjhnety.lp\n", - "Reading time = 0.17 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "ASNTRS_1\n", - "---- Run 2 ----\n", - "ASNTRS_1\n", - "---- Run 3 ----\n", - "ASPTRA\n", - "ASPTRS2\n", - "---- Run 4 ----\n", - "ASNTRAT\n", - "ASPTRS_Asn\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpea_ukp9b.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpys0w7h3m.lp\n", - "Reading time = 0.17 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS04440 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpds4l9bje.lp\n", - "Reading time = 0.03 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmppld9aqit.lp\n", - "Reading time = 0.17 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "FRDO\n", - "---- Run 2 ----\n", - "GLYOX_2\n", - "---- Run 3 ----\n", - "GLGB\n", - "---- Run 4 ----\n", - "SUCptspp_1\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpe6lakuvn.lp\n", - "Reading time = 0.01 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpefny1d0c.lp\n", - "Reading time = 0.17 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS04750 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp_pjkr9pw.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmph6vz7brs.lp\n", - "Reading time = 0.31 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "PAPSSH\n", - "---- Run 2 ----\n", - "APSR\n", - "---- Run 3 ----\n", - "APSR\n", - "---- Run 4 ----\n", - "PAPSSH\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp6w1iuzt4.lp\n", - "Reading time = 0.03 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp62yh4ezu.lp\n", - "Reading time = 0.16 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS04890 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp_4lb5tix.lp\n", - "Reading time = 0.01 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp6yuu5u5q.lp\n", - "Reading time = 0.17 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS05155 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp9c12ekzs.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpvy8dr0_n.lp\n", - "Reading time = 0.18 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "ILETA2\n", - "aratyr1\n", - "---- Run 2 ----\n", - "LEUTAi\n", - "araphe2\n", - "---- Run 3 ----\n", - "araphe1\n", - "aratyr2\n", - "---- Run 4 ----\n", - "aratry1\n", - "aratry2\n", - "aratyr4\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpxamhcto8.lp\n", - "Reading time = 0.01 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpbkl30chw.lp\n", - "Reading time = 0.17 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "FASC161ACP\n", - "GLYOX_2\n", - "---- Run 2 ----\n", - "AACPS4\n", - "HDECH\n", - "---- Run 3 ----\n", - "SUCptspp_1\n", - "C161SN\n", - "---- Run 4 ----\n", - "PYDXO\n", - "PDYXPT_c\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpra1ea212.lp\n", - "Reading time = 0.01 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp46b2lj_q.lp\n", - "Reading time = 0.17 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS05635 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp3rbgbc_b.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp1clxtp7u.lp\n", - "Reading time = 0.18 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS05765 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp_q8gkhqd.lp\n", - "Reading time = 0.01 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpcm6p4fy2.lp\n", - "Reading time = 0.18 seconds\n", ": 15638 rows, 56602 columns, 243784 nonzeros\n" ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "---- Run 1 ----\n", - "FASC161ACP\n", - "GLYOX_2\n", - "---- Run 2 ----\n", - "AACPS4\n", - "HDECH\n", - "---- Run 3 ----\n", - "SUCptspp_1\n", - "C161SN\n", - "---- Run 4 ----\n", - "PYDXO\n", - "PDYXPT_c\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp7rn928k_.lp\n", - "Reading time = 0.01 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpgcs5t9ba.lp\n", - "Reading time = 0.18 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS06065 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpgtdae56r.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp1vxrsqwh.lp\n", - "Reading time = 0.17 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS06375 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpzddleflb.lp\n", - "Reading time = 0.01 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpj23q4y8z.lp\n", - "Reading time = 0.18 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "FRDO\n", - "---- Run 2 ----\n", - "GLYOX_2\n", - "---- Run 3 ----\n", - "GLGB\n", - "---- Run 4 ----\n", - "SUCptspp_1\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpchl1hkr8.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpfre8hvcl.lp\n", - "Reading time = 0.19 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "FRDO\n", - "---- Run 2 ----\n", - "GLYOX_2\n", - "---- Run 3 ----\n", - "GLGB\n", - "---- Run 4 ----\n", - "SUCptspp_1\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpj5a6uvou.lp\n", - "Reading time = 0.01 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp4_2t3ehz.lp\n", - "Reading time = 0.18 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS06820 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpbi0bqtyd.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpm_ud1k1u.lp\n", - "Reading time = 0.19 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS06825 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp06v25xjo.lp\n", - "Reading time = 0.01 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpj_598vp2.lp\n", - "Reading time = 0.20 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS07015 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpu0_ghjyg.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp04j5n02f.lp\n", - "Reading time = 0.20 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS07410 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpxec50ez4.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpjt_2ximt.lp\n", - "Reading time = 0.19 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "GLGB\n", - "---- Run 2 ----\n", - "SUCptspp_1\n", - "---- Run 3 ----\n", - "FPRA\n", - "---- Run 4 ----\n", - "GLYOX_2\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp0yunezw1.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmplmwnz_w9.lp\n", - "Reading time = 0.21 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS08000 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpygi4dpuw.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpd8vq4mde.lp\n", - "Reading time = 0.26 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS08150 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp6vqiexf7.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpcky1mgcy.lp\n", - "Reading time = 0.26 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "FASC161ACP\n", - "GLYOX_2\n", - "---- Run 2 ----\n", - "AACPS4\n", - "HDECH\n", - "---- Run 3 ----\n", - "SUCptspp_1\n", - "C161SN\n", - "---- Run 4 ----\n", - "PYDXO\n", - "PDYXPT_c\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpljry38_f.lp\n", - "Reading time = 0.01 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp2u88snhl.lp\n", - "Reading time = 0.20 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "FASC161ACP\n", - "GLYOX_2\n", - "---- Run 2 ----\n", - "AACPS4\n", - "HDECH\n", - "---- Run 3 ----\n", - "SUCptspp_1\n", - "C161SN\n", - "---- Run 4 ----\n", - "PYDXO\n", - "PDYXPT_c\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpwvt95zgt.lp\n", - "Reading time = 0.04 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpbdbik0u3.lp\n", - "Reading time = 0.23 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "FASC161ACP\n", - "GLYOX_2\n", - "---- Run 2 ----\n", - "AACPS4\n", - "HDECH\n", - "---- Run 3 ----\n", - "SUCptspp_1\n", - "C161SN\n", - "---- Run 4 ----\n", - "PYDXO\n", - "PDYXPT_c\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpu4_m25ur.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp335woz7o.lp\n", - "Reading time = 0.27 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "FASC161ACP\n", - "GLYOX_2\n", - "---- Run 2 ----\n", - "AACPS4\n", - "HDECH\n", - "---- Run 3 ----\n", - "SUCptspp_1\n", - "C161SN\n", - "---- Run 4 ----\n", - "PYDXO\n", - "PDYXPT_c\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp63t4l5o2.lp\n", - "Reading time = 0.03 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpwnna3k5g.lp\n", - "Reading time = 0.21 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS09115 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp4dho1dy4.lp\n", - "Reading time = 0.01 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpy1urh5t1.lp\n", - "Reading time = 0.23 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS09235 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpy8ac9_75.lp\n", - "Reading time = 0.03 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpcgph0d3l.lp\n", - "Reading time = 0.23 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "PGPS1819Z160\n", - "---- Run 2 ----\n", - "PGPS1819Z160\n", - "---- Run 3 ----\n", - "PGPS1819Z160\n", - "---- Run 4 ----\n", - "PGPS1819Z160\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmphvk5uifa.lp\n", - "Reading time = 0.01 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp9wyaai62.lp\n", - "Reading time = 0.30 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS09540 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpyjn9_2kg.lp\n", - "Reading time = 0.03 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpdkv9esrd.lp\n", - "Reading time = 0.21 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "FASC161ACP\n", - "GLYOX_2\n", - "---- Run 2 ----\n", - "AACPS4\n", - "HDECH\n", - "---- Run 3 ----\n", - "SUCptspp_1\n", - "C161SN\n", - "---- Run 4 ----\n", - "PYDXO\n", - "PDYXPT_c\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp18to3pf_.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpfenoqxkn.lp\n", - "Reading time = 0.23 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS09570 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp9arlzbfl.lp\n", - "Reading time = 0.03 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpjx_gud2l.lp\n", - "Reading time = 0.23 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS09640 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpaq78dm4u.lp\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpgqqj0nqo.lp\n", - "Reading time = 0.28 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS09645 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpxd8o_ha3.lp\n", - "Reading time = 0.03 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp1rt6cm62.lp\n", - "Reading time = 0.31 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS09650 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpt5n7zl49.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp72pzmulv.lp\n", - "Reading time = 0.27 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "FRDO\n", - "---- Run 2 ----\n", - "GLYOX_2\n", - "---- Run 3 ----\n", - "GLGB\n", - "---- Run 4 ----\n", - "SUCptspp_1\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp_77df3kc.lp\n", - "Reading time = 0.03 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpzebq_m9n.lp\n", - "Reading time = 0.22 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS09735 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpv_lb54v7.lp\n", - "Reading time = 0.03 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpkb2l07wc.lp\n", - "Reading time = 0.20 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "FASC161ACP\n", - "GLYOX_2\n", - "---- Run 2 ----\n", - "AACPS4\n", - "HDECH\n", - "---- Run 3 ----\n", - "SUCptspp_1\n", - "C161SN\n", - "---- Run 4 ----\n", - "PYDXO\n", - "PDYXPT_c\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp20pj382e.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpub8f0wh1.lp\n", - "Reading time = 0.26 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS10100 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp5mzi8bg8.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpiqktmc1l.lp\n", - "Reading time = 0.29 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS10105 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpbvzcukps.lp\n", - "Reading time = 0.03 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpmlh1b633.lp\n", - "Reading time = 0.34 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS10110 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpi_wdyfbq.lp\n", - "Reading time = 0.03 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp7pzk7t62.lp\n", - "Reading time = 0.26 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS10140 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmptnqapeo7.lp\n", - "Reading time = 0.03 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpc5tlqdxn.lp\n", - "Reading time = 0.28 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "FASC161ACP\n", - "GLYOX_2\n", - "---- Run 2 ----\n", - "AACPS4\n", - "HDECH\n", - "---- Run 3 ----\n", - "SUCptspp_1\n", - "C161SN\n", - "---- Run 4 ----\n", - "PYDXO\n", - "PDYXPT_c\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpihdp5twj.lp\n", - "Reading time = 0.01 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpuefyn35i.lp\n", - "Reading time = 0.35 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "ACGAM6PS\n", - "UAGDP_c\n", - "---- Run 2 ----\n", - "ACGAM6PS\n", - "ACGAMPM\n", - "---- Run 3 ----\n", - "ACGAM6PS\n", - "ACGAMPM\n", - "---- Run 4 ----\n", - "ACGAM6PS\n", - "UAGDP_c\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpwc65q9em.lp\n", - "Reading time = 0.03 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpk0m4nhz9.lp\n", - "Reading time = 0.27 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS10975 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpggilju08.lp\n", - "Reading time = 0.04 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmptogb3538.lp\n", - "Reading time = 0.28 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "FASC161ACP\n", - "GLYOX_2\n", - "---- Run 2 ----\n", - "AACPS4\n", - "HDECH\n", - "---- Run 3 ----\n", - "SUCptspp_1\n", - "C161SN\n", - "---- Run 4 ----\n", - "PYDXO\n", - "PDYXPT_c\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp9u6_afp9.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpoioob8lk.lp\n", - "Reading time = 0.33 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS11630 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpvwaiydyo.lp\n", - "Reading time = 0.03 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpbpq0ovlr.lp\n", - "Reading time = 0.31 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "ATPSu\n", - "---- Run 2 ----\n", - "ATPSu\n", - "---- Run 3 ----\n", - "FASC161ACP\n", - "GLGB\n", - "---- Run 4 ----\n", - "SUCptspp_1\n", - "C161SN\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpjwg9y2a4.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpn8slkt76.lp\n", - "Reading time = 0.31 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "FRDO\n", - "---- Run 2 ----\n", - "GLYOX_2\n", - "---- Run 3 ----\n", - "GLGB\n", - "---- Run 4 ----\n", - "SUCptspp_1\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpy1m9vl5h.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp5t6pyp6q.lp\n", - "Reading time = 0.28 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "FRDO\n", - "---- Run 2 ----\n", - "GLYOX_2\n", - "---- Run 3 ----\n", - "GLGB\n", - "---- Run 4 ----\n", - "SUCptspp_1\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp2pvcgnzt.lp\n", - "Reading time = 0.03 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp3ng00qqu.lp\n", - "Reading time = 0.45 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS12090 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp3d0558dr.lp\n", - "Reading time = 0.03 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpcv0hw0vr.lp\n", - "Reading time = 0.32 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "GLGB\n", - "---- Run 2 ----\n", - "SUCptspp_1\n", - "---- Run 3 ----\n", - "FPRA\n", - "---- Run 4 ----\n", - "GLYOX_2\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp6qenda_1.lp\n", - "Reading time = 0.03 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpb7f80op8.lp\n", - "Reading time = 0.36 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "P5CCD\n", - "---- Run 2 ----\n", - "PIt8\n", - "---- Run 3 ----\n", - "PIabc\n", - "---- Run 4 ----\n", - "r2136\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp8nti9u5r.lp\n", - "Reading time = 0.03 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp7ajsbsfp.lp\n", - "Reading time = 0.32 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "P5CCD\n", - "---- Run 2 ----\n", - "PIt8\n", - "---- Run 3 ----\n", - "PIabc\n", - "---- Run 4 ----\n", - "r2136\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpmiagqdxk.lp\n", - "Reading time = 0.04 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpxplsux0w.lp\n", - "Reading time = 0.29 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "Synpcc7942_2454 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp_d3541ky.lp\n", - "Reading time = 0.03 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpkj0tm18s.lp\n", - "Reading time = 0.40 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "FASC161ACP\n", - "GLYOX_2\n", - "---- Run 2 ----\n", - "AACPS4\n", - "HDECH\n", - "---- Run 3 ----\n", - "SUCptspp_1\n", - "C161SN\n", - "---- Run 4 ----\n", - "PYDXO\n", - "PDYXPT_c\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpj12z2ec3.lp\n", - "Reading time = 0.03 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp5ce783ww.lp\n", - "Reading time = 0.31 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS12670 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp_wv86lhq.lp\n", - "Reading time = 0.02 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmps9wgjwdu.lp\n", - "Reading time = 0.33 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "APSR\n", - "---- Run 2 ----\n", - "APSR\n", - "---- Run 3 ----\n", - "GRXR\n", - "APSR2\n", - "---- Run 4 ----\n", - "APSR\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpudd7tlwb.lp\n", - "Reading time = 0.03 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpb4t77jve.lp\n", - "Reading time = 0.29 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS12725 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpnqxw6sjp.lp\n", - "Reading time = 0.04 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpacx9tf3v.lp\n", - "Reading time = 0.32 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "GLCS1\n", - "---- Run 2 ----\n", - "GLCS2\n", - "---- Run 3 ----\n", - "AMYL2\n", - "---- Run 4 ----\n", - "AMYL2\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpv5aekg2i.lp\n", - "Reading time = 0.03 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp6ez9bhu6.lp\n", - "Reading time = 0.31 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "SYNPCC7942_RS13245 no go\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp_19cm43g.lp\n", - "Reading time = 0.03 seconds\n", - ": 884 rows, 1936 columns, 7886 nonzeros\n", - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmplid1nta6.lp\n", - "Reading time = 0.29 seconds\n", - ": 15638 rows, 56602 columns, 243784 nonzeros\n", - "---- Run 1 ----\n", - "GLYOX_2\n", - "---- Run 2 ----\n", - "PGLYCP_1\n", - "---- Run 3 ----\n", - "SUCptspp_1\n", - "---- Run 4 ----\n", - "GLGB\n" - ] } ], "source": [ @@ -1279,364 +190,28 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "id": "29167a02", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[{'SYNPCC7942_RS00005': None},\n", - " {'SYNPCC7942_RS00015': [[],\n", - " [],\n", - " [],\n", - " []]},\n", - " {'SYNPCC7942_RS00345': None},\n", - " {'SYNPCC7942_RS00575': [[],\n", - " [],\n", - " [],\n", - " []]},\n", - " {'SYNPCC7942_RS00685': None},\n", - " {'SYNPCC7942_RS00790': [[],\n", - " [],\n", - " [, ],\n", - " []]},\n", - " {'SYNPCC7942_RS00985': None},\n", - " {'SYNPCC7942_RS01045': None},\n", - " {'SYNPCC7942_RS01140': [[,\n", - " ],\n", - " [, ],\n", - " [,\n", - " ],\n", - " [, ]]},\n", - " {'SYNPCC7942_RS01500': [[,\n", - " ],\n", - " [, ],\n", - " [,\n", - " ],\n", - " [, ]]},\n", - " {'SYNPCC7942_RS01505': [[],\n", - " [],\n", - " [],\n", - " []]},\n", - " {'SYNPCC7942_RS01750': [[,\n", - " ],\n", - " [, ],\n", - " [,\n", - " ],\n", - " [, ]]},\n", - " {'SYNPCC7942_RS01885': [[],\n", - " [],\n", - " [, ],\n", - " []]},\n", - " {'SYNPCC7942_RS02010': [[],\n", - " [],\n", - " [],\n", - " []]},\n", - " {'SYNPCC7942_RS02075': [[],\n", - " [],\n", - " [],\n", - " []]},\n", - " {'SYNPCC7942_RS02165': [[,\n", - " ],\n", - " [, ],\n", - " [,\n", - " ],\n", - " [, ]]},\n", - " {'SYNPCC7942_RS02185': None},\n", - " {'SYNPCC7942_RS02255': [[],\n", - " [],\n", - " [],\n", - " []]},\n", - " {'SYNPCC7942_RS13675': [[,\n", - " ],\n", - " [, ],\n", - " [,\n", - " ],\n", - " [, ]]},\n", - " {'SYNPCC7942_RS02490': None},\n", - " {'SYNPCC7942_RS02765': None},\n", - " {'SYNPCC7942_RS02940': None},\n", - " {'SYNPCC7942_RS02945': None},\n", - " {'SYNPCC7942_RS03055': None},\n", - " {'SYNPCC7942_RS03095': [[],\n", - " [],\n", - " [, ],\n", - " []]},\n", - " {'SYNPCC7942_RS03120': None},\n", - " {'SYNPCC7942_RS03225': None},\n", - " {'SYNPCC7942_RS03355': [[,\n", - " ],\n", - " [, ],\n", - " [,\n", - " ],\n", - " [, ]]},\n", - " {'SYNPCC7942_RS03380': [[],\n", - " [],\n", - " [, ],\n", - " [,\n", - " ]]},\n", - " {'SYNPCC7942_RS03485': None},\n", - " {'SYNPCC7942_RS03570': [[,\n", - " ],\n", - " [, ],\n", - " [,\n", - " ],\n", - " [, ]]},\n", - " {'SYNPCC7942_RS04180': None},\n", - " {'SYNPCC7942_RS04290': [[],\n", - " [],\n", - " [, ],\n", - " [,\n", - " ]]},\n", - " {'SYNPCC7942_RS04440': None},\n", - " {'SYNPCC7942_RS04735': [[],\n", - " [],\n", - " [],\n", - " []]},\n", - " {'SYNPCC7942_RS04750': None},\n", - " {'SYNPCC7942_RS04830': [[],\n", - " [],\n", - " [],\n", - " []]},\n", - " {'SYNPCC7942_RS04890': None},\n", - " {'SYNPCC7942_RS05155': None},\n", - " {'SYNPCC7942_RS05285': [[,\n", - " ],\n", - " [, ],\n", - " [, ],\n", - " [,\n", - " ,\n", - " ]]},\n", - " {'SYNPCC7942_RS05330': [[,\n", - " ],\n", - " [, ],\n", - " [,\n", - " ],\n", - " [, ]]},\n", - " {'SYNPCC7942_RS05635': None},\n", - " {'SYNPCC7942_RS05765': None},\n", - " {'SYNPCC7942_RS13745': [[,\n", - " ],\n", - " [, ],\n", - " [,\n", - " ],\n", - " [, ]]},\n", - " {'SYNPCC7942_RS06065': None},\n", - " {'SYNPCC7942_RS06375': None},\n", - " {'SYNPCC7942_RS06405': [[],\n", - " [],\n", - " [],\n", - " []]},\n", - " {'SYNPCC7942_RS06760': [[],\n", - " [],\n", - " [],\n", - " []]},\n", - " {'SYNPCC7942_RS06820': None},\n", - " {'SYNPCC7942_RS06825': None},\n", - " {'SYNPCC7942_RS07015': None},\n", - " {'SYNPCC7942_RS07410': None},\n", - " {'Synpcc7942_1478': [[],\n", - " [],\n", - " [],\n", - " []]},\n", - " {'SYNPCC7942_RS08000': None},\n", - " {'SYNPCC7942_RS08150': None},\n", - " {'SYNPCC7942_RS08350': [[,\n", - " ],\n", - " [, ],\n", - " [,\n", - " ],\n", - " [, ]]},\n", - " {'SYNPCC7942_RS08550': [[,\n", - " ],\n", - " [, ],\n", - " [,\n", - " ],\n", - " [, ]]},\n", - " {'SYNPCC7942_RS08555': [[,\n", - " ],\n", - " [, ],\n", - " [,\n", - " ],\n", - " [, ]]},\n", - " {'SYNPCC7942_RS13795': [[,\n", - " ],\n", - " [, ],\n", - " [,\n", - " ],\n", - " [, ]]},\n", - " {'SYNPCC7942_RS09115': None},\n", - " {'SYNPCC7942_RS09235': None},\n", - " {'SYNPCC7942_RS09260': [[],\n", - " [],\n", - " [],\n", - " []]},\n", - " {'SYNPCC7942_RS09540': None},\n", - " {'SYNPCC7942_RS09545': [[,\n", - " ],\n", - " [, ],\n", - " [,\n", - " ],\n", - " [, ]]},\n", - " {'SYNPCC7942_RS09570': None},\n", - " {'SYNPCC7942_RS09640': None},\n", - " {'SYNPCC7942_RS09645': None},\n", - " {'SYNPCC7942_RS09650': None},\n", - " {'SYNPCC7942_RS09705': [[],\n", - " [],\n", - " [],\n", - " []]},\n", - " {'SYNPCC7942_RS09735': None},\n", - " {'SYNPCC7942_RS09955': [[,\n", - " ],\n", - " [, ],\n", - " [,\n", - " ],\n", - " [, ]]},\n", - " {'SYNPCC7942_RS10100': None},\n", - " {'SYNPCC7942_RS10105': None},\n", - " {'SYNPCC7942_RS10110': None},\n", - " {'SYNPCC7942_RS10140': None},\n", - " {'SYNPCC7942_RS10225': [[,\n", - " ],\n", - " [, ],\n", - " [,\n", - " ],\n", - " [, ]]},\n", - " {'SYNPCC7942_RS10815': [[,\n", - " ],\n", - " [, ],\n", - " [, ],\n", - " [,\n", - " ]]},\n", - " {'SYNPCC7942_RS10975': None},\n", - " {'SYNPCC7942_RS11400': [[,\n", - " ],\n", - " [, ],\n", - " [,\n", - " ],\n", - " [, ]]},\n", - " {'SYNPCC7942_RS11630': None},\n", - " {'SYNPCC7942_RS11775': [[],\n", - " [],\n", - " [, ],\n", - " [,\n", - " ]]},\n", - " {'SYNPCC7942_RS11900': [[],\n", - " [],\n", - " [],\n", - " []]},\n", - " {'SYNPCC7942_RS11905': [[],\n", - " [],\n", - " [],\n", - " []]},\n", - " {'SYNPCC7942_RS12090': None},\n", - " {'SYNPCC7942_RS12325': [[],\n", - " [],\n", - " [],\n", - " []]},\n", - " {'SYNPCC7942_RS12420': [[],\n", - " [],\n", - " [],\n", - " []]},\n", - " {'SYNPCC7942_RS12425': [[],\n", - " [],\n", - " [],\n", - " []]},\n", - " {'Synpcc7942_2454': None},\n", - " {'SYNPCC7942_RS12590': [[,\n", - " ],\n", - " [, ],\n", - " [,\n", - " ],\n", - " [, ]]},\n", - " {'SYNPCC7942_RS12670': None},\n", - " {'SYNPCC7942_RS12715': [[],\n", - " [],\n", - " [, ],\n", - " []]},\n", - " {'SYNPCC7942_RS12725': None},\n", - " {'SYNPCC7942_RS12785': [[],\n", - " [],\n", - " [],\n", - " []]},\n", - " {'SYNPCC7942_RS13245': None},\n", - " {'SYNPCC7942_RS13310': [[],\n", - " [],\n", - " [],\n", - " []]}]" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" + "metadata": { + "pycharm": { + "name": "#%%\n" } - ], + }, + "outputs": [], "source": [ "rxns" ] }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "id": "e5f61cbe", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "SYNPCC7942_RS00015 ['PRFGS_1']\n", - "SYNPCC7942_RS00575 ['GLGB']\n", - "SYNPCC7942_RS00790 ['UGP_PGM_c']\n", - "SYNPCC7942_RS01140 ['FASC161ACP', 'GLYOX_2']\n", - "SYNPCC7942_RS01500 ['FASC161ACP', 'GLYOX_2']\n", - "SYNPCC7942_RS01505 ['SADT2']\n", - "SYNPCC7942_RS01750 ['FASC161ACP', 'GLYOX_2']\n", - "SYNPCC7942_RS01885 ['AHSERL2']\n", - "SYNPCC7942_RS02010 ['CDPDAGS1819Z160']\n", - "SYNPCC7942_RS02075 ['FRDO']\n", - "SYNPCC7942_RS02165 ['FASC161ACP', 'GLYOX_2']\n", - "SYNPCC7942_RS02255 ['AIRC1']\n", - "SYNPCC7942_RS13675 ['FASC161ACP', 'GLYOX_2']\n", - "SYNPCC7942_RS03095 ['GLCS2']\n", - "SYNPCC7942_RS03355 ['FASC161ACP', 'GLYOX_2']\n", - "SYNPCC7942_RS03380 ['PPND2']\n", - "SYNPCC7942_RS03570 ['FASC161ACP', 'GLYOX_2']\n", - "SYNPCC7942_RS04290 ['ASNTRS_1']\n", - "SYNPCC7942_RS04735 ['FRDO']\n", - "SYNPCC7942_RS04830 ['PAPSSH']\n", - "SYNPCC7942_RS05285 ['ILETA2', 'aratyr1']\n", - "SYNPCC7942_RS05330 ['FASC161ACP', 'GLYOX_2']\n", - "SYNPCC7942_RS13745 ['FASC161ACP', 'GLYOX_2']\n", - "SYNPCC7942_RS06405 ['FRDO']\n", - "SYNPCC7942_RS06760 ['FRDO']\n", - "Synpcc7942_1478 ['GLGB']\n", - "SYNPCC7942_RS08350 ['FASC161ACP', 'GLYOX_2']\n", - "SYNPCC7942_RS08550 ['FASC161ACP', 'GLYOX_2']\n", - "SYNPCC7942_RS08555 ['FASC161ACP', 'GLYOX_2']\n", - "SYNPCC7942_RS13795 ['FASC161ACP', 'GLYOX_2']\n", - "SYNPCC7942_RS09260 ['PGPS1819Z160']\n", - "SYNPCC7942_RS09545 ['FASC161ACP', 'GLYOX_2']\n", - "SYNPCC7942_RS09705 ['FRDO']\n", - "SYNPCC7942_RS09955 ['FASC161ACP', 'GLYOX_2']\n", - "SYNPCC7942_RS10225 ['FASC161ACP', 'GLYOX_2']\n", - "SYNPCC7942_RS10815 ['ACGAM6PS', 'UAGDP_c']\n", - "SYNPCC7942_RS11400 ['FASC161ACP', 'GLYOX_2']\n", - "SYNPCC7942_RS11775 ['ATPSu']\n", - "SYNPCC7942_RS11900 ['FRDO']\n", - "SYNPCC7942_RS11905 ['FRDO']\n", - "SYNPCC7942_RS12325 ['GLGB']\n", - "SYNPCC7942_RS12420 ['P5CCD']\n", - "SYNPCC7942_RS12425 ['P5CCD']\n", - "SYNPCC7942_RS12590 ['FASC161ACP', 'GLYOX_2']\n", - "SYNPCC7942_RS12715 ['APSR']\n", - "SYNPCC7942_RS12785 ['GLCS1']\n", - "SYNPCC7942_RS13310 ['GLYOX_2']\n" - ] + "metadata": { + "pycharm": { + "name": "#%%\n" } - ], + }, + "outputs": [], "source": [ "rxns_to_add = set()\n", "for i in rxns:\n", @@ -1650,85 +225,28 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "ad8211e0", - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'rxns_to_add' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn [1], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[38;5;28mlen\u001b[39m(\u001b[43mrxns_to_add\u001b[49m)\n", - "\u001b[1;31mNameError\u001b[0m: name 'rxns_to_add' is not defined" - ] + "metadata": { + "pycharm": { + "name": "#%%\n" } - ], + }, + "outputs": [], "source": [ "len(rxns_to_add)" ] }, { "cell_type": "code", - "execution_count": 37, + "execution_count": null, "id": "6fe453f0", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "GLCS1\n", - "GLCS1: adpglc_c --> adp_c + glycogen_c + h_c\n", - "SADT2\n", - "SADT2: atp_c + gtp_c + h2o_c + so4_c --> aps_c + gdp_c + pi_c + ppi_c\n", - "ATPSu\n", - "ATPSu: 3.0 adp_c + 14.0 h_u + 3.0 pi_c --> 3.0 atp_c + 3.0 h2o_c + 11.0 h_c\n", - "PPND2\n", - "PPND2: nadp_c + pphn_c --> 34hpp_c + co2_c + nadph_c\n", - "aratyr1\n", - "aratyr1: 4mop_c + tyr__L_c --> 34hpp_c + leu__L_c\n", - "CDPDAGS1819Z160\n", - "CDPDAGS1819Z160: ctp_c + 3.0 h_c + pa1819Z160_c --> cdp12dgr1819Z160_c + ppi_c\n", - "ASNTRS_1\n", - "ASNTRS_1: asn__L_c + atp_c + trnaasn_c --> amp_c + asntrna_c + h_c + ppi_c\n", - "GLGB\n", - "GLGB: 14glucan_c --> glycogen_c\n", - "FRDO\n", - "FRDO: fdxrd_c + nadp_c --> fdxox_c + h_c + nadph_c\n", - "ACGAM6PS\n", - "ACGAM6PS: accoa_c + gam6p_c --> acgam6p_c + coa_c + h_c\n", - "PGPS1819Z160\n", - "PGPS1819Z160: cdp12dgr1819Z160_c + glyc3p_c --> cmp_c + pgp1819Z160_c\n", - "PAPSSH\n", - "PAPSSH: 2.0 h_c + pap_c + so4_c --> h2o_c + paps_c\n", - "GLYOX_2\n", - "GLYOX_2: h2o_c + lgt__S_c --> gthrd_c + h_c + lac__D_c + mthgxl_c\n", - "APSR\n", - "APSR: aps_c + trdrd_c --> amp_c + 2.0 h_c + so3_c + trdox_c\n", - "AIRC1\n", - "AIRC1: air_c + atp_c + co2_c + h2o_c --> 5aizc_c + adp_c + 2.0 h_c + pi_c\n", - "ILETA2\n", - "ILETA2: 3mop_c + glu__L_c --> akg_c + ile__L_c\n", - "PRFGS_1\n", - "PRFGS_1: atp_c + fgam_c + gln__L_c + h2o_c --> adp_c + fpram_c + glu__L_c + 2.0 h_c + pi_c\n", - "AHSERL2\n", - "AHSERL2: achms_c + h2s_c --> ac_c + h_c + hcys__L_c\n", - "FASC161ACP\n", - "FASC161ACP: 2.0 h_c + malACP_c + myrsACP_c + nadph_c --> ACP_c + co2_c + h2o_c + hdeACP_c + nadp_c\n", - "GLCS2\n", - "GLCS2: udpg_c --> glycogen_c + h_c + udp_c\n", - "UAGDP_c\n", - "UAGDP_c: acgam6p_c + h_c + utp_c --> ppi_c + uacgam_c\n", - "P5CCD\n", - "P5CCD: glu__L_c + h_c + nadh_c --> glu5sa_c + nad_c + pi_c\n", - "UGP_PGM_c\n", - "UGP_PGM_c: g6p_c + h_c + utp_c --> ppi_c + udpg_c\n" - ] + "metadata": { + "pycharm": { + "name": "#%%\n" } - ], + }, + "outputs": [], "source": [ "with open('rxns_to_add_for_ge.txt', 'w') as f:\n", " for i in rxns_to_add:\n", @@ -1741,7 +259,11 @@ "cell_type": "code", "execution_count": null, "id": "41621c28", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "actual_rxns = [universal_model.reactions.get_by_id(i) for i in rxns_to_add]" @@ -1751,7 +273,11 @@ "cell_type": "code", "execution_count": 30, "id": "d4025267", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "data": { @@ -1768,18 +294,36 @@ "with model:\n", " model.add_reactions(actual_rxns)\n", " create_ge_confusion_matrix(model, syn_pathfrom)\n", - " plt.savefig(\"after_gapfill.png\")" + " plt.savefig(\"after_gapfillafter_update.png\")" ] }, { "cell_type": "code", "execution_count": null, "id": "70477ed4", - "metadata": {}, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ - "results = create_ge_confusion_matrix(model, syn_pathfrom)" + "results = create_ge_confusion_matrix(model, syn_pathfrom" ] + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + ")" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } } ], "metadata": { @@ -1803,4 +347,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} +} \ No newline at end of file diff --git a/syn_elong/notebooks/explore_model_accu.ipynb b/syn_elong/notebooks/explore_model_accu.ipynb index ae70b06..298def8 100644 --- a/syn_elong/notebooks/explore_model_accu.ipynb +++ b/syn_elong/notebooks/explore_model_accu.ipynb @@ -159,6 +159,11 @@ { "cell_type": "code", "execution_count": 17, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "name": "stdout", @@ -185,32 +190,30 @@ " continue\n", " else:\n", " print('syn', i, j, k)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "code", "execution_count": 18, - "outputs": [], - "source": [ - "# reshape to square\n", - "cm = np.array(cm).reshape((2,2))" - ], "metadata": { - "collapsed": false, "pycharm": { "name": "#%%\n" } - } + }, + "outputs": [], + "source": [ + "# reshape to square\n", + "cm = np.array(cm).reshape((2,2))" + ] }, { "cell_type": "code", "execution_count": 19, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "name": "stdout", @@ -223,17 +226,16 @@ ], "source": [ "print(cm)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "code", "execution_count": 20, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "name": "stderr", @@ -244,8 +246,10 @@ }, { "data": { - "text/plain": "
", - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAowAAAJWCAYAAADSltafAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAACdO0lEQVR4nOzdd3hTVR8H8O9tuveCQtmzwMssS/ZeCljKRgWRjUwFBBGZgihDBJWCbBmVXTZl72WBsvcolNW9Z/L+QXPpTdI0aZOm0O/nefLYc3LuOSdQ7K9nCgqFQgEiIiIioiyYmboDRERERJS/MWAkIiIiIq0YMBIRERGRVgwYiYiIiEgrBoxEREREpBUDRiIiIiLSigEjEREREWnFgJGIiIiItGLASERERERamZu6A2QaQwVHU3eByOiWxoeYugtExmfrZLSqjfmzYqkixmh1k+FxhJGIiIiItOIIIxEREWnEUSVS4vcCEREREWnFEUYiIiLSyEwQTN0FyicYMBIREZFGnIYkJX4vEBEREZFWHGEkIiIijcw4I00ZOMJIRERERFpxhJGIiIg04qgSKfF7gYiIiIi04ggjERERacRjdUiJI4xEREREpBVHGImIiEgjjiqREgNGIiIi0ojH6pASf3kgIiIiIq04wkhEREQacVSJlPi9QERERERacYSRiIiINBJ4rA5l4AgjEREREWnFEUYiIiLSiKNKpMTvBSIiIiLSiiOMREREpBHPYSQlBoxERESkEachSYnfC0RERESkFUcYiYiISCMzHqtDGTjCSERERERacYSRiIiINOKoEinxe4GIiIiItOIIIxEREWnEY3VIiSOMRERERKQVRxiJiIhII44qkRIDRiIiItLIDJyTprf4ywMRERERacURRiIiItLoQ9z0kpycjN27d+PkyZO4fv06IiIikJKSAicnJ5QrVw6NGjVC586dUbRo0Ry3kZKSgr179+LIkSO4fv06IiMjkZqaChcXF1SsWBEtWrSAj48P7O3tc/VZHjx4gK1bt+LixYsICQlBbGwsrKysULx4cXh7e6Nz587w9vbOVRtKgkKhUBikJnqvDBUcTd0FIqNbGh9i6i4QGZ+tk9Gqnm/rZrS6v00IN1rdWQkICMDPP/+M8HDtbZubm6Nbt2749ttv4eio38/LU6dOYfLkyXj58qXWck5OTpg1axbatm2rV/0A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\n" + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAowAAAJWCAYAAADSltafAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAACdO0lEQVR4nOzdd3hTVR8H8O9tuveCQtmzwMssS/ZeCljKRgWRjUwFBBGZgihDBJWCbBmVXTZl72WBsvcolNW9Z/L+QXPpTdI0aZOm0O/nefLYc3LuOSdQ7K9nCgqFQgEiIiIioiyYmboDRERERJS/MWAkIiIiIq0YMBIRERGRVgwYiYiIiEgrBoxEREREpBUDRiIiIiLSigEjEREREWnFgJGIiIiItGLASERERERamZu6A2QaQwVHU3eByOiWxoeYugtExmfrZLSqjfmzYqkixmh1k+FxhJGIiIiItOIIIxEREWnEUSVS4vcCEREREWnFEUYiIiLSyEwQTN0FyicYMBIREZFGnIYkJX4vEBEREZFWHGEkIiIijcw4I00ZOMJIRERERFpxhJGIiIg04qgSKfF7gYiIiIi04ggjERERacRjdUiJI4xEREREpBVHGImIiEgjjiqREgNGIiIi0ojH6pASf3kgIiIiIq04wkhEREQacVSJlPi9QERERERacYSRiIiINBJ4rA5l4AgjEREREWnFEUYiIiLSiKNKpMTvBSIiIiLSiiOMREREpBHPYSQlBoxERESkEachSYnfC0RERESkFUcYiYiISCMzHqtDGTjCSERERERacYSRiIiINOKoEinxe4GIiIiItOIIIxEREWnEY3VIiSOMRERERKQVRxiJiIhII44qkRIDRiIiItLIDJyTprf4ywMRERERacURRiIiItLoQ9z0kpycjN27d+PkyZO4fv06IiIikJKSAicnJ5QrVw6NGjVC586dUbRo0Ry3kZKSgr179+LIkSO4fv06IiMjkZqaChcXF1SsWBEtWrSAj48P7O3tc/VZHjx4gK1bt+LixYsICQlBbGwsrKysULx4cXh7e6Nz587w9vbOVRtKgkKhUBikJnqvDBUcTd0FIqNbGh9i6i4QGZ+tk9Gqnm/rZrS6v00IN1rdWQkICMDPP/+M8HDtbZubm6Nbt2749ttv4eio38/LU6dOYfLkyXj58qXWck5OTpg1axbatm2rV/0A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\n", + "text/plain": [ + "
" + ] }, "metadata": {}, "output_type": "display_data" @@ -261,81 +265,7 @@ "g.set_yticks([0.5,1.5], ['Ess.', 'Non-ess.']);\n", "plt.savefig(\"confusion_matrix.png\", bbox_inches='tight', dpi=300)\n", "plt.savefig(\"confusion_matrix.pdf\", bbox_inches='tight', dpi=300)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 11, - "outputs": [ - { - "data": { - "text/plain": "" - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "text/plain": "
", - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnUAAAH5CAYAAADnbchqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAACLX0lEQVR4nO3dd3xTVf8H8E+696K0tOxR9ix7yB4CgoAMkaEoSywgwwECD5QhSxniA6gggmVKiwrKAwIyFYoCZRYos1C6905yf3/019CbpG1umrRN+nm/Xnkez+m995zSpv32jO+RCYIggIiIiIhMmkVZd4CIiIiISo5BHREREZEZYFBHREREZAYY1BERERGZAQZ1RERERGaAQR0RERGRGbAq6w6Q7qKionDy5ElVuUaNGrC3ty/DHhERka4yMzPx5MkTVblnz57w8fExaBupqakIDw836DMBoEGDBnB2djb4c8mwGNSZkJMnTyIwMLCsu0FERAYyZswYgz4vPDzc4M8EgKCgILRp08bgzyXD4vQrERERkRlgUEdERERkBjj9akKqV68uKi/8UIkGdcuoM0RG9P5XQ8q6C0QGJ8+MR+bT86qy+s90Y1jwoRL160o/DfRuhAzL1nPcx9QwqDMhDg4OonKDukDr5mXUGSIjsnKqUtZdIDI69Z/pxlCvjhItm0kP6pSCDJzMMz38ihERERGZAY7UERERmSkBApSQPlIn/Q4qDxjUERERmSkllHoFdUrIjNAbMjZOvxIRERGZAY7UERERmSklAIXAkbqKgkEdERGRmVLquaZOn3uo7DGoIyIiMlNKCFAwqKswuKaOiIiIyAxwpI6IiMhMcfq1YmFQR0REZKaUgp4bJRjTmSROvxIRERGZAY7UERERmSkBeWlN9LmPTA+DOiIiIjOl0HP3qz73UNnj9CsRERGRGeBIHRERkZnK2yih331kehjUERERmSkl9FtTp889VPY4/UpERERkBjhSR0REZKaUkEEBmV73kelhUEdERGSmBEG/9XF65CumcoBBHRERkZlSAHqN1CkM3xUqBVxTR0RERGQGOFJHRERkpkx1TV12djYOHz6Ms2fP4saNG0hISEBOTg5cXV1Rt25ddO7cGYMHD4aPj4/ebeTk5OC3337DyZMncePGDSQmJiI3Nxfu7u6oX78+evTogSFDhsDJyalEn0tERAQOHjyI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Vuh1Li4uGDJkCCZMmABfX1+Nj2s7BaOgefPmib6O7dq1w65du4rsm0KhwE8//YSDBw/i+vXrUCqVWq/z8vJCv379MHXqVHh6ehb5zKL89ttv2LFjB65du6b1476+vhg9ejQmTJhgEieiJCcn4+DBgzhx4gTCwsKKTfZduXJlDBw4EBMmTECVKlVK1PbFixexfv16XLlyRWuOwmrVqmHQoEGYOHEinJyc9G6nNN/HRKbINP8MJZOTnJysUScloFm0aBF2796tEQgqlUqcOHEC//vf/7TeFx0djYkTJ2LChAk4c+ZMob8IACA9PR1Hjx7FsGHDMG/ePGRmZurcPyAvYAoMDMSIESPwxx9/aA3oACAtLQ179+7FoEGDcP78eUltlMRff/2FV199FQsWLCgyoAPyRhl37tyJgQMH4sCBA0bv2+XLl/Haa69h0aJFuHbtWqEBHZA3wrhr1y706dMH33//veS2YmJiMG7cOMyaNavQgA4Anj9/ji+++AKjRo3C06dPJbdTmvbv348+ffpg1apVuHz5sk6nt8TGxmLHjh3o168ffvrpJ73aFQQBy5cvx9tvv41///230KTTkZGR2Lx5M1599dVC36tFKc33MZEpY1BHRicIAm7evCmqs7KygpeXl073Hz16FMHBwUVe079/f4268PBwjBw5EmfPntW9s8gLFIODgzF+/HjEx8frdE92djYmTZqEoKAgnU9TiIuLw/vvv4/Lly9L6p8+goKCMGHCBNEIny4yMjKwYMECbN261Ug9A44cOYIJEybgwYMHku7LyMjAypUrsWDBAsjlcp3uefr0KYYPH45Lly7p3M7Nmzfx7rvvIi4uTlL/SsuKFSuwcOFCrX846SIrKwufffYZjh8/Lvne//znP9i5c6fO3/OxsbH48MMPJQWRpfk+JjJ1nH4loztz5gwSEhJEdc2bN9dpXVl2dnaxyY/r16+PunXriuqePXuGcePGafyic3V1xeDBg9GuXTtUqVIFCoUCUVFROHv2LI4ePYqMjAzVtWFhYZg0aRL27t1b7BqdBQsW4O+//9aof+WVVzBgwADUqlULAPD48WMcPXoUf/75p+rz++qrr4p8dkn9/vvvCAwM1KivVKkSBg4ciPbt28PLywtKpRLh4eEICQnBlStXRNd++eWXaNiwIbp16wYgb5S1X79+qo+rj740bdoUVatW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6dSB+Ph4fPXVV6K69evXo3///nr3q3LlyqhRo4YolYW2BLS6ePjwIf766y9UrVpV9bVS39naqlUryGQy0VRjaGiopBMlAON9nfShfsQakHf8npRdvampqRp56qRMx969excZGRmS2nzy5Amio6NFddryUJbm+5jInHCkjsyKetb5zMxMvc4rPXLkCD7//HMEBARg2LBh6NChA7777juN61555RVR+dKlS3j27Jmktn755RfJ/dOFv7+/qJyQkCD5wPbTp09r1BkiCa96wuVLly7pNfKzdetWLFmyBJMnT8bAgQPRqlUrjeDLw8NDI6fazz//LCmASU9Pxx9//CG5f8aiLdeaLucNF3TixAmNfwP10ziKkpubq/X7oyjajnFr166dRl1pv4+JzAWDOjIrffr00VhovXnzZklr1rKzs7Fp0yaN+n79+mnUFTwbFcgb6Vi3bp3Obf3zzz96je7pom/fvhqjKN98842kYGbv3r2ictOmTbWuJZQy+gcAb7zxhqisUCiwfv16Sc+4d++eRkBctWpVrad6qLf35MkT/PTTTzq3tWvXLoOveywJbTs4pWxcyMjI0Po9LnVqfcuWLTrfExUVhR9//FFU17FjR43zZ4HSfx8TmQsGdWRWHB0d8eabb4rqHj16hPnz5+s8ChEYGKgx2tanTx+tJ2P4+flpnKf666+/Ijg4uNh2EhISMG/ePKPl5HJ1dcXrr78uqrt06RK+//57ne7fvXs3rl27JqobPXq01mvVp8XUc8Opa9OmjcbI0uHDh7Fz506d+paRkYE5c+ZAoVCI6t955x2t1w8ZMgSenp6iupUrV+LOnTvFtnXt2jV8/fXXOvWrtGg7tu3o0aM63ZudnY3Zs2drHRmVunHizp07WLVqVbHXZWVl4eOPP9bISVfY16u038dE5oJBHZmdiRMnaizG//333zFp0qQip0bT09Mxb948jREca2trfPjhh4Xe99FHH2kENZ999hm2bdtW6AaI+/fvY9y4cVqPGjOk999/X2N34apVq7Bx48Yi83Xt3r0by5cvF9X5+flpBIn51EdV1I950mbevHka53IuX74cn3/+eZHpQ54+fYq3334b4eHhovoaNWpoBAL5HB0dNQ68T0tLw9tvv40zZ84U2tbJkycxYcKEcpfbrEOHDhp1X3zxBa5evVrkfdevX8fo0aNx6tQprR/XJ23Lrl27sHjx4kJH7F68eIGJEydq5MPr06ePxh9EBZX2+5jIHHCjBJkdV1dXrFu3DmPGjBH9orlw4QJeffVVvPrqq+jatSuqVq0KW1tbxMbGIjQ0FIcOHdKapmHevHlFnj9br149zJs3D0uWLFHVKZVKrF69GocOHcIbb7yBxo0bw97eHs+fP8epU6dw+PBhVd8cHByQk5MjaT2Trry9vbFy5UpMnTpVVP/111/j119/xeDBg9GqVSt4eHggIyMDN2/exM8//4ybN2+KrrexscGKFSs0grB8vr6+ogXwBw4cQLVq1dCuXTsIgoDc3FyNtXgtW7bE3Llz8fnnn4vqd+zYgV9//RWvvfYa2rdvr0pJEhkZibNnz+LIkSMaU402NjZYt25dkQvphw8fjnPnzuH3339X1SUlJWHSpEno2rUrBg4ciFq1akGpVOLhw4c4cuQIzp8/r7rW1dW13Bwx1bt3b/j4+CAqKkpVl5aWhjFjxmDgwIHo3r07qlWrBmtrayQlJeHOnTs4efKkRmDl4OAgmtJMTEzUeTONi4uLKtXInj17cPr0aYwcORJNmjSBh4cH4uLicObMGRw6dEgjWPTx8cGyZcuKfH5pv4+JzAGDOjJLLVq0wObNm/Hhhx+KpnxycnLwyy+/6Lw54f3338eYMWOKve6tt95CfHy8xhqeu3fvagQtBclkMqxevRoff/yxUYI6AOjRoweWLVuGxYsXi9p48uSJ1jVH6qysrLB+/Xqta9Xy+fv748qVK6pybm4uVq9erSpXrlwZ586d07jvnXfeQVZWFtavXy+aho6Pj8cPP/yAH374odj+2dnZYf369WjatGmx165evRqpqakafTlz5kyRI3Zubm74z3/+ozHaV1bs7OywZMkSvP/++6IpaLlcjp9//hk///xzsc8YMGAAhg8fjnfffVd0/61bt9CsWbNi73/99dcRFRWl2kDy/PlzndZFVq9eHdu3b9fpTOfSfh8TmTpOv5LZeuWVV7Bv374ig5HCuLm5YdWqVZKma6ZPn441a9ZonG1ZGBsbGyxevBh9+vSR3D+pRowYgW+//VZrjriiVK1aFTt37kSvXr2KvG7SpEkaSX4Lio2NLTQn2tSpU7Fp0yZUqVJFUt+AvCnhXbt2oUePHjpdb2Njg61bt+Ldd9+FhYVuP/68vLywefPmcrcWq1u3bli5cqXWk02K4unpidWrV2PdunVo2bKlxuirrjtaZTIZ1qxZI+n7t1OnTtizZw9q1Kih8z2l/T4mMmUM6sis1atXDwcOHMB///tfdO7cudjzO6tWrYrp06fj999/x5AhQyS3N3jwYBw7dgxvv/12oSMRlpaW6Nq1Kw4cOFDoGjBj6NSpE44ePYp58+ZpTfhaUNWqVfHxxx/j119/1SmFibu7O/bs2aM151i+ojYl9O7dG8ePH8dnn32GJk2aFHtea7NmzbBs2TKEhIRI/mVvZWWFTz75BCEhIejXr1+hU8qOjo4YMWIEfv75Z430MOXF4MGDERISgiFDhhQ59WxhYYEmTZrg008/xbFjx1RrIx0dHdGzZ0/RtXv37tV5DaGDgwM2bdqE5cuXa03yDOQFfy1atMD69evx/fffFxn8F6a038dEpkomGGvrHVE5lJWVhatXr+LFixdISkpCVlYWnJyc4OnpiSZNmhh0NCYnJwc3btzA3bt3kZycDAcHB1SpUgUtWrTQmhaktEVHR+P69euIi4tDUlIS7OzsUKlSJTRr1kxrmgld3blzB9evX1cdmebs7Ixq1aqhZcuWWo8I0yYhIQFhYWGIi4tDYmIiBEGAs7MzfH190axZM3h4eOjdP3Wpqam4cuUKHj9+jPT0dLi7u8PHxwdt2rSRlFi3rGVmZuLGjRt4+PAhkpOTIQgC3N3d4eXlhRYtWug03VlSN2/exP379xETEwNbW1tV2z4+PgZtpzTfx0SmhEEdERERkRng9CsRERGRGWBQR0RERGQGGNQRERERmQEGdURERERmgEEdERERkRlgUEdERERkBhjUEREREZkBBnVEREREZoBBHREREZEZYFBHREREZAYY1BERERGZAQZ1RERERGaAQR0RERGRGWBQR0RERGQGGNQRERERmQEGdURERERmgEEdERERkRn4P0BLi/yQPlTXAAAAAElFTkSuQmCC\n" - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "disp = ConfusionMatrixDisplay(confusion_matrix=cm)\n", - "disp.plot()" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 11, - "outputs": [], - "source": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] } ], "metadata": { diff --git a/syn_elong/notebooks/optimize_sucrose_strain_design.ipynb b/syn_elong/notebooks/optimize_sucrose_strain_design.ipynb deleted file mode 100644 index e91cb43..0000000 --- a/syn_elong/notebooks/optimize_sucrose_strain_design.ipynb +++ /dev/null @@ -1,2041 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "pycharm": { - "is_executing": true, - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "# %load_ext autoreload\n", - "# %autoreload 2\n", - "# import os\n", - "# os.environ['JAVA_HOME'] = r'C:\\Program Files\\Java\\jdk-17'\n", - "import straindesign as sd\n", - "import straindesign.names as names" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import cobra\n", - "import logging\n", - "logging.basicConfig(level=logging.INFO)\n", - "import pandas as pd\n", - "pd.set_option('display.float_format', lambda x: f'{x:.3f}')" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Set parameter Username\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:gurobipy.gurobipy:Set parameter Username\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Set parameter GURO_PAR_SPECIAL\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:gurobipy.gurobipy:Set parameter GURO_PAR_SPECIAL\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Set parameter TokenServer to value \"leghorn\"\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:gurobipy.gurobipy:Set parameter TokenServer to value \"leghorn\"\n" - ] - } - ], - "source": [ - "from syn_elong import model\n", - "from syn_elong.media import m9_media" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:cobra.medium.boundary_types:Compartment `e` sounds like an external compartment. Using this one without counting boundary reactions.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpykpmgaij.lp\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:gurobipy.gurobipy:Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpykpmgaij.lp\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Reading time = 0.04 seconds\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:gurobipy.gurobipy:Reading time = 0.04 seconds\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - ": 893 rows, 1952 columns, 7974 nonzeros\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:gurobipy.gurobipy:: 893 rows, 1952 columns, 7974 nonzeros\n" - ] - } - ], - "source": [ - "model.medium = m9_media\n", - "consistent_model = cobra.flux_analysis.fastcc(model)\n", - "consistent_model.mediu = m9_media" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:cobra.medium.boundary_types:Compartment `e` sounds like an external compartment. Using this one without counting boundary reactions.\n", - "INFO:cobra.medium.boundary_types:Compartment `e` sounds like an external compartment. Using this one without counting boundary reactions.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Maximum possible BIOMASS__1 synthesis rate: 4.088280273582666.\n", - "Maximum possible EX_sucr_e synthesis rate: 16.389121923937367.\n", - "Maximum possible BIOMASS__1 synthesis rate: 4.088280273582658.\n", - "Maximum possible EX_sucr_e synthesis rate: 16.38912192393736.\n" - ] - } - ], - "source": [ - "with model:\n", - " model.medium = m9_media\n", - " sol = sd.fba(model, obj='BIOMASS__1', obj_sense='max', pfba =False)\n", - " print(f\"Maximum possible BIOMASS__1 synthesis rate: {sol.objective_value}.\")\n", - " sol = sd.fba(model, obj='EX_sucr_e', obj_sense='max', pfba =False)\n", - " print(f\"Maximum possible EX_sucr_e synthesis rate: {sol.objective_value}.\")\n", - "with consistent_model as m:\n", - " m.medium = m9_media\n", - " sol = sd.fba(m, obj='BIOMASS__1', obj_sense='max', pfba =False)\n", - " print(f\"Maximum possible BIOMASS__1 synthesis rate: {sol.objective_value}.\")\n", - " sol = sd.fba(m, obj='EX_sucr_e', obj_sense='max', pfba =False)\n", - " print(f\"Maximum possible EX_sucr_e synthesis rate: {sol.objective_value}.\")" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "datapoints, triang, plot1 = sd.plot_flux_space(\n", - " model,\n", - " ('BIOMASS__1','EX_sucr_e'),\n", - " show=False\n", - ");" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "def view_with_changes(changed_model):\n", - " datapoints, triang, plot1 = sd.plot_flux_space(\n", - " model,\n", - " ('BIOMASS__1', 'EX_sucr_e'),\n", - " show=False\n", - " );\n", - "\n", - " plot1.set_facecolor('green')\n", - " plot1.set_edgecolor('green')\n", - "\n", - " _, _,plot2 = sd.plot_flux_space(\n", - " changed_model,\n", - " ('BIOMASS__1', 'EX_sucr_e'),\n", - " show=False\n", - " );\n", - " plot2.set_facecolor('red')\n", - " plot2.set_edgecolor('red')\n", - " # adjust axes limits and show plot\n", - " plot2.axes.set_xlim(0, 1.05*max([a[0] for a in datapoints]))\n", - " plot2.axes.set_ylim(0, 1.05*max([a[1] for a in datapoints]))\n", - " plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "module_suppress = sd.SDModule(\n", - " consistent_model,\n", - " sd.names.SUPPRESS,\n", - " constraints='EX_sucr_e >= 6.0'\n", - ")\n", - "\n", - "module_protect = sd.SDModule(\n", - " consistent_model,\n", - " sd.names.PROTECT,\n", - " constraints='BIOMASS__1>=.2'\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "image/png": "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Vejfvz+uv/56tG/fHgMHDkR4eHjN65WVlVi0aBFuu+02tGnTBjfeeCOGDh2KXbt2Nfpn4ozt27fjySefRKdOnaBSqaDRaK75PYmUgkWGSAFMJhP69++PZcuWOb1NVlYWxowZg+HDh0Oj0WDevHn429/+hv379ze5bXp6OgoKCnDu3Dm89NJLmD17dp275/5eZmYmBg0ahIyMDGzevBkXL15EZGRkzR3ey8vLa60fGhpap1Tl5eXh0KFDDd59eM2aNViwYAE2b94Ms9lc67W1a9di3rx5eP3116HRaHDy5EksWLAARqOxZp2XX34Z27dvx9dff43z589j3759mDBhQp2i1RwmkwmPPPIIlixZcs3vRaQ4om/2RETeBUDasWNHk+stWLBA6tu3b61lkyZNkkaOHNngNr/dELOioqLW8ttuu0367LPPap6HhYVJTz/9dM3zp556SurWrVutu0ZLkiQVFBRI7dq1k15++eWaZUOHDpVmz54tderUSTpx4kTN8o8//lgaO3as1L9/f2nx4sW13iczM1Nq27atpNVqpQcffFDatGlTrdeffvppacaMGQ3ulyRJUnBwsBQVFdXoOtcqKytLAiAlJSV59HOI/AmPyBBRvWJiYjBixIhay0aOHImYmBin30OSJOzbtw85OTl48MEH612nvLwc+/fvxyuvvIK2bdvWeq1Lly6YOnUqtm7dCul397cNCAjA1KlTsW7dupplUVFRmDVrVr2fsW7dOowZMwbBwcF4/vnnsWbNmjqfExsbi+zs7Ab3pUuXLvj5559hMBia3G8i8h4WGSKqV2FhITp37lxrWefOnaHX61FVVdXott26dcP111+PgIAAjBkzBosXL8ajjz5a77oZGRmQJAl33XVXva/fddddqKioQElJSa3ls2bNwrZt22AymXDs2DHodDr86U9/qrO9w+FAVFQUnn/+eQDA5MmTceLECWRlZdWss3jxYrRv3x49evRA7969MWPGDGzbtg0Oh6NmnZUrV0KtVqNTp064//778cYbb+DkyZON/jkQkeexyBCR2x0/fhwajQYajQarV6/GJ598goiIiEa3+f0RF2f0798ft99+O3744QesXbsW06ZNQ6tWreqsFx0dDZPJhNGjRwMA/vCHP+CJJ57A2rVra9bp2rUrYmJikJKSgrlz58JmsyEsLAxPPfVUTZl59NFHkZmZiUOHDmHChAlITU3FH//4R3z44Ycu5SYi92KRIaJ6denSBUVFRbWWFRUVISgoqM4poKv17NkTvXr1Qt++fTFz5kxMmzYNH3/8cb3r9urVCyqVCmlpafW+npaWhg4dOuDGG2+s89qsWbOwbNky/PDDDw2eVlqzZg3Ky8vRtm1btGrVCq1atcLPP/+M9evX1zriAgB33303XnnlFWzcuBHR0dGIjo7G0aNHa15v3bo1/vjHP+Ltt9/GgQMH8M9//hMffvghqqurG/3zICLPYZEhonoNHjy4zpVG0dHRGDx4sMvv1bJlywZPR3Xq1AlPPPEEli9fXmedwsJCbNq0CZMmTYJKpaqz7XPPPYeUlBTcfffd6NOnT53Xy8rKsGvXLmzZsqXmCJFGo0FSUhIqKipw4MCBBjP/9n4mk6nRdWw2W52roIjIe+oehyUiv2M0GnHx4sWa51lZWdBoNOjYsSNuueUWAMCiRYuQl5eHb7/9FsCvlxt/8803WLBgAWbNmoVffvkF27Ztw549e5r8vOLiYpjNZlgsFsTFxWHDhg2YMGFCg+t/8803GDJkCEaOHImPPvoIPXv2RGpqKt566y3cfPPNDR7N6dChAwoKCtC6det6X9+wYQM6deqEiRMn1ilCo0ePxpo1a/DUU09h9uzZCAkJwWOPPYZu3bqhoKAAH330EW688caa4jZs2DBMmTIFgwYNQqdOnXDu3Dm88847GD58OIKCgpr8M2lMeXk5cnJykJ+fD+DXy9eBX4+KdenS5Zrem8jvib1oioi84bfLoq9+hIWF1awTFhYmDR06tM52AwYMkAICAqRbb71VWrdunUuf06pVK6lnz57Sm2++KRmNxlqf9fvLryVJki5fviyFhYVJnTt3llq3bi2FhoZKr732mlRaWlprvaFDh0pz585tMMPvL7/u16+f9Morr9S73tatW6WAgACppKRE+uGHH6TRo0dLXbt2lQICAqSQkBBp/Pjx0pkzZ2rW/+STT6TBgwdLHTt2lNq0aSPdeuut0uuvv14nX3OsW7eu3u/n6svIiagulSS5OMKOiIiIyEdwjAwRERHJFsfIEBFdo+PHj2PUqFH1vlZVVdXoVV6/vw0CEbmOp5aIiK5RVVUV8vLyGnytsSLTq1cvT8UiUgQWGSIiIpItjpEhIiIi2WKRISIiItlikSEiIiLZYpEhIiIi2WKRISIiItlikSEiIiLZYpEhIiIi2fr/tPCkbTlupdAAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "_, _, plot3 = sd.plot_flux_space(consistent_model,\n", - " ('BIOMASS__1','EX_sucr_e'),\n", - " # The sign of the glucose exchange reaction is flipped since\n", - " # reaction is defined in the direction of secretion.\n", - " constraints=['EX_sucr_e - 20 BIOMASS__1 <= 0',\n", - " 'BIOMASS__1 >= 0.01'],\n", - " show=False);" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "1" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "rxn_cost = {}\n", - "for rxn in consistent_model.reactions:\n", - " if rxn.id.startswith('EX_') or rxn.id.startswith('BIOMASS_') or\\\n", - " rxn.id.startswith('SK_') or rxn.id.startswith('PHOA') or\\\n", - " rxn.id.startswith('DM_') or rxn.id.startswith('SK_'):\n", - " continue\n", - " if rxn.gene_reaction_rule == '':\n", - " continue\n", - " else:\n", - " rxn_cost[rxn.id] = 1\n", - "rxn_cost.pop('BCT1_syn')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "from syn_elong.strain_design_simplified import compute_strain_designs, StrainDesign\n", - "# Compute strain designs\n", - "with consistent_model as m:\n", - " module_suppress = sd.SDModule(\n", - " m,\n", - " sd.names.SUPPRESS,\n", - " constraints=['EX_sucr_e - 4 BIOMASS__1 <= 0',\n", - " 'BIOMASS__1 >= 0.01']\n", - " )\n", - " module_protect = sd.SDModule(\n", - " m,\n", - " sd.names.PROTECT,\n", - " constraints='BIOMASS__1>=.1'\n", - " )\n", - " module_tilted_optknock = sd.SDModule(m, sd.names.OPTKNOCK,\n", - " inner_objective='BIOMASS__1 ', # - 0.001 EX_14bdo_e\n", - " outer_objective='EX_sucr_e',\n", - " constraints=['BIOMASS__1 >= 0.2', 'EX_sucr_e >=3'])\n", - " module_optcouple = sd.SDModule(m, sd.names.OPTCOUPLE,\n", - " inner_objective='BIOMASS__1',\n", - " prod_id='EX_sucr_e',\n", - " min_gcp=0.1)\n", - " sd_helper = StrainDesign(\n", - " m,\n", - " # sd_modules=[module_suppress, module_protect],\n", - " sd_modules=[module_tilted_optknock],\n", - " ko_cost=rxn_cost,\n", - " # gene_kos=True,\n", - " )\n", - "\n", - " sols = sd_helper.run(max_solutions=10, max_cost=5, time_limit=300, solution_approach=sd.names.ANY)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'consistent_model' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[3], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01msyn_elong\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mstrain_design_simplified\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m compute_strain_designs\n\u001b[1;32m----> 2\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[43mconsistent_model\u001b[49m \u001b[38;5;28;01mas\u001b[39;00m m:\n\u001b[0;32m 3\u001b[0m module_suppress \u001b[38;5;241m=\u001b[39m sd\u001b[38;5;241m.\u001b[39mSDModule(\n\u001b[0;32m 4\u001b[0m m,\n\u001b[0;32m 5\u001b[0m sd\u001b[38;5;241m.\u001b[39mnames\u001b[38;5;241m.\u001b[39mSUPPRESS,\n\u001b[0;32m 6\u001b[0m constraints\u001b[38;5;241m=\u001b[39m[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mEX_sucr_e - 4 BIOMASS__1 <= 0\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[0;32m 7\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mBIOMASS__1 >= 0.01\u001b[39m\u001b[38;5;124m'\u001b[39m]\n\u001b[0;32m 8\u001b[0m )\n\u001b[0;32m 9\u001b[0m module_protect \u001b[38;5;241m=\u001b[39m sd\u001b[38;5;241m.\u001b[39mSDModule(\n\u001b[0;32m 10\u001b[0m m,\n\u001b[0;32m 11\u001b[0m sd\u001b[38;5;241m.\u001b[39mnames\u001b[38;5;241m.\u001b[39mPROTECT,\n\u001b[0;32m 12\u001b[0m constraints\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mBIOMASS__1>=.1\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[0;32m 13\u001b[0m )\n", - "\u001b[1;31mNameError\u001b[0m: name 'consistent_model' is not defined" - ] - } - ], - "source": [ - "\n", - "\n", - "with consistent_model as m:\n", - " module_suppress = sd.SDModule(\n", - " m,\n", - " sd.names.SUPPRESS,\n", - " constraints=['EX_sucr_e - 4 BIOMASS__1 <= 0',\n", - " 'BIOMASS__1 >= 0.01']\n", - " )\n", - " module_protect = sd.SDModule(\n", - " m,\n", - " sd.names.PROTECT,\n", - " constraints='BIOMASS__1>=.1'\n", - " )\n", - " sd_helper = compute_strain_designs(\n", - " m,\n", - " sd_modules = [module_suppress, module_protect],\n", - " time_limit = 500,\n", - " max_solutions = 3,\n", - " max_cost = 5,\n", - " # gene_kos=False,\n", - " ko_cost=rxn_cost,\n", - " solution_approach = sd.names.ANY\n", - " )\n", - " sols = sd_helper.step_2(max_solutions=5, max_cost=10, time_limit=60, solution_approach=sd.names.ANY)" - ] - }, - { - "cell_type": "code", - "execution_count": 211, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[4.0, 4.0, 4.0]" - ] - }, - "execution_count": 211, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sols.sd_cost" - ] - }, - { - "cell_type": "code", - "execution_count": 212, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "One compressed solution with cost 4.0 found and expanded to 3 solutions in the uncompressed netork.\n", - "Example knockout set: ['PCXHtpp', 'BCT1_syn', 'CYTBD4cm', 'NTRARf2']\n" - ] - } - ], - "source": [ - "\n", - "# Print solutions\n", - "print(f\"One compressed solution with cost {sols.sd_cost[0]} found and \"+\\\n", - " f\"expanded to {len(sols.reaction_sd)} solutions in the uncompressed netork.\")\n", - "print(f\"Example knockout set: {[s for s in sols.reaction_sd[0]]}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "solutions = sols.reaction_sd" - ] - }, - { - "cell_type": "code", - "execution_count": 213, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "rxns = [\n", - " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'NTRIRfx': -1.0},\n", - " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'NTRARf2': -1.0},\n", - " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'NO3abcpp': -1.0},\n", - " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'GND': -1.0, 'PSP_L': -1.0},\n", - " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'GND': -1.0, 'PGCD': -1.0},\n", - " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'GND': -1.0, 'PSERT': -1.0},\n", - " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0},\n", - " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0},\n", - " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0},\n", - " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'PGL': -1.0, 'PSP_L': -1.0},\n", - " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'PGL': -1.0, 'PGCD': -1.0},\n", - " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'PGL': -1.0, 'PSERT': -1.0},\n", - " {'NDHPQRcm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'MNHNAtpp': -1.0, 'NTRIRfx': -1.0},\n", - " {'NDHPQRcm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'MNHNAtpp': -1.0, 'NTRARf2': -1.0},\n", - " {'NDHPQRcm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'MNHNAtpp': -1.0, 'NO3abcpp': -1.0},\n", - "]" - ] - }, - { - "cell_type": "code", - "execution_count": 77, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['CYTBD4cm', 'BCT1_syn', 'PCXHtpp', 'GND', 'PSERT']\n", - "CYTBD4cm: 4.0 h_c + o2_c + 2.0 pqh2_cm --> 2.0 h2o_c + 4.0 h_p + 2.0 pq_cm\n", - "BCT1_syn: atp_c + h2o_c + hco3_p --> adp_c + h_c + hco3_c + pi_c\n", - "PCXHtpp: h_c --> h_p\n", - "GND: 6pgc_c + nadp_c --> co2_c + nadph_c + ru5p__D_c\n", - "PSERT: 3php_c + glu__L_c <=> akg_c + pser__L_c\n", - "1.0839043697160782\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "EX_photon690_e -1000.000\n", - "EX_photon670_e -848.725\n", - "H2Otu_syn -400.367\n", - "Htcx -204.108\n", - "O2tex -192.874\n", - " ... \n", - "ETCPC 848.725\n", - "PHOA670um 848.725\n", - "PHOA690um 1000.000\n", - "PSICSum 1000.000\n", - "PSIum 1000.000\n", - "Name: fluxes, Length: 428, dtype: float64" - ] - }, - "execution_count": 77, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def run_with_intervention(intervention):\n", - " with consistent_model as m:\n", - " print([i for i in intervention])\n", - " for i in intervention:\n", - " print(m.reactions.get_by_id(i))\n", - " # if i == 'BCT1_syn':\n", - " # continue\n", - " # print(i)\n", - " m.reactions.get_by_id(i).lower_bound = 0\n", - " m.reactions.get_by_id(i).upper_bound = 0\n", - "# m.remove_reactions([m.reactions.get_by_id(i)])\n", - " print(m.slim_optimize())\n", - " sol = m.optimize()\n", - "\n", - " view_with_changes(m)\n", - " return sol.fluxes #sol.reduced_costs, \n", - "red_costs = run_with_intervention(rxns[5])\n", - "red_costs[np.abs(red_costs)>0.001].sort_values()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "red_costs = run_with_intervention(rxns[3])\n", - "red_costs[np.abs(red_costs)>0.001].sort_values()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "fl = cobra.flux_analysis.flux_variability_analysis(consistent_model)" - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Metabolite identifierco2_c
NameCO2 CO2
Memory address0x0258e8be21a0
FormulaCO2
Compartmentc
In 54 reaction(s)\n", - " OXADC, CO2tpp, CPPPGO2, 3OAS160, PROAKGOX1, ORNDC, 3OAS100, PFOR, AOXSr2, DBTS, GLYCL, 3OAS120, 3OAS60, DAPDC, SEPHCHCS, PPNDH, CPPPGO, ERTHMMOR, THRPDC, ACLSa, 3OAS180, ICDHyr, PPCDC, KAS14,...
" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 66, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model.metabolites.co2_c" - ] - }, - { - "cell_type": "code", - "execution_count": 93, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Reaction identifierBCT1_syn
NameBicarbonate transport via ABC system (periplasm)
Memory address0x0258eb87c730
Stoichiometry\n", - "

atp_c + h2o_c + hco3_p --> adp_c + h_c + hco3_c + pi_c

\n", - "

ATP C10H12N5O13P3 + H2O H2O + Bicarbonate --> ADP C10H12N5O10P2 + H+ + Bicarbonate + Phosphate

\n", - "
GPRSYNPCC7942_RS07605 and SYNPCC7942_RS07610 and SYNPCC7942_RS07615 and SYNPCC7942_RS07620
Lower bound0.0
Upper bound1000.0
\n", - " " - ], - "text/plain": [ - "" - ] - }, - "execution_count": 93, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "consistent_model.reactions.BCT1_syn" - ] - }, - { - "cell_type": "code", - "execution_count": 85, - "metadata": { - "pycharm": { - "name": "#%%\n" - }, - "scrolled": false - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:cobra.summary.metabolite_summary:Generating new parsimonious flux distribution.\n" - ] - }, - { - "data": { - "text/html": [ - "

atp_c

C10H12N5O13P3

Producing Reactions

\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
PercentFluxReactionDefinition
2.45%23.44ACKrac_c + atp_c <=> actp_c + adp_c
89.37%853.8ATPSum3.0 adp_c + 13.0 h_u + 3.0 pi_c <=> 3.0 atp_c + 3.0 h2o_c + 10.0 h_c
5.85%55.88PPKatp_c + pi_c <=> adp_c + ppi_c
0.00%0.007325PPK2atp_c + ppi_c <=> adp_c + pppi_c
2.32%22.18PYKadp_c + h_c + pep_c --> atp_c + pyr_c
0.00%0.0216URIDK2ratp_c + dump_c <=> adp_c + dudp_c

Consuming Reactions

\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
PercentFluxReactionDefinition
1.38%-13.18ACCOACaccoa_c + atp_c + hco3_c --> adp_c + h_c + malcoa_c + pi_c
2.52%-24.04ACSac_c + atp_c + coa_c --> accoa_c + amp_c + ppi_c
0.00%-2.092E-05ADCPS2adcobhex_c + applp_c + atp_c --> adocbip_c + adp_c + h_c + pi_c
0.00%-8.368E-05ADCYRSadcobdam_c + 4.0 atp_c + 4.0 gln__L_c + 4.0 h2o_c --> adcobhex_c + 4.0 adp_c + 4.0 glu__L_c + 4.0 h_c + 4.0 pi_c
5.13%-49.02ADK1amp_c + atp_c <=> 2.0 adp_c
0.00%-0.04654ADNK1adn_c + atp_c --> adp_c + amp_c + h_c
0.07%-0.6367ADSKaps_c + atp_c --> adp_c + h_c + paps_c
0.00%-0.0001041AFATatp_c + fmn_c + 2.0 h_c --> fad_c + ppi_c
0.08%-0.7814AIRC2air_c + atp_c + hco3_c --> 5caiz_c + adp_c + h_c + pi_c
0.02%-0.1874ALAALAr2.0 ala__D_c + atp_c --> adp_c + alaala_c + h_c + pi_c
0.17%-1.601ALATRSala__L_c + atp_c + trnaala_c --> alatrna_c + amp_c + ppi_c
0.10%-0.9505ARGSSasp__L_c + atp_c + citr__L_c --> amp_c + argsuc_c + h_c + ppi_c
0.10%-0.9505ARGTRSarg__L_c + atp_c + trnaarg_c --> amp_c + argtrna_c + ppi_c
0.08%-0.7645ASNS1asp__L_c + atp_c + gln__L_c + h2o_c --> amp_c + asn__L_c + glu__L_c + h_c + ppi_c
0.08%-0.7645ASNTRSasn__L_c + atp_c + trnaasn_c --> amp_c + asntrna_c + ppi_c
0.25%-2.383ASPKasp__L_c + atp_c --> 4pasp_c + adp_c
0.10%-0.9486ASPTRSasp__L_c + atp_c + trnaasp_c --> amp_c + asptrna_c + ppi_c
0.04%-0.3509ATPPRTatp_c + prpp_c --> ppi_c + prbatp_c
0.00%-0.000107BACCLatp_c + btn_c + h_c --> btamp_c + ppi_c
1.97%-18.85BIOMASS_PROTEIN0.7662 alatrna_c + 0.4548 argtrna_c + 0.3658 asntrna_c + 0.4539 asptrna_c + 9.0199 atp_c + 0.0899 cystrna_c + 0.502 glntrna_c + 0.5465 glutrna_c + 0.6663 glytrna_c + 18.0398 gtp_c + 27.0597 h2o_c + 0.1679 histrna_c + 0.5665 iletrna_c + 1.0294 leutrna_c + 0.3777 lystrna_c + 0.177 mettrna_c + 0.3622 phetrna_c + 0.463 protrna_c + 0.5238 sertrna_c + 0.4957 thrtrna_c + 0.1398 trptrna_c + 0.2633 tyrtrna_c + 0.6082 valtrna_c --> 9.0199 adp_c + bm_pro_c + 18.0398 gdp_c + 36.0797 h_c + 27.0597 pi_c + 0.7662 trnaala_c + 0.4548 trnaarg_c + 0.3658 trnaasn_c + 0.4539 trnaasp_c + 0.0899 trnacys_c + 0.502 trnagln_c + 0.5465 trnaglu_c + 0.6663 trnagly_c + 0.1679 trnahis_c + 0.5665 trnaile_c + 1.0294 trnaleu_c + 0.3777 trnalys_c + 0.177 trnamet_c + 0.3622 trnaphe_c + 0.463 trnapro_c + 0.5238 trnaser_c + 0.4957 trnathr_c + 0.1398 trnatrp_c + 0.2633 trnatyr_c + 0.6082 trnaval_c
0.03%-0.3226BIOMASS_RNA0.69466 atp_c + 0.86375 ctp_c + 0.86375 gtp_c + 0.69466 utp_c --> bm_rna_c + 3.11683 ppi_c
12.84%-122.6BIOMASS__130.0 atp_c + 0.0977 bm_carbs_c + 0.00119 bm_cofactors_c + 0.0795 bm_cw_c + 0.0073 bm_dna_c + 0.159 bm_memlip_c + 0.0197 bm_pigm_c + 0.5112 bm_pro_c + 0.1136 bm_rna_c + 30.0 h2o_c --> 30.0 adp_c + 30.0 h_c + 30.0 pi_c
0.36%-3.445CBPS2.0 atp_c + gln__L_c + h2o_c + hco3_c --> 2.0 adp_c + cbp_c + glu__L_c + 2.0 h_c + pi_c
0.06%-0.5518CDPMEK4c2me_c + atp_c --> 2p4c2me_c + adp_c + h_c
0.00%-2.092E-05COCHL_1atp_c + cobalt2_c + h2o_c + hgbam_c --> adp_c + co2dam_c + 3.0 h_c + pi_c
0.02%-0.2256COLIPAabcexatp_c + colipacy_p + h2o_c --> adp_c + colipacy_e + h_c + pi_c
0.04%-0.428CTPS2atp_c + gln__L_c + h2o_c + utp_c --> adp_c + ctp_c + glu__L_c + 2.0 h_c + pi_c
0.00%-2.092E-05CYRDAATatp_c + co1dam_c + h_c --> adcobdam_c + pppi_c
0.02%-0.1879CYSTRSatp_c + cys__L_c + trnacys_c --> amp_c + cystrna_c + ppi_c
0.08%-0.7485CYTK1atp_c + cmp_c <=> adp_c + cdp_c
0.00%-2.092E-05Cobalt2abcppIatp_c + cobalt2_p + h2o_c --> adp_c + cobalt2_c + h_c + pi_c
0.00%-0.000107DBTSatp_c + co2_c + dann_c --> adp_c + dtbt_c + 3.0 h_c + pi_c
0.00%-0.0003118DHFSatp_c + dhpt_c + glu__L_c --> adp_c + dhf_c + h_c + pi_c
0.00%-7.784E-05DPCOAKatp_c + dpcoa_c --> adp_c + coa_c + h_c
0.00%-0.0216DTMPKatp_c + dtmp_c <=> adp_c + dtdp_c
0.00%-0.006549FE3abcppatp_c + fe3_p + h2o_c --> adp_c + fe3_c + h_c + pi_c
0.01%-0.05439GARTatp_c + for_c + gar_c --> adp_c + fgam_c + h_c + pi_c
0.05%-0.4358GK1atp_c + gmp_c <=> adp_c + gdp_c
0.26%-2.45GLGCatp_c + g1p_c + h_c --> adpglc_c + ppi_c
0.71%-6.755GLNSatp_c + glu__L_c + nh4_c --> adp_c + gln__L_c + h_c + pi_c
0.11%-1.049GLNTRSatp_c + gln__L_c + trnagln_c --> amp_c + glntrna_c + ppi_c
0.20%-1.919GLU5Katp_c + glu__L_c --> adp_c + glu5p_c
0.16%-1.544GLUTRSatp_c + glu__L_c + trnaglu_c --> amp_c + glutrna_c + ppi_c
0.15%-1.393GLYTRSatp_c + gly_c + trnagly_c --> amp_c + glytrna_c + ppi_c
0.05%-0.4357GMPS2atp_c + gln__L_c + h2o_c + xmp_c <=> amp_c + glu__L_c + gmp_c + 2.0 h_c + ppi_c
0.00%-4.184E-05HGYDAS2.0 atp_c + 2.0 gln__L_c + 2.0 h2o_c + hgbyr_c --> 2.0 adp_c + 2.0 glu__L_c + 2.0 h_c + hgbam_c + 2.0 pi_c
0.04%-0.3509HISTRSatp_c + his__L_c + trnahis_c --> amp_c + histrna_c + ppi_c
0.00%-0.0003118HPPK2ahhmp_c + atp_c <=> 2ahhmd_c + amp_c + h_c
0.11%-1.036HSKatp_c + hom__L_c --> adp_c + h_c + phom_c
0.02%-0.2256ICLIPAabcppatp_c + h2o_c + icolipacy_c --> adp_c + h_c + icolipacy_p + pi_c
0.12%-1.184ILETRSatp_c + ile__L_c + trnaile_c --> amp_c + iletrna_c + ppi_c
0.23%-2.151LEUTRSatp_c + leu__L_c + trnaleu_c --> amp_c + leutrna_c + ppi_c
0.00%-2.092E-05LTHRKatp_c + thr__L_c --> adp_c + h_c + thrp_c
0.08%-0.7894LYSTRSatp_c + lys__L_c + trnalys_c --> amp_c + lystrna_c + ppi_c
0.00%-0.04743METATatp_c + h2o_c + met__L_c --> amet_c + pi_c + ppi_c
0.04%-0.3699METTRSatp_c + met__L_c + trnamet_c --> amp_c + mettrna_c + ppi_c
0.00%-0.04583MG2uabcppatp_c + h2o_c + mg2_p --> adp_c + h_c + mg2_c + pi_c
0.00%-0.04583MPMLatp_c + h2o_c + mg2_c + ppp9_c --> adp_c + 3.0 h_c + mppp9_c + pi_c
0.00%-0.0002077NADKatp_c + nad_c --> adp_c + h_c + nadp_c
0.00%-0.00106NADS2atp_c + dnad_c + gln__L_c + h2o_c --> amp_c + glu__L_c + h_c + nad_c + ppi_c
0.00%-2.092E-05NAMNPPatp_c + h2o_c + nac_c + prpp_c <=> adp_c + nicrnt_c + pi_c + ppi_c
11.31%-108.1NDPK1atp_c + gdp_c <=> adp_c + gtp_c
0.22%-2.073NDPK2atp_c + udp_c <=> adp_c + utp_c
0.08%-0.7216NDPK3atp_c + cdp_c <=> adp_c + ctp_c
0.00%-0.0216NDPK4atp_c + dtdp_c <=> adp_c + dttp_c
0.00%-0.02686NDPK5atp_c + dgdp_c <=> adp_c + dgtp_c
0.00%-0.02686NDPK7atp_c + dcdp_c <=> adp_c + dctp_c
0.00%-0.0216NDPK8atp_c + dadp_c <=> adp_c + datp_c
3.60%-34.35NGAM_D1um360.0 atp_c + 720.0 gtp_c + 1080.0 h2o_c + ps2d1_exc_um --> 360.0 adp_c + 720.0 gdp_c + 1080.0 h_c + 1080.0 pi_c + ps2d1_um
0.00%-0.00106NNATratp_c + h_c + nicrnt_c <=> dnad_c + ppi_c
0.02%-0.2256OANTIabcppatp_c + h2o_c + oanticy_c --> adp_c + h_c + oanticy_p + pi_c
0.00%-7.784E-05PANTSala_B_c + atp_c + pant__R_c --> amp_c + h_c + pnto__R_c + ppi_c
35.63%-340.4PGK3pg_c + atp_c <=> 13dpg_c + adp_c
0.08%-0.757PHETRSatp_c + phe__L_c + trnaphe_c --> amp_c + phetrna_c + ppi_c
0.18%-1.744PIuabcppatp_c + h2o_c + pi_p --> adp_c + h_c + 2.0 pi_c
0.00%-0.0001036PMPK4ampm_c + atp_c --> 2mahmp_c + adp_c
0.00%-7.784E-05PNTKatp_c + pnto__R_c --> 4ppan_c + adp_c + h_c
0.00%-7.784E-05PPNCL34ppan_c + atp_c + cys__L_c --> 4ppcys_c + amp_c + h_c + ppi_c
0.08%-0.7815PRAGSratp_c + gly_c + pram_c --> adp_c + gar_c + h_c + pi_c
0.08%-0.7815PRAISatp_c + fpram_c --> adp_c + air_c + 2.0 h_c + pi_c
0.08%-0.7814PRASCSi5aizc_c + asp__L_c + atp_c <=> 25aics_c + adp_c + h_c + pi_c
0.08%-0.7815PRFGSatp_c + fgam_c + gln__L_c + h2o_c --> adp_c + fpram_c + glu__L_c + h_c + pi_c
0.10%-0.9676PROTRSatp_c + pro__L_c + trnapro_c --> amp_c + ppi_c + protrna_c
0.23%-2.199PRPPSatp_c + r5p_c <=> amp_c + h_c + prpp_c
19.40%-185.4PRUKatp_c + ru5p__D_c --> adp_c + h_c + rb15bp_c
0.00%-7.784E-05PTPATiatp_c + h_c + pan4p_c --> dpcoa_c + ppi_c
0.00%-0.000125RBFKatp_c + ribflv_c --> adp_c + fmn_c + h_c
0.07%-0.6367SADTatp_c + h_c + so4_c --> aps_c + ppi_c
0.11%-1.095SERTRSatp_c + ser__L_c + trnaser_c --> amp_c + ppi_c + sertrna_c
0.17%-1.6SHKKatp_c + skm_c --> adp_c + h_c + skm5p_c
0.00%-8.222E-05SUCBZLatp_c + coa_c + sucbz_c --> amp_c + ppi_c + sbzcoa_c
0.07%-0.6367SULabcppatp_c + h2o_c + so4_p --> adp_c + h_c + pi_c + so4_c
0.00%-0.0001036THISATatp_c + h_c + this_c --> athis_c + ppi_c
0.11%-1.036THRTRSatp_c + thr__L_c + trnathr_c --> amp_c + ppi_c + thrtrna_c
0.00%-0.0001036TMPKatp_c + thmmp_c --> adp_c + thmpp_c
0.03%-0.2922TRPTRSatp_c + trnatrp_c + trp__L_c --> amp_c + ppi_c + trptrna_c
0.06%-0.5503TYRTRSatp_c + trnatyr_c + tyr__L_c --> amp_c + ppi_c + tyrtrna_c
0.02%-0.1874UAAGDS26dap__M_c + atp_c + uamag_c --> adp_c + h_c + pi_c + ugmd_c
0.02%-0.1874UAMAGSatp_c + glu__D_c + uama_c --> adp_c + h_c + pi_c + uamag_c
0.02%-0.1874UAMASala__L_c + atp_c + uamr_c --> adp_c + h_c + pi_c + uama_c
0.02%-0.1874UGMDDSalaala_c + atp_c + ugmd_c --> adp_c + h_c + pi_c + ugmda_c
0.10%-0.9917UMPKatp_c + ump_c <=> adp_c + udp_c
0.13%-1.271VALTRSatp_c + trnaval_c + val__L_c --> amp_c + ppi_c + valtrna_c
" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 85, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "consistent_model.metabolites.atp_c.summary()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "consistent_model.reactions.HCO3E_1_cx " - ] - }, - { - "cell_type": "code", - "execution_count": 72, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Reaction identifierHCO3tcx
NameBicarbonate transport to carboxyzome
Memory address0x0258eb887ac0
Stoichiometry\n", - "

hco3_c --> hco3_cx

\n", - "

Bicarbonate --> Bicarbonate

\n", - "
GPR
Lower bound0.0
Upper bound1000.0
\n", - " " - ], - "text/plain": [ - "" - ] - }, - "execution_count": 72, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "consistent_model.reactions.HCO3tcx " - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Metabolite identifierhco3_cx
NameBicarbonate
Memory address0x0258eb7764a0
FormulaCHO3
Compartmentcx
In 2 reaction(s)\n", - " HCO3tcx, HCO3E_1_cx
" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 71, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "consistent_model.metabolites.hco3_cx" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "frozenset({,\n", - " ,\n", - " })" - ] - }, - "execution_count": 47, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "consistent_model.metabolites.hco3_p.reactions" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Reaction identifierHCO3tex
NameBicarbonate transport via diffusion (extracellular to periplasm)
Memory address0x0258eb87e860
Stoichiometry\n", - "

hco3_e <=> hco3_p

\n", - "

Bicarbonate <=> Bicarbonate

\n", - "
GPR
Lower bound-1000.0
Upper bound1000.0
\n", - " " - ], - "text/plain": [ - "" - ] - }, - "execution_count": 48, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "consistent_model.reactions.HCO3tex " - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Reaction identifierBCT1_syn
NameBicarbonate transport via ABC system (periplasm)
Memory address0x0258eb87c730
Stoichiometry\n", - "

atp_c + h2o_c + hco3_p --> adp_c + h_c + hco3_c + pi_c

\n", - "

ATP C10H12N5O13P3 + H2O H2O + Bicarbonate --> ADP C10H12N5O10P2 + H+ + Bicarbonate + Phosphate

\n", - "
GPRSYNPCC7942_RS07605 and SYNPCC7942_RS07610 and SYNPCC7942_RS07615 and SYNPCC7942_RS07620
Lower bound0.0
Upper bound1000.0
\n", - " " - ], - "text/plain": [ - "" - ] - }, - "execution_count": 73, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "consistent_model.reactions.BCT1_syn " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "red_costs = run_with_intervention(['GND', 'PSP_L', 'BCT1_syn'])\n", - "\n", - "red_costs[np.abs(red_costs)>0.001].sort_values()" - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "['SYNPCC7942_RS07615',\n", - " 'SYNPCC7942_RS07605',\n", - " 'SYNPCC7942_RS07620',\n", - " 'SYNPCC7942_RS07610']" - ] - }, - "execution_count": 53, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "\"\"\"\n", - "['SYNPCC7942_RS07615',\n", - " 'SYNPCC7942_RS07605',\n", - " 'SYNPCC7942_RS07620',\n", - " 'SYNPCC7942_RS07610']\n", - " \n", - "\"\"\"\n", - "[g.id for g in model.reactions.BCT1_syn.genes]" - ] - }, - { - "cell_type": "code", - "execution_count": 82, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[]\n", - "4.08828027358269\n" - ] - }, - { - "data": { - "image/png": "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rq5Nnpry9/fH3Xffjffee6/BmIKCAnz++ed46KGHoFKpGqz7u9/9DpmZmejXrx+io6MbLL9x4wa++eYbbN68ue5IkUajQUZGBm7evIndu3c3mfmX5ysvL292TG1tbYNvRxFR22p4TJaIHI5er8eFCxfqHufk5ECj0cDPzw/dunUDACxbtgzXrl3DJ598AuC/X0V+99138dxzz2HOnDn48ccf8dVXX+Hbb7+97esVFRWhqqoKBoMBR44cwaeffooHHnigyfHvvvsuhg8fjokTJ+K1115DeHg4srKysHjxYnTp0qXJozq+vr7Iz8+Hu7t7o8s//fRT+Pv748EHH2xQhiZPnoyPPvoI99xzD+bOnYvQ0FDcdddd6Nq1K/Lz8/Haa68hICCgrryNGTMGs2bNQnx8PPz9/XHmzBk8//zzGDt2LLy9vW/7N2lOSUkJrl69iry8PAD//Wo78N+jY8HBwa16biKnIPfLVETUFn75yvStU2JiYt2YxMREMXr06AbrDRw4UHh4eIiePXuKjRs3WvQ6bm5uIjw8XDz77LNCr9fXe61ffzVbCCEuX74sEhMTRVBQkHB3dxdhYWHi6aefFtevX683bvTo0WLBggVNZvj1V7P79+8v5s2b1+i4LVu2CA8PD1FcXCy+/vprMXnyZBESEiI8PDxEaGiouP/++8WpU6fqxr/xxhti2LBhws/PT3h5eYmePXuKZ555pkG+lti4cWOj++fWr5gTUeNUQlh41R0RERGRHeE1M0RERKRovGaGiKiV9u7di0mTJjW6rLKystlvf/36lglE1DI8zURE1EqVlZW4du1ak8uaKzMRERG2ikXkNFhmiIiISNF4zQwREREpGssMERERKRrLDBERESkaywwREREpGssMERERKRrLDBERESkaywwREREp2v8DNMzCGJbeS4QAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "EX_photon690_e -1000.000\n", - "EX_photon670_e -1000.000\n", - "H2Otu_syn -500.000\n", - "O2tex -194.132\n", - "O2tpp -194.132\n", - " ... \n", - "ETCPC 1000.000\n", - "PSIICSum 1000.000\n", - "PHOA670um 1000.000\n", - "PSIum 1000.000\n", - "PHOA690um 1000.000\n", - "Name: fluxes, Length: 446, dtype: float64" - ] - }, - "execution_count": 82, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "red_costs = run_with_intervention(['BCT1_syn'])\n", - "red_costs[np.abs(red_costs)>0.001].sort_values()" - ] - }, - { - "cell_type": "code", - "execution_count": 83, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "183.52300375243226" - ] - }, - "execution_count": 83, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "red_costs[np.abs(red_costs)>0.001].loc['HCO3E_1_cx']" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['PSP_L']\n", - "PSP_L: h2o_c + pser__L_c --> pi_c + ser__L_c\n", - "1.9945150376163114\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "FDH6 -1.527\n", - "GLYCK -1.527\n", - "EX_meoh_e -0.774\n", - "SK_for_c -0.763\n", - "EX_sucr_e -0.122\n", - "SK_akg_c -0.031\n", - "PSIICRum -0.029\n", - "DM_succ_c -0.029\n", - "DM_lac__D_c -0.026\n", - "SK_fum_c -0.026\n", - "NTRIRfx -0.023\n", - "ZCAROTDH2 -0.013\n", - "DM_ac_c -0.013\n", - "AGDC -0.013\n", - "CYTBD4cm -0.010\n", - "MEHLER_1 -0.010\n", - "CMPA_1 -0.010\n", - "OXADC -0.008\n", - "NADDP -0.008\n", - "NGAM -0.007\n", - "GTHPi -0.005\n", - "GLYCOX2 -0.005\n", - "DM_h2_c -0.005\n", - "LALGP -0.005\n", - "GLUCYS -0.005\n", - "HEX7 -0.005\n", - "DCTPD -0.005\n", - "ASNN -0.005\n", - "DCTPD2 -0.005\n", - "PKETF -0.005\n", - "PKETX -0.005\n", - "PSP_L 1.524\n", - "Name: reduced_costs, dtype: float64" - ] - }, - "execution_count": 43, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "red_costs = run_with_intervention(['PSP_L'])\n", - "red_costs[np.abs(red_costs)>0.005].sort_values()" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['CYTBD4cm', 'BCT1_syn', 'PCXHtpp', 'GND', 'PSP_L']\n", - "1.083904369716062\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "GLYCK -2.076\n", - "FDH6 -2.063\n", - "EX_meoh_e -1.039\n", - "SK_for_c -1.037\n", - "DM_succ_c -0.013\n", - "SK_fum_c -0.013\n", - "DM_lac__D_c -0.007\n", - "MEHLER_1 -0.007\n", - "PKETF -0.007\n", - "PKETX -0.007\n", - "Kabcpp -0.006\n", - "Htabcpp -0.006\n", - "CMPA_1 -0.004\n", - "OXADC -0.004\n", - "GTHPi -0.004\n", - "DM_h2_c -0.004\n", - "GLYCOX2 -0.004\n", - "PEPC -0.004\n", - "NDHPQRum -0.004\n", - "ASPOb -0.004\n", - "EX_hco3_e -0.004\n", - "NDH_1_1_um_copy1 -0.004\n", - "AGDC -0.003\n", - "NO3abcpp -0.003\n", - "PSICRum -0.002\n", - "PSICSum 0.002\n", - "BCT1_syn 0.006\n", - "PCXHtpp 0.006\n", - "GND 0.007\n", - "CYTBD4cm 0.016\n", - "PSP_L 2.076\n", - "Name: reduced_costs, dtype: float64" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "red_costs = run_with_intervention(rxns[3])\n", - "red_costs[np.abs(red_costs)>0.001].sort_values()" - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Htex\n", - "EX_hco3_e\n", - "NO3abcpp\n", - "0.7434414202750895\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAGwCAYAAABcnuQpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAABNT0lEQVR4nO3deVxU9eI+8GdAFjcGJTcUtzTL5cqouCdp5hqpaS51FbPuTdPULEv7lXbLQruV3aumuIDmbqbkrqgJrrmBu4iCguwgzjADDDBzfn945RuyyMAMnzkzz/u+5vW6c+acmed4nObxfM6ikCRJAhEREZFMOYgOQERERFQZLDNEREQkaywzREREJGssM0RERCRrLDNEREQkaywzREREJGssM0RERCRr1UQHsDSj0YjExETUrl0bCoVCdBwiIiIqB0mSkJWVBU9PTzg4lL3vxebLTGJiIry8vETHICIiogqIj49HkyZNypzH5stM7dq1ATz6w3BzcxOchoiIiMpDo9HAy8ur8He8LDZfZh4PLbm5ubHMEBERyUx5DhHhAcBEREQkaywzREREJGssM0RERCRrLDNEREQkaywzREREJGssM0RERCRrLDNEREQkaywzREREJGssM0RERCRrLDNEREQkaywzREREJGssM0RERCRrLDNEREQkaywzREREJGssM0RERCRrdlNmxm0fh+z8bNExiIiIyMzspswcvHMQqhUqXEu9JjoKERERmZHdlBmD0YBbD26h//r+WHp2KSRJEh2JiIiIzMBuysxjydpkfH70c/ht9oM2Tys6DhEREVWS0DITHh4OPz8/eHp6QqFQICQkpNg8N27cwGuvvQalUomaNWvCx8cHcXFxlfpctV6NA7cPQLVChUvJlyr1XkRERCSW0DKj0+nQsWNHLFu2rMTX79y5g969e+P555/HsWPHcPnyZXzxxRdwdXWt9GcbJANuZ97GwA0D8cOpHzjsREREJFMKyUp+xRUKBXbu3Inhw4cXThs7diycnJywfv36Cr+vRqOBUqkE5gAopQO5ObuhW5Nu2D56O9xc3Cr8WURERGQej3+/1Wo13NzK/m222mNmjEYj9u7di+eeew4DBw5E/fr10a1btxKHov5Kr9dDo9EUeTyNJk+DIzFHoApU4ULiBTOtAREREVUFqy0zqamp0Gq1WLhwIQYNGoRDhw5hxIgR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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "run_with_intervention(sols.reaction_sd[4])" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - }, - "source": [ - "## Optcouple" - ] - }, - { - "cell_type": "code", - "execution_count": 127, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "module_optcouple = sd.SDModule(\n", - " consistent_model,\n", - " sd.names.OPTCOUPLE,\n", - " inner_objective='BIOMASS__1',\n", - " prod_id='EX_sucr_e',\n", - " min_gcp=0.5\n", - ")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "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.10.6" - } - }, - "nbformat": 4, - "nbformat_minor": 1 -} diff --git a/syn_elong/notebooks/optimize_sucrose_via_optknock.ipynb b/syn_elong/notebooks/optimize_sucrose_via_optknock.ipynb deleted file mode 100644 index 93fad3e..0000000 --- a/syn_elong/notebooks/optimize_sucrose_via_optknock.ipynb +++ /dev/null @@ -1,2061 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "import matplotlib.pyplot as plt\n", - "import os\n", - "os.environ['JAVA_HOME'] = r'C:\\Program Files\\Java\\jdk-21'\n", - "from straindesign import compress_model, remove_dummy_bounds\n", - "import cobra\n", - "import logging\n", - "logging.basicConfig(level=logging.INFO)\n", - "import cobra\n", - "import numpy as np\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "import straindesign as sd\n", - "import straindesign.names as names" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Set parameter Username\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:gurobipy.gurobipy:Set parameter Username\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Set parameter GURO_PAR_SPECIAL\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:gurobipy.gurobipy:Set parameter GURO_PAR_SPECIAL\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Set parameter TokenServer to value \"leghorn\"\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:gurobipy.gurobipy:Set parameter TokenServer to value \"leghorn\"\n" - ] - } - ], - "source": [ - "from syn_elong import model\n", - "from syn_elong.media import m9_media" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.05390186774577662\n" - ] - } - ], - "source": [ - "with model:\n", - " print(model.slim_optimize())" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:cobra.medium.boundary_types:Compartment `e` sounds like an external compartment. Using this one without counting boundary reactions.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "4.088280273582626\n" - ] - } - ], - "source": [ - "with model:\n", - " model.medium = m9_media\n", - " print(model.slim_optimize())" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:cobra.medium.boundary_types:Compartment `e` sounds like an external compartment. Using this one without counting boundary reactions.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Maximum possible BIOMASS__1 synthesis rate: 4.088280273582666.\n", - "Maximum possible EX_sucr_e synthesis rate: 16.389121923937367.\n" - ] - } - ], - "source": [ - "with model:\n", - " model.medium = m9_media\n", - "# model.reactions.BIOMASS__1.upper_bound = 1000\n", - "# model.objective = 'BIOMASS__1'\n", - "# sol = model.optimize()\n", - " sol = sd.fba(model, obj='BIOMASS__1', obj_sense='max', pfba =False)\n", - " print(f\"Maximum possible BIOMASS__1 synthesis rate: {sol.objective_value}.\")\n", - "# x = sol.to_frame()\n", - "# display(x.sort_values(by='reduced_costs', ascending=True))\n", - "# print(x.loc['EX_sucr_e'])\n", - " sol = sd.fba(model, obj='EX_sucr_e', obj_sense='max', pfba =False)\n", - " print(f\"Maximum possible EX_sucr_e synthesis rate: {sol.objective_value}.\")\n", - "# model.objective = 'EX_sucr_e'\n", - "# sol = model.optimize()\n", - " \n", - "# x = sol.to_frame()\n", - "# display(x.sort_values(by='reduced_costs', ascending=True))\n", - "# print(x.loc['BIOMASS__1'])" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:cobra.medium.boundary_types:Compartment `e` sounds like an external compartment. Using this one without counting boundary reactions.\n" - ] - } - ], - "source": [ - "model.medium = m9_media" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:cobra.medium.boundary_types:Compartment `e` sounds like an external compartment. Using this one without counting boundary reactions.\n" - ] - } - ], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "999" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(model.reactions)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:cobra.summary.model_summary:Generating new parsimonious flux distribution.\n" - ] - }, - { - "data": { - "text/html": [ - "

Objective

1.0 BIOMASS__1 = 4.088280273582626

Uptake

\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
MetaboliteReactionFluxC-NumberC-Flux
co2_eEX_co2_e77.95143.80%
cobalt2_eEX_cobalt2_e2.092E-0500.00%
fe3_eEX_fe3_e0.00654900.00%
h_eEX_h_e69.1300.00%
hco3_eEX_hco3_e100156.20%
k_eEX_k_e6.325E-0600.00%
mg2_eEX_mg2_e0.0458300.00%
na1_eEX_na1_e4.865E-0700.00%
nh4_eEX_nh4_e32.9500.00%
photon510_eEX_photon510_e13.4600.00%
photon650_eEX_photon650_e0.0458300.00%
photon670_eEX_photon670_e100000.00%
photon690_eEX_photon690_e100000.00%
pi_eEX_pi_e1.74400.00%
so4_eEX_so4_e0.636700.00%
amylose_cSK_amylose_c2.100.00%

Secretion

\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
MetaboliteReactionFluxC-NumberC-Flux
5drib_cDM_5drib_c-0.0004247526.10%
amob_cDM_amob_c-0.0001071519.73%
co_cDM_co_c-0.004324153.14%
dialurate_cDM_dialurate_c-2.092E-0541.03%
pho_loss_cDM_pho_loss_c-59.2100.00%
h2o_eEX_h2o_e-9.31600.00%
o2_eEX_o2_e-194.100.00%
sucr_eEX_sucr_e-0.01100.00%
" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model.summary()" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "fluxes = model.optimize().fluxes\n", - "fluxes = fluxes[np.abs(fluxes)>0]" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "ex = [i for i in fluxes.index if i.startswith('EX_')]" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "import pandas as pd\n", - "pd.set_option('display.float_format', lambda x: f'{x:.3f}')" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "EX_photon690_e -1000.000\n", - "EX_photon670_e -1000.000\n", - "EX_hco3_e -100.000\n", - "EX_co2_e -77.949\n", - "EX_h_e -69.129\n", - "EX_nh4_e -32.949\n", - "EX_photon470_e -13.457\n", - "EX_pi_e -1.744\n", - "EX_so4_e -0.637\n", - "EX_mg2_e -0.046\n", - "EX_photon650_e -0.046\n", - "EX_fe3_e -0.007\n", - "EX_cobalt2_e -0.000\n", - "EX_k_e -0.000\n", - "EX_na1_e -0.000\n", - "EX_sucr_e 0.011\n", - "EX_h2o_e 9.316\n", - "EX_o2_e 194.131\n", - "Name: fluxes, dtype: float64" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# fluxes.style.format('{:.2f}', na_rep='MISS')\n", - "fluxes.loc[ex].sort_values()" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "\n", - "datapoints, triang, plot1 = sd.plot_flux_space(\n", - " model,\n", - " ('BIOMASS__1','EX_sucr_e'),\n", - " show=False\n", - ");" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "blocked_reactions = cobra.flux_analysis.find_blocked_reactions(model)" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "235" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(blocked_reactions)" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpm59iakji.lp\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:gurobipy.gurobipy:Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpm59iakji.lp\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Reading time = 0.03 seconds\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:gurobipy.gurobipy:Reading time = 0.03 seconds\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - ": 893 rows, 1952 columns, 7974 nonzeros\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:gurobipy.gurobipy:: 893 rows, 1952 columns, 7974 nonzeros\n" - ] - } - ], - "source": [ - "consistent_model = cobra.flux_analysis.fastcc(model)\n", - "cobra.io.write_sbml_model( consistent_model, 'condensed_syn.xml',)" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:cobra.summary.model_summary:Generating new parsimonious flux distribution.\n", - "INFO:cobra.summary.model_summary:Performing flux variability analysis.\n" - ] - }, - { - "data": { - "text/html": [ - "

Objective

1.0 BIOMASS__1 = 4.088280273582649

Uptake

\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
MetaboliteReactionFluxRangeC-NumberC-Flux
co2_eEX_co2_e77.95[60.17; 100]143.80%
cobalt2_eEX_cobalt2_e2.092E-05[1.883E-05; 2.076E-05]00.00%
fe3_eEX_fe3_e0.006549[0.005894; 0.006549]00.00%
h_eEX_h_e69.13[32.37; 100]00.00%
hco3_eEX_hco3_e100[60.17; 100]156.20%
k_eEX_k_e6.325E-06[5.692E-06; 6.325E-06]00.00%
mg2_eEX_mg2_e0.04583[0.04125; 0.04583]00.00%
na1_eEX_na1_e4.865E-07[4.379E-07; 4.865E-07]00.00%
nh4_eEX_nh4_e32.95[15.11; 32.95]00.00%
photon470_eEX_photon470_e13.46[0; 1000]00.00%
photon650_eEX_photon650_e0.04583[0; 1000]00.00%
photon670_eEX_photon670_e1000[0; 1000]00.00%
photon690_eEX_photon690_e1000[0; 1000]00.00%
pi_eEX_pi_e1.744[1.57; 1.744]00.00%
so4_eEX_so4_e0.6367[0.573; 0.6367]00.00%
amylose_cSK_amylose_c2.1[1.89; 2.1]00.00%

Secretion

\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
MetaboliteReactionFluxRangeC-NumberC-Flux
5drib_cDM_5drib_c-0.0004247[-0.0004247; -0.0003822]526.10%
ac_cDM_ac_c0[-9.827; 0]20.00%
amob_cDM_amob_c-0.000107[-0.000107; -9.633E-05]1519.73%
co_cDM_co_c-0.004324[-0.004324; -0.003891]153.14%
dialurate_cDM_dialurate_c-2.092E-05[-2.092E-05; -1.883E-05]41.03%
h2_cDM_h2_c0[-59.46; 0]00.00%
lac__D_cDM_lac__D_c0[-6.551; 0]30.00%
pho_loss_cDM_pho_loss_c-59.21[-1000; -39.94]00.00%
succ_cDM_succ_c0[-6.551; 0]40.00%
h2o_eEX_h2o_e-9.316[-18.38; 41.1]00.00%
meoh_eEX_meoh_e0[-0.000107; 0]10.00%
no3_eEX_no3_e0[0; 14.54]00.00%
o2_eEX_o2_e-194.1[-204.5; -174.7]00.00%
photon410_eEX_photon410_e0[0; 1000]00.00%
photon430_eEX_photon430_e0[0; 1000]00.00%
photon450_eEX_photon450_e0[0; 1000]00.00%
photon490_eEX_photon490_e0[0; 1000]00.00%
photon510_eEX_photon510_e0[0; 1000]00.00%
photon530_eEX_photon530_e0[0; 1000]00.00%
photon550_eEX_photon550_e0[0; 1000]00.00%
photon570_eEX_photon570_e0[0; 1000]00.00%
photon590_eEX_photon590_e0[0; 1000]00.00%
photon610_eEX_photon610_e0[0; 1000]00.00%
photon630_eEX_photon630_e0[0; 1000]00.00%
sucr_eEX_sucr_e-0.011[-1.649; -0.011]00.00%
akg_cSK_akg_c0[-4.53; 0]50.00%
for_cSK_for_c0[-23.43; 0]10.00%
fum_cSK_fum_c0[-6.551; 0]40.00%
" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "consistent_model.summary(fva=.9)" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "4.088280273582658" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "consistent_model.slim_optimize()" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "4.088280273582654" - ] - }, - "execution_count": 40, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model.slim_optimize()" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "SPP: h2o_c + suc6p_c --> pi_c + sucr_c\n", - "SUCRt2: h_e + sucr_e <=> h_c + sucr_c\n", - "SUCR: h2o_c + sucr_c --> fru_c + glc__D_c\n" - ] - } - ], - "source": [ - "for rxn in consistent_model.metabolites.sucr_c.reactions:\n", - " print(rxn)\n", - " # print(consistent_model.reactions.get_by_id(rxn.id))" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Metabolite identifiersuc6p_c
NameSucrose 6-phosphate
Memory address0x01babb3f1330
FormulaC12H21O14P
Compartmentc
In 2 reaction(s)\n", - " SPP, SPS
" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 42, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "consistent_model.metabolites.suc6p_c" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "for rxn in consistent_model.metabolites.suc6p_c.reactions:\n", - " print(rxn)" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "\n", - "datapoints, triang, plot1 = sd.plot_flux_space(\n", - " consistent_model,\n", - " ('BIOMASS__1','EX_sucr_e'),\n", - " show=False\n", - ");" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "module_optknock = sd.SDModule(\n", - " consistent_model,\n", - " names.OPTKNOCK,\n", - " inner_objective='BIOMASS__1',\n", - " outer_objective='EX_sucr_e',\n", - " constraints=['EX_sucr_e >= 5', 'BIOMASS__1 >= 1.']\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:root:Preparing strain design computation.\n", - "INFO:root: Using gurobi for solving LPs during preprocessing.\n", - "WARNING:root: Removing reaction bounds when larger than the cobra-threshold of 1000.\n", - "INFO:root: FVA to identify blocked reactions and irreversibilities.\n" - ] - }, - { - "ename": "Exception", - "evalue": "Status code 12 not yet handeld.", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mRemoteTraceback\u001b[0m Traceback (most recent call last)", - "\u001b[1;31mRemoteTraceback\u001b[0m: \n\"\"\"\nTraceback (most recent call last):\n File \"C:\\Users\\pino216\\Miniconda3\\envs\\whole-cell-gemm\\lib\\multiprocessing\\pool.py\", line 125, in worker\n result = (True, func(*args, **kwds))\n File \"C:\\Users\\pino216\\Miniconda3\\envs\\whole-cell-gemm\\lib\\multiprocessing\\pool.py\", line 48, in mapstar\n return list(map(*args))\n File \"C:\\Users\\pino216\\Miniconda3\\envs\\whole-cell-gemm\\lib\\site-packages\\straindesign\\lptools.py\", line 166, in fva_worker_compute\n min_cx = lp_glob.backend.slim_solve()\n File \"C:\\Users\\pino216\\Miniconda3\\envs\\whole-cell-gemm\\lib\\site-packages\\straindesign\\gurobi_interface.py\", line 218, in slim_solve\n raise Exception('Status code ' + str(status) + \" not yet handeld.\")\nException: Status code 12 not yet handeld.\n\"\"\"", - "\nThe above exception was the direct cause of the following exception:\n", - "\u001b[1;31mException\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn [49], line 4\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mlogging\u001b[39;00m\n\u001b[0;32m 2\u001b[0m logging\u001b[38;5;241m.\u001b[39mbasicConfig(level\u001b[38;5;241m=\u001b[39mlogging\u001b[38;5;241m.\u001b[39mINFO)\n\u001b[1;32m----> 4\u001b[0m sols \u001b[38;5;241m=\u001b[39m \u001b[43msd\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcompute_strain_designs\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 5\u001b[0m \u001b[43m \u001b[49m\u001b[43mconsistent_model\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 6\u001b[0m \u001b[43m \u001b[49m\u001b[43msd_modules\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mmodule_optknock\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 7\u001b[0m \u001b[43m \u001b[49m\u001b[43mmax_solutions\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 8\u001b[0m \u001b[43m \u001b[49m\u001b[43mmax_cost\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m3\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 9\u001b[0m \u001b[43m \u001b[49m\u001b[43msolution_approach\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mbest\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 10\u001b[0m \u001b[43m \u001b[49m\u001b[43mtime_limit\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m300\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 11\u001b[0m \n\u001b[0;32m 12\u001b[0m \u001b[43m)\u001b[49m\n", - "File \u001b[1;32m~\\Miniconda3\\envs\\whole-cell-gemm\\lib\\site-packages\\straindesign\\compute_strain_designs.py:286\u001b[0m, in \u001b[0;36mcompute_strain_designs\u001b[1;34m(model, **kwargs)\u001b[0m\n\u001b[0;32m 284\u001b[0m \u001b[38;5;66;03m# FVAs to identify blocked, irreversible and essential reactions, as well as non-bounding bounds\u001b[39;00m\n\u001b[0;32m 285\u001b[0m logging\u001b[38;5;241m.\u001b[39minfo(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m FVA to identify blocked reactions and irreversibilities.\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m--> 286\u001b[0m \u001b[43mbound_blocked_or_irrevers_fva\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msolver\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m[\u001b[49m\u001b[43mSOLVER\u001b[49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 287\u001b[0m logging\u001b[38;5;241m.\u001b[39minfo(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m FVA(s) to identify essential reactions.\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 288\u001b[0m essential_reacs \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mset\u001b[39m()\n", - "File \u001b[1;32m~\\Miniconda3\\envs\\whole-cell-gemm\\lib\\site-packages\\straindesign\\networktools.py:966\u001b[0m, in \u001b[0;36mbound_blocked_or_irrevers_fva\u001b[1;34m(model, solver)\u001b[0m\n\u001b[0;32m 959\u001b[0m \u001b[38;5;124;03m\"\"\"Use FVA to determine the flux ranges. Use this information to update the model bounds\u001b[39;00m\n\u001b[0;32m 960\u001b[0m \u001b[38;5;124;03m\u001b[39;00m\n\u001b[0;32m 961\u001b[0m \u001b[38;5;124;03mIf flux ranges for a reaction are narrower than its bounds in the mode, these bounds can be omitted, \u001b[39;00m\n\u001b[0;32m 962\u001b[0m \u001b[38;5;124;03msince other reactions must constrain the reaction flux. If (upper or lower) flux bounds are found to \u001b[39;00m\n\u001b[0;32m 963\u001b[0m \u001b[38;5;124;03mbe zero, the model bounds are updated to reduce the model complexity.\u001b[39;00m\n\u001b[0;32m 964\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 965\u001b[0m \u001b[38;5;66;03m# FVAs to identify blocked and irreversible reactions, as well as non-bounding bounds\u001b[39;00m\n\u001b[1;32m--> 966\u001b[0m flux_limits \u001b[38;5;241m=\u001b[39m \u001b[43mfva\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 967\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m select_solver(solver) \u001b[38;5;129;01min\u001b[39;00m [SCIP, GLPK]:\n\u001b[0;32m 968\u001b[0m tol \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1e-10\u001b[39m \u001b[38;5;66;03m# use tolerance for tightening problem bounds\u001b[39;00m\n", - "File \u001b[1;32m~\\Miniconda3\\envs\\whole-cell-gemm\\lib\\site-packages\\straindesign\\lptools.py:305\u001b[0m, in \u001b[0;36mfva\u001b[1;34m(model, **kwargs)\u001b[0m\n\u001b[0;32m 303\u001b[0m chunk_size \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlen\u001b[39m(reaction_ids) \u001b[38;5;241m/\u001b[39m\u001b[38;5;241m/\u001b[39m processes\n\u001b[0;32m 304\u001b[0m \u001b[38;5;66;03m# x = pool.imap_unordered(worker_compute, range(2*numr), chunksize=chunk_size)\u001b[39;00m\n\u001b[1;32m--> 305\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, value \u001b[38;5;129;01min\u001b[39;00m pool\u001b[38;5;241m.\u001b[39mimap_unordered(fva_worker_compute, \u001b[38;5;28mrange\u001b[39m(\u001b[38;5;241m2\u001b[39m \u001b[38;5;241m*\u001b[39m numr), chunksize\u001b[38;5;241m=\u001b[39mchunk_size):\n\u001b[0;32m 306\u001b[0m x[i] \u001b[38;5;241m=\u001b[39m value\n\u001b[0;32m 307\u001b[0m \u001b[38;5;66;03m# GLPK works better when reinitializing the LP in every iteration. Unfortunately, this is slow\u001b[39;00m\n\u001b[0;32m 308\u001b[0m \u001b[38;5;66;03m# but for now by far the most stable solution.\u001b[39;00m\n", - "File \u001b[1;32m~\\Miniconda3\\envs\\whole-cell-gemm\\lib\\multiprocessing\\pool.py:451\u001b[0m, in \u001b[0;36m\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m 443\u001b[0m result \u001b[38;5;241m=\u001b[39m IMapUnorderedIterator(\u001b[38;5;28mself\u001b[39m)\n\u001b[0;32m 444\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_taskqueue\u001b[38;5;241m.\u001b[39mput(\n\u001b[0;32m 445\u001b[0m (\n\u001b[0;32m 446\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_guarded_task_generation(result\u001b[38;5;241m.\u001b[39m_job,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 449\u001b[0m result\u001b[38;5;241m.\u001b[39m_set_length\n\u001b[0;32m 450\u001b[0m ))\n\u001b[1;32m--> 451\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m (item \u001b[38;5;28;01mfor\u001b[39;00m chunk \u001b[38;5;129;01min\u001b[39;00m result \u001b[38;5;28;01mfor\u001b[39;00m item \u001b[38;5;129;01min\u001b[39;00m chunk)\n", - "File \u001b[1;32m~\\Miniconda3\\envs\\whole-cell-gemm\\lib\\multiprocessing\\pool.py:873\u001b[0m, in \u001b[0;36mIMapIterator.next\u001b[1;34m(self, timeout)\u001b[0m\n\u001b[0;32m 871\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m success:\n\u001b[0;32m 872\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m value\n\u001b[1;32m--> 873\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m value\n", - "\u001b[1;31mException\u001b[0m: Status code 12 not yet handeld." - ] - } - ], - "source": [ - "import logging\n", - "logging.basicConfig(level=logging.INFO)\n", - "\n", - "sols = sd.compute_strain_designs(\n", - " consistent_model,\n", - " sd_modules = module_optknock,\n", - " max_solutions = 1,\n", - " max_cost = 3,\n", - " solution_approach = 'best',\n", - " time_limit=300,\n", - "\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 83, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "import networkx as nx" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "rxn_graph = nx.DiGraph()\n", - "for i in reaction_sd:\n", - " prev = None\n", - " for j in i:\n", - " if prev is not None:\n", - " rxn_graph.add_edge(prev, j)\n", - " prev = j\n", - " \n", - "# print(i)\n", - "nx.draw_networkx(rxn_graph, pos=nx.layout.kamada_kawai_layout(rxn_graph, rxn_graph.nodes))" - ] - }, - { - "cell_type": "code", - "execution_count": 97, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "nx.write_gml(rxn_graph, 'reaction_graph.gml')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "reaction_sd = [\n", - " {'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0},\n", - " {'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0},\n", - " {'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0},\n", - " {'GART': -1.0, 'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0},\n", - " {'GART': -1.0, 'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0},\n", - " {'GART': -1.0, 'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0},\n", - " {'GART': -1.0, 'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0},\n", - " {'GART': -1.0, 'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0},\n", - " {'GART': -1.0, 'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0},\n", - " {'GART': -1.0, 'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0},\n", - " {'GART': -1.0, 'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0},\n", - " {'GART': -1.0, 'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0},\n", - " {'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0, 'FALGTHLs': -1.0},\n", - " {'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0, 'FALDH2': -1.0},\n", - " {'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0, 'ALCD1': -1.0},\n", - " {'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0, 'SFGTHi': -1.0},\n", - " {'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0, 'FALGTHLs': -1.0},\n", - " {'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0, 'FALDH2': -1.0},\n", - " {'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0, 'ALCD1': -1.0},\n", - " {'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0, 'SFGTHi': -1.0},\n", - " {'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0, 'FALGTHLs': -1.0},\n", - " {'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0, 'FALDH2': -1.0},\n", - " {'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0, 'ALCD1': -1.0},\n", - " {'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0, 'SFGTHi': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0, 'FALGTHLs': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0, 'FALDH2': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0, 'ALCD1': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0, 'SFGTHi': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0, 'FALGTHLs': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0, 'FALDH2': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0, 'ALCD1': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0, 'SFGTHi': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0, 'FALGTHLs': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0, 'FALDH2': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0, 'ALCD1': -1.0},\n", - " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0, 'SFGTHi': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0, 'FALGTHLs': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0, 'FALDH2': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0, 'ALCD1': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0, 'SFGTHi': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0, 'FALGTHLs': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0, 'FALDH2': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0, 'ALCD1': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0, 'SFGTHi': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0, 'FALGTHLs': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0, 'FALDH2': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0, 'ALCD1': -1.0},\n", - " {'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0, 'SFGTHi': -1.0}\n", - "]" - ] - }, - { - "cell_type": "code", - "execution_count": 142, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "{'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0}" - ] - }, - "execution_count": 142, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "reaction_sd[0]" - ] - }, - { - "cell_type": "code", - "execution_count": 143, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "image/png": "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AAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAsjbADAAAszdSws379ek2ePFlxcXGy2Wx6++2367UbhqH7779fsbGxCggI0Pjx47Vnz556fY4cOaIbbrhBLpdLYWFhmjVrlsrKyi7gpwAAAC2ZqWGnvLxc/fv31+LFi0/ZvmjRIj311FNasmSJNm3apKCgICUnJ6uystLT54YbbtCOHTuUkZGhlStXav369brlllsu1EcAAAAtnK+ZO584caImTpx4yjbDMPTkk0/qvvvu09VXXy1J+vvf/67o6Gi9/fbbuu666/TNN99o9erV+uKLLzRkyBBJ0tNPP61Jkybpf/7nfxQXF3fBPgsAAGiZWuycnQMHDigvL0/jx4/3rAsNDdXQoUOVmZkpScrMzFRYWJgn6EjS+PHj5ePjo02bNp122263WyUlJfVeAADAmlps2MnLy5MkRUdH11sfHR3tacvLy1NUVFS9dl9fX4WHh3v6nEp6erpCQ0M9r/j4eC9XDwAAWooWG3aa04IFC1RcXOx55eTkmF0SAABoJi027MTExEiS8vPz663Pz8/3tMXExKigoKBee01NjY4cOeLpcypOp1Mul6veCwAAWFOLDTudOnVSTEyM1q5d61lXUlKiTZs2KSkpSZKUlJSkoqIiZWVlefp8+OGHqqur09ChQy94zQAAoOUx9WqssrIy7d2717N84MABbdmyReHh4UpISNCdd96phx9+WN26dVOnTp30+9//XnFxcbrmmmskSb169dKVV16pm2++WUuWLFF1dbXmzJmj6667jiuxAACAJJPDzpdffqmxY8d6lufNmydJSk1N1bJly3T33XervLxct9xyi4qKijRixAitXr1a/v7+nve8/PLLmjNnjsaNGycfHx9NnTpVTz311AX/LAAAoGWyGYZhmF2E2UpKShQaGqpiSd6avVMQG6j0Z0Z6aWsAAFycpg24XcM7pzTLtj1/v4uLzzj/tsXO2QEAAPAGwg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0y4SdxYsXq2PHjvL399fQoUP1+eefm10SAABoASwRdl577TXNmzdPCxcu1FdffaX+/fsrOTlZBQUFZpcGAABMZomw86c//Uk333yzbrrpJiUmJmrJkiUKDAzUCy+8YHZpAADAZL5mF3C+qqqqlJWVpQULFnjW+fj4aPz48crMzDzle9xut9xut2e5uLhYkvRjmFMlNptX6qqWj5x1Lq9sCwCAi1F1rVvVFbUqKSlplu2f3K5hGGfsd9GHncOHD6u2tlbR0dH11kdHR2vXrl2nfE96eroefPDBBusTi9yn6H0e/muFd7cHAMBF5k/6V7Pvo7S0VKGhoadtv+jDzrlYsGCB5s2b51kuKipShw4dlJ2dfcaDBe8rKSlRfHy8cnJy5HIxEnYhcezNw7E3D8feXN4+/oZhqLS0VHFxcWfsd9GHnbZt28putys/P7/e+vz8fMXExJzyPU6nU06ns8H60NBQvvwmcblcHHuTcOzNw7E3D8feXN48/o0ZpLjoJyg7HA4NHjxYa9eu9ayrq6vT2rVrlZSUZGJlAACgJbjoR3Ykad68eUpNTdWQIUN06aWX6sknn1R5ebluuukms0sDAAAms0TYufbaa3Xo0CHdf//9ysvL04ABA7R69eoGk5ZPx+l0auHChac8tYXmxbE3D8fePBx783DszWXW8bcZZ7teCwAA4CJ20c/ZAQAAOBPCDgAAsDTCDgAAsDTCDgAAsLRWH3YWL16sjh07yt/fX0OHDtXnn39udkmtwgMPPCCbzVbv1bNnT7PLsqT169dr8uTJiouLk81m09tvv12v3TAM3X///YqNjVVAQIDGjx+vPXv2mFOsxZzt2M+YMaPB78GVV15pTrEWk56erksuuUQhISGKiorSNddco927d9frU1lZqbS0NEVERCg4OFhTp05tcINaNF1jjv2YMWMafPdvvfXWZqupVYed1157TfPmzdPChQv11VdfqX///kpOTlZBQYHZpbUKvXv3Vm5uruf16aefml2SJZWXl6t///5avHjxKdsXLVqkp556SkuWLNGmTZsUFBSk5ORkVVZWXuBKredsx16Srrzyynq/B6+88soFrNC61q1bp7S0NG3cuFEZGRmqrq7WhAkTVF5e7ukzd+5c/fvf/9aKFSu0bt06HTx4UFOmTDGxamtozLGXpJtvvrned3/RokXNV5TRil166aVGWlqaZ7m2ttaIi4sz0tPTTayqdVi4cKHRv39/s8todSQZb731lme5rq7OiImJMf74xz961hUVFRlOp9N45ZVXTKjQun5+7A3DMFJTU42rr77alHpam4KCAkOSsW7dOsMwjn/P/fz8jBUrVnj6fPPNN4YkIzMz06wyLennx94wDGP06NHGHXfcccFqaLUjO1VVVcrKytL48eM963x8fDR+/HhlZmaaWFnrsWfPHsXFxalz58664YYblJ2dbXZJrc6BAweUl5dX7/cgNDRUQ4cO5ffgAvn4448VFRWlHj16aPbs2SosLDS7JEsqLi6WJIWHh0uSsrKyVF1dXe+737NnTyUkJPDd97KfH/uTXn75ZbVt21Z9+vTRggULdOzYsWarwRJ3UD4Xhw8fVm1tbYO7LEdHR2vXrl0mVdV6DB06VMuWLVOPHj2Um5urBx98UCNHjtT27dsVEhJidnmtRl5eniSd8vfgZBuaz5VXXqkpU6aoU6dO2rdvn+69915NnDhRmZmZstvtZpdnGXV1dbrzzjs1fPhw9enTR9Lx777D4VBYWFi9vnz3vetUx16Sfv3rX6tDhw6Ki4vT119/rXvuuUe7d+/Wm2++2Sx1tNqwA3NNnDjR83O/fv00dOhQdejQQa+//rpmzZplYmXAhXPdddd5fu7bt6/69eunLl266OOPP9a4ceNMrMxa0tLStH37duYFmuB0x/6WW27x/Ny3b1/FxsZq3Lhx2rdvn7p06eL1Olrtaay2bdvKbrc3mHmfn5+vmJgYk6pqvcLCwtS9e3ft3bvX7FJalZPfdX4PWobOnTurbdu2/B540Zw5c7Ry5Up99NFHat++vWd9TEyMqqqqVFRUVK8/333vOd2xP5WhQ4dKUrN991tt2HE4HBo8eLDWrl3rWVdXV6e1a9cqKSnJxMpap7KyMu3bt0+xsbFml9KqdOrUSTExMfV+D0pKSrRp0yZ+D0zwww8/qLCwkN8DLzAMQ3PmzNFbb72lDz/8UJ06darXPnjwYPn5+dX77u/evVvZ2dl898/T2Y79qWzZskWSmu2736pPY82bN0+pqakaMmSILr30Uj355JMqLy/XTTfdZHZplnfXXXdp8uTJ6tChgw4ePKiFCxfKbrfr+uuvN7s0yykrK6v3/5YOHDigLVu2KDw8XAkJCbrzzjv18MMPq1u3burUqZN+//vfKy4uTtdcc415RVvEmY59eHi4HnzwQU2dOlUxMTHat2+f7r77bnXt2lXJyckmVm0NaWlpWr58ud555x2FhIR45uGEhoYqICBAoaGhmjVrlubNm6fw8HC5XC7dfvvtSkpK0rBhw0yu/uJ2tmO/b98+LV++XJMmTVJERIS+/vprzZ07V6NGjVK/fv2ap6gLdt1XC/X0008bCQkJhsPhMC699FJj48aNZpfUKlx77bVGbGys4XA4jHbt2hnXXnutsXfvXrPLsqSPPvrIkNTglZqaahjG8cvPf//73xvR0dGG0+k0xo0bZ+zevdvcoi3iTMf+2LFjxoQJE4zIyEjDz8/P6NChg3HzzTcbeXl5ZpdtCac67pKMpUuXevpUVFQYt912m9GmTRsjMDDQ+OUvf2nk5uaaV7RFnO3YZ2dnG6NGjTLCw8MNp9NpdO3a1Zg/f75RXFzcbDXZThQGAABgSa12zg4AAGgdCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAtH79ek2ePFlxcXGy2Wx6++23G/W+jz/+WIMGDZLT6VTXrl21bNmys/a32WyeV0BAgHr37q2//OUv9frNmDGjwbO5cnJyNHPmTMXFxcnhcKhDhw664447VFhYWK/fmDFjZLPZ9NhjjzXYf0pKimw2mx544IEGba+88orsdrvS0tJOWftf//pX9e/fX8HBwQoLC9PAgQOVnp7uaT927JgWLFigLl26yN/fX5GRkRo9erTeeeedMx6TxnjzzTc1YcIERUREyGazeR6aCKBxCDsAVF5erv79+2vx4sWNfs+BAweUkpKisWPHasuWLbrzzjv13//931qzZs1Z37t7927l5uZq586d+u1vf6vZs2fXe/r0z+3fv19DhgzRnj179Morr2jv3r1asmSJ1q5dq6SkJB05cqRe//j4+AbB68cff9TatWtP+1Tl559/XnfffbdeeeUVVVZW1mt74YUXdOedd+p3v/udtmzZos8++0x33323ysrKPH1uvfVWvfnmm3r66ae1a9curV69WtOmTWsQxs5FeXm5RowYoccff/y8twW0Ss321C0AFyVJxltvvXXWfnfffbfRu3fveuuuvfZaIzk5+bTvOflgzKNHj9Zb36VLF2PRokWe5dTUVOPqq6/2LF955ZVG+/btjWPHjtV7X25urhEYGGjceuutnnWjR482Zs+ebURERBiffvqpZ/0jjzxiTJ482ejfv7+xcOHCetvZv3+/ERAQYBQVFRlDhw41Xn755XrtV199tTFjxozTfi7DMIzQ0FBj2bJlZ+xzvg4cOGBIMjZv3tys+wGshpEdAOckMzNT48ePr7cuOTlZmZmZjd6GYRhavXq1srOzNXTo0FP2OXLkiNasWaPbbrtNAQEB9dpiYmJ0ww036LXXXpPxk2caOxwO3XDDDVq6dKln3bJlyzRz5sxT7mPp0qVKSUlRaGiofvOb3+j5559vsJ+NGzfq+++/P+1niYmJ0XvvvafS0tKzfm4AFxZhB8A5ycvLU3R0dL110dHRKikpUUVFxRnf2759ewUHB8vhcCglJUULFy7UqFGjTtl3z549MgxDvXr1OmV7r169dPToUR06dKje+pkzZ+r1119XeXm51q9fr+LiYl111VUN3l9XV6dly5bpN7/5jSTpuuuu06effqoDBw54+ixcuFBhYWHq2LGjevTooRkzZuj1119XXV2dp89f/vIXbdiwQREREbrkkks0d+5cffbZZ2c8DgAuDMIOgAvuk08+0ZYtW7Rlyxb97W9/06OPPqrnnnvujO/56chNY/Tv31/dunXTG2+8oRdeeEHTp0+Xr69vg34ZGRkqLy/XpEmTJElt27bVFVdcoRdeeMHTJzY2VpmZmdq2bZvuuOMO1dTUKDU1VVdeeaUn8IwaNUr79+/X2rVrNW3aNO3YsUMjR47UH/7whybVDcD7CDsAzklMTIzy8/PrrcvPz5fL5WpwuunnOnXqpK5du6p379666aabNH36dD3yyCOn7Nu1a1fZbDZ98803p2z/5ptv1KZNG0VGRjZomzlzphYvXqw33njjtKewnn/+eR05ckQBAQHy9fWVr6+v3nvvPb344ov1Rm4kqU+fPrrtttv0j3/8QxkZGcrIyNC6des87X5+fho5cqTuuecevf/++3rooYf0hz/8QVVVVWc8HgCaF2EHwDlJSkpqcAVVRkaGkpKSmrwtu91+2lNfERERuuKKK/Tss8826JOXl6eXX35Z1157rWw2W4P3/vrXv9a2bdvUp08fJSYmNmgvLCzUO++8o1dffdUz0rRlyxZt3rxZR48e1fvvv3/amk9ur7y8/Ix9ampqGlzdBeDCajimC6DVKSsr0969ez3LBw4c0JYtWxQeHq6EhARJ0oIFC/Tjjz/q73//u6Tjl1o/88wzuvvuuzVz5kx9+OGHev311/Xuu++edX8FBQWqrKyU2+3W559/rpdeeknTpk07bf9nnnlGl112mZKTk/Xwww+rU6dO2rFjh+bPn6927dqddlSoTZs2ys3NlZ+f3ynbX3rpJUVEROhXv/pVg7A0adIkPf/887ryyis1e/ZsxcXF6fLLL1f79u2Vm5urhx9+WJGRkZ5wN2bMGF1//fUaMmSIIiIitHPnTt17770aO3asXC7XWY/JmRw5ckTZ2dk6ePCgpOOX7kvHR9diYmLOa9tAq2DuxWAAWoKTl4T//JWamurpk5qaaowePbrB+wYMGGA4HA6jc+fOxtKlS5u0H19fX6NTp07GXXfdZZSVldXb108vPTcMw/juu++M1NRUIzo62vDz8zPi4+ON22+/3Th8+HC9fqNHjzbuuOOO09bw00vP+/bta9x2222n7Pfaa68ZDofDOHTokPHGG28YkyZNMmJjYw2Hw2HExcUZU6dONb7++mtP/0cffdRISkoywsPDDX9/f6Nz587G7373uwb1nYulS5ee8n+fn19CD+DUbIbRxFl/AAAAFxHm7AAAAEtjzg4ANLNPPvlEEydOPGVbRUXFGa9e++kjKQCcG05jAUAzq6io0I8//njatjOFna5duzZXWUCrQdgBAACWxpwdAABgaYQdAABgaYQdAABgaYQdAABgaYQdAABgaYQdAABgaYQdAABgaf8fi8/1rfmWmCQAAAAASUVORK5CYII=\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "consistent_model.reactions.BIOMASS__1.upper_bound = 10000\n", - "datapoints, triang, plot1 = sd.plot_flux_space(\n", - " consistent_model,\n", - " ('BIOMASS__1', 'EX_sucr_e'),\n", - " show=False\n", - ");\n", - "\n", - "plot1.set_facecolor('#70AD47')\n", - "plot1.set_edgecolor('#70AD47')\n", - "\n", - "# OptKnock design plot\n", - "# interventions = [[{s:1.0},'=',0.0] for rxn in reaction_sd for s,v in rxn.items() if v < 1]\n", - "interventions = [[{s:1.0},'=', 0.0] for s,v in reaction_sd[2].items() if v < 1]\n", - "_, _,plot3 = sd.plot_flux_space(\n", - " consistent_model,\n", - " ('BIOMASS__1', 'EX_sucr_e'),\n", - " # The sign of the glucose exchange reaction is flipped since\n", - " # reaction is defined in the direction of secretion.\n", - " constraints=interventions,\n", - " show=False\n", - ");\n", - "plot3.set_facecolor('red')\n", - "plot3.set_edgecolor('red')\n", - "# adjust axes limits and show plot\n", - "plot3.axes.set_xlim(0, 1.05*max([a[0] for a in datapoints]))\n", - "plot3.axes.set_ylim(0, 1.05*max([a[1] for a in datapoints]))\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 110, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'GART': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'GART': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'GART': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'GART': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'GART': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'GART': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'GART': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'GART': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'GART': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'FALGTHLs': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'FALDH2': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'ALCD1': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'SFGTHi': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'FALGTHLs': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'FALDH2': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'ALCD1': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'SFGTHi': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'FALGTHLs': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'FALDH2': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'ALCD1': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'GND': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'SFGTHi': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'FALGTHLs': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'FALDH2': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'ALCD1': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'SFGTHi': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'FALGTHLs': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'FALDH2': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'ALCD1': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'SFGTHi': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'FALGTHLs': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'FALDH2': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'ALCD1': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'G6PDH2r': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'SFGTHi': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'FALGTHLs': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'FALDH2': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'ALCD1': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PSP_L': 1.0}, '=', 0.0], [{'SFGTHi': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'FALGTHLs': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'FALDH2': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'ALCD1': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PGCD': 1.0}, '=', 0.0], [{'SFGTHi': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'FALGTHLs': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'FALDH2': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'ALCD1': 1.0}, '=', 0.0], [{'PDH': 1.0}, '=', 0.0], [{'PGL': 1.0}, '=', 0.0], [{'PSERT': 1.0}, '=', 0.0], [{'SFGTHi': 1.0}, '=', 0.0]]\n" - ] - } - ], - "source": [ - "print(interventions)\n", - "#rxns = set()\n", - "#for i in sols.reaction_sd:\n", - "# for j in i:\n", - "# rxns.add(j)\n", - "#print(rxns)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "rxn_to_remove = {\n", - " 'PSERT', 'ALCD1', 'PGL', 'SFGTHi',\n", - " 'G6PDH2r', 'FALDH2', \n", - " 'PSP_L', 'GART', 'PGCD', \n", - " 'GND', 'FALGTHLs', 'PDH'\n", - "}\n", - "rxn_to_remove" - ] - }, - { - "cell_type": "code", - "execution_count": 111, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "SFGTHi {'SYNPCC7942_RS02335'}\n", - "GART {'SYNPCC7942_RS03015'}\n", - "G6PDH2r {'SYNPCC7942_RS11865'}\n", - "ALCD1 {'SYNPCC7942_RS08430', 'SYNPCC7942_RS11615'}\n", - "PGCD {'SYNPCC7942_RS07670'}\n", - "GND {'SYNPCC7942_RS00195'}\n", - "FALGTHLs set()\n", - "PDH {'SYNPCC7942_RS00725', 'SYNPCC7942_RS05480', 'SYNPCC7942_RS06135', 'SYNPCC7942_RS09865'}\n", - "PGL {'SYNPCC7942_RS02690'}\n", - "PSP_L {'SYNPCC7942_RS02470'}\n", - "FALDH2 {'SYNPCC7942_RS02340'}\n", - "PSERT {'SYNPCC7942_RS00970'}\n" - ] - } - ], - "source": [ - "for i in rxn_to_remove:\n", - " rxn = model.reactions.get_by_id(i)\n", - " print(i, {gene.id for gene in rxn.genes})\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "ex=ex+['BIOMASS__1']" - ] - }, - { - "cell_type": "code", - "execution_count": 100, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "gene = model.genes.get_by_id('SYNPCC7942_RS03015')" - ] - }, - { - "cell_type": "code", - "execution_count": 104, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Reaction identifierGART
NameGAR transformylase-T
Memory address0x0234527f9ed0
Stoichiometry\n", - "

atp_c + for_c + gar_c --> adp_c + fgam_c + h_c + pi_c

\n", - "

ATP C10H12N5O13P3 + Formate + N1-(5-Phospho-D-ribosyl)glycinamide --> ADP C10H12N5O10P2 + N2-Formyl-N1-(5-phospho-D-ribosyl)glycinamide + H+ + Phosphate

\n", - "
GPRSYNPCC7942_RS03015
Lower bound0.0
Upper bound1000.0
\n", - " " - ], - "text/plain": [ - "" - ] - }, - "execution_count": 104, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model.reactions.get_by_id('GART')" - ] - }, - { - "cell_type": "code", - "execution_count": 113, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "522.3691291212901\n", - "480.5486028819524\n", - "\n" - ] - } - ], - "source": [ - "with model as model:\n", - " model.objective = {model.reactions.get_by_id('EX_sucr_e'): 1, model.reactions.get_by_id('BIOMASS__1'):1}\n", - " print(model.slim_optimize())\n", - " for i in rxn_to_remove:\n", - " model.remove_reactions([model.reactions.get_by_id(i)])\n", - " model.genes.get_by_id('SYNPCC7942_RS03015').knock_out() \n", - " model.objective = {model.reactions.get_by_id('EX_sucr_e'): 1, model.reactions.get_by_id('BIOMASS__1'):1}\n", - " print(model.slim_optimize())\n", - " pfba_solution = cobra.flux_analysis.pfba(model)\n", - " print(pfba_solution)\n", - " fluxes = pfba_solution.fluxes\n", - " prices = pfba_solution.shadow_prices" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "cobra.io.save_json_model( model, 'name_for_now.json',)" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "import escher\n", - "from escher import Builder" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "builder = Builder()" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "builder.model = model" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "builder.metabolite_data = pfba_solution.shadow_prices\n", - "builder.reaction_data = pfba_solution.fluxes" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": { - "pycharm": { - "name": "#%%\n" - }, - "scrolled": false - }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "ec43269ff6914f1f8fbb812de4512787", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Builder(allow_building_duplicate_reactions=False, and_method_in_gene_reaction_rule='mean', cofactors=['atp', '…" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "builder" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "with model:\n", - " model.objective = {model.reactions.get_by_id('EX_sucr_e'): 1, model.reactions.get_by_id('BIOMASS__1'):5}\n", - " pfba_solution = cobra.flux_analysis.pfba(model)\n", - "builder.metabolite_data = pfba_solution.shadow_prices\n", - "builder.reaction_data = pfba_solution.fluxes" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "metadata": { - "pycharm": { - "name": "#%%\n" - }, - "scrolled": true - }, - "outputs": [], - "source": [ - "flux = pfba_solution.fluxes.to_dict()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "source": [ - "## Auto escher map\n", - "\n", - "This code is based on https://github.com/johncthomas/Auto-Escher-map-for-CobraPy.\n", - "It doesn't quite do the visualization as wanted, but I'll keep it here until I get a defined escher map working right." - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "import generate_emap" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Of 98 reactions 75 have a link\n", - "The following are only connected to other reactions by common intermediates\n", - "Modeling: demand reaction (succ c) [DM_succ_c]:: succ_c --> \n", - "Nitrate exchange [EX_no3_e]:: no3_e <=> \n", - "Nucleoside-diphosphate kinase (ATP:GDP) [NDPK1]:: atp_c + gdp_c <=> adp_c + gtp_c\n", - "Adenylate kinase [ADK1]:: amp_c + atp_c <=> 2.0 adp_c\n", - "Polyphosphate kinase [PPK]:: atp_c + pi_c <=> adp_c + ppi_c\n", - "Modeling: exchange reaction, photon absorption (680-700nm) [EX_photon690_e]:: photon690_e <=> \n", - "Modeling: exchange reaction, photon absorption (660nm-680nm) [EX_photon670_e]:: photon670_e <=> \n", - "H2O transport via diffusion (tilacoid) [H2Otu_syn]:: h2o_u <=> h2o_c\n", - "Modeling: exchange reaction, photon absorption (500nm-520nm) [EX_photon510_e]:: photon510_e <=> \n", - "Acetate kinase [ACKr]:: ac_c + atp_c <=> actp_c + adp_c\n", - "Sucrose transport in via proton symport [SUCRt2]:: h_e + sucr_e <=> h_c + sucr_c\n", - "Sedoheptulose-bisphosphatase [SBP]:: h2o_c + s17bp_c --> pi_c + s7p_c\n", - "Unconnected count = 12\n" - ] - } - ], - "source": [ - "excluded_reactions = set(ex)\n", - "\n", - "common_mets = set()\n", - "rxn_with_flux = set()\n", - "rxn_with_greater_flux = set()\n", - "\n", - "threshold_flux = 1.1\n", - "\n", - "# Get a list of reactions with flux and those where flux exceeds the threshold\n", - "# The rxn_with_flux will be used to determine what's a common metabolite\n", - "# rxn_with_greater flux used to draw the map\n", - "for rxn_name in flux:\n", - " if flux[rxn_name] != 0 and rxn_name not in excluded_reactions:\n", - " rxn = model.reactions.get_by_id(rxn_name)\n", - " rxn_with_flux.add(rxn)\n", - " if 0-threshold_flux > flux[rxn_name] or threshold_flux < flux[rxn_name]:\n", - " rxn_with_greater_flux.add(rxn)\n", - "\n", - "# Get a dictionary of metabolite frequency\n", - "# (keys are the Cobra metabolite objects)\n", - "met_count = generate_emap.metabolite_occurence(rxn_with_flux)\n", - "\n", - "# Get common metabolites.\n", - "# included_common_m will be used be treated as uncommon whatever their occurence\n", - "included_common_m = ('accoa_c', 'pry_c', 'g3p_c', 'acald_c', 'f6p_c', 'pep_c')\n", - "for met in met_count:\n", - " if met_count[met] > 25 and met.id not in included_common_m:\n", - " common_mets.add(met)\n", - "\n", - "# Convert the sets to lists so that they can be iterated over\n", - "common_mets, rxn_with_flux, rxn_with_greater_flux = \\\n", - " list(common_mets), list(rxn_with_flux), list(rxn_with_greater_flux)\n", - "\n", - "\n", - "# Get the Escher JSON\n", - "escher_map = generate_emap.gen_map(\n", - " consistent_model, rxn_with_greater_flux, common_mets, 400, met_count\n", - ")\n", - "escher_json = escher_map.dump_json()\n", - "# Currently Escher doesn't accept json strings, needs a file, i assume that's a bug\n", - "with open('escher.json', 'w') as f:\n", - " f.write(escher_json)" - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "builder.hide_secondary_metabolites = True" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "{'ALCD1',\n", - " 'FALDH2',\n", - " 'FALGTHLs',\n", - " 'G6PDH2r',\n", - " 'GART',\n", - " 'GND',\n", - " 'PDH',\n", - " 'PGCD',\n", - " 'PGL',\n", - " 'PSERT',\n", - " 'PSP_L',\n", - " 'SFGTHi'}" - ] - }, - "execution_count": 54, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "rxn_to_remove" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "ec43269ff6914f1f8fbb812de4512787", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Builder(allow_building_duplicate_reactions=False, and_method_in_gene_reaction_rule='mean', cofactors=['atp', '…" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "builder" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "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.10.6" - } - }, - "nbformat": 4, - "nbformat_minor": 1 -} diff --git a/syn_elong/sucrose_optimization/optimize_sucrose_strain_design.ipynb b/syn_elong/sucrose_optimization/optimize_sucrose_strain_design.ipynb new file mode 100644 index 0000000..397c93d --- /dev/null +++ b/syn_elong/sucrose_optimization/optimize_sucrose_strain_design.ipynb @@ -0,0 +1,2513 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "pycharm": { + "is_executing": true, + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "import straindesign as sd" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import cobra\n", + "import logging\n", + "logging.basicConfig(level=logging.INFO)\n", + "import pandas as pd\n", + "pd.set_option('display.float_format', lambda x: f'{x:.3f}')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Set parameter Username\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:gurobipy.gurobipy:Set parameter Username\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Set parameter GURO_PAR_SPECIAL\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:gurobipy.gurobipy:Set parameter GURO_PAR_SPECIAL\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Set parameter TokenServer to value \"leghorn\"\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:gurobipy.gurobipy:Set parameter TokenServer to value \"leghorn\"\n" + ] + } + ], + "source": [ + "from syn_elong import model\n", + "from syn_elong.media import m9_media" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:cobra.medium.boundary_types:Compartment `e` sounds like an external compartment. Using this one without counting boundary reactions.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp8gkya95v.lp\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:gurobipy.gurobipy:Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmp8gkya95v.lp\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Reading time = 0.02 seconds\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:gurobipy.gurobipy:Reading time = 0.02 seconds\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + ": 924 rows, 2030 columns, 8354 nonzeros\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:gurobipy.gurobipy:: 924 rows, 2030 columns, 8354 nonzeros\n" + ] + } + ], + "source": [ + "model.medium = m9_media\n", + "consistent_model = cobra.flux_analysis.fastcc(model)\n", + "consistent_model.mediu = m9_media" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:cobra.medium.boundary_types:Compartment `e` sounds like an external compartment. Using this one without counting boundary reactions.\n", + "INFO:cobra.medium.boundary_types:Compartment `e` sounds like an external compartment. Using this one without counting boundary reactions.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Maximum possible BIOMASS__1 synthesis rate: 4.595313108153102.\n", + "Maximum possible EX_sucr_e synthesis rate: 16.66666666666667.\n", + "Maximum possible BIOMASS__1 synthesis rate: 4.595313108153135.\n", + "Maximum possible EX_sucr_e synthesis rate: 16.666666666666686.\n" + ] + } + ], + "source": [ + "with model:\n", + " model.medium = m9_media\n", + " sol = sd.fba(model, obj='BIOMASS__1', obj_sense='max', pfba =False)\n", + " print(f\"Maximum possible BIOMASS__1 synthesis rate: {sol.objective_value}.\")\n", + " sol = sd.fba(model, obj='EX_sucr_e', obj_sense='max', pfba =False)\n", + " print(f\"Maximum possible EX_sucr_e synthesis rate: {sol.objective_value}.\")\n", + "with consistent_model as m:\n", + " m.medium = m9_media\n", + " sol = sd.fba(m, obj='BIOMASS__1', obj_sense='max', pfba =False)\n", + " print(f\"Maximum possible BIOMASS__1 synthesis rate: {sol.objective_value}.\")\n", + " sol = sd.fba(m, obj='EX_sucr_e', obj_sense='max', pfba =False)\n", + " print(f\"Maximum possible EX_sucr_e synthesis rate: {sol.objective_value}.\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "image/png": "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06ePJOmrr75Samqqdu3apUmTJunFF190e0AAnmlBTKrunhWjtKMlpqMA8HN1LjO5ubnq0KGDJOmbb77RPffco8suu0yPPPKItm3b5vaAADzX1kN2DQuP0tdbM01HAeDH6lxm2rdvr+TkZFVWVmr16tX64x//KEkqKSlR06ZN3R4QgGcrdFZowuJEvbRym5wVlabjAPBDdS4zDz/8sEaPHq1evXrJZrPplltukSRt3LhR3bp1c3tAAN7h0w1puuODGKXkFpuOAsDP1PnS7KlTp6pXr15KT0/XPffco8DAQEm/3AH4hRdecHtAAN4jOdOh4eFRevPOKzTyygtMxwHgJ+r81OzauuKKK/TNN98oJCSkIXZfazw1GzBjzMAQTb29p1o0Y/oZQN016FOzays1NVXl5eUNtXsAHm5pXLpGRqzXvuxC01EA+DjuSw6gwew+UqjbI9br84RDpqMA8GGUGQANqqSsUn/53y2a/FmSSsoqTMcB4IMoMwAaxfLEDN0esV67s5h2AuBelBkAjWZfdpFGfhCtJZvSTEcB4EMoMwAaVWm5S1OWb9PTSzaryMm0E4Az59Yyk5eXV/W/Z8+erfbt27tz9wB8yKothzVierR2HLabjgLAy9W6zNx0001KTU095fvLly9Xz549q17fd999Ouuss84oHADflpJbrDtmxOiT2FTTUQB4sVqXmdatW6t3796aPXt2tfG8vDyNHTtW999/v55++mm3BwTg28oqXHr5yx2asChRjlLuTQWg7mpdZr766iu9//77ev7553Xrrbfq0KFDWrFihXr06KH9+/crPj5eU6ZMacisAHzY19syNTw8WlsPFZiOAsDL1OmcmfHjx2vr1q1yOp267LLLdN999+npp59WbGxstSkmAKiPtLwS3T0zVvOiU0xHAeBF6nwC8K5du7R//36dd955qqysVEUFVyMAcJ+ySpf+8Z9kPfZxvOwlTDsBOL1al5ni4mL9v//3/zRixAg9+uij2r9/v1auXKk5c+boqquu0o4dOxoyJwA/E5l8RKHhUUpMyzcdBYCHq3WZ6dWrlzZs2KDY2Fi98sorCggIUGhoqLZv367u3btrwIABevvtt90arqKiQi+99JK6du2qli1b6qKLLtJrr70ml8vl1s8B4JkyCo5p9KxYzV67X5ZlmY4DwEPVusyMHj1a8fHx6tevX7Xx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F6tPnz6KiIio9TYpKSkKDQ3VDTfcoM2bN+tvf/ubnn76aX3xxRen3faHH35QZmam9u7dq1dffVVvvPGGPvroo1Oun5eXp2uuuUY//PCDZsyYoX379mnZsmXav3+/Bg4cqAMHDlRbPyQkREuXLtWxY8eqxkpLS7VkyZJTPqz0o48+0lNPPaXo6OgTCtIPP/ygMWPG6O6779amTZuUkJCgN954Q2VlZVXrTJ06Ve+//77+8Y9/KDk5WT///LMee+wx5efnn/bncTr1+X4A/IoFwK9IslasWHHa9f76179a3bp1qzb2+OOPW9dcc80pt0lJSbEkWZs3b642fvPNN1tPPvlk1etXXnnF6tOnT9XrJ554wjrrrLOszMzMatuVlJRYF1xwgXXbbbdVjY0bN84aOXKkdcUVV1iffvpp1fiiRYusK664who5cqQ1bty4avspKiqyWrdube3atcu69957rVdffbXa+88884x10003nfLfZVmW1adPH2vq1Kk1ruMOtf1+APwfjswAOKnY2FgNGTKk2titt96q+Ph4lZeX13o/8fHxSkxM1NVXX33S910ul5YuXar7779fHTp0qPZey5Yt9eSTT+q7775TXl5etfcefvjhalM8H330kcaPH3/Sz1i2bJkuv/xyXX755XrggQc0f/78atNeHTp00I4dO7R9+/ZT/js6dOign376STk5Oaf9NwNoXJQZACeVlZWl9u3bVxtr3769KioqlJubW+O21157rc4++2w1b95cAwcO1OjRo/WnP/3ppOvm5OSooKBA3bt3P+n73bt3l2VZ2rdvX7XxBx98UNHR0UpNTdXBgwe1fv16PfDAAyfdx7x586reu+2221RUVKQff/yx6v2nnnpKAwcO1BVXXKEuXbpozJgx+uijj+R0OqvWee+995STk6MOHTqod+/eeuKJJ/Ttt9/W+HMA0DgoMwBOyWazVXt9/GjGb8d/a9myZUpKStKWLVu0bNkyffnll3rhhRfqleFUn3nuuedq2LBhWrhwoebPn69hw4bp3HPPPWH73bt3a9OmTRozZowkKSAgQPfee2+1c3jOOussff3119q3b59eeuklnX322Xr22Wd11VVXqaSkRJLUo0cPbd++XRs2bNDDDz+sI0eOaMSIEXr00Ufr9e8C4D4BpgMA8EwdOnRQVlZWtbHs7GwFBASobdu2NW4bEhKiSy65RNIvR1YOHDigl19+WVOnTlWLFi2qrXveeefpnHPOUXJy8kn3tWvXLtlsNl188cUnvDd+/HhNnDhRkvTBBx+cdPt58+apoqJCF1xwQdWYZVlq1qyZ8vPz9bvf/a5q/OKLL9bFF1+sRx99VC+++KIuu+wyLVu2TA8//LAkqUmTJho4cKAGDhyoP//5z/r000/14IMP6sUXX1TXrl1r/JkAaDgcmQFwUoMGDVJkZGS1se+//14DBgxQs2bN6rSvpk2bqqKiotrVQcc1adJEo0eP1uLFi08oT8eOHdOMGTN06623qk2bNidse9ttt6msrExlZWW69dZbT3i/oqJCH3/8sd59910lJSVVLVu2bFHnzp21aNGiU2bu0qWLWrVqpeLi4lOu06NHD0mqcR0ADY8jM4AfKCoqqnbOSUpKipKSktSmTZuqS5mnTJmijIwMffzxx5KkJ554QhEREZo8ebIee+wxxcbGat68eVqyZMlpP+/o0aPKyspSRUWFtm3bpmnTpmnw4MEKCgo66fpvvPGGfvzxR91yyy1655131KtXL6WkpOill15SeXn5KY+6NG3aVDt37qz637/1n//8R/n5+XrkkUcUHBxc7b27775b8+bN08SJEzV16lSVlJQoNDRUnTt3VkFBgcLDw1VeXq5bbrmlav3rrrtO1157rTp06KCUlBRNmTJFl112mbp163ban0lNavP9AKiB0WupADSKn3/+2ZJ0wvLrS5jHjRtn/f73v6+23Zo1a6y+fftazZs3t7p06WLNnDmzxs85fmn28aVp06bWhRdeaD322GNWdnZ21Xq/vTTbsiwrJyfHeuqpp6yQkBArICDAat++vTVu3Djr4MGD1dY7fmn2qfz60uzhw4dboaGhJ10vISHBkmQlJCRYP/30k3XXXXdZISEhVvPmza327dtbt912mxUVFVW1/pw5c6zBgwdb5513ntW8eXOrU6dO1kMPPWSlpqbW+DOpjdp8PwBOzWZZv7o+EQAAwMtwzgwAAPBqnDMDAGcoLS2t6mTg3zp+aXerVq1O+n5ycjLnxQBniGkmADhDFRUVSk1Nrde2Xbp0UUAAf1cCZ4IyAwAAvBrnzAAAAK9GmQEAAF6NMgMAALwaZQYAAHg1ygwAAPBqlBkAAODVKDMAAMCr/X/aKOy2JT0uQgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "datapoints, triang, plot1 = sd.plot_flux_space(\n", + " model,\n", + " ('BIOMASS__1', 'EX_sucr_e'),\n", + " show=False\n", + ");" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "def view_with_changes(changed_model):\n", + " datapoints, triang, plot1 = sd.plot_flux_space(\n", + " model,\n", + " ('BIOMASS__1', 'EX_sucr_e'),\n", + " show=False\n", + " );\n", + "\n", + " plot1.set_facecolor('green')\n", + " plot1.set_edgecolor('green')\n", + "\n", + " _, _,plot2 = sd.plot_flux_space(\n", + " changed_model,\n", + " ('BIOMASS__1', 'EX_sucr_e'),\n", + " show=False\n", + " );\n", + " plot2.set_facecolor('red')\n", + " plot2.set_edgecolor('red')\n", + " # adjust axes limits and show plot\n", + " plot2.axes.set_xlim(0, 1.05*max([a[0] for a in datapoints]))\n", + " plot2.axes.set_ylim(0, 1.05*max([a[1] for a in datapoints]))\n", + " plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "module_suppress = sd.SDModule(\n", + " consistent_model,\n", + " sd.names.SUPPRESS,\n", + " constraints='EX_sucr_e >= 6.0'\n", + ")\n", + "\n", + "module_protect = sd.SDModule(\n", + " consistent_model,\n", + " sd.names.PROTECT,\n", + " constraints='BIOMASS__1>=.2'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "image/png": "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Vejfvz+uv/56tG/fHgMHDkR4eHjN65WVlVi0aBFuu+02tGnTBjfeeCOGDh2KXbt2Nfpn4ozt27fjySefRKdOnaBSqaDRaK75PYmUgkWGSAFMJhP69++PZcuWOb1NVlYWxowZg+HDh0Oj0WDevHn429/+hv379ze5bXp6OgoKCnDu3Dm89NJLmD17dp275/5eZmYmBg0ahIyMDGzevBkXL15EZGRkzR3ey8vLa60fGhpap1Tl5eXh0KFDDd59eM2aNViwYAE2b94Ms9lc67W1a9di3rx5eP3116HRaHDy5EksWLAARqOxZp2XX34Z27dvx9dff43z589j3759mDBhQp2i1RwmkwmPPPIIlixZcs3vRaQ4om/2RETeBUDasWNHk+stWLBA6tu3b61lkyZNkkaOHNngNr/dELOioqLW8ttuu0367LPPap6HhYVJTz/9dM3zp556SurWrVutu0ZLkiQVFBRI7dq1k15++eWaZUOHDpVmz54tderUSTpx4kTN8o8//lgaO3as1L9/f2nx4sW13iczM1Nq27atpNVqpQcffFDatGlTrdeffvppacaMGQ3ulyRJUnBwsBQVFdXoOtcqKytLAiAlJSV59HOI/AmPyBBRvWJiYjBixIhay0aOHImYmBin30OSJOzbtw85OTl48MEH612nvLwc+/fvxyuvvIK2bdvWeq1Lly6YOnUqtm7dCul397cNCAjA1KlTsW7dupplUVFRmDVrVr2fsW7dOowZMwbBwcF4/vnnsWbNmjqfExsbi+zs7Ab3pUuXLvj5559hMBia3G8i8h4WGSKqV2FhITp37lxrWefOnaHX61FVVdXott26dcP111+PgIAAjBkzBosXL8ajjz5a77oZGRmQJAl33XVXva/fddddqKioQElJSa3ls2bNwrZt22AymXDs2DHodDr86U9/qrO9w+FAVFQUnn/+eQDA5MmTceLECWRlZdWss3jxYrRv3x49evRA7969MWPGDGzbtg0Oh6NmnZUrV0KtVqNTp064//778cYbb+DkyZON/jkQkeexyBCR2x0/fhwajQYajQarV6/GJ598goiIiEa3+f0RF2f0798ft99+O3744QesXbsW06ZNQ6tWreqsFx0dDZPJhNGjRwMA/vCHP+CJJ57A2rVra9bp2rUrYmJikJKSgrlz58JmsyEsLAxPPfVUTZl59NFHkZmZiUOHDmHChAlITU3FH//4R3z44Ycu5SYi92KRIaJ6denSBUVFRbWWFRUVISgoqM4poKv17NkTvXr1Qt++fTFz5kxMmzYNH3/8cb3r9urVCyqVCmlpafW+npaWhg4dOuDGG2+s89qsWbOwbNky/PDDDw2eVlqzZg3Ky8vRtm1btGrVCq1atcLPP/+M9evX1zriAgB33303XnnlFWzcuBHR0dGIjo7G0aNHa15v3bo1/vjHP+Ltt9/GgQMH8M9//hMffvghqqurG/3zICLPYZEhonoNHjy4zpVG0dHRGDx4sMvv1bJlywZPR3Xq1AlPPPEEli9fXmedwsJCbNq0CZMmTYJKpaqz7XPPPYeUlBTcfffd6NOnT53Xy8rKsGvXLmzZsqXmCJFGo0FSUhIqKipw4MCBBjP/9n4mk6nRdWw2W52roIjIe+oehyUiv2M0GnHx4sWa51lZWdBoNOjYsSNuueUWAMCiRYuQl5eHb7/9FsCvlxt/8803WLBgAWbNmoVffvkF27Ztw549e5r8vOLiYpjNZlgsFsTFxWHDhg2YMGFCg+t/8803GDJkCEaOHImPPvoIPXv2RGpqKt566y3cfPPNDR7N6dChAwoKCtC6det6X9+wYQM6deqEiRMn1ilCo0ePxpo1a/DUU09h9uzZCAkJwWOPPYZu3bqhoKAAH330EW688caa4jZs2DBMmTIFgwYNQqdOnXDu3Dm88847GD58OIKCgpr8M2lMeXk5cnJykJ+fD+DXy9eBX4+KdenS5Zrem8jvib1oioi84bfLoq9+hIWF1awTFhYmDR06tM52AwYMkAICAqRbb71VWrdunUuf06pVK6lnz57Sm2++KRmNxlqf9fvLryVJki5fviyFhYVJnTt3llq3bi2FhoZKr732mlRaWlprvaFDh0pz585tMMPvL7/u16+f9Morr9S73tatW6WAgACppKRE+uGHH6TRo0dLXbt2lQICAqSQkBBp/Pjx0pkzZ2rW/+STT6TBgwdLHTt2lNq0aSPdeuut0uuvv14nX3OsW7eu3u/n6svIiagulSS5OMKOiIiIyEdwjAwRERHJFsfIEBFdo+PHj2PUqFH1vlZVVdXoVV6/vw0CEbmOp5aIiK5RVVUV8vLyGnytsSLTq1cvT8UiUgQWGSIiIpItjpEhIiIi2WKRISIiItlikSEiIiLZYpEhIiIi2WKRISIiItlikSEiIiLZYpEhIiIi2fr/tPCkbTlupdAAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "_, _, plot3 = sd.plot_flux_space(consistent_model,\n", + " ('BIOMASS__1','EX_sucr_e'),\n", + " # The sign of the glucose exchange reaction is flipped since\n", + " # reaction is defined in the direction of secretion.\n", + " constraints=['EX_sucr_e - 20 BIOMASS__1 <= 0',\n", + " 'BIOMASS__1 >= 0.01'],\n", + " show=False);" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rxn_cost = {}\n", + "for rxn in consistent_model.reactions:\n", + " if rxn.id.startswith('EX_') or rxn.id.startswith('BIOMASS_') or\\\n", + " rxn.id.startswith('SK_') or rxn.id.startswith('PHOA') or\\\n", + " rxn.id.startswith('DM_') or rxn.id.startswith('SK_'):\n", + " continue\n", + " if rxn.gene_reaction_rule == '':\n", + " continue\n", + " else:\n", + " rxn_cost[rxn.id] = 1\n", + "rxn_cost.pop('BCT1_syn')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "from syn_elong.strain_design_simplified import StrainDesign\n", + "# Compute strain designs\n", + "with consistent_model as m:\n", + " module_suppress = sd.SDModule(\n", + " m,\n", + " sd.names.SUPPRESS,\n", + " constraints=['EX_sucr_e - 4 BIOMASS__1 <= 0',\n", + " 'BIOMASS__1 >= 0.01']\n", + " )\n", + " module_protect = sd.SDModule(\n", + " m,\n", + " sd.names.PROTECT,\n", + " constraints='BIOMASS__1>=.1'\n", + " )\n", + " module_tilted_optknock = sd.SDModule(m, sd.names.OPTKNOCK,\n", + " inner_objective='BIOMASS__1 ',\n", + " outer_objective='EX_sucr_e',\n", + " constraints=['BIOMASS__1 >= 0.2', 'EX_sucr_e >=3'])\n", + " module_optcouple = sd.SDModule(m, sd.names.OPTCOUPLE,\n", + " inner_objective='BIOMASS__1',\n", + " prod_id='EX_sucr_e',\n", + " min_gcp=0.1)\n", + " sd_helper = StrainDesign(\n", + " m,\n", + " # sd_modules=[module_suppress, module_protect],\n", + " sd_modules=[module_tilted_optknock],\n", + " ko_cost=rxn_cost,\n", + " # gene_kos=True,\n", + " )\n", + "\n", + " sols = sd_helper.run(max_solutions=10, max_cost=5, time_limit=300, solution_approach=sd.names.ANY)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'consistent_model' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[3], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01msyn_elong\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mstrain_design_simplified\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m compute_strain_designs\n\u001b[1;32m----> 2\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[43mconsistent_model\u001b[49m \u001b[38;5;28;01mas\u001b[39;00m m:\n\u001b[0;32m 3\u001b[0m module_suppress \u001b[38;5;241m=\u001b[39m sd\u001b[38;5;241m.\u001b[39mSDModule(\n\u001b[0;32m 4\u001b[0m m,\n\u001b[0;32m 5\u001b[0m sd\u001b[38;5;241m.\u001b[39mnames\u001b[38;5;241m.\u001b[39mSUPPRESS,\n\u001b[0;32m 6\u001b[0m constraints\u001b[38;5;241m=\u001b[39m[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mEX_sucr_e - 4 BIOMASS__1 <= 0\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[0;32m 7\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mBIOMASS__1 >= 0.01\u001b[39m\u001b[38;5;124m'\u001b[39m]\n\u001b[0;32m 8\u001b[0m )\n\u001b[0;32m 9\u001b[0m module_protect \u001b[38;5;241m=\u001b[39m sd\u001b[38;5;241m.\u001b[39mSDModule(\n\u001b[0;32m 10\u001b[0m m,\n\u001b[0;32m 11\u001b[0m sd\u001b[38;5;241m.\u001b[39mnames\u001b[38;5;241m.\u001b[39mPROTECT,\n\u001b[0;32m 12\u001b[0m constraints\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mBIOMASS__1>=.1\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[0;32m 13\u001b[0m )\n", + "\u001b[1;31mNameError\u001b[0m: name 'consistent_model' is not defined" + ] + } + ], + "source": [ + "\n", + "\n", + "with consistent_model as m:\n", + " module_suppress = sd.SDModule(\n", + " m,\n", + " sd.names.SUPPRESS,\n", + " constraints=['EX_sucr_e - 4 BIOMASS__1 <= 0',\n", + " 'BIOMASS__1 >= 0.01']\n", + " )\n", + " module_protect = sd.SDModule(\n", + " m,\n", + " sd.names.PROTECT,\n", + " constraints='BIOMASS__1>=.1'\n", + " )\n", + " sd_helper = StrainDesign(\n", + " m,\n", + " sd_modules = [module_suppress, module_protect],\n", + " # gene_kos=False,\n", + " ko_cost=rxn_cost,\n", + " solution_approach = sd.names.ANY\n", + " )\n", + " sols = sd_helper.run(max_solutions=5, max_cost=10, time_limit=60, solution_approach=sd.names.ANY)" + ] + }, + { + "cell_type": "code", + "execution_count": 211, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[4.0, 4.0, 4.0]" + ] + }, + "execution_count": 211, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sols.sd_cost" + ] + }, + { + "cell_type": "code", + "execution_count": 212, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "One compressed solution with cost 4.0 found and expanded to 3 solutions in the uncompressed netork.\n", + "Example knockout set: ['PCXHtpp', 'BCT1_syn', 'CYTBD4cm', 'NTRARf2']\n" + ] + } + ], + "source": [ + "\n", + "# Print solutions\n", + "print(f\"One compressed solution with cost {sols.sd_cost[0]} found and \"+\\\n", + " f\"expanded to {len(sols.reaction_sd)} solutions in the uncompressed netork.\")\n", + "print(f\"Example knockout set: {[s for s in sols.reaction_sd[0]]}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "solutions = sols.reaction_sd" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "rxns = [\n", + " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'NTRIRfx': -1.0},\n", + " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'NTRARf2': -1.0},\n", + " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'NO3abcpp': -1.0},\n", + " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'GND': -1.0, 'PSP_L': -1.0},\n", + " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'GND': -1.0, 'PGCD': -1.0},\n", + " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'GND': -1.0, 'PSERT': -1.0},\n", + " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0},\n", + " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0},\n", + " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0},\n", + " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'PGL': -1.0, 'PSP_L': -1.0},\n", + " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'PGL': -1.0, 'PGCD': -1.0},\n", + " {'CYTBD4cm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'PGL': -1.0, 'PSERT': -1.0},\n", + " {'NDHPQRcm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'MNHNAtpp': -1.0, 'NTRIRfx': -1.0},\n", + " {'NDHPQRcm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'MNHNAtpp': -1.0, 'NTRARf2': -1.0},\n", + " {'NDHPQRcm': -1.0, 'BCT1_syn': -1.0, 'PCXHtpp': -1.0, 'MNHNAtpp': -1.0, 'NO3abcpp': -1.0},\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['CYTBD4cm', 'BCT1_syn', 'PCXHtpp', 'GND', 'PSERT']\n", + "CYTBD4cm: 4.0 h_c + o2_c + 2.0 pqh2_cm --> 2.0 h2o_c + 4.0 h_p + 2.0 pq_cm\n", + "BCT1_syn: atp_c + h2o_c + hco3_p --> adp_c + h_c + hco3_c + pi_c\n", + "PCXHtpp: h_c --> h_p\n", + "GND: 6pgc_c + nadp_c --> co2_c + nadph_c + ru5p__D_c\n", + "PSERT: 3php_c + glu__L_c <=> akg_c + pser__L_c\n", + "1.2095054613206664\n" + ] + }, + { + "data": { + "image/png": "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0aBBA8HpHNs//vEPPPbYY/D390dBQQG2bt2Ko0eP4pdffhEdzaF5enpWmFPm4eGBpk2bcq5ZHbPbMjNhwgTk5OTgvffeQ0ZGBrp164Y9e/YgICBAdDSHFxMTgyFDhpQ9X7hwIQBg2rRp+PbbbwWloj8uY/Dwww+XW75u3TpMnz697gNRmTt37mDKlCnIyMiAUqlEjx498Msvv+DRRx8VHY1IFuz2OjNERETkGOxyzgwRERE5DpYZIiIismksM0RERGTTWGaIiIjIprHMEBERkU1jmSEiIiKbxjJDRERENo1lhoiIiGwaywwRERHZNJYZIgdw/PhxjB49Gn5+flAoFIiKijJru2PHjqF3796oX78+HnjgAaxcubLK9RMTE6FQKMoef9zp+f3338efLza+dOlS9OrVq9y2ubm5WLBgAdq0aQNXV1e0aNECM2bMQHJycrn1pk+fDoVCUel91l599VUoFIpKb79w6tQpODk5YeTIkZVm3759O/r27QulUglPT0907doVr732WtnrRqMRERER6NSpExo0aIAmTZqgX79+WLduXZU/E3PU9PMhortYZogcQGFhIXr27Inly5ebvU1CQgIef/xxPPTQQ7h48SL+8Y9/YN68edi+fft9tz148CAyMjIQHx+Pd999Fx988AHWrl17z/Vzc3PRr18/HDx4ECtWrMDNmzexbds23Lp1CyEhIbh9+3a59f39/bF161YUFxeXLSspKcGWLVvuebPStWvXYu7cuTh58mSFgnTw4EFMnDgRY8eOxblz53D+/Hl88MEHKC0tLVtn6dKl+Pzzz/HPf/4T165dw5EjR/Diiy8iLy/vvj+P+6nJ50NEfyIRkUMBIO3YseO+6/3973+XOnXqVG7Zyy+/LPXr1++e2yQkJEgApIsXL5ZbPnToUOnVV18te75kyRKpZ8+eZc9nzZoleXh4SBkZGeW2Kyoqklq2bCmNHDmybNm0adOkMWPGSN27d5e+++67suWbNm2SunfvLo0ZM0aaNm1auf1otVrJ09NTiouLkyZMmCC9++675V6fP3++9PDDD9/zzyVJktSzZ09p6dKlVa5jCeZ+PkT0PzwyQ0SVOn36NIYPH15u2YgRIxATEwO9Xm/2fmJiYnDhwgX07du30tdNJhO2bt2KZ599Fr6+vuVea9CgAV599VXs27cPubm55V6bMWNGuSGetWvXYubMmZW+x7Zt29CxY0d07NgRzz33HNatW1du2MvX1xdXr17FlStX7vnn8PX1xeHDh5GVlXXfPzMR1S2WGSKqlEqlgo+PT7llPj4+MBgMyM7OrnLb/v37o2HDhnB1dUVISAjGjx+PqVOnVrpuVlYW8vPz0blz50pf79y5MyRJws2bN8stnzJlCk6ePInExEQkJSXhv//9L5577rlK97FmzZqy10aOHAmtVotDhw6VvT537lyEhISge/fuaNOmDSZOnIi1a9dCp9OVrbNs2TJkZWXB19cXPXr0wKxZs7B3794qfw5EVDdYZojonhQKRbnnfxzN+Ovyv9q2bRtiY2Nx6dIlbNu2DTt37sSiRYtqlOFe79msWTM88cQTWL9+PdatW4cnnngCzZo1q7D9jRs3cO7cOUycOBEA4OzsjAkTJpSbw+Ph4YGff/4ZN2/exNtvv42GDRvitddeQ58+fVBUVAQA6NKlC65cuYIzZ85gxowZuHPnDkaPHo0XXnihRn8uIrIcZ9EBiEiefH19oVKpyi3LzMyEs7MzmjZtWuW2/v7+aNeuHYC7R1Zu376NxYsXY+nSpahfv365dZs3b45GjRrh2rVrle4rLi4OCoUCDz74YIXXZs6ciTlz5gAAvvrqq0q3X7NmDQwGA1q2bFm2TJIkuLi4IC8vD40bNy5b/uCDD+LBBx/ECy+8gLfeegsdOnTAtm3bMGPGDABAvXr1EBISgpCQEPztb3/Dd999hylTpuCtt95C27Ztq/yZEJH18MgMEVUqNDQUBw4cKLds//79CA4OhouLS7X25eTkBIPBUO7soD/Uq1cP48ePx+bNmyuUp+LiYqxYsQIjRoxAkyZNKmw7cuRIlJaWorS0FCNGjKjwusFgwIYNG/DZZ58hNja27HHp0iUEBARg06ZN98zcpk0buLu7o7Cw8J7rdOnSBQCqXIeIrI9HZogcgFarLTfnJCEhAbGxsWjSpEnZqczh4eFIS0vDhg0bAACzZs3C8uXLsXDhQrz44os4ffo01qxZgy1bttz3/XJycqBSqWAwGPDrr7/i3//+N4YMGQIvL69K1//ggw9w6NAhPProo/jXv/6Fbt26ISEhAW+//Tb0ev09j7o4OTnh+vXrZf/+V//5z3+Ql5eH559/HkqlstxrY8eOxZo1azBnzhwsXboURUVFePzxxxEQEID8/Hx88cUX0Ov1ePTRR8vWHzBgAPr37w9fX18kJCQgPDwcHTp0QKdOne77M6mKOZ8PEVVB6LlURFQnjhw5IgGo8PjzKczTpk2TBg8eXG67o0ePSoGBgZKrq6vUpk0b6euvv67yff44NfuPh5OTk9SqVSvpxRdflDIzM8vW++up2ZIkSVlZWdLcuXMlf39/ydnZWfLx8ZGmTZsmJSUllVvvj1Oz7+XPp2aPGjVKevzxxytd7/z58xIA6fz589Lhw4elZ555RvL395dcXV0lHx8faeTIkdKJEyfK1l+1apU0ZMgQqXnz5pKrq6vUunVrafr06VJiYmKVPxNzmPP5ENG9KSTpT+cnEhEREdkYzpkhIiIim8Y5M0REtZScnFw2Gfiv/ji1293dvdLXr127xnkxRLXEYSYioloyGAxITEys0bZt2rSBszP/XklUGywzREREZNM4Z4aIiIhsGssMERER2TSWGSIiIrJpLDNERERk01hmiIiIyKaxzBAREZFNY5khIiIim/b/1zvow6p8TQEAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "EX_photon670_e -1000.000\n", + "EX_photon690_e -330.725\n", + "PPK -256.749\n", + "Htcx -227.759\n", + "3HAD180 -224.150\n", + " ... \n", + "STACPSI 780.386\n", + "PSICSum 1000.000\n", + "ETCPC 1000.000\n", + "PSIum 1000.000\n", + "PHOA670um 1000.000\n", + "Name: fluxes, Length: 444, dtype: float64" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def run_with_intervention(intervention):\n", + " with consistent_model as m:\n", + " print([i for i in intervention])\n", + " for i in intervention:\n", + " print(m.reactions.get_by_id(i))\n", + " # if i == 'BCT1_syn':\n", + " # continue\n", + " # print(i)\n", + " m.reactions.get_by_id(i).lower_bound = 0\n", + " m.reactions.get_by_id(i).upper_bound = 0\n", + "# m.remove_reactions([m.reactions.get_by_id(i)])\n", + " print(m.slim_optimize())\n", + " sol = m.optimize()\n", + "\n", + " view_with_changes(m)\n", + " return sol.fluxes #sol.reduced_costs, \n", + "red_costs = run_with_intervention(rxns[5])\n", + "red_costs[np.abs(red_costs)>0.001].sort_values()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['CYTBD4cm', 'BCT1_syn', 'PCXHtpp', 'GND', 'PSP_L']\n", + "CYTBD4cm: 4.0 h_c + o2_c + 2.0 pqh2_cm --> 2.0 h2o_c + 4.0 h_p + 2.0 pq_cm\n", + "BCT1_syn: atp_c + h2o_c + hco3_p --> adp_c + h_c + hco3_c + pi_c\n", + "PCXHtpp: h_c --> h_p\n", + "GND: 6pgc_c + nadp_c --> co2_c + nadph_c + ru5p__D_c\n", + "PSP_L: h2o_c + pser__L_c --> pi_c + ser__L_c\n", + "1.209505461320687\n" + ] + }, + { + "data": { + "image/png": "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0aBBA8HpHNs//vEPPPbYY/D390dBQQG2bt2Ko0eP4pdffhEdzaF5enpWmFPm4eGBpk2bcq5ZHbPbMjNhwgTk5OTgvffeQ0ZGBrp164Y9e/YgICBAdDSHFxMTgyFDhpQ9X7hwIQBg2rRp+PbbbwWloj8uY/Dwww+XW75u3TpMnz697gNRmTt37mDKlCnIyMiAUqlEjx498Msvv+DRRx8VHY1IFuz2OjNERETkGOxyzgwRERE5DpYZIiIismksM0RERGTTWGaIiIjIprHMEBERkU1jmSEiIiKbxjJDRERENo1lhoiIiGwaywwRERHZNJYZIgdw/PhxjB49Gn5+flAoFIiKijJru2PHjqF3796oX78+HnjgAaxcubLK9RMTE6FQKMoef9zp+f3338efLza+dOlS9OrVq9y2ubm5WLBgAdq0aQNXV1e0aNECM2bMQHJycrn1pk+fDoVCUel91l599VUoFIpKb79w6tQpODk5YeTIkZVm3759O/r27QulUglPT0907doVr732WtnrRqMRERER6NSpExo0aIAmTZqgX79+WLduXZU/E3PU9PMhortYZogcQGFhIXr27Inly5ebvU1CQgIef/xxPPTQQ7h48SL+8Y9/YN68edi+fft9tz148CAyMjIQHx+Pd999Fx988AHWrl17z/Vzc3PRr18/HDx4ECtWrMDNmzexbds23Lp1CyEhIbh9+3a59f39/bF161YUFxeXLSspKcGWLVvuebPStWvXYu7cuTh58mSFgnTw4EFMnDgRY8eOxblz53D+/Hl88MEHKC0tLVtn6dKl+Pzzz/HPf/4T165dw5EjR/Diiy8iLy/vvj+P+6nJ50NEfyIRkUMBIO3YseO+6/3973+XOnXqVG7Zyy+/LPXr1++e2yQkJEgApIsXL5ZbPnToUOnVV18te75kyRKpZ8+eZc9nzZoleXh4SBkZGeW2Kyoqklq2bCmNHDmybNm0adOkMWPGSN27d5e+++67suWbNm2SunfvLo0ZM0aaNm1auf1otVrJ09NTiouLkyZMmCC9++675V6fP3++9PDDD9/zzyVJktSzZ09p6dKlVa5jCeZ+PkT0PzwyQ0SVOn36NIYPH15u2YgRIxATEwO9Xm/2fmJiYnDhwgX07du30tdNJhO2bt2KZ599Fr6+vuVea9CgAV599VXs27cPubm55V6bMWNGuSGetWvXYubMmZW+x7Zt29CxY0d07NgRzz33HNatW1du2MvX1xdXr17FlStX7vnn8PX1xeHDh5GVlXXfPzMR1S2WGSKqlEqlgo+PT7llPj4+MBgMyM7OrnLb/v37o2HDhnB1dUVISAjGjx+PqVOnVrpuVlYW8vPz0blz50pf79y5MyRJws2bN8stnzJlCk6ePInExEQkJSXhv//9L5577rlK97FmzZqy10aOHAmtVotDhw6VvT537lyEhISge/fuaNOmDSZOnIi1a9dCp9OVrbNs2TJkZWXB19cXPXr0wKxZs7B3794qfw5EVDdYZojonhQKRbnnfxzN+Ovyv9q2bRtiY2Nx6dIlbNu2DTt37sSiRYtqlOFe79msWTM88cQTWL9+PdatW4cnnngCzZo1q7D9jRs3cO7cOUycOBEA4OzsjAkTJpSbw+Ph4YGff/4ZN2/exNtvv42GDRvitddeQ58+fVBUVAQA6NKlC65cuYIzZ85gxowZuHPnDkaPHo0XXnihRn8uIrIcZ9EBiEiefH19oVKpyi3LzMyEs7MzmjZtWuW2/v7+aNeuHYC7R1Zu376NxYsXY+nSpahfv365dZs3b45GjRrh2rVrle4rLi4OCoUCDz74YIXXZs6ciTlz5gAAvvrqq0q3X7NmDQwGA1q2bFm2TJIkuLi4IC8vD40bNy5b/uCDD+LBBx/ECy+8gLfeegsdOnTAtm3bMGPGDABAvXr1EBISgpCQEPztb3/Dd999hylTpuCtt95C27Ztq/yZEJH18MgMEVUqNDQUBw4cKLds//79CA4OhouLS7X25eTkBIPBUO7soD/Uq1cP48ePx+bNmyuUp+LiYqxYsQIjRoxAkyZNKmw7cuRIlJaWorS0FCNGjKjwusFgwIYNG/DZZ58hNja27HHp0iUEBARg06ZN98zcpk0buLu7o7Cw8J7rdOnSBQCqXIeIrI9HZogcgFarLTfnJCEhAbGxsWjSpEnZqczh4eFIS0vDhg0bAACzZs3C8uXLsXDhQrz44os4ffo01qxZgy1bttz3/XJycqBSqWAwGPDrr7/i3//+N4YMGQIvL69K1//ggw9w6NAhPProo/jXv/6Fbt26ISEhAW+//Tb0ev09j7o4OTnh+vXrZf/+V//5z3+Ql5eH559/HkqlstxrY8eOxZo1azBnzhwsXboURUVFePzxxxEQEID8/Hx88cUX0Ov1ePTRR8vWHzBgAPr37w9fX18kJCQgPDwcHTp0QKdOne77M6mKOZ8PEVVB6LlURFQnjhw5IgGo8PjzKczTpk2TBg8eXG67o0ePSoGBgZKrq6vUpk0b6euvv67yff44NfuPh5OTk9SqVSvpxRdflDIzM8vW++up2ZIkSVlZWdLcuXMlf39/ydnZWfLx8ZGmTZsmJSUllVvvj1Oz7+XPp2aPGjVKevzxxytd7/z58xIA6fz589Lhw4elZ555RvL395dcXV0lHx8faeTIkdKJEyfK1l+1apU0ZMgQqXnz5pKrq6vUunVrafr06VJiYmKVPxNzmPP5ENG9KSTpT+cnEhEREdkYzpkhIiIim8Y5M0REtZScnFw2Gfiv/ji1293dvdLXr127xnkxRLXEYSYioloyGAxITEys0bZt2rSBszP/XklUGywzREREZNM4Z4aIiIhsGssMERER2TSWGSIiIrJpLDNERERk01hmiIiIyKaxzBAREZFNY5khIiIim/b/1zvow6p8TQEAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "EX_photon670_e -1000.000\n", + "EX_photon690_e -330.725\n", + "PPK -256.749\n", + "Htcx -227.759\n", + "3HAD180 -224.150\n", + " ... \n", + "STACPSI 780.386\n", + "PSICSum 1000.000\n", + "ETCPC 1000.000\n", + "PSIum 1000.000\n", + "PHOA670um 1000.000\n", + "Name: fluxes, Length: 444, dtype: float64" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "red_costs = run_with_intervention(rxns[3])\n", + "red_costs[np.abs(red_costs)>0.001].sort_values()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Metabolite identifierco2_c
NameCO2 CO2
Memory address0x25b976d8fa0
FormulaCO2
Compartmentc
In 55 reaction(s)\n", + " CPPPGO2, THRPDC, AOXSr2, CMPA_1, TMPPP_1, 3OAS80, NDH_1_4_um_copy2, SEPHCHCS, OGMEACPS, PPND, 3OAS120, DHNANT, ADMDC, DBTS, ACLSa, PC6YM, FDH6, PC6YM_1, CYNL, AOXPBDC, DAPDC, 3OAS100, 3OAS60,...\n", + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.metabolites.co2_c" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Reaction identifierBCT1_syn
NameBicarbonate transport via ABC system (periplasm)
Memory address0x25b9c0296f0
Stoichiometry\n", + "

atp_c + h2o_c + hco3_p --> adp_c + h_c + hco3_c + pi_c

\n", + "

ATP C10H12N5O13P3 + H2O H2O + Bicarbonate --> ADP C10H12N5O10P2 + H+ + Bicarbonate + Phosphate

\n", + "
GPRSYNPCC7942_RS07605 and SYNPCC7942_RS07610 and SYNPCC7942_RS07615 and SYNPCC7942_RS07620
Lower bound0.0
Upper bound1000.0
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "consistent_model.reactions.BCT1_syn" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:cobra.summary.metabolite_summary:Generating new parsimonious flux distribution.\n" + ] + }, + { + "data": { + "text/html": [ + "

hco3_p

CHO3

Producing Reactions

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PercentFluxReactionDefinition
100.00%100HCO3texhco3_e <=> hco3_p

Consuming Reactions

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PercentFluxReactionDefinition
100.00%-100H2CO3_NAt_synhco3_p + na1_p <=> hco3_c + na1_c
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "consistent_model.metabolites.hco3_p.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "pycharm": { + "name": "#%%\n" + }, + "scrolled": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:cobra.summary.metabolite_summary:Generating new parsimonious flux distribution.\n" + ] + }, + { + "data": { + "text/html": [ + "

atp_c

C10H12N5O13P3

Producing Reactions

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PercentFluxReactionDefinition
1.83%26.34ACKrac_c + atp_c <=> actp_c + adp_c
76.98%1111ATPSum3.0 adp_c + 13.0 h_u + 3.0 pi_c <=> 3.0 atp_c + 3.0 h2o_c + 10.0 h_c
19.47%281PPKatp_c + pi_c <=> adp_c + ppi_c
0.00%0.008233PPK2atp_c + ppi_c <=> adp_c + pppi_c
1.73%24.93PYKadp_c + h_c + pep_c --> atp_c + pyr_c
0.00%0.02428URIDK2ratp_c + dump_c <=> adp_c + dudp_c

Consuming Reactions

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PercentFluxReactionDefinition
15.12%-218.2AACPS6ACP_c + atp_c + ocdca_c --> amp_c + ocdcaACP_c + ppi_c
1.03%-14.82ACCOACaccoa_c + atp_c + hco3_c --> adp_c + h_c + malcoa_c + pi_c
1.87%-27.02ACSac_c + atp_c + coa_c --> accoa_c + amp_c + ppi_c
0.00%-2.351E-05ADCPS2adcobhex_c + applp_c + atp_c --> adocbip_c + adp_c + h_c + pi_c
0.00%-9.406E-05ADCYRSadcobdam_c + 4.0 atp_c + 4.0 gln__L_c + 4.0 h2o_c --> adcobhex_c + 4.0 adp_c + 4.0 glu__L_c + 4.0 h_c + 4.0 pi_c
18.93%-273.3ADK1amp_c + atp_c <=> 2.0 adp_c
0.00%-0.05232ADNK1adn_c + atp_c --> adp_c + amp_c + h_c
0.05%-0.7156ADSKaps_c + atp_c --> adp_c + h_c + paps_c
0.00%-0.000117AFATatp_c + fmn_c + 2.0 h_c --> fad_c + ppi_c
0.06%-0.8784AIRC2air_c + atp_c + hco3_c --> 5caiz_c + adp_c + h_c + pi_c
0.01%-0.2107ALAALAr2.0 ala__D_c + atp_c --> adp_c + alaala_c + h_c + pi_c
0.12%-1.8ALATRSala__L_c + atp_c + trnaala_c --> alatrna_c + amp_c + ppi_c
0.07%-1.068ARGSSasp__L_c + atp_c + citr__L_c --> amp_c + argsuc_c + h_c + ppi_c
0.07%-1.068ARGTRSarg__L_c + atp_c + trnaarg_c --> amp_c + argtrna_c + ppi_c
0.06%-0.8593ASNS1asp__L_c + atp_c + gln__L_c + h2o_c --> amp_c + asn__L_c + glu__L_c + h_c + ppi_c
0.06%-0.8593ASNTRSasn__L_c + atp_c + trnaasn_c --> amp_c + asntrna_c + ppi_c
0.19%-2.678ASPKasp__L_c + atp_c --> 4pasp_c + adp_c
0.07%-1.066ASPTRSasp__L_c + atp_c + trnaasp_c --> amp_c + asptrna_c + ppi_c
0.03%-0.3944ATPPRTatp_c + prpp_c --> ppi_c + prbatp_c
0.00%-0.0001203BACCLatp_c + btn_c + h_c --> btamp_c + ppi_c
1.47%-21.19BIOMASS_PROTEIN0.7662 alatrna_c + 0.4548 argtrna_c + 0.3658 asntrna_c + 0.4539 asptrna_c + 9.0199 atp_c + 0.0899 cystrna_c + 0.502 glntrna_c + 0.5465 glutrna_c + 0.6663 glytrna_c + 18.0398 gtp_c + 27.0597 h2o_c + 0.1679 histrna_c + 0.5665 iletrna_c + 1.0294 leutrna_c + 0.3777 lystrna_c + 0.177 mettrna_c + 0.3622 phetrna_c + 0.463 protrna_c + 0.5238 sertrna_c + 0.4957 thrtrna_c + 0.1398 trptrna_c + 0.2633 tyrtrna_c + 0.6082 valtrna_c --> 9.0199 adp_c + bm_pro_c + 18.0398 gdp_c + 36.0797 h_c + 27.0597 pi_c + 0.7662 trnaala_c + 0.4548 trnaarg_c + 0.3658 trnaasn_c + 0.4539 trnaasp_c + 0.0899 trnacys_c + 0.502 trnagln_c + 0.5465 trnaglu_c + 0.6663 trnagly_c + 0.1679 trnahis_c + 0.5665 trnaile_c + 1.0294 trnaleu_c + 0.3777 trnalys_c + 0.177 trnamet_c + 0.3622 trnaphe_c + 0.463 trnapro_c + 0.5238 trnaser_c + 0.4957 trnathr_c + 0.1398 trnatrp_c + 0.2633 trnatyr_c + 0.6082 trnaval_c
0.03%-0.3626BIOMASS_RNA0.69466 atp_c + 0.86375 ctp_c + 0.86375 gtp_c + 0.69466 utp_c --> bm_rna_c + 3.11683 ppi_c
9.55%-137.9BIOMASS__130.0 atp_c + 0.0977 bm_carbs_c + 0.00119 bm_cofactors_c + 0.0795 bm_cw_c + 0.0073 bm_dna_c + 0.159 bm_memlip_c + 0.0197 bm_pigm_c + 0.5112 bm_pro_c + 0.1136 bm_rna_c + 30.0 h2o_c --> 30.0 adp_c + 30.0 h_c + 30.0 pi_c
0.27%-3.873CBPS2.0 atp_c + gln__L_c + h2o_c + hco3_c --> 2.0 adp_c + cbp_c + glu__L_c + 2.0 h_c + pi_c
0.04%-0.6202CDPMEK4c2me_c + atp_c --> 2p4c2me_c + adp_c + h_c
0.00%-2.351E-05COCHL_1atp_c + cobalt2_c + h2o_c + hgbam_c --> adp_c + co2dam_c + 3.0 h_c + pi_c
0.02%-0.2536COLIPAabcexatp_c + colipacy_p + h2o_c --> adp_c + colipacy_e + h_c + pi_c
0.03%-0.4811CTPS2atp_c + gln__L_c + h2o_c + utp_c --> adp_c + ctp_c + glu__L_c + 2.0 h_c + pi_c
0.00%-2.351E-05CYRDAATatp_c + co1dam_c + h_c --> adcobdam_c + pppi_c
0.01%-0.2112CYSTRSatp_c + cys__L_c + trnacys_c --> amp_c + cystrna_c + ppi_c
0.06%-0.8413CYTK1atp_c + cmp_c <=> adp_c + cdp_c
0.00%-2.351E-05Cobalt2abcppIatp_c + cobalt2_p + h2o_c --> adp_c + cobalt2_c + h_c + pi_c
0.00%-0.0001203DBTSatp_c + co2_c + dann_c --> adp_c + dtbt_c + 3.0 h_c + pi_c
0.00%-0.0003505DHFSatp_c + dhpt_c + glu__L_c --> adp_c + dhf_c + h_c + pi_c
0.00%-8.749E-05DPCOAKatp_c + dpcoa_c --> adp_c + coa_c + h_c
0.00%-0.0004774DRBK5drib_c + atp_c --> 2dr5p_c + adp_c + h_c
0.00%-0.02428DTMPKatp_c + dtmp_c <=> adp_c + dtdp_c
0.00%-0.007362FE3abcppatp_c + fe3_p + h2o_c --> adp_c + fe3_c + h_c + pi_c
0.00%-0.06114GARTatp_c + for_c + gar_c --> adp_c + fgam_c + h_c + pi_c
0.03%-0.4898GK1atp_c + gmp_c <=> adp_c + gdp_c
0.19%-2.754GLGCatp_c + g1p_c + h_c --> adpglc_c + ppi_c
0.53%-7.592GLNSatp_c + glu__L_c + nh4_c --> adp_c + gln__L_c + h_c + pi_c
0.08%-1.179GLNTRSatp_c + gln__L_c + trnagln_c --> amp_c + glntrna_c + ppi_c
0.15%-2.157GLU5Katp_c + glu__L_c --> adp_c + glu5p_c
0.12%-1.736GLUTRSatp_c + glu__L_c + trnaglu_c --> amp_c + glutrna_c + ppi_c
0.11%-1.565GLYTRSatp_c + gly_c + trnagly_c --> amp_c + glytrna_c + ppi_c
0.03%-0.4898GMPS2atp_c + gln__L_c + h2o_c + xmp_c <=> amp_c + glu__L_c + gmp_c + 2.0 h_c + ppi_c
0.00%-4.703E-05HGYDAS2.0 atp_c + 2.0 gln__L_c + 2.0 h2o_c + hgbyr_c --> 2.0 adp_c + 2.0 glu__L_c + 2.0 h_c + hgbam_c + 2.0 pi_c
0.03%-0.3944HISTRSatp_c + his__L_c + trnahis_c --> amp_c + histrna_c + ppi_c
0.00%-0.0003505HPPK2ahhmp_c + atp_c <=> 2ahhmd_c + amp_c + h_c
0.08%-1.164HSKatp_c + hom__L_c --> adp_c + h_c + phom_c
0.02%-0.2536ICLIPAabcppatp_c + h2o_c + icolipacy_c --> adp_c + h_c + icolipacy_p + pi_c
0.09%-1.331ILETRSatp_c + ile__L_c + trnaile_c --> amp_c + iletrna_c + ppi_c
0.17%-2.418LEUTRSatp_c + leu__L_c + trnaleu_c --> amp_c + leutrna_c + ppi_c
0.00%-2.351E-05LTHRKatp_c + thr__L_c --> adp_c + h_c + thrp_c
0.06%-0.8873LYSTRSatp_c + lys__L_c + trnalys_c --> amp_c + lystrna_c + ppi_c
0.00%-0.05332METATatp_c + h2o_c + met__L_c --> amet_c + pi_c + ppi_c
0.03%-0.4158METTRSatp_c + met__L_c + trnamet_c --> amp_c + mettrna_c + ppi_c
0.00%-0.05152MG2uabcppatp_c + h2o_c + mg2_p --> adp_c + h_c + mg2_c + pi_c
0.00%-0.05152MPMLatp_c + h2o_c + mg2_c + ppp9_c --> adp_c + 3.0 h_c + mppp9_c + pi_c
0.00%-0.0002335NADKatp_c + nad_c --> adp_c + h_c + nadp_c
0.00%-0.001191NADS2atp_c + dnad_c + gln__L_c + h2o_c --> amp_c + glu__L_c + h_c + nad_c + ppi_c
0.00%-2.351E-05NAMNPPatp_c + h2o_c + nac_c + prpp_c <=> adp_c + nicrnt_c + pi_c + ppi_c
5.33%-77NDPK1atp_c + gdp_c <=> adp_c + gtp_c
0.16%-2.329NDPK2atp_c + udp_c <=> adp_c + utp_c
0.06%-0.8111NDPK3atp_c + cdp_c <=> adp_c + ctp_c
0.00%-0.02428NDPK4atp_c + dtdp_c <=> adp_c + dttp_c
0.00%-0.03019NDPK5atp_c + dgdp_c <=> adp_c + dgtp_c
0.00%-0.03019NDPK7atp_c + dcdp_c <=> adp_c + dctp_c
0.00%-0.02428NDPK8atp_c + dadp_c <=> adp_c + datp_c
1.13%-16.37NGAM_D1um360.0 atp_c + 720.0 gtp_c + 1080.0 h2o_c + ps2d1_exc_um --> 360.0 adp_c + 720.0 gdp_c + 1080.0 h_c + 1080.0 pi_c + ps2d1_um
0.00%-0.001191NNATratp_c + h_c + nicrnt_c <=> dnad_c + ppi_c
0.02%-0.2536OANTIabcppatp_c + h2o_c + oanticy_c --> adp_c + h_c + oanticy_p + pi_c
0.00%-8.749E-05PANTSala_B_c + atp_c + pant__R_c --> amp_c + h_c + pnto__R_c + ppi_c
26.51%-382.6PGK3pg_c + atp_c <=> 13dpg_c + adp_c
0.06%-0.8509PHETRSatp_c + phe__L_c + trnaphe_c --> amp_c + phetrna_c + ppi_c
0.14%-1.961PIuabcppatp_c + h2o_c + pi_p --> adp_c + h_c + 2.0 pi_c
0.00%-0.0001165PMPK4ampm_c + atp_c --> 2mahmp_c + adp_c
0.00%-8.749E-05PNTKatp_c + pnto__R_c --> 4ppan_c + adp_c + h_c
0.00%-8.749E-05PPNCL34ppan_c + atp_c + cys__L_c --> 4ppcys_c + amp_c + h_c + ppi_c
0.06%-0.8785PRAGSratp_c + gly_c + pram_c --> adp_c + gar_c + h_c + pi_c
0.06%-0.8785PRAISatp_c + fpram_c --> adp_c + air_c + 2.0 h_c + pi_c
0.06%-0.8784PRASCSi5aizc_c + asp__L_c + atp_c <=> 25aics_c + adp_c + h_c + pi_c
0.06%-0.8785PRFGSatp_c + fgam_c + gln__L_c + h2o_c --> adp_c + fpram_c + glu__L_c + h_c + pi_c
0.08%-1.088PROTRSatp_c + pro__L_c + trnapro_c --> amp_c + ppi_c + protrna_c
0.17%-2.471PRPPSatp_c + r5p_c <=> amp_c + h_c + prpp_c
14.43%-208.3PRUKatp_c + ru5p__D_c --> adp_c + h_c + rb15bp_c
0.00%-8.749E-05PTPATiatp_c + h_c + pan4p_c --> dpcoa_c + ppi_c
0.00%-0.0001405RBFKatp_c + ribflv_c --> adp_c + fmn_c + h_c
0.05%-0.7156SADTatp_c + h_c + so4_c --> aps_c + ppi_c
0.09%-1.23SERTRSatp_c + ser__L_c + trnaser_c --> amp_c + ppi_c + sertrna_c
0.12%-1.798SHKKatp_c + skm_c --> adp_c + h_c + skm5p_c
0.00%-9.242E-05SUCBZLatp_c + coa_c + sucbz_c --> amp_c + ppi_c + sbzcoa_c
0.05%-0.7156SULabcppatp_c + h2o_c + so4_p --> adp_c + h_c + pi_c + so4_c
0.00%-0.0001165THISATatp_c + h_c + this_c --> athis_c + ppi_c
0.08%-1.164THRTRSatp_c + thr__L_c + trnathr_c --> amp_c + ppi_c + thrtrna_c
0.00%-0.0001165TMPKatp_c + thmmp_c --> adp_c + thmpp_c
0.02%-0.3284TRPTRSatp_c + trnatrp_c + trp__L_c --> amp_c + ppi_c + trptrna_c
0.04%-0.6185TYRTRSatp_c + trnatyr_c + tyr__L_c --> amp_c + ppi_c + tyrtrna_c
0.01%-0.2107UAAGDS26dap__M_c + atp_c + uamag_c --> adp_c + h_c + pi_c + ugmd_c
0.01%-0.2107UAMAGSatp_c + glu__D_c + uama_c --> adp_c + h_c + pi_c + uamag_c
0.01%-0.2107UAMASala__L_c + atp_c + uamr_c --> adp_c + h_c + pi_c + uama_c
0.01%-0.2107UGMDDSalaala_c + atp_c + ugmd_c --> adp_c + h_c + pi_c + ugmda_c
0.08%-1.115UMPKatp_c + ump_c <=> adp_c + udp_c
0.10%-1.429VALTRSatp_c + trnaval_c + val__L_c --> amp_c + ppi_c + valtrna_c
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "consistent_model.metabolites.atp_c.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "consistent_model.reactions.HCO3E_1_cx " + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Reaction identifierHCO3tcx
NameBicarbonate transport to carboxyzome
Memory address0x0258eb887ac0
Stoichiometry\n", + "

hco3_c --> hco3_cx

\n", + "

Bicarbonate --> Bicarbonate

\n", + "
GPR
Lower bound0.0
Upper bound1000.0
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "consistent_model.reactions.HCO3tcx " + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Metabolite identifierhco3_cx
NameBicarbonate
Memory address0x0258eb7764a0
FormulaCHO3
Compartmentcx
In 2 reaction(s)\n", + " HCO3tcx, HCO3E_1_cx
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "consistent_model.metabolites.hco3_cx" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "PEPC: hco3_c + pep_c --> oaa_c + pi_c\n", + "NDH_1_4_um_copy1: co2_c + 2.0 fdxrd_c + h2o_c + 4.0 h_c + pq_um --> 2.0 fdxox_c + 3.0 h_u + hco3_c + pqh2_um\n", + "H2CO3_NAt_syn: hco3_p + na1_p <=> hco3_c + na1_c\n", + "BCT1_syn: atp_c + h2o_c + hco3_p --> adp_c + h_c + hco3_c + pi_c\n", + "ACCOAC: accoa_c + atp_c + hco3_c --> adp_c + h_c + malcoa_c + pi_c\n", + "HCO3tcx: hco3_c --> hco3_cx\n", + "CBPS: 2.0 atp_c + gln__L_c + h2o_c + hco3_c --> 2.0 adp_c + cbp_c + glu__L_c + 2.0 h_c + pi_c\n", + "AIRC2: air_c + atp_c + hco3_c --> 5caiz_c + adp_c + h_c + pi_c\n" + ] + } + ], + "source": [ + "for i in consistent_model.metabolites.hco3_c.reactions:\n", + " print(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Reaction identifierBCT1_syn
NameBicarbonate transport via ABC system (periplasm)
Memory address0x25b9c0296f0
Stoichiometry\n", + "

atp_c + h2o_c + hco3_p --> adp_c + h_c + hco3_c + pi_c

\n", + "

ATP C10H12N5O13P3 + H2O H2O + Bicarbonate --> ADP C10H12N5O10P2 + H+ + Bicarbonate + Phosphate

\n", + "
GPRSYNPCC7942_RS07605 and SYNPCC7942_RS07610 and SYNPCC7942_RS07615 and SYNPCC7942_RS07620
Lower bound0.0
Upper bound1000.0
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "consistent_model.reactions.BCT1_syn " + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Reaction identifierH2CO3_NAt_syn
NameBicarbonate transport (Na/HCO3 cotransport periplasme)
Memory address0x25b9bf756c0
Stoichiometry\n", + "

hco3_p + na1_p <=> hco3_c + na1_c

\n", + "

Bicarbonate + Sodium <=> Bicarbonate + Sodium

\n", + "
GPRSynpcc7942_1475 or Synpcc7942_0357
Lower bound-1000.0
Upper bound1000.0
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "consistent_model.reactions.H2CO3_NAt_syn " + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Reaction identifierHCO3tex
NameBicarbonate transport via diffusion (extracellular to periplasm)
Memory address0x25b9c05edd0
Stoichiometry\n", + "

hco3_e <=> hco3_p

\n", + "

Bicarbonate <=> Bicarbonate

\n", + "
GPR
Lower bound-1000.0
Upper bound1000.0
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "consistent_model.reactions.HCO3tex " + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Reaction identifierBCT1_syn
NameBicarbonate transport via ABC system (periplasm)
Memory address0x0258eb87c730
Stoichiometry\n", + "

atp_c + h2o_c + hco3_p --> adp_c + h_c + hco3_c + pi_c

\n", + "

ATP C10H12N5O13P3 + H2O H2O + Bicarbonate --> ADP C10H12N5O10P2 + H+ + Bicarbonate + Phosphate

\n", + "
GPRSYNPCC7942_RS07605 and SYNPCC7942_RS07610 and SYNPCC7942_RS07615 and SYNPCC7942_RS07620
Lower bound0.0
Upper bound1000.0
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 73, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "consistent_model.reactions.BCT1_syn " + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['GND', 'PSP_L', 'BCT1_syn']\n", + "GND: 6pgc_c + nadp_c --> co2_c + nadph_c + ru5p__D_c\n", + "PSP_L: h2o_c + pser__L_c --> pi_c + ser__L_c\n", + "BCT1_syn: atp_c + h2o_c + hco3_p --> adp_c + h_c + hco3_c + pi_c\n", + "1.5108178374588594\n" + ] + }, + { + "data": { + "image/png": "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0a5du6rld999N+6++248++yzeP3119GnTx/s2rULTz/9NACgVatWCAkJQUhICP7617/im2++wdy5c/H666+jZ8+e9f5MiMh8eGSGiGoVGhqKI0eOVFv2008/ITg4GE5OTo3al4ODA3Q6XbXZQX9o1aoVnnjiCWzfvr1GeaqoqMC6deswadIktG/fvsa2kydPhkajgUajwaRJk2q8rtPpsGXLFnz88cdISEioely6dAl+fn7Ytm1bnZl79OgBNzc3lJWV1bnOgAEDAKDedYjI/HhkhsgOqFSqamNOUlJSkJCQgPbt21dNZQ4LC0NmZia2bNkCAFi0aBHWrl2LFStW4LnnnsOZM2ewadMm7Nixo8H3KywsRE5ODnQ6HX755Rf85z//wbhx4+Dp6Vnr+u+99x6OHTuG+++/H//85z8xaNAgpKSk4I033oBWq63zqIuDgwOuX79e9f/v9N///hfFxcV45plnIJfLq702Y8YMbNq0CUuWLMHq1atRXl6OBx98EH5+figpKcGnn34KrVaL+++/v2r9UaNGYeTIkfD29kZKSgrCwsLQp08f9OvXr8GfSX2M+XyIqB5C51IRUYs4fvy4BKDG489TmOfPny+NHTu22nYnTpyQAgICJGdnZ6lHjx7SF198Ue/7/DE1+4+Hg4OD1K1bN+m5556T8vLyqta7c2q2JElSfn6+tHTpUsnX11dydHSUvLy8pPnz50tpaWnV1vtjanZd/jw1e8qUKdKDDz5Y63oXLlyQAEgXLlyQfv75Z+mxxx6TfH19JWdnZ8nLy0uaPHmydPLkyar1N2zYII0bN07q1KmT5OzsLHXv3l1asGCBlJqaWu/PxBjGfD5EVDeZJP1pfiIRERGRleGYGSIiIrJqHDNDRNRM6enpVYOB7/TH1G43N7daX7927RrHxRA1E08zERE1k06nQ2pqapO27dGjBxwd+XclUXOwzBAREZFV45gZIiIismosM0RERGTVWGaIiIjIqrHMEBERkVVjmSEiIiKrxjJDREREVo1lhoiIiKza/wOpzHsFycHLPAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "EX_photon410_e -1000.000\n", + "EX_photon530_e -1000.000\n", + "H2Otu_syn -284.783\n", + "Htcx -284.499\n", + "PPK -283.908\n", + " ... \n", + "ETAPCPSII 1000.000\n", + "PSICSum 1000.000\n", + "PSIum 1000.000\n", + "PHOA410um 1000.000\n", + "ETCPC 1000.000\n", + "Name: fluxes, Length: 449, dtype: float64" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "red_costs = run_with_intervention(['GND', 'PSP_L', 'BCT1_syn'])\n", + "\n", + "red_costs[np.abs(red_costs)>0.001].sort_values()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "\"\"\"\n", + "['SYNPCC7942_RS07615',\n", + " 'SYNPCC7942_RS07605',\n", + " 'SYNPCC7942_RS07620',\n", + " 'SYNPCC7942_RS07610']\n", + " \n", + "\"\"\"\n", + "[g.id for g in model.reactions.BCT1_syn.genes]" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RS08980|RS08975 and RS07620|RS07610|RS07615|RS07605 and RS05090 and RS06355\n", + "RS08980|RS08975 and RS07620|RS07610|RS07615|RS07605 and RS05090 and RS06330\n", + "RS08980|RS08975 and RS07620|RS07610|RS07615|RS07605 and RS05090 and RS06335|RS06340|RS06345|RS06350\n", + "RS08980|RS08975 and RS07620|RS07610|RS07615|RS07605 and RS05090 and RS00195 and RS02470\n", + "RS08980|RS08975 and RS07620|RS07610|RS07615|RS07605 and RS05090 and RS00195 and RS07670\n", + "RS08980|RS08975 and RS07620|RS07610|RS07615|RS07605 and RS05090 and RS00195 and RS00970\n", + "RS08980|RS08975 and RS07620|RS07610|RS07615|RS07605 and RS05090 and RS11865 and RS02470\n", + "RS08980|RS08975 and RS07620|RS07610|RS07615|RS07605 and RS05090 and RS11865 and RS07670\n", + "RS08980|RS08975 and RS07620|RS07610|RS07615|RS07605 and RS05090 and RS11865 and RS00970\n", + "RS08980|RS08975 and RS07620|RS07610|RS07615|RS07605 and RS05090 and RS02690 and RS02470\n", + "RS08980|RS08975 and RS07620|RS07610|RS07615|RS07605 and RS05090 and RS02690 and RS07670\n", + "RS08980|RS08975 and RS07620|RS07610|RS07615|RS07605 and RS05090 and RS02690 and RS00970\n", + "RS01005|RS00515 and RS07620|RS07610|RS07615|RS07605 and RS05090 and RS07515|RS07520|RS07535|RS07510|RS07530|RS07525|RS13760 and RS06355\n", + "RS01005|RS00515 and RS07620|RS07610|RS07615|RS07605 and RS05090 and RS07515|RS07520|RS07535|RS07510|RS07530|RS07525|RS13760 and RS06330\n", + "RS01005|RS00515 and RS07620|RS07610|RS07615|RS07605 and RS05090 and RS07515|RS07520|RS07535|RS07510|RS07530|RS07525|RS13760 and RS06335|RS06340|RS06345|RS06350\n", + "\n" + ] + } + ], + "source": [ + "all_out = ''\n", + "for r in rxns:\n", + " #print(r)\n", + " genes = ''\n", + " for rxn in r:\n", + " g2 = set([g.id for g in model.reactions.get_by_id(rxn).genes])\n", + " g2 = '|'.join(g2)\n", + " genes += g2 + ' and ' \n", + " all_out+=genes.rstrip(' and')\n", + " all_out+='\\n'\n", + "print(all_out.replace('SYNPCC7942_', ''))" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting networkx\n", + " Downloading networkx-3.2.1-py3-none-any.whl.metadata (5.2 kB)\n", + "Downloading networkx-3.2.1-py3-none-any.whl (1.6 MB)\n", + " ---------------------------------------- 0.0/1.6 MB ? eta -:--:--\n", + " ---------------------------------------- 0.0/1.6 MB ? eta -:--:--\n", + " ---------------------------------------- 0.0/1.6 MB ? eta -:--:--\n", + " ---------------------------------------- 0.0/1.6 MB ? eta -:--:--\n", + " ---------------------------------------- 0.0/1.6 MB ? eta -:--:--\n", + " --------------------------------------- 0.0/1.6 MB ? eta -:--:--\n", + " --------------------------------------- 0.0/1.6 MB ? eta -:--:--\n", + " --------------------------------------- 0.0/1.6 MB ? eta -:--:--\n", + " - -------------------------------------- 0.1/1.6 MB 459.5 kB/s eta 0:00:04\n", + " - -------------------------------------- 0.1/1.6 MB 459.5 kB/s eta 0:00:04\n", + " - -------------------------------------- 0.1/1.6 MB 459.5 kB/s eta 0:00:04\n", + " -- ------------------------------------- 0.1/1.6 MB 327.7 kB/s eta 0:00:05\n", + " --- ------------------------------------ 0.1/1.6 MB 473.7 kB/s eta 0:00:04\n", + " --- ------------------------------------ 0.1/1.6 MB 473.7 kB/s eta 0:00:04\n", + " --- ------------------------------------ 0.1/1.6 MB 473.7 kB/s eta 0:00:04\n", + " --- ------------------------------------ 0.2/1.6 MB 392.8 kB/s eta 0:00:04\n", + " ---- ----------------------------------- 0.2/1.6 MB 444.2 kB/s eta 0:00:04\n", + " ---- ----------------------------------- 0.2/1.6 MB 444.2 kB/s eta 0:00:04\n", + " ---- ----------------------------------- 0.2/1.6 MB 444.2 kB/s eta 0:00:04\n", + " ----- ---------------------------------- 0.2/1.6 MB 393.1 kB/s eta 0:00:04\n", + " ------ --------------------------------- 0.3/1.6 MB 460.6 kB/s eta 0:00:03\n", + " ------ --------------------------------- 0.3/1.6 MB 460.6 kB/s eta 0:00:03\n", + " ------ --------------------------------- 0.3/1.6 MB 460.6 kB/s eta 0:00:03\n", + " ------- -------------------------------- 0.3/1.6 MB 431.6 kB/s eta 0:00:04\n", + " -------- ------------------------------- 0.3/1.6 MB 466.1 kB/s eta 0:00:03\n", + " -------- ------------------------------- 0.3/1.6 MB 466.1 kB/s eta 0:00:03\n", + " -------- ------------------------------- 0.4/1.6 MB 445.8 kB/s eta 0:00:03\n", + " --------- ------------------------------ 0.4/1.6 MB 482.3 kB/s eta 0:00:03\n", + " --------- ------------------------------ 0.4/1.6 MB 482.3 kB/s eta 0:00:03\n", + " ---------- ----------------------------- 0.4/1.6 MB 459.7 kB/s eta 0:00:03\n", + " ----------- ---------------------------- 0.5/1.6 MB 483.5 kB/s eta 0:00:03\n", + " ----------- ---------------------------- 0.5/1.6 MB 483.5 kB/s eta 0:00:03\n", + " ----------- ---------------------------- 0.5/1.6 MB 481.3 kB/s eta 0:00:03\n", + " ------------ --------------------------- 0.5/1.6 MB 476.7 kB/s eta 0:00:03\n", + " ------------- -------------------------- 0.6/1.6 MB 503.4 kB/s eta 0:00:03\n", + " ------------- -------------------------- 0.6/1.6 MB 503.4 kB/s eta 0:00:03\n", + " -------------- ------------------------- 0.6/1.6 MB 489.3 kB/s eta 0:00:03\n", + " --------------- ------------------------ 0.6/1.6 MB 510.7 kB/s eta 0:00:03\n", + " --------------- ------------------------ 0.6/1.6 MB 507.9 kB/s eta 0:00:02\n", + " --------------- ------------------------ 0.6/1.6 MB 507.9 kB/s eta 0:00:02\n", + " ---------------- ----------------------- 0.7/1.6 MB 506.9 kB/s eta 0:00:02\n", + " ----------------- ---------------------- 0.7/1.6 MB 524.3 kB/s eta 0:00:02\n", + " ----------------- ---------------------- 0.7/1.6 MB 521.3 kB/s eta 0:00:02\n", + " ------------------ --------------------- 0.7/1.6 MB 518.5 kB/s eta 0:00:02\n", + " ------------------- -------------------- 0.8/1.6 MB 535.6 kB/s eta 0:00:02\n", + " ------------------- -------------------- 0.8/1.6 MB 535.6 kB/s eta 0:00:02\n", + " ------------------- -------------------- 0.8/1.6 MB 532.5 kB/s eta 0:00:02\n", + " -------------------- ------------------- 0.8/1.6 MB 537.2 kB/s eta 0:00:02\n", + " --------------------- ------------------ 0.9/1.6 MB 540.6 kB/s eta 0:00:02\n", + " --------------------- ------------------ 0.9/1.6 MB 542.9 kB/s eta 0:00:02\n", + " ---------------------- ----------------- 0.9/1.6 MB 551.2 kB/s eta 0:00:02\n", + " ----------------------- ---------------- 1.0/1.6 MB 559.2 kB/s eta 0:00:02\n", + " ----------------------- ---------------- 1.0/1.6 MB 555.9 kB/s eta 0:00:02\n", + " ------------------------ --------------- 1.0/1.6 MB 558.4 kB/s eta 0:00:02\n", + " ------------------------- -------------- 1.0/1.6 MB 564.8 kB/s eta 0:00:02\n", + " ------------------------- -------------- 1.1/1.6 MB 567.1 kB/s eta 0:00:02\n", + " -------------------------- ------------- 1.1/1.6 MB 574.0 kB/s eta 0:00:01\n", + " --------------------------- ------------ 1.1/1.6 MB 580.7 kB/s eta 0:00:01\n", + " --------------------------- ------------ 1.1/1.6 MB 577.3 kB/s eta 0:00:01\n", + " ---------------------------- ----------- 1.2/1.6 MB 584.1 kB/s eta 0:00:01\n", + " ----------------------------- ---------- 1.2/1.6 MB 595.3 kB/s eta 0:00:01\n", + " ----------------------------- ---------- 1.2/1.6 MB 595.3 kB/s eta 0:00:01\n", + " ------------------------------ --------- 1.2/1.6 MB 586.8 kB/s eta 0:00:01\n", + " ------------------------------- -------- 1.3/1.6 MB 593.7 kB/s eta 0:00:01\n", + " -------------------------------- ------- 1.3/1.6 MB 603.7 kB/s eta 0:00:01\n", + " -------------------------------- ------- 1.3/1.6 MB 603.7 kB/s eta 0:00:01\n", + " --------------------------------- ------ 1.4/1.6 MB 605.5 kB/s eta 0:00:01\n", + " --------------------------------- ------ 1.4/1.6 MB 606.0 kB/s eta 0:00:01\n", + " ---------------------------------- ----- 1.4/1.6 MB 611.4 kB/s eta 0:00:01\n", + " ----------------------------------- ---- 1.4/1.6 MB 611.6 kB/s eta 0:00:01\n", + " ----------------------------------- ---- 1.5/1.6 MB 612.4 kB/s eta 0:00:01\n", + " ------------------------------------- -- 1.5/1.6 MB 626.2 kB/s eta 0:00:01\n", + " ------------------------------------- -- 1.6/1.6 MB 622.2 kB/s eta 0:00:01\n", + " -------------------------------------- - 1.6/1.6 MB 622.7 kB/s eta 0:00:01\n", + " --------------------------------------- 1.6/1.6 MB 627.2 kB/s eta 0:00:01\n", + " ---------------------------------------- 1.6/1.6 MB 631.3 kB/s eta 0:00:00\n", + "Installing collected packages: networkx\n", + "Successfully installed networkx-3.2.1\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "magine 0.1.5 requires bioservices, which is not installed.\n", + "magine 0.1.5 requires ipywidgets, which is not installed.\n", + "magine 0.1.5 requires jupyter, which is not installed.\n", + "magine 0.1.5 requires pathos, which is not installed.\n", + "magine 0.1.5 requires plotly==2.7, which is not installed.\n", + "magine 0.1.5 requires py2cytoscape, which is not installed.\n", + "magine 0.1.5 requires pycairo, which is not installed.\n", + "magine 0.1.5 requires pydot, which is not installed.\n", + "magine 0.1.5 requires pydotplus, which is not installed.\n", + "magine 0.1.5 requires sortedcontainers, which is not installed.\n", + "magine 0.1.5 requires wordcloud, which is not installed.\n", + "magine 0.1.5 requires xlrd, which is not installed.\n", + "magine 0.1.5 requires matplotlib==3.1.0, but you have matplotlib 3.8.2 which is incompatible.\n", + "magine 0.1.5 requires networkx<2.4,>=2.1, but you have networkx 3.2.1 which is incompatible.\n" + ] + } + ], + "source": [ + "!pip install networkx" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import networkx as nx\n", + "rxn_graph = nx.DiGraph()\n", + "for i in rxns:\n", + " prev = None\n", + " for j in i:\n", + " if prev is not None:\n", + " rxn_graph.add_edge(prev, j)\n", + " prev = j\n", + " \n", + "# print(i)\n", + "nx.draw_networkx(rxn_graph, pos=nx.layout.kamada_kawai_layout(rxn_graph, rxn_graph.nodes))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "[g.id for g in model.reactions.BCT1_syn.genes]" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['BCT1_syn']\n", + "BCT1_syn: atp_c + h2o_c + hco3_p --> adp_c + h_c + hco3_c + pi_c\n", + "4.595313108153129\n" + ] + }, + { + "data": { + "image/png": "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q1+/fg3W3XHHHdbQoUNPe0xubq4lydq2bVuD9Zdddpl155131r9+5JFHrOTk5PrX06dPt9q1a2cdPny4wXGVlZVWt27drCuvvLJ+3ZQpU6xrr73WGjhwoPXGG2/Ur3/zzTetgQMHWtdee601ZcqUBucpLy+3QkNDrZycHOuGG26wHn300QbbZ82aZV166aWn/XNZlmUlJydb8+bNO+M+7tDYzwfA/+HKDIBT2rBhg8aMGdNg3dixY7VlyxbV1tY2+jxbtmxRVlaWhgwZcsrtLpdLixcv1k033aTo6OgG29q0aaM777xT//rXv1RcXNxg29SpUxsM8bz00kuaNm3aKd9jyZIl6tu3r/r27aubb75ZL7/8coNhr+joaO3cuVM7duw47Z8jOjpan3/+uYqKis76ZwbQsigzAE7pyJEjioqKarAuKipKdXV1Onbs2BmPHT58uNq3b6/g4GClp6fr+uuv189//vNT7ltUVKSSkhIlJiaecntiYqIsy9LevXsbrJ88ebLWrVunAwcOKC8vT1988YVuvvnmU57jxRdfrN925ZVXqry8XCtXrqzfftdddyk9PV0DBw5Uz549NXHiRL300ktyOBz1+zz99NMqKipSdHS0Bg0apOnTp+uf//znGf8eALQMygyA07LZbA1ef3c144frf2jJkiXKzs7WV199pSVLluj999/XAw88cE4ZTveenTp10tVXX61XX31VL7/8sq6++mp16tTppON3796tL7/8UhMnTpQkBQUF6YYbbmgwh6ddu3b6+OOPtXfvXj300ENq37697rnnHl100UWqrKyUJPXv3187duzQxo0bNXXqVB09elTjxo3TL37xi3P6cwFwnyDTAQB4pujoaB05cqTBusLCQgUFBSkyMvKMx8bGxiohIUHSf66s7N+/Xw8//LDmzZun1q1bN9i3c+fO6tChg3bt2nXKc+Xk5Mhms6lXr14nbZs2bZpmzpwpSXr22WdPefyLL76ouro6devWrX6dZVlq1aqVTpw4oY4dO9av79Wrl3r16qVf/OIXevDBB9WnTx8tWbJEU6dOlSQFBAQoPT1d6enp+tWvfqU33nhDkydP1oMPPqj4+Pgz/p0AaD5cmQFwSsOGDdOKFSsarPv000+VlpamVq1aNelcgYGBqqura3B30HcCAgJ0/fXX66233jqpPFVVVWnBggUaO3asIiIiTjr2yiuvVE1NjWpqajR27NiTttfV1em1117Tn/70J2VnZ9cvX331leLi4vTmm2+eNnPPnj3Vtm1bVVRUnHaf/v37S9IZ9wHQ/LgyA/iB8vLyBnNOcnNzlZ2drYiIiPpbmefOnauCggK99tprkqTp06dr/vz5mjNnjm677TZt2LBBL774ot5+++2zvt/x48d15MgR1dXV6euvv9Zf/vIXjR49WmFhYafc/4knntDKlSt1xRVX6KmnnlJSUpJyc3P10EMPqba29rRXXQIDA/XNN9/U/+8f+uijj3TixAndeuutCg8Pb7DtZz/7mV588UXNnDlT8+bNU2Vlpa666irFxcWppKREf/3rX1VbW6srrriifv8RI0Zo+PDhio6OVm5urubOnas+ffqoX79+Z/07OZPGfD4AzsDovVQAWsSqVassSSct37+FecqUKdYll1zS4LjVq1dbgwcPtoKDg62ePXtaCxcuPOP7fHdr9ndLYGCg1b17d+u2226zCgsL6/f74a3ZlmVZRUVF1l133WXFxsZaQUFBVlRUlDVlyhQrLy+vwX7f3Zp9Ot+/Nfuaa66xrrrqqlPut3XrVkuStXXrVuvzzz+3fvrTn1qxsbFWcHCwFRUVZV155ZXW2rVr6/dftGiRNXr0aKtz585WcHCw1aNHD+uWW26xDhw4cMa/k8ZozOcD4PRslvW9+xMBAAC8DHNmAACAV2PODACcp4MHD9ZPBv6h727tbtu27Sm379q1i3kxwHlimAkAzlNdXZ0OHDhwTsf27NlTQUH8uxI4H5QZAADg1ZgzAwAAvBplBgAAeDXKDAAA8GqUGQAA4NUoMwAAwKtRZgAAgFejzAAAAK/2/wGfayeXikUSnwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "EX_photon530_e -1000.000\n", + "EX_photon410_e -1000.000\n", + "EX_photon690_e -670.859\n", + "H2Otu_syn -500.000\n", + "Htcx -397.502\n", + " ... \n", + "PHOA410um 1000.000\n", + "ETAPCPSII 1000.000\n", + "PSIICSum 1000.000\n", + "PSIum 1000.000\n", + "ETCPC 1000.000\n", + "Name: fluxes, Length: 447, dtype: float64" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "red_costs = run_with_intervention(['BCT1_syn'])\n", + "red_costs[np.abs(red_costs)>0.001].sort_values()" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "183.52300375243226" + ] + }, + "execution_count": 83, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "red_costs[np.abs(red_costs)>0.001].loc['HCO3E_1_cx']" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['PSP_L']\n", + "PSP_L: h2o_c + pser__L_c --> pi_c + ser__L_c\n", + "2.4405745474963054\n" + ] + }, + { + "data": { + "image/png": "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HnBzc0PPnj3x6quvVrxvMpkQERGBbt26oUmTJvD09MSAAQOwdu3aGv9OaqO+3w8R/YZlhsgOFBcXIyAgAEuXLq31PklJSXjsscfw4IMP4ty5c/j73/+OOXPmYPv27ffc99ChQ8jMzMT169fx3nvvYfHixVizZk212+fn52PAgAE4dOgQli1bhhs3bmDbtm1ITExEaGgobt68WWl7tVqNrVu3orS0tGJdWVkZtmzZUu1kpWvWrMHs2bNx4sSJuwrSoUOHMGHCBIwfPx6//PILzp49i8WLF6O8vLxim0WLFuGLL77ABx98gCtXruDo0aN48cUXUVBQcM+/j3upz/dDRL8jEZFdASDt2LHjntv97W9/k7p161Zp3csvvywNGDCg2n2SkpIkANK5c+cqrR8+fLj0yiuvVLxeuHChFBAQUPF6xowZkqurq5SZmVlpv5KSEqlt27bS6NGjK9ZNmTJFGjt2rNS7d29p48aNFes3bdok9e7dWxo7dqw0ZcqUSsfR6XSSm5ublJCQID3zzDPSe++9V+n9uXPnSg899FC1fy5JkqSAgABp0aJFNW5jCbX9fojof3hmhoiqdOrUKYwcObLSulGjRiE2NhYGg6HWx4mNjUVcXBz69+9f5ftmsxlbt27FpEmT4OPjU+m9Jk2a4JVXXsGBAweQn59f6b1p06ZVusSzZs0aTJ8+vcrP2LZtG7p27YquXbviueeew9q1aytd9vLx8cHly5dx6dKlav8cPj4+OHLkCHJycu75ZyaihsUyQ0RVysrKgre3d6V13t7eMBqNyM3NrXHfgQMHolmzZnB2dkZoaCiefvppPP/881Vum5OTg8LCQnTv3r3K97t37w5JknDjxo1K6ydPnowTJ04gOTkZKSkp+M9//oPnnnuuymOsXr264r3Ro0dDp9Ph8OHDFe/Pnj0boaGh6N27Nzp06IAJEyZgzZo10Ov1FdssWbIEOTk58PHxQZ8+fTBjxgzs27evxr8HImoYLDNEVC2VSlXp9Z2zGX9c/0fbtm1DfHw8zp8/j23btmHXrl14880365Whus9s2bIlHn/8caxbtw5r167F448/jpYtW961/9WrV/HLL79gwoQJAAAnJyc888wzle7hcXV1xZ49e3Djxg28/fbbaNasGV599VX069cPJSUlAIAePXrg0qVLOH36NKZNm4bbt28jPDwcf/nLX+r15yIiy3ESHYCI5MnHxwdZWVmV1mVnZ8PJyQleXl417qtWq9GpUycAv51ZuXnzJt555x0sWrQIjRs3rrRtq1at0Lx5c1y5cqXKYyUkJEClUuGBBx64673p06dj1qxZAIB///vfVe6/evVqGI1GtG3btmKdJElo1KgRCgoK0KJFi4r1DzzwAB544AH85S9/wVtvvYUuXbpg27ZtmDZtGgDAwcEBoaGhCA0NxV//+lds3LgRkydPxltvvQV/f/8a/06IyHp4ZoaIqhQWFoaDBw9WWvfzzz8jJCQEjRo1qtOxHB0dYTQaKz0ddIeDgwOefvppbN68+a7yVFpaimXLlmHUqFHw9PS8a9/Ro0ejvLwc5eXlGDVq1F3vG41GrF+/Hp9//jni4+MrlvPnz8PPzw+bNm2qNnOHDh3QtGlTFBcXV7tNjx49AKDGbYjI+nhmhsgO6HS6SvecJCUlIT4+Hp6enhWPMi9YsADp6elYv349AGDGjBlYunQp5s+fjxdffBGnTp3C6tWrsWXLlnt+Xl5eHrKysmA0GnHx4kX861//wrBhw+Du7l7l9osXL8bhw4fxyCOP4NNPP0WvXr2QlJSEt99+GwaDodqzLo6Ojvj1118r/vuPfvrpJxQUFOCFF16Ah4dHpffGjx+P1atXY9asWVi0aBFKSkrw2GOPwc/PD4WFhfjyyy9hMBjwyCOPVGw/aNAgDBw4ED4+PkhKSsKCBQvQpUsXdOvW7Z5/JzWpzfdDRDUQ+iwVETWIo0ePSgDuWn7/CPOUKVOkoUOHVtrv2LFjUmBgoOTs7Cx16NBBWr58eY2fc+fR7DuLo6Oj1K5dO+nFF1+UsrOzK7b746PZkiRJOTk50uzZsyW1Wi05OTlJ3t7e0pQpU6SUlJRK2915NLs6v380e8yYMdJjjz1W5XZnz56VAEhnz56Vjhw5Ij355JOSWq2WnJ2dJW9vb2n06NHS8ePHK7ZfuXKlNGzYMKlVq1aSs7Oz1L59e2nq1KlScnJyjX8ntVGb74eIqqeSpN89n0hERESkMLxnhoiIiBSN98wQEd2n1NTUipuB/+jOo91Nmzat8v0rV67wvhii+8TLTERE98loNCI5Oble+3bo0AFOTvx3JdH9YJkhIiIiReM9M0RERKRoLDNERESkaCwzREREpGgsM0RERKRoLDNERESkaCwzREREpGgsM0RERKRo/w+L+k0OXag8KQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "EX_photon530_e -1000.000\n", + "EX_photon410_e -1000.000\n", + "EX_photon690_e -670.859\n", + "H2Otu_syn -500.000\n", + "Htcx -459.579\n", + " ... \n", + "PSICSum 1000.000\n", + "ETAPCPSII 1000.000\n", + "ETCPC 1000.000\n", + "PHOA530um 1000.000\n", + "PSIum 1000.000\n", + "Name: fluxes, Length: 423, dtype: float64" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "red_costs = run_with_intervention(['PSP_L'])\n", + "red_costs[np.abs(red_costs)>0.005].sort_values()" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['CYTBD4cm', 'BCT1_syn', 'PCXHtpp', 'GND', 'PSP_L']\n", + "CYTBD4cm: 4.0 h_c + o2_c + 2.0 pqh2_cm --> 2.0 h2o_c + 4.0 h_p + 2.0 pq_cm\n", + "BCT1_syn: atp_c + h2o_c + hco3_p --> adp_c + h_c + hco3_c + pi_c\n", + "PCXHtpp: h_c --> h_p\n", + "GND: 6pgc_c + nadp_c --> co2_c + nadph_c + ru5p__D_c\n", + "PSP_L: h2o_c + pser__L_c --> pi_c + ser__L_c\n", + "1.209505461320885\n" + ] + }, + { + "data": { + "image/png": "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0aBBA8HpHNs//vEPPPbYY/D390dBQQG2bt2Ko0eP4pdffhEdzaF5enpWmFPm4eGBpk2bcq5ZHbPbMjNhwgTk5OTgvffeQ0ZGBrp164Y9e/YgICBAdDSHFxMTgyFDhpQ9X7hwIQBg2rRp+PbbbwWloj8uY/Dwww+XW75u3TpMnz697gNRmTt37mDKlCnIyMiAUqlEjx498Msvv+DRRx8VHY1IFuz2OjNERETkGOxyzgwRERE5DpYZIiIismksM0RERGTTWGaIiIjIprHMEBERkU1jmSEiIiKbxjJDRERENo1lhoiIiGwaywwRERHZNJYZIgdw/PhxjB49Gn5+flAoFIiKijJru2PHjqF3796oX78+HnjgAaxcubLK9RMTE6FQKMoef9zp+f3338efLza+dOlS9OrVq9y2ubm5WLBgAdq0aQNXV1e0aNECM2bMQHJycrn1pk+fDoVCUel91l599VUoFIpKb79w6tQpODk5YeTIkZVm3759O/r27QulUglPT0907doVr732WtnrRqMRERER6NSpExo0aIAmTZqgX79+WLduXZU/E3PU9PMhortYZogcQGFhIXr27Inly5ebvU1CQgIef/xxPPTQQ7h48SL+8Y9/YN68edi+fft9tz148CAyMjIQHx+Pd999Fx988AHWrl17z/Vzc3PRr18/HDx4ECtWrMDNmzexbds23Lp1CyEhIbh9+3a59f39/bF161YUFxeXLSspKcGWLVvuebPStWvXYu7cuTh58mSFgnTw4EFMnDgRY8eOxblz53D+/Hl88MEHKC0tLVtn6dKl+Pzzz/HPf/4T165dw5EjR/Diiy8iLy/vvj+P+6nJ50NEfyIRkUMBIO3YseO+6/3973+XOnXqVG7Zyy+/LPXr1++e2yQkJEgApIsXL5ZbPnToUOnVV18te75kyRKpZ8+eZc9nzZoleXh4SBkZGeW2Kyoqklq2bCmNHDmybNm0adOkMWPGSN27d5e+++67suWbNm2SunfvLo0ZM0aaNm1auf1otVrJ09NTiouLkyZMmCC9++675V6fP3++9PDDD9/zzyVJktSzZ09p6dKlVa5jCeZ+PkT0PzwyQ0SVOn36NIYPH15u2YgRIxATEwO9Xm/2fmJiYnDhwgX07du30tdNJhO2bt2KZ599Fr6+vuVea9CgAV599VXs27cPubm55V6bMWNGuSGetWvXYubMmZW+x7Zt29CxY0d07NgRzz33HNatW1du2MvX1xdXr17FlStX7vnn8PX1xeHDh5GVlXXfPzMR1S2WGSKqlEqlgo+PT7llPj4+MBgMyM7OrnLb/v37o2HDhnB1dUVISAjGjx+PqVOnVrpuVlYW8vPz0blz50pf79y5MyRJws2bN8stnzJlCk6ePInExEQkJSXhv//9L5577rlK97FmzZqy10aOHAmtVotDhw6VvT537lyEhISge/fuaNOmDSZOnIi1a9dCp9OVrbNs2TJkZWXB19cXPXr0wKxZs7B3794qfw5EVDdYZojonhQKRbnnfxzN+Ovyv9q2bRtiY2Nx6dIlbNu2DTt37sSiRYtqlOFe79msWTM88cQTWL9+PdatW4cnnngCzZo1q7D9jRs3cO7cOUycOBEA4OzsjAkTJpSbw+Ph4YGff/4ZN2/exNtvv42GDRvitddeQ58+fVBUVAQA6NKlC65cuYIzZ85gxowZuHPnDkaPHo0XXnihRn8uIrIcZ9EBiEiefH19oVKpyi3LzMyEs7MzmjZtWuW2/v7+aNeuHYC7R1Zu376NxYsXY+nSpahfv365dZs3b45GjRrh2rVrle4rLi4OCoUCDz74YIXXZs6ciTlz5gAAvvrqq0q3X7NmDQwGA1q2bFm2TJIkuLi4IC8vD40bNy5b/uCDD+LBBx/ECy+8gLfeegsdOnTAtm3bMGPGDABAvXr1EBISgpCQEPztb3/Dd999hylTpuCtt95C27Ztq/yZEJH18MgMEVUqNDQUBw4cKLds//79CA4OhouLS7X25eTkBIPBUO7soD/Uq1cP48ePx+bNmyuUp+LiYqxYsQIjRoxAkyZNKmw7cuRIlJaWorS0FCNGjKjwusFgwIYNG/DZZ58hNja27HHp0iUEBARg06ZN98zcpk0buLu7o7Cw8J7rdOnSBQCqXIeIrI9HZogcgFarLTfnJCEhAbGxsWjSpEnZqczh4eFIS0vDhg0bAACzZs3C8uXLsXDhQrz44os4ffo01qxZgy1bttz3/XJycqBSqWAwGPDrr7/i3//+N4YMGQIvL69K1//ggw9w6NAhPProo/jXv/6Fbt26ISEhAW+//Tb0ev09j7o4OTnh+vXrZf/+V//5z3+Ql5eH559/HkqlstxrY8eOxZo1azBnzhwsXboURUVFePzxxxEQEID8/Hx88cUX0Ov1ePTRR8vWHzBgAPr37w9fX18kJCQgPDwcHTp0QKdOne77M6mKOZ8PEVVB6LlURFQnjhw5IgGo8PjzKczTpk2TBg8eXG67o0ePSoGBgZKrq6vUpk0b6euvv67yff44NfuPh5OTk9SqVSvpxRdflDIzM8vW++up2ZIkSVlZWdLcuXMlf39/ydnZWfLx8ZGmTZsmJSUllVvvj1Oz7+XPp2aPGjVKevzxxytd7/z58xIA6fz589Lhw4elZ555RvL395dcXV0lHx8faeTIkdKJEyfK1l+1apU0ZMgQqXnz5pKrq6vUunVrafr06VJiYmKVPxNzmPP5ENG9KSTpT+cnEhEREdkYzpkhIiIim8Y5M0REtZScnFw2Gfiv/ji1293dvdLXr127xnkxRLXEYSYioloyGAxITEys0bZt2rSBszP/XklUGywzREREZNM4Z4aIiIhsGssMERER2TSWGSIiIrJpLDNERERk01hmiIiIyKaxzBAREZFNY5khIiIim/b/1zvow6p8TQEAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "EX_photon410_e -1000.000\n", + "EX_photon530_e -978.579\n", + "PPK -256.749\n", + "Htcx -227.759\n", + "3OAR180 -224.150\n", + " ... \n", + "ETCPC 978.579\n", + "PHOA530um 978.579\n", + "PSICSum 1000.000\n", + "PSIum 1000.000\n", + "PHOA410um 1000.000\n", + "Name: fluxes, Length: 448, dtype: float64" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "red_costs = run_with_intervention(rxns[3])\n", + "red_costs[np.abs(red_costs)>0.001].sort_values()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['H2CO3_NAt_syn', 'NAt3pp', 'NDH_1_4_um_copy1']\n", + "H2CO3_NAt_syn: hco3_p + na1_p <=> hco3_c + na1_c\n", + "NAt3pp: h_p + na1_c <=> h_c + na1_p\n", + "NDH_1_4_um_copy1: co2_c + 2.0 fdxrd_c + h2o_c + 4.0 h_c + pq_um --> 2.0 fdxox_c + 3.0 h_u + hco3_c + pqh2_um\n", + "0.0\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\pino216\\PycharmProjects\\straindesign\\straindesign\\lptools.py:902: UserWarning: Attempting to set identical low and high xlims makes transformation singular; automatically expanding.\n", + " plot1.axes.set_xlim(ax_limits[0][0] * 1.05, ax_limits[0][1] * 1.05)\n" + ] + }, + { + "data": { + "image/png": "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4glJUoMGDRQREaGIiAj9/ve/18cff6zHH39cL774ojp06HDenwmAusOZGQBnFRkZqXXr1lUb++qrr9StWzc1atSoVsdq2LChKisrq90ddFqDBg300EMPaeHChWeUp9LSUn3wwQcaNGiQWrRocca+gwcPVnl5ucrLyzVo0KAz1ldWVmrevHl65513lJiYWLXs2bNH7du314IFC86Z+brrrlPTpk1VXFx8zm1uu+02STrvNgDqHmdmAD9QVFRUbc5JcnKyEhMT1aJFi6pbmaOiopSWlqZ58+ZJksaNG6fp06dr8uTJevrpp7Vt2zbNmjVLixYtuuD75ebmKjMzU5WVlfruu+/0j3/8Q/369VNwcPBZt3/jjTe0YcMG3XvvvfrLX/6ijh07Kjk5WS+99JIqKirOedalYcOGOnjwYNV//6n//Oc/ys/P11NPPaWQkJBq60aMGKFZs2ZpwoQJmjZtmkpKSnTfffepffv2Kigo0D//+U9VVFTo3nvvrdq+d+/e6tWrl9q0aaPk5GRFRUXppptu0i233HLBn8n51OTzAXAeRu+lAlAvNm7c6JJ0xvLjW5jHjBnjuuuuu6rtt2nTJldYWJgrMDDQdd1117k+/PDD877P6VuzTy8NGzZ0XXvtta6nn37alZWVVbXdT2/NdrlcruzsbNezzz7rCg0NdQUEBLhat27tGjNmjCslJaXadqdvzT6XH9+aPWTIENd999131u127tzpkuTauXOn6+uvv3Y98MADrtDQUFdgYKCrdevWrsGDB7u2bNlStX1sbKyrX79+rquuusoVGBjoateunWvs2LGu48ePn/dnUhM1+XwAnJvF5frR/YkAAABehjkzAADAqzFnBgAuUWpqatVk4J86fWt306ZNz7r+wIEDzIsBLhGXmQDgElVWVur48eMXte91112ngAD+XQlcCsoMAADwasyZAQAAXo0yAwAAvBplBgAAeDXKDAAA8GqUGQAA4NUoMwAAwKtRZgAAgFf7f1fXWppRIc/dAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "EX_hco3_e -100.000\n", + "ADPT 0.000\n", + "O2tcx 1.010\n", + "AOXPBDC 0.000\n", + "DNTPPA 0.000\n", + " ... \n", + "FACOAL160i 0.000\n", + "FACOAL161i 0.000\n", + "FACOAL180i 0.000\n", + "FACOAL181i 0.000\n", + "FACOAL80i 0.000\n", + "Name: fluxes, Length: 762, dtype: float64" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rxns2 = [\n", + "{'ADSK': -1.0, 'NADS2': -1.0},\n", + "{'ADSK': -1.0, 'NNATr': -1.0},\n", + "{'H2CO3_NAt_syn': -1.0, 'NAt3pp': -1.0, 'NDH_1_4_um_copy1': -1.0},\n", + "{'H2CO3_NAt_syn': -1.0, 'Kabcpp': -1.0, 'NAt3pp': -1.0, 'NDH_1_4_um_copy1': -1.0},\n", + "{'GLUSfx': -1.0, 'ALAD_L': -1.0, 'H2CO3_NAt_syn': -1.0, 'NAt3pp': -1.0},\n", + "{'H2CO3_NAt_syn': -1.0, 'Kabcpp': -1.0, 'ACS': -1.0, 'NAt3pp': -1.0, 'NDH_1_4_um_copy1': -1.0},\n", + "{'GLUSfx': -1.0, 'ALAD_L': -1.0, 'H2CO3_NAt_syn': -1.0, 'Kabcpp': -1.0, 'NAt3pp': -1.0},\n", + "{'ALAALAr': -1.0, 'ME2': -1.0, 'GART': -1.0, 'FDH6': -1.0, 'DCTPD': -1.0},\n", + "{'ALAALAr': -1.0, 'ME2': -1.0, 'GART': -1.0, 'FDH6': -1.0, 'NDPK6': -1.0},\n", + "{'GK1': -1.0, 'GLUSfx': -1.0, 'SUCDum': -1.0, 'CAT': -1.0, 'NADS2': -1.0},\n", + "{'GK1': -1.0, 'GLUSfx': -1.0, 'SUCDum': -1.0, 'CAT': -1.0, 'NNATr': -1.0},\n", + "{'H2CO3_NAt_syn': -1.0, 'NAt3pp': -1.0, 'AGM4PH': -1.0, 'NDH_1_4_um_copy1': -1.0, 'LALGP': -1.0},\n", + "{'H2CO3_NAt_syn': -1.0, 'NAt3pp': -1.0, 'AGM4PH': -1.0, 'NDH_1_4_um_copy1': -1.0, 'LADGMDH': -1.0},\n", + "{'H2CO3_NAt_syn': -1.0, 'NAt3pp': -1.0, 'AGM4PH': -1.0, 'NDH_1_4_um_copy1': -1.0, 'ALAGLUE': -1.0},\n", + "{'GLYCL': -1.0, 'ALAALAr': -1.0, 'IPDDI': -1.0, 'GTHPi': -1.0, 'AGM4PCP': -1.0},\n", + "{'GLYCL': -1.0, 'ALAALAr': -1.0, 'IPDDI': -1.0, 'GTHPi': -1.0, 'AGM3PH': -1.0},\n", + "{'GLYCL': -1.0, 'ALAALAr': -1.0, 'IPDDI': -1.0, 'GTHOr': -1.0, 'AGM4PCP': -1.0},\n", + "{'GLYCL': -1.0, 'ALAALAr': -1.0, 'IPDDI': -1.0, 'GTHOr': -1.0, 'AGM3PH': -1.0},\n", + "]\n", + "\n", + "run_with_intervention(rxns2[2])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "## Optcouple" + ] + }, + { + "cell_type": "code", + "execution_count": 127, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "module_optcouple = sd.SDModule(\n", + " consistent_model,\n", + " sd.names.OPTCOUPLE,\n", + " inner_objective='BIOMASS__1',\n", + " prod_id='EX_sucr_e',\n", + " min_gcp=0.5\n", + ")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "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.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/syn_elong/sucrose_optimization/optimize_sucrose_via_optknock.ipynb b/syn_elong/sucrose_optimization/optimize_sucrose_via_optknock.ipynb new file mode 100644 index 0000000..a8a1832 --- /dev/null +++ b/syn_elong/sucrose_optimization/optimize_sucrose_via_optknock.ipynb @@ -0,0 +1,2841 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "pycharm": { + "is_executing": true, + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import os\n", + "# os.environ['JAVA_HOME'] = r'C:\\Program Files\\Java\\jdk-21'\n", + "from straindesign import compress_model, remove_dummy_bounds\n", + "import cobra\n", + "import logging\n", + "logging.basicConfig(level=logging.INFO)\n", + "import cobra\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "pd.set_option('display.float_format', lambda x: f'{x:.3f}')" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "import straindesign as sd\n", + "import straindesign.names as names" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Set parameter Username\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:gurobipy.gurobipy:Set parameter Username\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Set parameter GURO_PAR_SPECIAL\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:gurobipy.gurobipy:Set parameter GURO_PAR_SPECIAL\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Set parameter TokenServer to value \"leghorn\"\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:gurobipy.gurobipy:Set parameter TokenServer to value \"leghorn\"\n" + ] + } + ], + "source": [ + "from syn_elong import model\n", + "from syn_elong.media import min_media" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.05390186774577662\n" + ] + } + ], + "source": [ + "with model:\n", + " print(model.slim_optimize())" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:cobra.medium.boundary_types:Compartment `e` sounds like an external compartment. Using this one without counting boundary reactions.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4.088280273582626\n" + ] + } + ], + "source": [ + "with model:\n", + " model.medium = min_media\n", + " print(model.slim_optimize())" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:cobra.medium.boundary_types:Compartment `e` sounds like an external compartment. Using this one without counting boundary reactions.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Maximum possible BIOMASS__1 synthesis rate: 4.088280273582666.\n", + "Maximum possible EX_sucr_e synthesis rate: 16.389121923937367.\n" + ] + } + ], + "source": [ + "with model:\n", + " model.medium = min_media\n", + " sol = sd.fba(model, obj='BIOMASS__1', obj_sense='max', pfba =False)\n", + " print(f\"Maximum possible BIOMASS__1 synthesis rate: {sol.objective_value}.\")\n", + " sol = sd.fba(model, obj='EX_sucr_e', obj_sense='max', pfba =False)\n", + " print(f\"Maximum possible EX_sucr_e synthesis rate: {sol.objective_value}.\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "model.medium = min_media" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:cobra.medium.boundary_types:Compartment `e` sounds like an external compartment. Using this one without counting boundary reactions.\n" + ] + } + ], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "['3HAD100',\n", + " '3HAD120',\n", + " '3HAD140',\n", + " '3HAD160',\n", + " '3HAD180',\n", + " '3HAD40_2',\n", + " '3HAD60',\n", + " '3HAD80',\n", + " '3OAR100',\n", + " '3OAR120',\n", + " '3OAR140',\n", + " '3OAR160',\n", + " '3OAR180',\n", + " '3OAR40_2',\n", + " '3OAR60',\n", + " '3OAR80',\n", + " '3OAS100',\n", + " '3OAS120',\n", + " '3OAS140',\n", + " '3OAS160',\n", + " '3OAS180',\n", + " '3OAS60',\n", + " '3OAS80',\n", + " '4PCP',\n", + " '4PEPTabcpp',\n", + " 'A5PISO',\n", + " 'AACPS6',\n", + " 'ACBIPGT',\n", + " 'ACCOAC',\n", + " 'ACGAMK',\n", + " 'ACGAMT',\n", + " 'ACGK',\n", + " 'ACGS',\n", + " 'ACHBSb',\n", + " 'ACKr',\n", + " 'ACLSa',\n", + " 'ACLSb',\n", + " 'ACM6PH',\n", + " 'ACMAMT',\n", + " 'ACOATA',\n", + " 'ACODA',\n", + " 'ACONT',\n", + " 'ACOTA',\n", + " 'ACS',\n", + " 'ADCL',\n", + " 'ADCPS2',\n", + " 'ADCS',\n", + " 'ADCYRS',\n", + " 'ADK1',\n", + " 'ADMDC',\n", + " 'ADOCBLS',\n", + " 'ADPGLC',\n", + " 'ADPT',\n", + " 'ADSK',\n", + " 'ADSL1r',\n", + " 'ADSL2r',\n", + " 'ADSS',\n", + " 'AFAT',\n", + " 'AGDC',\n", + " 'AGDI_1',\n", + " 'AGM3PApp',\n", + " 'AGM3PH',\n", + " 'AGM4PA',\n", + " 'AGM4PApp',\n", + " 'AGM4PCP',\n", + " 'AGM4PH',\n", + " 'AGMH',\n", + " 'AGPAT160',\n", + " 'AGPAT161',\n", + " 'AGPATACP_HDE_PALM',\n", + " 'AGPATACP_OLE_HDE',\n", + " 'AGPATACP_OLE_PALM',\n", + " 'AGPR',\n", + " 'AGTi',\n", + " 'AHCi',\n", + " 'AHSERL2_1',\n", + " 'AICART',\n", + " 'AIRC2',\n", + " 'AIRC3',\n", + " 'ALAALAD',\n", + " 'ALAALAabcpp',\n", + " 'ALAALAr',\n", + " 'ALAD_L',\n", + " 'ALAGLUE',\n", + " 'ALAR',\n", + " 'ALATRS',\n", + " 'ALCD1',\n", + " 'ALCD19',\n", + " 'ALDD2y',\n", + " 'ALDDC17',\n", + " 'ALDR18',\n", + " 'AM3PA',\n", + " 'AM4PA',\n", + " 'AM4PCP',\n", + " 'AMANAPEr',\n", + " 'AMAOTr',\n", + " 'AMPMS3',\n", + " 'AMPTASECG',\n", + " 'ANHMK',\n", + " 'ANPRT',\n", + " 'ANS',\n", + " 'ANS2',\n", + " 'AOXSr2',\n", + " 'ARD',\n", + " 'ARGDC',\n", + " 'ARGDHpp',\n", + " 'ARGOXRum',\n", + " 'ARGSL',\n", + " 'ARGSS',\n", + " 'ARGTRS',\n", + " 'ARGabcpp',\n", + " 'ASAD',\n", + " 'ASNN',\n", + " 'ASNS1',\n", + " 'ASNTRS',\n", + " 'ASP1DC',\n", + " 'ASPCT',\n", + " 'ASPK',\n", + " 'ASPO5',\n", + " 'ASPO6',\n", + " 'ASPOb',\n", + " 'ASPTA',\n", + " 'ASPTRS',\n", + " 'ATPPRT',\n", + " 'ATPSum',\n", + " 'BACCL',\n", + " 'BCAROHX',\n", + " 'BCAROHX2',\n", + " 'BCT1_syn',\n", + " 'BPNT',\n", + " 'BPNT2',\n", + " 'BTNPL2',\n", + " 'BTS6',\n", + " 'CA2abcpp',\n", + " 'CA2t2pp',\n", + " 'CAT',\n", + " 'CBFCum',\n", + " 'CBPS',\n", + " 'CCGS',\n", + " 'CDGR',\n", + " 'CDGS',\n", + " 'CDPDAGS_OLE_PALM',\n", + " 'CDPGLC46DH',\n", + " 'CDPMEK',\n", + " 'CELLSYN',\n", + " 'CHORM',\n", + " 'CHORS',\n", + " 'CHPHYS',\n", + " 'CHRPL',\n", + " 'CITCIa',\n", + " 'CITCIb',\n", + " 'CITMS',\n", + " 'CLt3_1pp',\n", + " 'CMPA_1',\n", + " 'COCHL_1',\n", + " 'CPH4S',\n", + " 'CPPPGO',\n", + " 'CPPPGO2',\n", + " 'CS',\n", + " 'CTPS2',\n", + " 'CUabcpp',\n", + " 'CXANHX',\n", + " 'CYNL',\n", + " 'CYNTtabcpp',\n", + " 'CYOOum',\n", + " 'CYRDAAT',\n", + " 'CYSDES',\n", + " 'CYSS_2',\n", + " 'CYSTRS',\n", + " 'CYTBD4cm',\n", + " 'CYTBD4um',\n", + " 'CYTK1',\n", + " 'Cobalt2abcppI',\n", + " 'DADK',\n", + " 'DAGK160',\n", + " 'DAGK161',\n", + " 'DAGK_HDE_PALM',\n", + " 'DAGK_OLE_HDE',\n", + " 'DAGK_OLE_PALM',\n", + " 'DALAabcpp',\n", + " 'DAPDC',\n", + " 'DAPE',\n", + " 'DB4PS',\n", + " 'DBTS',\n", + " 'DCTPD',\n", + " 'DCTPD2',\n", + " 'DDPA',\n", + " 'DDPGA',\n", + " 'DESAT16a',\n", + " 'DESAT18a',\n", + " 'DGDGS_HDE_HDE',\n", + " 'DGDGS_HDE_PALM',\n", + " 'DGDGS_OLE_HDE',\n", + " 'DGDGS_OLE_PALM',\n", + " 'DHAD1',\n", + " 'DHAD2',\n", + " 'DHFR',\n", + " 'DHFS',\n", + " 'DHNANT',\n", + " 'DHNCOAS',\n", + " 'DHNCOAT',\n", + " 'DHNPA_1',\n", + " 'DHORD3um',\n", + " 'DHORTS',\n", + " 'DHPPDA',\n", + " 'DHQS',\n", + " 'DHQTi',\n", + " 'DMATT',\n", + " 'DMBZIDS2',\n", + " 'DMPPS_syn',\n", + " 'DMTPHT',\n", + " 'DNAMTn2r',\n", + " 'DPCOAK',\n", + " 'DPOR',\n", + " 'DPR',\n", + " 'DTMPK',\n", + " 'DVOCHR_1',\n", + " 'DXPRIi',\n", + " 'DXPS',\n", + " 'DXYTST',\n", + " 'E4PD',\n", + " 'EAR100y',\n", + " 'EAR120y',\n", + " 'EAR140y',\n", + " 'EAR160y',\n", + " 'EAR180y',\n", + " 'EAR40y',\n", + " 'EAR60y',\n", + " 'EAR80y',\n", + " 'EGMEACPR',\n", + " 'EHGLAT',\n", + " 'ENO',\n", + " 'ENOPH',\n", + " 'EPMEACPR',\n", + " 'EPXQR',\n", + " 'ERTHMMOR',\n", + " 'ETCPC',\n", + " 'FALDH2',\n", + " 'FBA',\n", + " 'FBA3',\n", + " 'FBP',\n", + " 'FCLT',\n", + " 'FDH6',\n", + " 'FE3abcpp',\n", + " 'FMETTRS',\n", + " 'FMNRy_1',\n", + " 'FNOR_1',\n", + " 'FOLD3',\n", + " 'FRTT',\n", + " 'FTHFD',\n", + " 'FUM',\n", + " 'G1PACT',\n", + " 'G1PCTYT',\n", + " 'G1PTT',\n", + " 'G1SAT',\n", + " 'G3PAT160',\n", + " 'G3PAT161',\n", + " 'G3PAT1819Z_1',\n", + " 'G3PD2',\n", + " 'G5SD',\n", + " 'G6PDA',\n", + " 'G6PDH2r',\n", + " 'GALUi',\n", + " 'GAPD',\n", + " 'GAPDi_nadp',\n", + " 'GARFT',\n", + " 'GART',\n", + " 'GCALDDy',\n", + " 'GCATENEC',\n", + " 'GF6PTA',\n", + " 'GFUCS',\n", + " 'GGCLUT2',\n", + " 'GGDPR',\n", + " 'GHMT2r',\n", + " 'GK1',\n", + " 'GLCBRAN3',\n", + " 'GLCDBRAN3',\n", + " 'GLCP2_1',\n", + " 'GLCS3',\n", + " 'GLGC',\n", + " 'GLNS',\n", + " 'GLNTRS',\n", + " 'GLNabcpp',\n", + " 'GLU5K',\n", + " 'GLUCYS',\n", + " 'GLUDGE_HDE_HDE',\n", + " 'GLUDGE_HDE_PALM',\n", + " 'GLUDGE_OLE_HDE',\n", + " 'GLUDGE_OLE_PALM',\n", + " 'GLUDGS_HDE_HDE',\n", + " 'GLUDGS_HDE_PALM',\n", + " 'GLUDGS_OLE_HDE',\n", + " 'GLUDGS_OLE_PALM',\n", + " 'GLUPRT',\n", + " 'GLUR',\n", + " 'GLUSfx',\n", + " 'GLUTRR',\n", + " 'GLUTRS',\n", + " 'GLYALDDy',\n", + " 'GLYCK',\n", + " 'GLYCL',\n", + " 'GLYCLTDx',\n", + " 'GLYCOX1',\n", + " 'GLYCOX2',\n", + " 'GLYDHDA',\n", + " 'GLYOX',\n", + " 'GLYOX_1',\n", + " 'GLYTRS',\n", + " 'GMAND',\n", + " 'GMPS2',\n", + " 'GND',\n", + " 'GRTT',\n", + " 'GTHOr',\n", + " 'GTHPi',\n", + " 'GTHRDH_syn',\n", + " 'GTHS',\n", + " 'GTPCI',\n", + " 'GTPCII',\n", + " 'H2CO3_NAt_syn',\n", + " 'H4THDPR',\n", + " 'H4THDPS',\n", + " 'HBZNPT',\n", + " 'HCO3E_1_cx',\n", + " 'HEMEAS_1',\n", + " 'HEMEOS',\n", + " 'HEX1',\n", + " 'HEX7',\n", + " 'HGYDAS',\n", + " 'HISTDa',\n", + " 'HISTDb',\n", + " 'HISTRS',\n", + " 'HMBS',\n", + " 'HOXGfx',\n", + " 'HPPK',\n", + " 'HPROb',\n", + " 'HPYRRy',\n", + " 'HSDy',\n", + " 'HSERTA',\n", + " 'HSK',\n", + " 'HSTPT',\n", + " 'HTHRPDH',\n", + " 'ICDHyr',\n", + " 'ICHORS',\n", + " 'ICLIPAS',\n", + " 'ICLIPAabcpp',\n", + " 'IG3PS',\n", + " 'IGPDH',\n", + " 'IGPS',\n", + " 'ILETA',\n", + " 'ILETRS',\n", + " 'IMPC',\n", + " 'IMPD',\n", + " 'IPDDI',\n", + " 'IPDPS_syn',\n", + " 'IPMD',\n", + " 'IPPMIa',\n", + " 'IPPMIb',\n", + " 'IPPS',\n", + " 'KARA1',\n", + " 'KARI_1',\n", + " 'KARI_23dhmp_1',\n", + " 'KAS14',\n", + " 'KAS15',\n", + " 'KDOCT2',\n", + " 'KDOPP',\n", + " 'KDOPS',\n", + " 'Kabcpp',\n", + " 'Ktu',\n", + " 'LADGMDH',\n", + " 'LALGP',\n", + " 'LDAPAT',\n", + " 'LDH_D',\n", + " 'LEUTA',\n", + " 'LEUTRS',\n", + " 'LEUabcpp',\n", + " 'LIPAMPL_1',\n", + " 'LIPATPT_1',\n", + " 'LIPOCT',\n", + " 'LIPOS2',\n", + " 'LPADSS2',\n", + " 'LPOR',\n", + " 'LTHRK',\n", + " 'LYCOPC',\n", + " 'LYSTRS',\n", + " 'MALCOAMT',\n", + " 'MAN1PT',\n", + " 'MAN6PI',\n", + " 'MCOATA',\n", + " 'MCTP1App',\n", + " 'MCTP1Bpp',\n", + " 'MCTP2App',\n", + " 'MDDCP1pp',\n", + " 'MDDCP2pp',\n", + " 'MDDCP3pp',\n", + " 'MDDCP4pp',\n", + " 'MDDCP5pp',\n", + " 'MDDEP1pp',\n", + " 'MDDEP2pp',\n", + " 'MDDEP3pp',\n", + " 'MDDEP4pp',\n", + " 'MDRPD',\n", + " 'ME2',\n", + " 'MECDPDHf',\n", + " 'MECDPS',\n", + " 'MEHLER_1',\n", + " 'MEPCT',\n", + " 'METAT',\n", + " 'METS_1',\n", + " 'METTRS',\n", + " 'MG2tex',\n", + " 'MG2uabcpp',\n", + " 'MI3PP',\n", + " 'MLTGY1pp',\n", + " 'MLTGY2pp',\n", + " 'MLTGY3pp',\n", + " 'MLTGY4pp',\n", + " 'MNHNAtpp',\n", + " 'MNabc_1',\n", + " 'MOAT_1',\n", + " 'MOBDabcpp',\n", + " 'MOHMT',\n", + " 'MPML',\n", + " 'MPOMC1_1',\n", + " 'MPOMMM',\n", + " 'MPOMOR_1',\n", + " 'MPOMT_1',\n", + " 'MPTG',\n", + " 'MPTG2',\n", + " 'MSBENZMT',\n", + " 'MTAP',\n", + " 'MTHFC',\n", + " 'MTHFD',\n", + " 'MTHFR3_1',\n", + " 'MTRI',\n", + " 'NADDP',\n", + " 'NADK',\n", + " 'NADS2',\n", + " 'NADTRHD',\n", + " 'NAD_H2',\n", + " 'NAMNPP',\n", + " 'NAt3pp',\n", + " 'NDHPQRcm',\n", + " 'NDHPQRum',\n", + " 'NDH_1_1_um_copy1',\n", + " 'NDH_1_1_um_copy2',\n", + " 'NDH_1_4_um_copy1',\n", + " 'NDH_1_4_um_copy2',\n", + " 'NDPK1',\n", + " 'NDPK2',\n", + " 'NDPK3',\n", + " 'NDPK4',\n", + " 'NDPK5',\n", + " 'NDPK6',\n", + " 'NDPK7',\n", + " 'NDPK8',\n", + " 'NH4tpp',\n", + " 'NI2uabcpp',\n", + " 'NMNAT',\n", + " 'NMNDA',\n", + " 'NMNS',\n", + " 'NNATr',\n", + " 'NNDMBRT',\n", + " 'NNDPR',\n", + " 'NO2tabcpp',\n", + " 'NO3abcpp',\n", + " 'NPDPS',\n", + " 'NPHBDC',\n", + " 'NTD6',\n", + " 'NTD7',\n", + " 'NTPP2',\n", + " 'NTPP8',\n", + " 'NTRARf2',\n", + " 'NTRIRfx',\n", + " 'Nat_Kpp',\n", + " 'OANTILpp',\n", + " 'OANTIabcpp',\n", + " 'OANTS',\n", + " 'OCBT',\n", + " 'OGMEACPD',\n", + " 'OGMEACPR',\n", + " 'OGMEACPS',\n", + " 'OHPBAT',\n", + " 'OMPDC',\n", + " 'OPAH',\n", + " 'OPMEACPD',\n", + " 'OPMEACPR',\n", + " 'OPMEACPS',\n", + " 'ORNDC',\n", + " 'ORNTA',\n", + " 'ORNTAC',\n", + " 'ORPT',\n", + " 'OXADC',\n", + " 'P5CR',\n", + " 'PANTS',\n", + " 'PAPA160',\n", + " 'PAPA161',\n", + " 'PAPA_HDE_PALM',\n", + " 'PAPA_OLE_HDE',\n", + " 'PAPA_OLE_PALM',\n", + " 'PAPPT3',\n", + " 'PAPSR',\n", + " 'PC11M',\n", + " 'PC17M_1',\n", + " 'PC20M',\n", + " 'PC6AR_1',\n", + " 'PC6YM_1',\n", + " 'PC8XM',\n", + " 'PCHLDA430',\n", + " 'PCHLDA650',\n", + " 'PCXHtpp',\n", + " 'PDH',\n", + " 'PDS1_1',\n", + " 'PDS2_1',\n", + " 'PDX5POi',\n", + " 'PDX5PS2',\n", + " 'PEPC',\n", + " 'PERD',\n", + " 'PFK',\n", + " 'PFK_3',\n", + " 'PFOR',\n", + " 'PGAMT',\n", + " 'PGCD',\n", + " 'PGI',\n", + " 'PGK',\n", + " 'PGL',\n", + " 'PGLYCP',\n", + " 'PGM',\n", + " 'PGMT',\n", + " 'PGPS_OLE_PALM',\n", + " 'PHEOASE',\n", + " 'PHEOX_1',\n", + " 'PHETA1',\n", + " 'PHETRS',\n", + " 'PHYFXOR',\n", + " 'PHYPQOX',\n", + " 'PHYTES',\n", + " 'PHYTES2_1',\n", + " 'PHYTK',\n", + " 'PIuabcpp',\n", + " 'PKETF',\n", + " 'PKETX',\n", + " 'PLYCOI',\n", + " 'PMANM',\n", + " 'PMDPHT',\n", + " 'PMEACPE',\n", + " 'PMPK',\n", + " 'PNTK',\n", + " 'PPA',\n", + " 'PPBNGS',\n", + " 'PPCDC',\n", + " 'PPK',\n", + " 'PPK2',\n", + " 'PPNCL2',\n", + " 'PPNCL3',\n", + " 'PPND',\n", + " 'PPNDH',\n", + " 'PPPGO2_1',\n", + " 'PPS',\n", + " 'PRAGSr',\n", + " 'PRAIS',\n", + " 'PRAIi',\n", + " 'PRAMPC',\n", + " 'PRASCSi',\n", + " 'PRATPP',\n", + " 'PRE3BS',\n", + " 'PRFGS',\n", + " 'PRMICI',\n", + " 'PROAKGOX1',\n", + " 'PROTRS',\n", + " 'PRPPS',\n", + " 'PRUK',\n", + " 'PSCVT',\n", + " 'PSERT',\n", + " 'PSICSum',\n", + " 'PSIICSum',\n", + " 'PSIIum',\n", + " 'PSIum',\n", + " 'PSP_L',\n", + " 'PTHPS',\n", + " 'PTPATi',\n", + " 'PTRCabcpp',\n", + " 'PYK',\n", + " 'QUERT',\n", + " 'QULNS',\n", + " 'R05219',\n", + " 'RBFK',\n", + " 'RBFSa',\n", + " 'RBFSb_1',\n", + " 'RBPCcx',\n", + " 'RNDR1',\n", + " 'RNDR2',\n", + " 'RNDR3',\n", + " 'RNDR4',\n", + " 'RPE',\n", + " 'RPI',\n", + " 'SADT',\n", + " 'SAMTRI',\n", + " 'SBP',\n", + " 'SEPHCHCS',\n", + " 'SERAT',\n", + " 'SERTRS',\n", + " 'SFGTHi',\n", + " 'SHCHCS3',\n", + " 'SHK3Dr',\n", + " 'SHKK',\n", + " 'SHS1',\n", + " 'SPMDabcpp',\n", + " 'SPMS',\n", + " 'SPODM',\n", + " 'SPP',\n", + " 'SPR',\n", + " 'SPRMS',\n", + " 'SPS',\n", + " 'SPTc',\n", + " 'SQD1',\n", + " 'SQDGS_HDE_PALM',\n", + " 'SQDGS_PALM_PALM',\n", + " 'STACPSI',\n", + " 'SUCBZL',\n", + " 'SUCBZS',\n", + " 'SUCDum',\n", + " 'SUCR',\n", + " 'SUCRt2',\n", + " 'SULR_2',\n", + " 'SULabcpp',\n", + " 'TALA',\n", + " 'TDPDRE',\n", + " 'TDPDRR',\n", + " 'TDPGDH',\n", + " 'THBTGT',\n", + " 'THII',\n", + " 'THISAT',\n", + " 'THRPDC',\n", + " 'THRS',\n", + " 'THRTRS',\n", + " 'THZT',\n", + " 'TKT1',\n", + " 'TKT2',\n", + " 'TMDS3',\n", + " 'TMPK',\n", + " 'TMPPP_1',\n", + " 'TPI',\n", + " 'TRDR',\n", + " 'TRDRf',\n", + " 'TRPS1',\n", + " 'TRPS2',\n", + " 'TRPS3',\n", + " 'TRPTRS',\n", + " 'TRSARyr',\n", + " 'TYRTA',\n", + " 'TYRTRS',\n", + " 'U23GAAT2',\n", + " 'UAAGDS',\n", + " 'UAG2E',\n", + " 'UAGAAT2',\n", + " 'UAGCVT',\n", + " 'UAGDP',\n", + " 'UAGPT3',\n", + " 'UAMAGS',\n", + " 'UAMAS',\n", + " 'UAPGR',\n", + " 'UDCPDP',\n", + " 'UDCPDPS',\n", + " 'UDPG4E',\n", + " 'UDPGD',\n", + " 'UDPGLDC',\n", + " 'UGMDDS',\n", + " 'UHGADA2',\n", + " 'UM3PL',\n", + " 'UM4PCP',\n", + " 'UM4PL',\n", + " 'UMPK',\n", + " 'UNK3',\n", + " 'UPP3MT',\n", + " 'UPP3S',\n", + " 'UPPDC1',\n", + " 'UPPRT',\n", + " 'URIDK2r',\n", + " 'VALTA',\n", + " 'VALTRS',\n", + " 'VPAMTr',\n", + " 'ZCARDS',\n", + " 'ZCAROTDH1',\n", + " 'ZCAROTDH2',\n", + " 'ZISO',\n", + " 'ZNabcpp',\n", + " 'ZXANHX']" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rxn_cost = {}\n", + "for rxn in model.reactions:\n", + " if rxn.id.startswith('EX_') or rxn.id.startswith('BIOMASS_') or\\\n", + " rxn.id.startswith('SK_') or rxn.id.startswith('PHOA') or\\\n", + " rxn.id.startswith('DM_') or rxn.id.startswith('SK_'):\n", + " continue\n", + " if rxn.gene_reaction_rule == '':\n", + " continue\n", + " else:\n", + " # print(rxn.id)\n", + " rxn_cost[rxn.id] = 1\n", + "sorted(rxn_cost)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:cobra.summary.model_summary:Generating new parsimonious flux distribution.\n" + ] + }, + { + "data": { + "text/html": [ + "

Objective

1.0 BIOMASS__1 = 4.088280273582626

Uptake

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
MetaboliteReactionFluxC-NumberC-Flux
co2_eEX_co2_e77.95143.80%
cobalt2_eEX_cobalt2_e2.092E-0500.00%
fe3_eEX_fe3_e0.00654900.00%
h_eEX_h_e69.1300.00%
hco3_eEX_hco3_e100156.20%
k_eEX_k_e6.325E-0600.00%
mg2_eEX_mg2_e0.0458300.00%
na1_eEX_na1_e4.865E-0700.00%
nh4_eEX_nh4_e32.9500.00%
photon510_eEX_photon510_e13.4600.00%
photon650_eEX_photon650_e0.0458300.00%
photon670_eEX_photon670_e100000.00%
photon690_eEX_photon690_e100000.00%
pi_eEX_pi_e1.74400.00%
so4_eEX_so4_e0.636700.00%
amylose_cSK_amylose_c2.100.00%

Secretion

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
MetaboliteReactionFluxC-NumberC-Flux
5drib_cDM_5drib_c-0.0004247526.10%
amob_cDM_amob_c-0.0001071519.73%
co_cDM_co_c-0.004324153.14%
dialurate_cDM_dialurate_c-2.092E-0541.03%
pho_loss_cDM_pho_loss_c-59.2100.00%
h2o_eEX_h2o_e-9.31600.00%
o2_eEX_o2_e-194.100.00%
sucr_eEX_sucr_e-0.01100.00%
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "fluxes = model.optimize().fluxes\n", + "fluxes = fluxes[np.abs(fluxes)>0]" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "EX_photon690_e -1000.000\n", + "EX_photon670_e -1000.000\n", + "EX_hco3_e -100.000\n", + "EX_co2_e -77.949\n", + "EX_h_e -69.129\n", + "EX_nh4_e -32.949\n", + "EX_photon470_e -13.457\n", + "EX_pi_e -1.744\n", + "EX_so4_e -0.637\n", + "EX_mg2_e -0.046\n", + "EX_photon650_e -0.046\n", + "EX_fe3_e -0.007\n", + "EX_cobalt2_e -0.000\n", + "EX_k_e -0.000\n", + "EX_na1_e -0.000\n", + "EX_sucr_e 0.011\n", + "EX_h2o_e 9.316\n", + "EX_o2_e 194.131\n", + "Name: fluxes, dtype: float64" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ex = [i for i in fluxes.index if i.startswith('EX_')]\n", + "fluxes.loc[ex].sort_values()" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "datapoints, triang, plot1 = sd.plot_flux_space(\n", + " model,\n", + " ('BIOMASS__1','EX_sucr_e'),\n", + " show=False\n", + ");" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "blocked_reactions = cobra.flux_analysis.find_blocked_reactions(model)\n", + "len(blocked_reactions)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpm59iakji.lp\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:gurobipy.gurobipy:Read LP format model from file C:\\Users\\pino216\\AppData\\Local\\Temp\\tmpm59iakji.lp\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Reading time = 0.03 seconds\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:gurobipy.gurobipy:Reading time = 0.03 seconds\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + ": 893 rows, 1952 columns, 7974 nonzeros\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:gurobipy.gurobipy:: 893 rows, 1952 columns, 7974 nonzeros\n" + ] + } + ], + "source": [ + "consistent_model = cobra.flux_analysis.fastcc(model)\n", + "cobra.io.write_sbml_model( consistent_model, 'condensed_syn.xml',)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:cobra.summary.model_summary:Generating new parsimonious flux distribution.\n", + "INFO:cobra.summary.model_summary:Performing flux variability analysis.\n" + ] + }, + { + "data": { + "text/html": [ + "

Objective

1.0 BIOMASS__1 = 4.088280273582649

Uptake

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
MetaboliteReactionFluxRangeC-NumberC-Flux
co2_eEX_co2_e77.95[60.17; 100]143.80%
cobalt2_eEX_cobalt2_e2.092E-05[1.883E-05; 2.076E-05]00.00%
fe3_eEX_fe3_e0.006549[0.005894; 0.006549]00.00%
h_eEX_h_e69.13[32.37; 100]00.00%
hco3_eEX_hco3_e100[60.17; 100]156.20%
k_eEX_k_e6.325E-06[5.692E-06; 6.325E-06]00.00%
mg2_eEX_mg2_e0.04583[0.04125; 0.04583]00.00%
na1_eEX_na1_e4.865E-07[4.379E-07; 4.865E-07]00.00%
nh4_eEX_nh4_e32.95[15.11; 32.95]00.00%
photon470_eEX_photon470_e13.46[0; 1000]00.00%
photon650_eEX_photon650_e0.04583[0; 1000]00.00%
photon670_eEX_photon670_e1000[0; 1000]00.00%
photon690_eEX_photon690_e1000[0; 1000]00.00%
pi_eEX_pi_e1.744[1.57; 1.744]00.00%
so4_eEX_so4_e0.6367[0.573; 0.6367]00.00%
amylose_cSK_amylose_c2.1[1.89; 2.1]00.00%

Secretion

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
MetaboliteReactionFluxRangeC-NumberC-Flux
5drib_cDM_5drib_c-0.0004247[-0.0004247; -0.0003822]526.10%
ac_cDM_ac_c0[-9.827; 0]20.00%
amob_cDM_amob_c-0.000107[-0.000107; -9.633E-05]1519.73%
co_cDM_co_c-0.004324[-0.004324; -0.003891]153.14%
dialurate_cDM_dialurate_c-2.092E-05[-2.092E-05; -1.883E-05]41.03%
h2_cDM_h2_c0[-59.46; 0]00.00%
lac__D_cDM_lac__D_c0[-6.551; 0]30.00%
pho_loss_cDM_pho_loss_c-59.21[-1000; -39.94]00.00%
succ_cDM_succ_c0[-6.551; 0]40.00%
h2o_eEX_h2o_e-9.316[-18.38; 41.1]00.00%
meoh_eEX_meoh_e0[-0.000107; 0]10.00%
no3_eEX_no3_e0[0; 14.54]00.00%
o2_eEX_o2_e-194.1[-204.5; -174.7]00.00%
photon410_eEX_photon410_e0[0; 1000]00.00%
photon430_eEX_photon430_e0[0; 1000]00.00%
photon450_eEX_photon450_e0[0; 1000]00.00%
photon490_eEX_photon490_e0[0; 1000]00.00%
photon510_eEX_photon510_e0[0; 1000]00.00%
photon530_eEX_photon530_e0[0; 1000]00.00%
photon550_eEX_photon550_e0[0; 1000]00.00%
photon570_eEX_photon570_e0[0; 1000]00.00%
photon590_eEX_photon590_e0[0; 1000]00.00%
photon610_eEX_photon610_e0[0; 1000]00.00%
photon630_eEX_photon630_e0[0; 1000]00.00%
sucr_eEX_sucr_e-0.011[-1.649; -0.011]00.00%
akg_cSK_akg_c0[-4.53; 0]50.00%
for_cSK_for_c0[-23.43; 0]10.00%
fum_cSK_fum_c0[-6.551; 0]40.00%
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "consistent_model.summary(fva=.9)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "4.088280273582658" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "consistent_model.slim_optimize()" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "4.088280273582654" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.slim_optimize()" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SPP: h2o_c + suc6p_c --> pi_c + sucr_c\n", + "SUCRt2: h_e + sucr_e <=> h_c + sucr_c\n", + "SUCR: h2o_c + sucr_c --> fru_c + glc__D_c\n" + ] + } + ], + "source": [ + "for rxn in consistent_model.metabolites.sucr_c.reactions:\n", + " print(rxn)\n", + " # print(consistent_model.reactions.get_by_id(rxn.id))" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Metabolite identifiersuc6p_c
NameSucrose 6-phosphate
Memory address0x01babb3f1330
FormulaC12H21O14P
Compartmentc
In 2 reaction(s)\n", + " SPP, SPS
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "consistent_model.metabolites.suc6p_c" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "for rxn in consistent_model.metabolites.suc6p_c.reactions:\n", + " print(rxn)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "datapoints, triang, plot1 = sd.plot_flux_space(\n", + " consistent_model,\n", + " ('BIOMASS__1','EX_sucr_e'),\n", + " show=False\n", + ");" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "module_optknock = sd.SDModule(\n", + " consistent_model,\n", + " names.OPTKNOCK,\n", + " inner_objective='BIOMASS__1',\n", + " outer_objective='EX_sucr_e',\n", + " constraints=['EX_sucr_e >= 5', 'BIOMASS__1 >= 1.']\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:root:Preparing strain design computation.\n", + "INFO:root: Using gurobi for solving LPs during preprocessing.\n", + "WARNING:root: Removing reaction bounds when larger than the cobra-threshold of 1000.\n", + "INFO:root: FVA to identify blocked reactions and irreversibilities.\n", + "INFO:root: FVA(s) to identify essential reactions.\n", + "INFO:root:Compressing Network (740 reactions).\n", + "INFO:root: Removing blocked reactions.\n", + "INFO:root: Translating stoichiometric coefficients to rationals.\n", + "INFO:root: Removing conservation relations.\n", + "INFO:root: Compression 1: Applying compression from EFM-tool module.\n", + "INFO:root: Reduced to 240 reactions.\n", + "INFO:root: Compression 2: Lumping parallel reactions.\n", + "INFO:root: Last step could not reduce size further (240 reactions).\n", + "INFO:root: Network compression completed. (1 compression iterations)\n", + "INFO:root: Translating stoichiometric coefficients back to float.\n", + "INFO:root: FVA(s) in compressed model to identify essential reactions.\n", + "INFO:root:Finished preprocessing:\n", + "INFO:root: Model size: 240 reactions, 138 metabolites\n", + "INFO:root: 172 targetable reactions\n", + "WARNING:root: Removing reaction bounds when larger than the cobra-threshold of 1000.\n", + "INFO:root:Constructing strain design MILP for solver: gurobi.\n", + "INFO:root: Bounding MILP.\n", + "INFO:root:Finding optimal strain designs ...\n", + "INFO:root:Found solution with objective value 12.694796303959023\n", + "INFO:root:Minimizing number of interventions in subspace with 3 possible targets.\n", + "INFO:root:Strain design with cost 3.0: {'GND*G6PDH2r*PGL': -1, 'PSP_L*PGCD*PSERT': -1, 'PDH': -1}\n", + "INFO:root:Finished solving strain design MILP. \n", + "INFO:root:1 solutions to MILP found.\n", + "INFO:root: Decompressing.\n", + "INFO:root:9 solutions found.\n" + ] + } + ], + "source": [ + "import logging\n", + "logging.basicConfig(level=logging.INFO)\n", + "\n", + "sols = sd.compute_strain_designs(\n", + " consistent_model,\n", + " sd_modules = module_optknock,\n", + " max_solutions = 1,\n", + " max_cost = 3,\n", + " solution_approach = 'best',\n", + " time_limit=300,\n", + "\n", + ")\n", + "reaction_sd = sols.reaction_sd" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "import networkx as nx" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0}]" + ] + }, + "execution_count": 91, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "reaction_sd" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "rxn_graph = nx.DiGraph()\n", + "for i in reaction_sd:\n", + " prev = None\n", + " for j in i:\n", + " if prev is not None:\n", + " rxn_graph.add_edge(prev, j)\n", + " prev = j\n", + " \n", + "# print(i)\n", + "nx.draw_networkx(rxn_graph, pos=nx.layout.kamada_kawai_layout(rxn_graph, rxn_graph.nodes))\n", + "#nx.write_gml(rxn_graph, 'reaction_graph.gml')" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "reaction_sd2 = [\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0},\n", + " {'GART': -1.0, 'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0},\n", + " {'GART': -1.0, 'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0},\n", + " {'GART': -1.0, 'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0},\n", + " {'GART': -1.0, 'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0},\n", + " {'GART': -1.0, 'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0},\n", + " {'GART': -1.0, 'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0},\n", + " {'GART': -1.0, 'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0},\n", + " {'GART': -1.0, 'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0},\n", + " {'GART': -1.0, 'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0, 'FALGTHLs': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0, 'FALDH2': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0, 'ALCD1': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0, 'SFGTHi': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0, 'FALGTHLs': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0, 'FALDH2': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0, 'ALCD1': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PGCD': -1.0, 'SFGTHi': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0, 'FALGTHLs': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0, 'FALDH2': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0, 'ALCD1': -1.0},\n", + " {'PDH': -1.0, 'GND': -1.0, 'PSERT': -1.0, 'SFGTHi': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0, 'FALGTHLs': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0, 'FALDH2': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0, 'ALCD1': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSP_L': -1.0, 'SFGTHi': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0, 'FALGTHLs': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0, 'FALDH2': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0, 'ALCD1': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PGCD': -1.0, 'SFGTHi': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0, 'FALGTHLs': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0, 'FALDH2': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0, 'ALCD1': -1.0},\n", + " {'PDH': -1.0, 'G6PDH2r': -1.0, 'PSERT': -1.0, 'SFGTHi': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0, 'FALGTHLs': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0, 'FALDH2': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0, 'ALCD1': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSP_L': -1.0, 'SFGTHi': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0, 'FALGTHLs': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0, 'FALDH2': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0, 'ALCD1': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PGCD': -1.0, 'SFGTHi': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0, 'FALGTHLs': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0, 'FALDH2': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0, 'ALCD1': -1.0},\n", + " {'PDH': -1.0, 'PGL': -1.0, 'PSERT': -1.0, 'SFGTHi': -1.0}\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAGwCAYAAABcnuQpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAABINklEQVR4nO3dZ3hUdaIG8HfSaRkINYGhCIo0AaUIKkVRBBbBXVZxFaPoXZUgRFaaq6KiBjQKK7CAIiAoRVlARQWyqbTQkkDoCYQQQnqZlkw/94PXXGPaTDLJf87M+3ue82FOmXkPh2FeTlVIkiSBiIiISKa8RAcgIiIiagiWGSIiIpI1lhkiIiKSNZYZIiIikjWWGSIiIpI1lhkiIiKSNZYZIiIikjUf0QEam81mw61bt9CqVSsoFArRcYiIiMgOkiRBq9UiJCQEXl6173tx+zJz69YtqFQq0TGIiIioHrKystClS5da53H7MtOqVSsAv/5hBAYGCk5DRERE9tBoNFCpVBW/47Vx+zLz26GlwMBAlhkiIiKZsecUEZ4ATERERLLGMkNERESyxjJDREREssYyQ0RERLLGMkNERESyxjJDREREssYyQ0RERLLGMkNERESyxjJDREREssYyQ0RERLLGMkNERESyxjJDREREssYyQ0RERLLGMkNERESyxjJDREREsuYxZSbz0XtgUheJjkFERERO5jFlpktiOrT9bkPB8YOioxAREZETeUyZ8ZaAttkaBEyYgqtv/x2SzSY6EhERETmBx5SZ37QqMSDk083Iur83jKUFouMQERFRAwktMwkJCZg8eTJCQkKgUCiwd+/eKvNcvHgRjz32GJRKJVq0aIGhQ4fixo0bDfrcZnozOh9Ph75vT+Qd2teg9yIiIiKxhJYZvV6PgQMHYs2aNdVOv3r1Ku6//37ceeediIuLw9mzZ/HWW28hICCgwZ/tbQOCcrRo/tg0pC0K5WEnIiIimVJIkiSJDgEACoUCe/bswdSpUyvGTZ8+Hb6+vti6dWu931ej0UCpVEINILCGecqb+6CwXxe0//kIAtqF1PuziIiIyDkqfr/VagQG1vQL/iuXPWfGZrPhp59+wh133IHx48ejQ4cOGD58eLWHon7PaDRCo9FUGurSrMyCkFPXUT6gN3JjdjtpDYiIiKgpuGyZyc/Ph06nw7Jly/Doo4/i4MGDePzxx/HnP/8Z8fHxNS4XEREBpVJZMahUKrs+z1sC2uTq0OIvf0Paa9N52ImIiEgmXPYw061bt9C5c2c89dRT2LZtW8V8jz32GFq0aIHt27dX+z5GoxFGo7HitUajgUqlqvUw0x8Zmvmg8M5gtP3lCJp1tK8MERERkfO4xWGmdu3awcfHB3379q00vk+fPrVezeTv74/AwMBKg6MCyi0IScmCYWAf3NpffWkiIiIi1+CyZcbPzw9Dhw7F5cuXK42/cuUKunXr1uif7yUBbfL0CJz+PNJmPc7DTkRERC7KR+SH63Q6pKenV7zOyMhASkoKgoKC0LVrV8yfPx9PPvkkRo0ahbFjx2L//v348ccfERcX12QZW6qNUG3ah1uHu6L1/sNoEdK9yT6biIiI6ib0nJm4uDiMHTu2yvjQ0FBs3rwZALBx40ZERETg5s2b6N27N959911MmTLF7s+w59Jse9gAaDq0gH7DanSe/FwD3omIiIjq4sg5My5zAnBjcVaZ+Y1O6Y+caQ+i5/of4OUtdMcWERGR23KLE4BdVUu1EV2/Poi8u1TQ3UyvewEiIiJqVCwz9eBvtKLjhVxY7h6IrF3rRMchIiLyaCwz9eQFoHVBGdq8EI60Zx+GzWISHYmIiMgjscw0UEuNEV2/jUVefxW01y+KjkNERORxWGacwN9oRfDlfNiGDkHm9lWi4xAREXkUlhknUhaWoe3LryN9+hhYTca6FyAiIqIGY5lxspYaE7ruOYSC/iqo01NFxyEiInJ7LDONwM9kQ6e0AuDe4cjc/JHoOERERG6NZaYRKYvK0W7uW7j6l5GwGstFxyEiInJLLDONrIXGBNWPx1HUV4XSy8mi4xAREbkdlpkm4Ge2ocO1Injddx8y1i8VHYeIiMitsMw0ocCicnSY/z6uTR4Ki0EvOg4REZFbYJlpYi20JqgOJKGkjwol50+IjkNERCR7LDMC+JptaH+9BN6jxuDaZ/8UHYeIiEjWWGYECiwuR8c3P8a1RwfDoteIjkNERCRLLDOCtdCaoYo+g9K+3VB05ojoOERERLLDMuMCfC0S2t0ohe+D43D149dFxyEiIpIVlhkXElhsQPB7n+H6Q/1h0pWKjkNERCQLLDMuprnOjC7xF6Dt0x1Fp2NFxyEiInJ5LDMuyMcqoe1NNXwfnoirH7wqOg4REZFLY5lxYYElBgRHrEfmqDthUheJjkNEROSSWGZcXHO9GV2OXIG2720oOH5QdBwiIiKXwzIjA942CW1vaRAwYQrSl/wdks0mOhIREZHLYJmRkVYlBnSO3ISs+3vDWFogOg4REZFLYJmRmWZlFnQ+ng59357IO/Sj6DhERETCsczIkLcNCMrRosVjf0X6gmd52ImIiDway4yMtSw1ovOa7bh5b08YinJExyEiIhKCZUbmmpVZEHLqOsr734Gc6P+IjkNERNTkWGbcgLcEtMnVodW0p5H22nQediIiIo/CMuNGWpYaoVq/C9lDuqMs74boOERERE2CZcbNBJRbEZKSBdPAvri1f7voOERERI2OZcYNeUlA6zw9Aqc/j7RZj/OwExERuTWhZSYhIQGTJ09GSEgIFAoF9u7dW+O8L7/8MhQKBVauXNlk+eSupdoI1aZ9uDWoK/S3rouOQ0RE1CiElhm9Xo+BAwdizZo1tc63Z88eJCYmIiQkpImSuY8AgwXBqdkwD+6P7B83i45DRETkdD4iP3zChAmYMGFCrfNkZ2fj1VdfxYEDBzBp0qQmSuZevAC0ztfDZ8bLSJv2LXqu/wFe3kI3PRERkdO49DkzNpsNM2bMwPz589GvXz+7ljEajdBoNJUG+lVLtRFdvz6I3Lu6QnczXXQcIiIip3DpMrN8+XL4+Phgzpw5di8TEREBpVJZMahUqkZMKD/+Ris6XciB5e6ByNq1TnQcIiKiBnPZMnP69Gn861//wubNm6FQKOxebvHixVCr1RVDVlZWI6aUJy8ArQvK0OaFcKQ9+zBsFpPoSERERPXmsmXm0KFDyM/PR9euXeHj4wMfHx9kZmbiH//4B7p3717jcv7+/ggMDKw0UPVaaozo+m0s8gZ0hfb6RdFxiIiI6sVly8yMGTNw9uxZpKSkVAwhISGYP38+Dhw4IDqe2/A3WhF8KQ+2oUOQue0z0XGIiIgcJvSSFp1Oh/T0/z8RNSMjAykpKQgKCkLXrl3Rtm3bSvP7+vqiU6dO6N27d1NHdXvKwjJ4vzIf6T/8Bz22HIS3n7/oSERERHYRumfm1KlTGDx4MAYPHgwAmDdvHgYPHoy3335bZCyP1VJjQtc9h1HQXwV1eqroOERERHZRSJIkiQ7RmDQaDZRKJdQAePaM/dRtm6H043fQ7fkFoqMQEZEHqvj9VqvrPP/VZc+ZIbGUReVoF/4Wrv55JKzGctFxiIiIasQyQzVqoTFBte84ivqqUHo5WXQcIiKiarHMUK38zDZ0uFYEr/vuQ8b690THISIiqoJlhuwSWFSODvM/wLU/DYHFoBcdh4iIqALLDNmthdYE1cFklPRRoeT8CdFxiIiIALDMkIN8zTa0v14C71FjcO2zf4qOQ0RExDJD9RNYXI5Ob36Ma+MHw6Lnk8mJiEgclhmqt+ZaM1QxZ1DatxuKzhwRHYeIiDwUyww1iK9FQrsbpfB9cByufvwP0XGIiMgDscyQUwQWGxD83ipcf7A/TLpS0XGIiMiDsMyQ0zTXmdEl4QK0fbqj6HSs6DhEROQhWGbIqXysEtreVMPv4Ym4+sGrouMQEZEHYJmhRtGqxICQiHXIfOBOGNVFouMQEZEbY5mhRtNMb0GXo1eg63sbCo4fFB2HiIjcFMsMNSpvm4S2tzQIeHQK0pf8HZLNJjoSERG5GZYZahKtSg3oHLkJWffdAWNpgeg4RETkRlhmqMk0K7Og84mr0PftibxDP4qOQ0REboJlhpqUtw0IytGi+WN/RfrCZ3nYiYiIGoxlhoRoVWpE59XbcfPenjAU5YiOQ0REMsYyQ8I0K7Mg5NR1lPe/AznR/xEdh4iIZIplhoTyloA2uTq0mvY00l6bzsNORETkMJYZcgktS41Qrf8Psod0R1neDdFxiIhIRlhmyGUElFsQkpIF48C+uLV/m+g4REQkEywz5FK8JKBNnh6B02cibdZUHnYiIqI6scyQS2qpNkK16SfcGtwV+lvXRcchIiIXxjJDLivAYEHw2WyYB/dH9o+bRcchIiIXxTJDLs0LQOt8PZQzXkbaixNhs1pERyIiIhfDMkOy0FJtRNevDyL3LhV0N9JExyEiIhfCMkOy4W+0otOFXFiHDELWd2tFxyEiIhfBMkOy4gVAWVCGNi++hvQZ42CzmERHIiIiwVhmSJZaaoxQfReHvP4qaDMviY5DREQCscyQbPkbrQi+nI8rL/0JF3JPio5DRESCCC0zCQkJmDx5MkJCQqBQKLB3796KaWazGQsXLsSAAQPQokULhISE4Nlnn8WtW7fEBSaX1DxPjW2nPsaulDWw2qyi4xARURMTWmb0ej0GDhyINWvWVJlWVlaGpKQkvPXWW0hKSsLu3btx+fJlPPbYYwKSkitroTVBb9LgxPUDWBk7F6XlhaIjERFRE1JIkiSJDgEACoUCe/bswdSpU2uc5+TJkxg2bBgyMzPRtWtXu95Xo9FAqVRCDSDQOVHJxeSoWuCjlfdXvFYGtMNfBoVhQMgIgamIiKghKn6/1WoEBtb+Cy6rc2bUajUUCgVat25d4zxGoxEajabSQO7Nx1K5j6sNhdiRtAI7k1bCauNN9oiI3J1syozBYMDChQvx1FNP1drQIiIioFQqKwaVStWEKUkEb3PVh1GWmTQ4dSMan8bOQUlZvoBURETUVGRRZsxmM5544glIkoS1a2u/WdrixYuhVqsrhqysrCZKSaJ42ST4Gque+GuxmXFLfQ0r415Dys0EAcmIiKgp+IgOUJffikxmZiZiYmLqPG7m7+8Pf3//JkpHrkBhk9BCY0Jp+2bVTtcYivBdyipcyD2BJ+6eCx8v3yZOSEREjcml98z8VmTS0tLw3//+F23bthUdiVyQj8WGlpra7wRcZtIi+WYcPomZjSJ9bhMlIyKipiB0z4xOp0N6enrF64yMDKSkpCAoKAjBwcGYNm0akpKSsG/fPlitVuTm/vojFBQUBD8/P1GxycX4mOouMwBgsVmQq8nEZ/H/wGP9X8Q9Xcc2QToiImpsQi/NjouLw9ixVX9QQkND8c4776BHjx7VLhcbG4sxY8bY9Rm8NNv92QDsmNUPJx/qYvcyzX1b4c6O92D6PfPg681iTETkahy5NFvonpkxY8agti7lIrfAIRfnBaBtgcGhZcrMWpy5dRjZ6mt4YcQ7aN8ypHHCERFRo3Ppc2aI7NW6sNzhZaw2C/K0N7A64XUcv36wEVIREVFTYJkhtxBYYqz3shpDMb5P/RybE9+HyVr/9yEiIjFYZsgt2HMCcG3KzTqk5hxDZHQY8rS8NxERkZywzJBb8KnmLsCOsklWFOhuYk3CAhy99pMTUhERUVNgmSG34GN23sniWmMJfjy3EV8efQdGi2MnFhMRUdNjmSG34G1p+J6Z3zNY9LiQdxKRMbOQo7nu1PcmIiLnYpkht1DT85kawiZZUai7hbWHFiMh/XveKoCIyEWxzJBb8LJJaKlu2EnANdEaS/DLhS344ujbMFocvwSciIgaF8sMuQUvi9TgK5pqY7DocSnvND6OnoWbpVcb7XOIiMhxLDPkFvyM1kbbM/MbCTYU6XPw+ZF/IvbKLh52IiJyESwz5Bb8zLYG3TjPEVpjKQ5e2oZ1R/4Jg1nfJJ9JREQ1Y5khtxGU33TnsxgsZUjLT0ZkdBgyiy832ecSEVFVLDPkNloXNe09YSRIKCrLxYZjSxB1aQcPOxERCcIyQ25DWSzmuUo6YymiL+/Evw8tRJlJKyQDEZEnY5kht9Fc27gnANfGaC1HemEqImNmI6PogrAcRESeiGWG3IaPk+8C7DgJJWV52HjsXfxyYQsPOxERNRGWGXIbznjYpDPoTGrEpe/GqoTXoTdqRMchInJ7LDPkNrwtrrMnxGQxIKPoPD6JmY2rhami4xARuTWWGXIbXlYJfgaL6BiVlJTnY3Pi+9h3biNskmvsOSIicjcsM+Q2FJKEFhqz6BhV6ExqHLr6Az6LmwetoVR0HCIit1OvMnP16lW8+eabeOqpp5Cfnw8A+OWXX3D+/HmnhiNyhI/FhlZqMZdn18VkNSCz5BI+jX0VV/KTRcchInIrDpeZ+Ph4DBgwAMePH8fu3buh0+kAAGfOnMGSJUucHpDIXr5GG1q64J6Z3ystL8CWE8uw9+x62CSr6DhERG7B4TKzaNEivP/++4iKioKfn1/F+AcffBCJiYlODUfkCD+zDYHFTXsX4PrQm9Q4lvEzVsa9Bo2hWHQcIiLZc7jMpKam4vHHH68yvkOHDigsLHRKKKL6asrnMzWEyWpEVskVrIidgwu5J0XHISKSNYfLTOvWrZGTk1NlfHJyMjp37uyUUET11abQ9ffM/F5peSG2nfoYu1JWw2rjYSciovpwuMxMnz4dCxcuRG5uLhQKBWw2G44cOYLXX38dzz77bGNkJLJbqxLXPAG4NnqTBieuH8TK2LkoLefeTSIiRzlcZj788EPceeedUKlU0Ol06Nu3L0aNGoWRI0fizTffbIyMRHZroXPtE4BrYraZcFOdjpWx4Ui9dUx0HCIiWVFI9XyATFZWFlJTU6HT6TB48GDcfvvtzs7mFBqNBkqlEmoAgaLDUKPLUbXARyvvFx2jQZr7BeKukJGYNmg2vL18RMchIhKi4vdbrUZgYO2/4PX+l1KlUkGlUtU4PTAwECkpKbjtttvq+xFEDvNyg9NOykwanLoRjRvFl/HiyHfRpnkH0ZGIiFxao90BmE8MJhG8bO7xyACLzYxbmgysjHsNKTcTRMchInJpfJwBuRUvq3uVaI2hCN+lrMK2U5Gw2OR5PhARUWNjmSG34m2TADfbK1hm0iL5Zhw+iZmNIn2u6DhERC5HaJlJSEjA5MmTERISAoVCgb1791aaLkkS3n77bQQHB6NZs2YYN24c0tLSxIQlebABPmb3ONT0exabBbmaTHwW/w+cuhEjOg4RkUtptDKjUCjqnEev12PgwIFYs2ZNtdM/+ugjfPbZZ1i3bh2OHz+OFi1aYPz48TAY5HVjNGo6CgD+5W5wFnANNIYi7DmzFltOLIPZahIdh4jIJTTadZ/2nAA8YcIETJgwocblV65ciTfffBNTpkwBAGzZsgUdO3bE3r17MX36dKfmJfegkCQElFugV/rVPbNMlZm1OHvrMG6pr+GFEe+gfcsQ0ZGIiIRyaM+M2WxGz549cfHixTrn/eWXXxr0eIOMjAzk5uZi3LhxFeOUSiWGDx+OY8dqvqmY0WiERqOpNJDn8LJK8DO4756Z31htFuRpb2B1wus4fv2g6DhEREI5VGZ8fX3tPsRz//33w9/fv16hACA399cTHTt27FhpfMeOHSumVSciIgJKpbJiqO1eOOR+vKwSAgwW0TGajMZQjO9TP8emxKUwWeX3KAciImdw+JyZsLAwLF++HBaLa/5gLF68GGq1umLIysoSHYmakLfFBv9y1/y72VjKzTqcy0lEZHQY8rT8+05Ensfhc2ZOnjyJ6OhoHDx4EAMGDECLFi0qTd+9e7dTgnXq1AkAkJeXh+Dg4IrxeXl5GDRoUI3L+fv7N2iPEMmbr9nm1icA18QmWVGgu4l/H1qA8Xc+g5G3TRIdiYioyThcZlq3bo2//OUvjZGlkh49eqBTp06Ijo6uKC8ajQbHjx/HK6+80uifT/LkJQHNtZ57lY/GUIIfz23ExdyTeGbYIvj7BIiORETU6BwuM5s2bXLah+t0OqSnp1e8zsjIQEpKCoKCgtC1a1eEh4fj/fffx+23344ePXrgrbfeQkhICKZOneq0DOR+Wmg9+065BoseF/JOIjJ6FmaOeBvBgd1FRyIialQOl5mMjAxYLJYqT8lOS0uDr68vunfvbvd7nTp1CmPHjq14PW/ePABAaGgoNm/ejAULFkCv1+Pvf/87SktLcf/992P//v0ICOD/Nqlmnl5mgF8POxXqb2HtocUY13s6Huj5mF33fiIikiOF5OATIUePHo2ZM2ciNDS00vivv/4aGzZsQFxcnDPzNVjFI8QB1P4AcXIXx8eGYMfsAaJjuIwAnxbo0bYvnh22GAG+zUXHISKyS8Xvt1qNwMDaf8EdvpopOTkZ9913X5Xx9957L1JSUhx9OyKna6b3rKuZ6mKw6HEp7zQiY8Jws/Sq6DhERE7ncJlRKBTQarVVxqvValitnncVCbmegDKWmT+SYEORPgefH3kTMVd22XWHbiIiuXC4zIwaNQoRERGViovVakVERATuv/9+p4Yjqo8AD7vPjCO0xhJEXdqGdUf+CYNZLzoOEZFTOHwC8PLlyzFq1Cj07t0bDzzwAADg0KFD0Gg0iInh03xJPG+L+z0125kMljKk5Sfj4+gwPDtsMboF9RYdiYioQRzeM9O3b1+cPXsWTzzxBPLz86HVavHss8/i0qVL6N+/f2NkJHKIl42HUOoiQUJxWS42HFuCqEs7eNiJiGTN4auZ5IZXM3mevJDmWLbqAdExZMPfuxlUbW7H8/e+heZ+rUTHISIC4NjVTA4fZkpISKh1+qhRoxx9SyKn8ra6dT93OqO1HOmFqYiMmY0ZQxeiR9u+oiMRETnE4TIzZsyYKuN+fzMuXtFEonmxzNSDhJKyPGxMfA8je0zEo31m8CZ7RCQbDp8zU1JSUmnIz8/H/v37MXToUBw8eLAxMhI5xMsmAe599LTR6IyliEvfjVUJr0Nv1IiOQ0RkF4f3zCiVyirjHn74Yfj5+WHevHk4ffq0U4IR1ZsE+BmtMAU4/NebAJgsBmQUnccnMbPxtyHz0as976ZMRK7N4T0zNenYsSMuX77srLcjqjcFAP9yHu5sqJLyfGw+/j5+TP0SNomXuxOR63L4v65nz56t9FqSJOTk5GDZsmUYNGiQs3IR1ZvCJsG/3AJtG3/RUWRPb1Lj8LUfcbUwFS+MeAetAlqLjkREVIXDZWbQoEFQKBRV7ktx7733YuPGjU4LRlRfXjYJ/gbumXEWk9WAzJJL+DT2VTx1zzzc0WGw6EhERJU4XGYyMjIqvfby8kL79u0REBDgtFBEDeFtscGfjzRwutLyAmw5sQxDVA/isbtehJfCW3QkIiIA9Sgz3bp1qzKutLSUZYZchrdFQgD3zDQKvUmNo9d/xrWic3hx5LsIDAgSHYmIyPETgJcvX46dO3dWvH7iiScQFBSEzp0748yZM04NR1QfPtwz06jMViOyStOwInYOLuSeFB2HiMjxMrNu3TqoVCoAQFRUFKKiorB//35MmDAB8+fPd3pAIkd5SUALjUl0DLdXWl6Ibac+xq7k1bDauCeMiMRx+DBTbm5uRZnZt28fnnjiCTzyyCPo3r07hg8f7vSARPXRQmsWHcEj6E0anMg8iOvFF/HiyHfRulk70ZGIyAM5vGemTZs2yMrKAgDs378f48aNA/DrJdp8lAG5iuYsM03GbDMhW30VK2PDkXrrmOg4ROSBHC4zf/7zn/G3v/0NDz/8MIqKijBhwgQAQHJyMnr16uX0gET10VzPMtPU1IZC7EhagZ1JK2G18ZwlImo6Dh9mWrFiBbp3746srCx89NFHaNmyJQAgJycHs2bNcnpAovoIKOOPqQhlJg1O3YjGjeLLeHHku2jTvIPoSETkARTSH+9+5ySTJk3Chg0bEBwc3BhvbzeNRgOlUgk1gEChSagppfdtgzVLh4mO4dECA9ri8btewqAuo0RHISIZqvj9VqsRGFj7L7jTns30RwkJCSgvL2+styeqFe8ALJ7GUITvUlZh26lIWGw87EdEjafRygyRSN4WPhjRFZSZtEi+GYdPYmajSJ8rOg4RuSmWGXJLXrZGOXpK9WCxWZCrycRn8f/AqRsxouMQkRtimSG35GVlmXE1GkMRdp9Ziy0nlsFs5U0Nich5WGbILXHPjGsqN2txNvswImPCUKDLFh2HiNwEywy5Je6ZcV1WyYJ8bRZWJ8zH8esHRcchIjfg1DJjNv//FQtvvPEGgoL4RF0Sw8smQcG9My5NYyjG96mfY1PiUpisRtFxiEjG7C4zM2bMgEajqXH6qVOnMHjw4IrXixcvRuvWrRsUjqjeJMCPl2e7vHKzDudyEhEZHYY8bZboOEQkU3aXmQsXLqBv3744cOBApfFmsxmLFy/GyJEjcf/99zs9IFF9KCAhoJx3AZYDm2RFge4m1iQswJFrP4mOQ0QyZHeZOX78OGbOnInJkyfjpZdegk6nw6lTpzBo0CBs27YN+/btw7p16xozK5HdFDbumZEbrbEE+85txJdH34HRYhAdh4hkxO4y4+Pjg/feew9Hjx7FkSNHcMcdd2DkyJG49957kZqaikceecTp4axWK9566y306NEDzZo1Q8+ePbF06VI00hMYyI14WblnRo4MFj0u5J1EZHQYcjTXRcchIplw+EGTAQEB8PX1hVqthp+fH8aOHVvnMxPqa/ny5Vi7di2++uor9OvXD6dOncLzzz8PpVKJOXPmNMpnknvwsdjgzzIjSzbJikJ9NtYeWoxxvZ/EAz2nQKFQiI5FRC7M7j0zkiQhIiICQ4YMwaBBg5CdnY2PPvoIr7zyCv785z+joKDA6eGOHj2KKVOmYNKkSejevTumTZuGRx55BCdOnHD6Z5F78bbY+HwmmdMaS/DLha344ujbMJjLRMchIhdmd5m59957sWrVKnz33XfYtGkTWrdujVmzZuHMmTMoLCxE3759sXPnTqeGGzlyJKKjo3HlyhUAwJkzZ3D48GFMmDChxmWMRiM0Gk2lgTyPr0VCQBn3zMidwaLHpbzTiIwJw83Sq6LjEJGLsrvM9OjRA+fOncPkyZMrjb/tttsQHx+PN954Ay+88IJTwy1atAjTp0/HnXfeCV9fXwwePBjh4eF4+umna1wmIiICSqWyYlCpVE7NRPLRQsNb5rsDCTYU6XPw+ZE3EXNlF8+ZI6IqFJIT/2VIS0vD7bff7qy3w44dOzB//nx8/PHH6NevH1JSUhAeHo5PP/0UoaGh1S5jNBphNP7/Dbg0Gg1UKhXUABrnzB5yVQf/cht++Zvz/j6SeAE+zdE16E48N/yfaObbQnQcImpEGo0GSqUSarW6znNz7T4BOD8/Hx06dKhxusViQUlJif0p7TB//vyKvTMAMGDAAGRmZiIiIqLGMuPv7w9/f3+n5iB5aq7jnhl3Y7CUIS0/GZHRYXh22GJ0C+otOhIRuQC7DzMFBwcjPz+/4vWAAQOQlfX/d+wsKirCiBEjnBqurKwMXl6VI3p7e8Nmszn1c8g9NdPznBl3JEFCcVkuNhxbgqhL23nYiYjs3zPzx38wrl+/XulZTNXN01CTJ0/GBx98gK5du6Jfv35ITk7Gp59+ipkzZzr1c8g9scy4N52xFNGXv8WV/GQ8f+9baO7XSnQkIhLEqQ+adPa9IFatWoVp06Zh1qxZ6NOnD15//XW89NJLWLp0qVM/h9wTb5rn/ozWcqQXpiIyZjYyii6IjkNEgjh807ym1KpVK6xcuRIrV64UHYVkyM/I+8x4BgklZXnYmPgeRvaYiPF9noGXwqn/TyMiF2d3mVEoFNBqtQgICIAkSVAoFNDpdBX3ceH9XMjVeFl5LoUn0RlLEZ++G2kFZ/DCvUvQwp/XLxJ5CofOmbnjjjsqvR48eHCl17zlOLkSlhnPY7QYkFF0Hp/EzMbfhryOXu3vEh2JiJqA3WUmNja2MXMQOZ23jWXGU5WU5+Or4x9gWLdHMKn/8zzsROTm7C4zo0ePbswcRE7nZeUl/J5MZ1Lj8LUfcbUwFS+MeAetAlqLjkREjYT/XSG35cXzfz2eyWpAZsklfBr7Ki7nJYmOQ0SNhGWG3JaCN1Oj/1NaXoCtJ5dj75n1sElsuUTuhmWGiDyC3qTG0es/Y2VsODSGYtFxiMiJWGaIyGOYrUZklaZhRewcXMg9KToOETlJvcvMH59OTUQkF6Xlhdh26mPsSl4Nq42HnYjkzqEyExUVhYkTJ6JNmzZo3rw5mjdvjjZt2mDixIn473//21gZiYicTm/S4ETmQayInYPSsgLRcYioAewuM1999RUmTpwIpVKJFStWYN++fdi3bx9WrFiB1q1bY+LEidi6dWtjZiUiciqzzYRs9VWsjHsNqbeOiY5DRPWkkOx81PUdd9yBuXPnIiwsrNrp//73v7FixQqkpaU5NWBDaTQaKJVKqAHw5uaepTTIH+9+MUZ0DJKJ5n6BuCtkJKYNmg1vL5d+bB2RR6j4/VarERhY+y+43Xtmbty4gXHjxtU4/aGHHsLNmzftT0lE5ELKTBqcuhGDT2NeRUlZvug4ROQAu8tMv3798OWXX9Y4fePGjejbt69TQhERiWCxmXBLk4F/xb2GlJsJouMQkZ3s3pf6ySef4E9/+hP279+PcePGoWPHjgCAvLw8REdH49q1a/jpp58aLSgRUVNRG4rwXcoqnM89jifvDoePl6/oSERUC7vLzJgxY3Du3DmsXbsWiYmJyM3NBQB06tQJEyZMwMsvv4zu3bs3Vk4ioiZVZtIi5WY8bpak44WR76Bdi2DRkYioBnafACxXPAHYc/EEYHKWwIAgTO7/IoZ0fVB0FCKP0SgnABMReSqNoRh7zvwbW05EwGw1iY5DRH/gtDITGhqKBx/k/1qIyD2VmXU4m30EkdFhKNBli45DRL/jtDLTuXNndOvWzVlvR0TkcqySBfm6LKxOmI/E6wdExyGi/+O0O0N9+OGHznorIiKXpjEU44fUL3Ax9wSeHroAft7+oiMReTSeM0NEVA/lZh3O5SQiMjoMedos0XGIPJrTykxWVhZmzpzprLcjInJ5NsmKAt1NrElYgCPX9omOQ+SxnFZmiouL8dVXXznr7YiIZENrLMG+c5uw4egSGC0G0XGIPI7d58z88MMPtU6/du1ag8MQEcmVwaLHxdyTiIyehZn3vo1gZXfRkYg8ht1lZurUqVAoFKjtHnsKhcIpoYiI5MgGGwr1t7D28CI81Hs6RvWcwn8XiZqA3YeZgoODsXv3bthstmqHpKSkxsxJRCQbWmMp9l/Yii+OvgWDuUx0HCK3Z3eZueeee3D69Okap9e114aIyJMYLHpcyktCZEwYbpZeFR2HyK3ZXWbmz5+PkSNH1ji9V69eiI2NdUooIiJ3IMGGIn0OPj/yT8Rc2cX/8BE1Ej5oktwWHzRJriTApzm6tumN5+59E818W4iOQ+Ty+KBJIiIXY7CUIa0gBZHRYcgsviQ6DpFbYZkhImoiEiQUl+Viw7F3EHVpOw87ETmJy5eZ7OxsPPPMM2jbti2aNWuGAQMG4NSpU6JjERHVm85YiujL3+LfhxaizKQVHYdI9ly6zJSUlOC+++6Dr68vfvnlF1y4cAGffPIJ2rRpIzoaEVGDGK3lSC9MRWTMbGQUnRcdh0jWnPbU7MawfPlyqFQqbNq0qWJcjx49BCYiInImCSVledh47D2MvG0Sxvd5Bl4Kl/4/JpFLculvzQ8//IAhQ4bgr3/9Kzp06IDBgwfjiy++qHUZo9EIjUZTaSAicmU6kxpx6buxOmE+9Eb+m0XkKJcuM9euXcPatWtx++2348CBA3jllVcwZ86cWh9oGRERAaVSWTGoVKomTExEVD8miwEZRefxScxspBecFR2HSFZc+j4zfn5+GDJkCI4ePVoxbs6cOTh58iSOHTtW7TJGoxFGo7HitUajgUql4n1mPBDvM0Ny1cJPieHdHsGk/s/zsBN5LLe5z0xwcDD69u1baVyfPn1w48aNGpfx9/dHYGBgpYGISE70JjUOX/sRn8XNg9ZQKjoOkctz6TJz33334fLly5XGXblyBd26dROUiIioaZisBmSWXMKnsa/ich4f5EtUG5cuM6+99hoSExPx4YcfIj09Hdu2bcPnn3+OsLAw0dGIiJpEaXkBtp5cjj1n1sEmWUXHIXJJLl1mhg4dij179mD79u3o378/li5dipUrV+Lpp58WHY2IqMnoTWocu/4LVsaGQ11eJDoOkctx6ROAnYEPmvRcPAGY3JGyWTs8MXgO+nYaJjoKUaNymxOAiYioMnV5IbadisSu5NWw2njYiQhgmSEikh29SYMTmQexInYOSssKRMchEo5lhohIhsw2E7LVV7EyLhxnbx2tewEiN8YyQ0QkY2pDEXYmrcSO0ytgtVlExyESgmWGiEjmykwanM6KwScxr6KkLF90HKImxzJDROQGLDYzcjQZWBn3GlJuJoiOQ9SkWGaIiNyIxlCE71JW4ZtTH8NiM4uOQ9QkWGaIiNxMmUmLlJvxiIwOQ6E+R3QcokbHMkNE5IYsNgvytDewKv4fOHUjRnQcokbFMkNE5MY0hmLsPvNvbDkRAbPVJDoOUaNgmSEicnPlZh3OZh9BZHQYCnTZouMQOR3LDBGRB7BKFuTrsrA6YT4Srx8QHYfIqVhmiIg8iMZQjB9Sv8DGxKUwWQyi4xA5BcsMEZGHKTfrcD4nEZExYcjT3BAdh6jBWGaIiDyQTbKiQJeNNYcW4si1faLjEDUIywwRkQfTGkuw79wmbDi6BEYediKZYpkhIvJwBoseF3NPIjJ6FnLU10XHIXIYywwREcEGGwr1t7D28CLEp++FJEmiIxHZjWWGiIgqaI2l2H9hKz4/+hYM5jLRcYjswjJDRESVGCx6XM5LQmRMGG6WpIuOQ1QnlhkiIqpCgg1F+hx8fvRNxFz5joedyKWxzBARUY20xlJEXdqOdYffQLlZLzoOUbVYZoiIqFYGSxnSClIQGR2GzOJLouMQVcEyQ0REdZIgobgsFxuOvYOoS9t52IlcCssMERHZTWcsRfTlb7Hm0EKUmbSi4xABYJkhIiIHGa3luFqYisiY2cgoOi86DhHLDBER1YeEkrI8bDz2Hn65sAU2ySY6EHkwlhkiIqo3nUmNuPTdWJ0wH3qjRnQc8lAsM0RE1CAmiwEZRefxScxspBecFR2HPBDLDBEROUVJeT42H/8AP6Z+ycNO1KRYZoiIyGn0JjUOX/sRn8XNg9ZQKjoOeQiWGSIiciqT1YDMkkv4NPZVXM5LEh2HPICsysyyZcugUCgQHh4uOgoREdWhtLwAW08ux54z62CTrKLjkBuTTZk5efIk1q9fj7vuukt0FCIispPepMax679gZWw41OVFouOQm5JFmdHpdHj66afxxRdfoE2bNqLjEBGRA8xWI7JK07Aybi4u5J4QHYfckCzKTFhYGCZNmoRx48bVOa/RaIRGo6k0EBGReKXlhdh2KhK7klfDauNhJ3Iely8zO3bsQFJSEiIiIuyaPyIiAkqlsmJQqVSNnJCIiOylN2lwIvMgVsTOQWlZgeg45CZcusxkZWVh7ty5+OabbxAQEGDXMosXL4Zara4YsrKyGjklERE5wmwzIVt9FSvjwnH21lHRccgNKCQXfo773r178fjjj8Pb27tinNVqhUKhgJeXF4xGY6Vp1dFoNFAqlVADCGzkvORaSoP88e4XY0THIKJaNPdrhQHBI/HXwa/C28tHdBxyIRW/32o1AgNr/wV36b85Dz30EFJTUyuNe/7553HnnXdi4cKFdRYZIiJybWUmLU5nxeBGyWW8OPJdBDXvKDoSyZBLl5lWrVqhf//+lca1aNECbdu2rTKeiIjkyWIzI0dzHf+Km4epA/6OwarRoiORzLj0OTNEROQ5NIYi7DqzGt+c/BgWm1l0HJIRl94zU524uDjREYiIqJGUmbRIyY7HzdJ0vDDyHbRrESw6EskA98wQEZFLsdgsyNVmYlX8P3DqRrToOCQDLDNEROSSNIZi7D6zFltORMBsNYmOQy6MZYaIiFxWuVmHs9lHEBkdhgJdtug45KJYZoiIyKVZJQvydVlYnTAfidcPiI5DLohlhoiIZEFjKMYPqV9gY+JSmKxG0XHIhbDMEBGRbJSbdTifk4jI6FnI09wQHYdcBMsMERHJik2yokCXjTWHFuLI1X2i45ALYJkhIiJZ0hpLsO/8Jmw4ugRGi0F0HBKIZYaIiGTLYNHjYu5JREbPQo76uug4JAjLDBERyZoNNhTqb2Ht4UWIT98LSZJER6ImxjJDRERuQWssxf4LW/D50bdgMJeJjkNNiGWGiIjchsFShst5SYiMCcPNknTRcaiJsMwQEZFbkWBDkT4H64++iZgr3/KwkwdgmSEiIrekM5Yi6tIOrDv8BsrNetFxqBGxzBARkdsyWMqQVpCCyOhZyCy+JDoONRKWGSIicmsSJBSX5WHDsXdw8OI2HnZyQywzRETkEXTGUsRc+Q5rDi1AmUkrOg45EcsMERF5DKO1HFcLzyEyZjYyis6LjkNOwjJDREQeRkJJWR42Jr6Hn89vgU2yiQ5EDcQyQ0REHklnVCP+6m6sTngdOqNadBxqAJYZIiLyWCaLARlFF/BJzKtILzgrOg7VE8sMERF5vNLyfGw+/gF+TP2Sh51kiGWGiIgIgN6kxuFrP+CzuHnQGkpFxyEHsMwQERH9H5PViMySS/g09lVczksSHYfsxDJDRET0B6XlBdh6chn2nFkHm2QVHYfqwDJDRERUDb1Jg2PXf8HK2HCoy4tEx6FasMwQERHVwGw1Iqs0DSvi5uJCznHRcagGLDNERER1UJcXYtvpT7AreTWsNh52cjUsM0RERHbQmzQ4kXkQK2LnoLSsQHQc+h2WGSIiIjuZbSZkq69iZVw4zt46KjoO/R+WGSIiIgepDUXYmbQCO06vgNVmER3H47HMEBER1UOZSYvTWTH4JGY2isvyRMfxaC5fZiIiIjB06FC0atUKHTp0wNSpU3H58mXRsYiIiGCxmZGjuY5/xc1Dcla86Dgey+XLTHx8PMLCwpCYmIioqCiYzWY88sgj0Ov1oqMREREBADSGIuw6sxrfnPwYFptZdByP4yM6QF32799f6fXmzZvRoUMHnD59GqNGjRKUioiIqLIykxYp2fHIKk3DiyPfRbsWwaIjeQyX3zPzR2q1GgAQFBRU7XSj0QiNRlNpICIiagoWmwV52htYFf8PnLoRLTqOx5BVmbHZbAgPD8d9992H/v37VztPREQElEplxaBSqZo4JREReTqNoRh7zqzFlhMRMFtNouO4PVmVmbCwMJw7dw47duyocZ7FixdDrVZXDFlZWU2YkIiI6FdlZh3OZh9BZHQYCnTZouO4NdmUmdmzZ2Pfvn2IjY1Fly5dapzP398fgYGBlQYiIiIRrJIF+bosrE6Yj8Tr++tegOrF5cuMJEmYPXs29uzZg5iYGPTo0UN0JCIiIodoDMX4IXUDNiYuhcliEB3H7bh8mQkLC8PXX3+Nbdu2oVWrVsjNzUVubi7Ky8tFRyMiIrJbuVmH8zmJiIwJQ57mhug4bsXly8zatWuhVqsxZswYBAcHVww7d+4UHY2IiMghNsmKAl021hxaiCNX94mO4zZc/j4zkiSJjkBERORUWmMJ9p3fhAt5J/HssMXw9wkQHUnWXH7PDBERkTsyWPS4lHsSkdGzcEudITqOrLHMEBERCWKDDYX6W1h3eDHi0/fyaEQ9scwQEREJpjWWYv+FLfj86FswmMtEx5EdlhkiIiIXYLCU4XJeEiJjwnCzJF10HFlhmSEiInIREmwo0udg/dE3EXPlWx52shPLDBERkYvRGUsRdWkH1h1+A+Vmveg4Lo9lhoiIyAUZLGVIK0hBZPQsZBZfEh3HpbHMEBERuSgJEorL8rDh2Ds4eHEbDzvVgGWGiIjIxemMpYi58h3WHFqAMpNWdByXwzJDREQkA0ZrOa4WnkNkzGxkFJ0XHcelsMwQERHJhoSSsjxsTHwPP5/fAptkEx3IJbDMEBERyYzOqEbC1d1YnfA6dEa16DjCscwQERHJkNFiQEbRBXwS8yrS8s+IjiMUywwREZGMlZbn46sTH+KH1C899rATywwREZHM6U1qHLn2A/4V9xq0hlLRcZocywwREZEbMFmNuFFyGZ/GvorLeUmi4zQplhkiIiI3UlpegK0nl2HPmXWwSVbRcZoEywwREZGb0Zs0OHb9F6yMDYe6vEh0nEbHMkNEROSGzFYjskrTsCJ2Li7kHBcdp1GxzBAREbkxtaEQ205/gl3Jq2G1uedhJ5YZIiIiN6c3aXAi8yBWxM5BaVmB6DhOxzJDRETkAcw2E7LVV7EyLhxnbx0VHcepWGaIiIg8iNpQhJ1JK7Dj9ApYbRbRcZyCZYaIiMjDlJm0OJ0Vi09iZqO4LE90nAZjmSEiIvJAFpsJOZrr+FfcPCRnxYuO0yAsM0RERB5MYyjCrpTV+PrkR7DYzKLj1AvLDBERkYcrM2txJjsBkdFhKNTniI7jMJYZIiIigsVmQZ72BlbF/wOnbkSLjuMQlhkiIiKqoDEUY8+ZtdhyIgJmq0l0HLuwzBAREVElZWYdzmYfQWR0GAp02aLj1IllhoiIiKqwShbk67KwOmE+Eq/vFx2nViwzREREVCONoRg/pH6BjYlLYbIYRMeplizKzJo1a9C9e3cEBARg+PDhOHHihOhIREREHqPcrMf5nERExoQhT3NDdJwqXL7M7Ny5E/PmzcOSJUuQlJSEgQMHYvz48cjPzxcdjYiIyGPYJCsKdNlYc2ghjlzdJzpOJS5fZj799FP8z//8D55//nn07dsX69atQ/PmzbFx40bR0YiIiDyO1liCfec34YujS2B0kcNOPqID1MZkMuH06dNYvHhxxTgvLy+MGzcOx44dq3YZo9EIo9FY8VqtVgMArge3QisvReMGJpdi9fVGoKKD6BhERO7HCpy9fhxbTZ/gibtfbZSP0Gg0AABJkuqc16XLTGFhIaxWKzp27FhpfMeOHXHp0qVql4mIiMC7775bZfzAHG2jZCQX9+etohMQEbmxA/gfvNmon6DVaqFUKmudx6XLTH0sXrwY8+bNq3hdWlqKbt264caNG3X+YciZRqOBSqVCVlYWAgMDRcdpNJ6wnp6wjgDX0914wnp6wjoCrrOekiRBq9UiJCSkznldusy0a9cO3t7eyMur/HjyvLw8dOrUqdpl/P394e/vX2W8Uql06798vwkMDOR6uglPWEeA6+luPGE9PWEdAddYT3t3Qrj0CcB+fn645557EB39/8+IsNlsiI6OxogRIwQmIyIiIlfh0ntmAGDevHkIDQ3FkCFDMGzYMKxcuRJ6vR7PP/+86GhERETkAly+zDz55JMoKCjA22+/jdzcXAwaNAj79++vclJwTfz9/bFkyZJqDz25E66n+/CEdQS4nu7GE9bTE9YRkOd6KiR7rnkiIiIiclEufc4MERERUV1YZoiIiEjWWGaIiIhI1lhmiIiISNbcosysWbMG3bt3R0BAAIYPH44TJ07UOv93332HO++8EwEBARgwYAB+/vnnJkraMI6s5+bNm6FQKCoNAQEBTZjWcQkJCZg8eTJCQkKgUCiwd+/eOpeJi4vD3XffDX9/f/Tq1QubN29u9JwN5eh6xsXFVdmWCoUCubm5TRO4HiIiIjB06FC0atUKHTp0wNSpU3H58uU6l5Pbd7M+6ynH7+batWtx1113VdxEbcSIEfjll19qXUZu2xJwfD3luC3/aNmyZVAoFAgPD691PlffnrIvMzt37sS8efOwZMkSJCUlYeDAgRg/fjzy8/Ornf/o0aN46qmn8MILLyA5ORlTp07F1KlTce7cuSZO7hhH1xP49e6NOTk5FUNmZmYTJnacXq/HwIEDsWbNGrvmz8jIwKRJkzB27FikpKQgPDwcL774Ig4cONDISRvG0fX8zeXLlyttzw4dXPchmvHx8QgLC0NiYiKioqJgNpvxyCOPQK/X17iMHL+b9VlPQH7fzS5dumDZsmU4ffo0Tp06hQcffBBTpkzB+fPnq51fjtsScHw9Aflty987efIk1q9fj7vuuqvW+WSxPSWZGzZsmBQWFlbx2mq1SiEhIVJERES18z/xxBPSpEmTKo0bPny49NJLLzVqzoZydD03bdokKZXKJkrnfACkPXv21DrPggULpH79+lUa9+STT0rjx49vxGTOZc96xsbGSgCkkpKSJsnUGPLz8yUAUnx8fI3zyPW7+Xv2rKfcv5u/adOmjbRhw4Zqp7nDtvxNbesp522p1Wql22+/XYqKipJGjx4tzZ07t8Z55bA9Zb1nxmQy4fTp0xg3blzFOC8vL4wbNw7Hjh2rdpljx45Vmh8Axo8fX+P8rqA+6wkAOp0O3bp1g0qlqvN/F3Ikx23ZEIMGDUJwcDAefvhhHDlyRHQch6jVagBAUFBQjfO4w/a0Zz0BeX83rVYrduzYAb1eX+NjZdxhW9qznoB8t2VYWBgmTZpUZTtVRw7bU9ZlprCwEFartcrdgDt27Fjj+QS5ubkOze8K6rOevXv3xsaNG/H999/j66+/hs1mw8iRI3Hz5s2miNwkatqWGo0G5eXlglI5X3BwMNatW4f//Oc/+M9//gOVSoUxY8YgKSlJdDS72Gw2hIeH47777kP//v1rnE+O383fs3c95frdTE1NRcuWLeHv74+XX34Ze/bsQd++faudV87b0pH1lOu23LFjB5KSkhAREWHX/HLYni7/OAOqnxEjRlT638TIkSPRp08frF+/HkuXLhWYjBzVu3dv9O7du+L1yJEjcfXqVaxYsQJbt24VmMw+YWFhOHfuHA4fPiw6SqOydz3l+t3s3bs3UlJSoFarsWvXLoSGhiI+Pr7GH3q5cmQ95bgts7KyMHfuXERFRcnuZOXayLrMtGvXDt7e3sjLy6s0Pi8vD506dap2mU6dOjk0vyuoz3r+ka+vLwYPHoz09PTGiChETdsyMDAQzZo1E5SqaQwbNkwW5WD27NnYt28fEhIS0KVLl1rnleN38zeOrOcfyeW76efnh169egEA7rnnHpw8eRL/+te/sH79+irzynlbOrKefySHbXn69Gnk5+fj7rvvrhhntVqRkJCA1atXw2g0wtvbu9Iyctiesj7M5Ofnh3vuuQfR0dEV42w2G6Kjo2s8xjlixIhK8wNAVFRUrcdERavPev6R1WpFamoqgoODGytmk5PjtnSWlJQUl96WkiRh9uzZ2LNnD2JiYtCjR486l5Hj9qzPev6RXL+bNpsNRqOx2mly3JY1qW09/0gO2/Khhx5CamoqUlJSKoYhQ4bg6aefRkpKSpUiA8hke4o+A7mhduzYIfn7+0ubN2+WLly4IP3973+XWrduLeXm5kqSJEkzZsyQFi1aVDH/kSNHJB8fHykyMlK6ePGitGTJEsnX11dKTU0VtQp2cXQ93333XenAgQPS1atXpdOnT0vTp0+XAgICpPPnz4tahTpptVopOTlZSk5OlgBIn376qZScnCxlZmZKkiRJixYtkmbMmFEx/7Vr16TmzZtL8+fPly5evCitWbNG8vb2lvbv3y9qFezi6HquWLFC2rt3r5SWlialpqZKc+fOlby8vKT//ve/olahTq+88oqkVCqluLg4KScnp2IoKyurmMcdvpv1WU85fjcXLVokxcfHSxkZGdLZs2elRYsWSQqFQjp48KAkSe6xLSXJ8fWU47aszh+vZpLj9pR9mZEkSVq1apXUtWtXyc/PTxo2bJiUmJhYMW306NFSaGhopfm//fZb6Y477pD8/Pykfv36ST/99FMTJ64fR9YzPDy8Yt6OHTtKEydOlJKSkgSktt9vlyD/cfhtvUJDQ6XRo0dXWWbQoEGSn5+fdNttt0mbNm1q8tyOcnQ9ly9fLvXs2VMKCAiQgoKCpDFjxkgxMTFiwtupuvUDUGn7uMN3sz7rKcfv5syZM6Vu3bpJfn5+Uvv27aWHHnqo4gdektxjW0qS4+spx21ZnT+WGTluT4UkSVLT7QciIiIici5ZnzNDRERExDJDREREssYyQ0RERLLGMkNERESyxjJDREREssYyQ0RERLLGMkNERESyxjJDREREssYyQ0RERLLGMkPkARISEjB58mSEhIRAoVBg7969di0XFxeHu+++G/7+/ujVqxc2b95c5/wKhaJiaNasGfr164fPP/+80nzPPfccpk6dWmlcVlYWZs6ciZCQEPj5+aFbt26YO3cuioqKKs03ZswYKBQKLFu2rMrnT5o0CQqFAu+8806Vadu3b4e3tzfCwsKqzf7FF19g4MCBaNmyJVq3bo3BgwcjIiKiYnpZWRkWL16Mnj17IiAgAO3bt8fo0aPx/fff1/pnYo/du3fjkUceQdu2baFQKJCSktLg9yTyJCwzRB5Ar9dj4MCBWLNmjd3LZGRkYNKkSRg7dixSUlIQHh6OF198EQcOHKhz2cuXLyMnJwcXLlzASy+9hFdeeaXKU3d/79q1axgyZAjS0tKwfft2pKenY926dRVPhi8uLq40v0qlqlKssrOzER0dXeMTi7/88kssWLAA27dvh8FgqDRt48aNCA8Px5w5c5CSkoIjR45gwYIF0Ol0FfO8/PLL2L17N1atWoVLly5h//79mDZtWpWyVR96vR73338/li9f3uD3IvJIoh8ORURNC4C0Z8+eOudbsGCB1K9fv0rjnnzySWn8+PE1LvPbQzRLSkoqje/Zs6f00UcfVbwODQ2VpkyZUvH60Ucflbp06VLpadOSJEk5OTlS8+bNpZdffrli3OjRo6VXXnlFatu2rXT48OGK8R988IE0efJkaeDAgdKSJUsqvc+1a9ekZs2aSaWlpdLw4cOlb775ptL0KVOmSM8991yN6yVJkqRUKqXNmzfXOk9DZWRkSACk5OTkRv0cInfDPTNEVK1jx45h3LhxlcaNHz8ex44ds/s9JEnC/v37cePGDQwfPrzaeYqLi3HgwAHMmjULzZo1qzStU6dOePrpp7Fz505Iv3smrp+fH55++mls2rSpYtzmzZsxc+bMaj9j06ZNmDRpEpRKJZ555hl8+eWXVT4nMTERmZmZNa5Lp06d8PPPP0Or1da53kTUtFhmiKhaubm56NixY6VxHTt2hEajQXl5ea3LdunSBS1btoSfnx8mTZqEJUuWYNSoUdXOm5aWBkmS0KdPn2qn9+nTByUlJSgoKKg0fubMmfj222+h1+uRkJAAtVqNP/3pT1WWt9ls2Lx5M5555hkAwPTp03H48GFkZGRUzLNkyRK0bt0a3bt3R+/evfHcc8/h22+/hc1mq5jn888/x9GjR9G2bVsMHToUr732Go4cOVLrnwMRNQ2WGSJyukOHDiElJQUpKSnYsGEDPvzwQ6xdu7bWZX6/58UeAwcOxO23345du3Zh48aNmDFjBnx8fKrMFxUVBb1ej4kTJwIA2rVrh4cffhgbN26smCc4OBjHjh1Damoq5s6dC4vFgtDQUDz66KMVhWbUqFG4du0aoqOjMW3aNJw/fx4PPPAAli5d6lBuInI+lhkiqlanTp2Ql5dXaVxeXh4CAwOrHA76ox49eqBXr17o168fnn/+ecyYMQMffPBBtfP26tULCoUCFy9erHb6xYsX0aZNG7Rv377KtJkzZ2LNmjXYtWtXjYeYvvzySxQXF6NZs2bw8fGBj48Pfv75Z3z11VeV9rwAQP/+/TFr1ix8/fXXiIqKQlRUFOLj4yum+/r64oEHHsDChQtx8OBBvPfee1i6dClMJlOtfx5E1LhYZoioWiNGjKhyBVJUVBRGjBjh8Ht5e3vXeGiqbdu2ePjhh/Hvf/+7yjy5ubn45ptv8OSTT0KhUFRZ9m9/+xtSU1PRv39/9O3bt8r0oqIifP/999ixY0fFnqKUlBQkJyejpKQEBw8erDHzb++n1+trncdisVS5OoqImlbVfbJE5HZ0Oh3S09MrXmdkZCAlJQVBQUHo2rUrAGDx4sXIzs7Gli1bAPx6KfLq1auxYMECzJw5EzExMfj222/x008/1fl5+fn5MBgMMBqNOHHiBLZu3Ypp06bVOP/q1asxcuRIjB8/Hu+//z569OiB8+fPY/78+ejcuXONe3XatGmDnJwc+Pr6Vjt969ataNu2LZ544okqZWjixIn48ssv8eijj+KVV15BSEgIHnzwQXTp0gU5OTl4//330b59+4ryNmbMGDz11FMYMmQI2rZtiwsXLuCNN97A2LFjERgYWOefSW2Ki4tx48YN3Lp1C8Cvl7YDv+4d69SpU4Pem8gjiL2Yioiawm+XTP9xCA0NrZgnNDRUGj16dJXlBg0aJPn5+Um33XabtGnTJoc+x8fHR+rRo4f0+uuvSzqdrtJn/f7SbEmSpOvXr0uhoaFSx44dJV9fX0mlUkmvvvqqVFhYWGm+0aNHS3Pnzq0xw+8vzR4wYIA0a9asaufbuXOn5OfnJxUUFEi7du2SJk6cKAUHB0t+fn5SSEiI9Je//EU6e/ZsxfwffvihNGLECCkoKEgKCAiQbrvtNmnOnDlV8tXHpk2bqt0+f7zEnIiqp5AkB8+6IyIiInIhPGeGiIiIZI3nzBARNdChQ4cwYcKEaqeVl5fXevXX7x+ZQET1w8NMREQNVF5ejuzs7Bqn1VZmevXq1VixiDwGywwRERHJGs+ZISIiIlljmSEiIiJZY5khIiIiWWOZISIiIlljmSEiIiJZY5khIiIiWWOZISIiIln7X/kNSRipkURMAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "datapoints, triang, plot1 = sd.plot_flux_space(\n", + " consistent_model,\n", + " ('BIOMASS__1', 'EX_sucr_e'),\n", + " show=False\n", + ");\n", + "\n", + "plot1.set_facecolor('#70AD47')\n", + "plot1.set_edgecolor('#70AD47')\n", + "\n", + "# OptKnock design plot\n", + "# interventions = [[{s:1.0},'=',0.0] for rxn in reaction_sd for s,v in rxn.items() if v < 1]\n", + "# interventions = [[{s:1.0},'=', 0.0] for s,v in reaction_sd[0].items() if v < 1]\n", + "_, _,plot3 = sd.plot_flux_space(\n", + " consistent_model,\n", + " ('BIOMASS__1', 'EX_sucr_e'),\n", + " # The sign of the glucose exchange reaction is flipped since\n", + " # reaction is defined in the direction of secretion.\n", + " constraints=interventions,\n", + " show=False\n", + ");\n", + "plot3.set_facecolor('red')\n", + "plot3.set_edgecolor('red')\n", + "# adjust axes limits and show plot\n", + "plot3.axes.set_xlim(0, 1.05*max([a[0] for a in datapoints]))\n", + "plot3.axes.set_ylim(0, 1.05*max([a[1] for a in datapoints]))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "def view_with_changes(changed_model):\n", + " datapoints, triang, plot1 = sd.plot_flux_space(\n", + " consistent_model,\n", + " ('BIOMASS__1', 'EX_sucr_e'),\n", + " show=False\n", + " );\n", + "\n", + " plot1.set_facecolor('green')\n", + " plot1.set_edgecolor('green')\n", + "\n", + " _, _,plot3 = sd.plot_flux_space(\n", + " changed_model,\n", + " ('BIOMASS__1', 'EX_sucr_e'),\n", + " show=False\n", + " );\n", + " plot3.set_facecolor('red')\n", + " plot3.set_edgecolor('red')\n", + " # adjust axes limits and show plot\n", + " plot3.axes.set_xlim(0, 1.05*max([a[0] for a in datapoints]))\n", + " plot3.axes.set_ylim(0, 1.05*max([a[1] for a in datapoints]))\n", + " plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'PSP_L', 'PSERT', 'GND', 'PGCD', 'G6PDH2r', 'PDH', 'PGL'}\n" + ] + } + ], + "source": [ + "#print(interventions)\n", + "rxn_to_remove = set()\n", + "for i in sols.reaction_sd:\n", + " for j in i:\n", + " rxn_to_remove.add(j)\n", + "print(rxn_to_remove)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "rxn_to_remove2 = {\n", + " 'PSERT', 'ALCD1', 'PGL', 'SFGTHi',\n", + " 'G6PDH2r', 'FALDH2', \n", + " 'PSP_L', 'GART', 'PGCD', \n", + " 'GND', 'FALGTHLs', 'PDH'\n", + "}\n", + "rxn_to_remove2" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'SYNPCC7942_RS03015'}\n" + ] + } + ], + "source": [ + "rxn = model.reactions.get_by_id('GART')\n", + "print({gene.id for gene in rxn.genes})" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "PSP_L {'SYNPCC7942_RS02470'}\n", + "PSERT {'SYNPCC7942_RS00970'}\n", + "GND {'SYNPCC7942_RS00195'}\n", + "PGCD {'SYNPCC7942_RS07670'}\n", + "G6PDH2r {'SYNPCC7942_RS11865'}\n", + "PDH {'SYNPCC7942_RS09865', 'SYNPCC7942_RS05480', 'SYNPCC7942_RS06135', 'SYNPCC7942_RS00725'}\n", + "PGL {'SYNPCC7942_RS02690'}\n" + ] + } + ], + "source": [ + "genes_to_ko = set()\n", + "for i in rxn_to_remove:\n", + " rxn = model.reactions.get_by_id(i)\n", + " print(i, {gene.id for gene in rxn.genes})\n", + " for gene in rxn.genes:\n", + " genes_to_ko.add(gene.id)\n", + "# genes_to_ko" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "with model:\n", + " # {'PDH': -1.0, 'GND': -1.0, 'PSP_L': -1.0},\n", + " for i in {'SYNPCC7942_RS09865', 'SYNPCC7942_RS05480', 'SYNPCC7942_RS06135', 'SYNPCC7942_RS00725'}:\n", + " model.genes.get_by_id(i).knock_out()\n", + " \n", + " model.genes.get_by_id('SYNPCC7942_RS00195').knock_out()\n", + " model.genes.get_by_id('SYNPCC7942_RS02470').knock_out()\n", + " view_with_changes(model)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "with model as model:\n", + " for i in rxn_to_remove:\n", + " model.remove_reactions([model.reactions.get_by_id(i)])\n", + " view_with_changes(model)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "with model:\n", + " for i in genes_to_ko:\n", + " model.genes.get_by_id(i).knock_out()\n", + " view_with_changes(model)" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "module_suppress = sd.SDModule(\n", + " consistent_model,\n", + " sd.names.SUPPRESS,\n", + " constraints='EX_sucr_e >= 0.1'\n", + ")\n", + "\n", + "module_protect = sd.SDModule(\n", + " consistent_model,\n", + " sd.names.PROTECT,\n", + " constraints='BIOMASS__1>=0.2'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:root:Preparing strain design computation.\n", + "INFO:root: Using gurobi for solving LPs during preprocessing.\n", + "WARNING:root: Removing reaction bounds when larger than the cobra-threshold of 1000.\n", + "INFO:root: FVA to identify blocked reactions and irreversibilities.\n" + ] + }, + { + "ename": "Exception", + "evalue": "Status code 12 not yet handeld.", + "output_type": "error", + "traceback": [ + "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[1;31mRemoteTraceback\u001B[0m Traceback (most recent call last)", + "\u001B[1;31mRemoteTraceback\u001B[0m: \n\"\"\"\nTraceback (most recent call last):\n File \"C:\\Users\\pino216\\Miniconda3\\envs\\whole-cell-gemm\\lib\\multiprocessing\\pool.py\", line 125, in worker\n result = (True, func(*args, **kwds))\n File \"C:\\Users\\pino216\\Miniconda3\\envs\\whole-cell-gemm\\lib\\multiprocessing\\pool.py\", line 48, in mapstar\n return list(map(*args))\n File \"C:\\Users\\pino216\\Miniconda3\\envs\\whole-cell-gemm\\lib\\site-packages\\straindesign\\lptools.py\", line 166, in fva_worker_compute\n min_cx = lp_glob.backend.slim_solve()\n File \"C:\\Users\\pino216\\Miniconda3\\envs\\whole-cell-gemm\\lib\\site-packages\\straindesign\\gurobi_interface.py\", line 218, in slim_solve\n raise Exception('Status code ' + str(status) + \" not yet handeld.\")\nException: Status code 12 not yet handeld.\n\"\"\"", + "\nThe above exception was the direct cause of the following exception:\n", + "\u001B[1;31mException\u001B[0m Traceback (most recent call last)", + "Cell \u001B[1;32mIn [99], line 2\u001B[0m\n\u001B[0;32m 1\u001B[0m \u001B[38;5;66;03m# Compute strain designs\u001B[39;00m\n\u001B[1;32m----> 2\u001B[0m sols \u001B[38;5;241m=\u001B[39m \u001B[43msd\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mcompute_strain_designs\u001B[49m\u001B[43m(\u001B[49m\n\u001B[0;32m 3\u001B[0m \u001B[43m \u001B[49m\u001B[43mconsistent_model\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 4\u001B[0m \u001B[43m \u001B[49m\u001B[43msd_modules\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43m \u001B[49m\u001B[43m[\u001B[49m\u001B[43mmodule_suppress\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mmodule_protect\u001B[49m\u001B[43m]\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 5\u001B[0m \u001B[43m \u001B[49m\u001B[43mtime_limit\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43m \u001B[49m\u001B[38;5;241;43m300\u001B[39;49m\u001B[43m,\u001B[49m\n\u001B[0;32m 6\u001B[0m \u001B[43m \u001B[49m\u001B[43mmax_solutions\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43m \u001B[49m\u001B[38;5;241;43m1\u001B[39;49m\u001B[43m,\u001B[49m\n\u001B[0;32m 7\u001B[0m \u001B[43m \u001B[49m\u001B[43mmax_cost\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43m \u001B[49m\u001B[38;5;241;43m3\u001B[39;49m\u001B[43m,\u001B[49m\n\u001B[0;32m 8\u001B[0m \u001B[43m \u001B[49m\u001B[43msolution_approach\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43m \u001B[49m\u001B[43msd\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mnames\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mANY\u001B[49m\n\u001B[0;32m 9\u001B[0m \u001B[43m)\u001B[49m\n\u001B[0;32m 11\u001B[0m \u001B[38;5;66;03m# Print solutions\u001B[39;00m\n\u001B[0;32m 12\u001B[0m \u001B[38;5;28mprint\u001B[39m(\u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mOne compressed solution with cost \u001B[39m\u001B[38;5;132;01m{\u001B[39;00msols\u001B[38;5;241m.\u001B[39msd_cost[\u001B[38;5;241m0\u001B[39m]\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m found and \u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;241m+\u001B[39m\\\n\u001B[0;32m 13\u001B[0m \u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mexpanded to \u001B[39m\u001B[38;5;132;01m{\u001B[39;00m\u001B[38;5;28mlen\u001B[39m(sols\u001B[38;5;241m.\u001B[39mreaction_sd)\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m solutions in the uncompressed netork.\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n", + "File \u001B[1;32m~\\Miniconda3\\envs\\whole-cell-gemm\\lib\\site-packages\\straindesign\\compute_strain_designs.py:286\u001B[0m, in \u001B[0;36mcompute_strain_designs\u001B[1;34m(model, **kwargs)\u001B[0m\n\u001B[0;32m 284\u001B[0m \u001B[38;5;66;03m# FVAs to identify blocked, irreversible and essential reactions, as well as non-bounding bounds\u001B[39;00m\n\u001B[0;32m 285\u001B[0m logging\u001B[38;5;241m.\u001B[39minfo(\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m FVA to identify blocked reactions and irreversibilities.\u001B[39m\u001B[38;5;124m'\u001B[39m)\n\u001B[1;32m--> 286\u001B[0m \u001B[43mbound_blocked_or_irrevers_fva\u001B[49m\u001B[43m(\u001B[49m\u001B[43mmodel\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43msolver\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m[\u001B[49m\u001B[43mSOLVER\u001B[49m\u001B[43m]\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 287\u001B[0m logging\u001B[38;5;241m.\u001B[39minfo(\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m FVA(s) to identify essential reactions.\u001B[39m\u001B[38;5;124m'\u001B[39m)\n\u001B[0;32m 288\u001B[0m essential_reacs \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mset\u001B[39m()\n", + "File \u001B[1;32m~\\Miniconda3\\envs\\whole-cell-gemm\\lib\\site-packages\\straindesign\\networktools.py:966\u001B[0m, in \u001B[0;36mbound_blocked_or_irrevers_fva\u001B[1;34m(model, solver)\u001B[0m\n\u001B[0;32m 959\u001B[0m \u001B[38;5;124;03m\"\"\"Use FVA to determine the flux ranges. Use this information to update the model bounds\u001B[39;00m\n\u001B[0;32m 960\u001B[0m \u001B[38;5;124;03m\u001B[39;00m\n\u001B[0;32m 961\u001B[0m \u001B[38;5;124;03mIf flux ranges for a reaction are narrower than its bounds in the mode, these bounds can be omitted, \u001B[39;00m\n\u001B[0;32m 962\u001B[0m \u001B[38;5;124;03msince other reactions must constrain the reaction flux. If (upper or lower) flux bounds are found to \u001B[39;00m\n\u001B[0;32m 963\u001B[0m \u001B[38;5;124;03mbe zero, the model bounds are updated to reduce the model complexity.\u001B[39;00m\n\u001B[0;32m 964\u001B[0m \u001B[38;5;124;03m\"\"\"\u001B[39;00m\n\u001B[0;32m 965\u001B[0m \u001B[38;5;66;03m# FVAs to identify blocked and irreversible reactions, as well as non-bounding bounds\u001B[39;00m\n\u001B[1;32m--> 966\u001B[0m flux_limits \u001B[38;5;241m=\u001B[39m \u001B[43mfva\u001B[49m\u001B[43m(\u001B[49m\u001B[43mmodel\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 967\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m select_solver(solver) \u001B[38;5;129;01min\u001B[39;00m [SCIP, GLPK]:\n\u001B[0;32m 968\u001B[0m tol \u001B[38;5;241m=\u001B[39m \u001B[38;5;241m1e-10\u001B[39m \u001B[38;5;66;03m# use tolerance for tightening problem bounds\u001B[39;00m\n", + "File \u001B[1;32m~\\Miniconda3\\envs\\whole-cell-gemm\\lib\\site-packages\\straindesign\\lptools.py:305\u001B[0m, in \u001B[0;36mfva\u001B[1;34m(model, **kwargs)\u001B[0m\n\u001B[0;32m 303\u001B[0m chunk_size \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mlen\u001B[39m(reaction_ids) \u001B[38;5;241m/\u001B[39m\u001B[38;5;241m/\u001B[39m processes\n\u001B[0;32m 304\u001B[0m \u001B[38;5;66;03m# x = pool.imap_unordered(worker_compute, range(2*numr), chunksize=chunk_size)\u001B[39;00m\n\u001B[1;32m--> 305\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m i, value \u001B[38;5;129;01min\u001B[39;00m pool\u001B[38;5;241m.\u001B[39mimap_unordered(fva_worker_compute, \u001B[38;5;28mrange\u001B[39m(\u001B[38;5;241m2\u001B[39m \u001B[38;5;241m*\u001B[39m numr), chunksize\u001B[38;5;241m=\u001B[39mchunk_size):\n\u001B[0;32m 306\u001B[0m x[i] \u001B[38;5;241m=\u001B[39m value\n\u001B[0;32m 307\u001B[0m \u001B[38;5;66;03m# GLPK works better when reinitializing the LP in every iteration. Unfortunately, this is slow\u001B[39;00m\n\u001B[0;32m 308\u001B[0m \u001B[38;5;66;03m# but for now by far the most stable solution.\u001B[39;00m\n", + "File \u001B[1;32m~\\Miniconda3\\envs\\whole-cell-gemm\\lib\\multiprocessing\\pool.py:451\u001B[0m, in \u001B[0;36m\u001B[1;34m(.0)\u001B[0m\n\u001B[0;32m 443\u001B[0m result \u001B[38;5;241m=\u001B[39m IMapUnorderedIterator(\u001B[38;5;28mself\u001B[39m)\n\u001B[0;32m 444\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_taskqueue\u001B[38;5;241m.\u001B[39mput(\n\u001B[0;32m 445\u001B[0m (\n\u001B[0;32m 446\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_guarded_task_generation(result\u001B[38;5;241m.\u001B[39m_job,\n\u001B[1;32m (...)\u001B[0m\n\u001B[0;32m 449\u001B[0m result\u001B[38;5;241m.\u001B[39m_set_length\n\u001B[0;32m 450\u001B[0m ))\n\u001B[1;32m--> 451\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m (item \u001B[38;5;28;01mfor\u001B[39;00m chunk \u001B[38;5;129;01min\u001B[39;00m result \u001B[38;5;28;01mfor\u001B[39;00m item \u001B[38;5;129;01min\u001B[39;00m chunk)\n", + "File \u001B[1;32m~\\Miniconda3\\envs\\whole-cell-gemm\\lib\\multiprocessing\\pool.py:873\u001B[0m, in \u001B[0;36mIMapIterator.next\u001B[1;34m(self, timeout)\u001B[0m\n\u001B[0;32m 871\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m success:\n\u001B[0;32m 872\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m value\n\u001B[1;32m--> 873\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m value\n", + "\u001B[1;31mException\u001B[0m: Status code 12 not yet handeld." + ] + } + ], + "source": [ + "# Compute strain designs\n", + "sols = sd.compute_strain_designs(\n", + " consistent_model,\n", + " sd_modules = [module_suppress, module_protect],\n", + " time_limit = 300,\n", + " max_solutions = 1,\n", + " max_cost = 3,\n", + " solution_approach = sd.names.ANY\n", + ")\n", + "\n", + "# Print solutions\n", + "print(f\"One compressed solution with cost {sols.sd_cost[0]} found and \"+\\\n", + " f\"expanded to {len(sols.reaction_sd)} solutions in the uncompressed netork.\")\n", + "print(f\"Example knockout set: {[s for s in sols.reaction_sd[0]]}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "cobra.io.save_json_model( model, 'name_for_now.json',)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "import escher\n", + "from escher import Builder" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "builder = Builder()" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "builder.model = model" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "builder.metabolite_data = pfba_solution.shadow_prices\n", + "builder.reaction_data = pfba_solution.fluxes" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "ec43269ff6914f1f8fbb812de4512787", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Builder(allow_building_duplicate_reactions=False, and_method_in_gene_reaction_rule='mean', cofactors=['atp', '…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "builder" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "with model:\n", + " model.objective = {model.reactions.get_by_id('EX_sucr_e'): 1, model.reactions.get_by_id('BIOMASS__1'):5}\n", + " pfba_solution = cobra.flux_analysis.pfba(model)\n", + "builder.metabolite_data = pfba_solution.shadow_prices\n", + "builder.reaction_data = pfba_solution.fluxes" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": { + "pycharm": { + "name": "#%%\n" + }, + "scrolled": true + }, + "outputs": [], + "source": [ + "flux = pfba_solution.fluxes.to_dict()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "## Auto escher map\n", + "\n", + "This code is based on https://github.com/johncthomas/Auto-Escher-map-for-CobraPy.\n", + "It doesn't quite do the visualization as wanted, but I'll keep it here until I get a defined escher map working right." + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "import generate_emap" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Of 98 reactions 75 have a link\n", + "The following are only connected to other reactions by common intermediates\n", + "Modeling: demand reaction (succ c) [DM_succ_c]:: succ_c --> \n", + "Nitrate exchange [EX_no3_e]:: no3_e <=> \n", + "Nucleoside-diphosphate kinase (ATP:GDP) [NDPK1]:: atp_c + gdp_c <=> adp_c + gtp_c\n", + "Adenylate kinase [ADK1]:: amp_c + atp_c <=> 2.0 adp_c\n", + "Polyphosphate kinase [PPK]:: atp_c + pi_c <=> adp_c + ppi_c\n", + "Modeling: exchange reaction, photon absorption (680-700nm) [EX_photon690_e]:: photon690_e <=> \n", + "Modeling: exchange reaction, photon absorption (660nm-680nm) [EX_photon670_e]:: photon670_e <=> \n", + "H2O transport via diffusion (tilacoid) [H2Otu_syn]:: h2o_u <=> h2o_c\n", + "Modeling: exchange reaction, photon absorption (500nm-520nm) [EX_photon510_e]:: photon510_e <=> \n", + "Acetate kinase [ACKr]:: ac_c + atp_c <=> actp_c + adp_c\n", + "Sucrose transport in via proton symport [SUCRt2]:: h_e + sucr_e <=> h_c + sucr_c\n", + "Sedoheptulose-bisphosphatase [SBP]:: h2o_c + s17bp_c --> pi_c + s7p_c\n", + "Unconnected count = 12\n" + ] + } + ], + "source": [ + "excluded_reactions = set(ex)\n", + "\n", + "common_mets = set()\n", + "rxn_with_flux = set()\n", + "rxn_with_greater_flux = set()\n", + "\n", + "threshold_flux = 1.1\n", + "\n", + "# Get a list of reactions with flux and those where flux exceeds the threshold\n", + "# The rxn_with_flux will be used to determine what's a common metabolite\n", + "# rxn_with_greater flux used to draw the map\n", + "for rxn_name in flux:\n", + " if flux[rxn_name] != 0 and rxn_name not in excluded_reactions:\n", + " rxn = model.reactions.get_by_id(rxn_name)\n", + " rxn_with_flux.add(rxn)\n", + " if 0-threshold_flux > flux[rxn_name] or threshold_flux < flux[rxn_name]:\n", + " rxn_with_greater_flux.add(rxn)\n", + "\n", + "# Get a dictionary of metabolite frequency\n", + "# (keys are the Cobra metabolite objects)\n", + "met_count = generate_emap.metabolite_occurence(rxn_with_flux)\n", + "\n", + "# Get common metabolites.\n", + "# included_common_m will be used be treated as uncommon whatever their occurence\n", + "included_common_m = ('accoa_c', 'pry_c', 'g3p_c', 'acald_c', 'f6p_c', 'pep_c')\n", + "for met in met_count:\n", + " if met_count[met] > 25 and met.id not in included_common_m:\n", + " common_mets.add(met)\n", + "\n", + "# Convert the sets to lists so that they can be iterated over\n", + "common_mets, rxn_with_flux, rxn_with_greater_flux = \\\n", + " list(common_mets), list(rxn_with_flux), list(rxn_with_greater_flux)\n", + "\n", + "\n", + "# Get the Escher JSON\n", + "escher_map = generate_emap.gen_map(\n", + " consistent_model, rxn_with_greater_flux, common_mets, 400, met_count\n", + ")\n", + "escher_json = escher_map.dump_json()\n", + "# Currently Escher doesn't accept json strings, needs a file, i assume that's a bug\n", + "with open('escher.json', 'w') as f:\n", + " f.write(escher_json)" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "builder.hide_secondary_metabolites = True" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'ALCD1',\n", + " 'FALDH2',\n", + " 'FALGTHLs',\n", + " 'G6PDH2r',\n", + " 'GART',\n", + " 'GND',\n", + " 'PDH',\n", + " 'PGCD',\n", + " 'PGL',\n", + " 'PSERT',\n", + " 'PSP_L',\n", + " 'SFGTHi'}" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rxn_to_remove" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "ec43269ff6914f1f8fbb812de4512787", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Builder(allow_building_duplicate_reactions=False, and_method_in_gene_reaction_rule='mean', cofactors=['atp', '…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "builder" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "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.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/syn_elong/sucrose_optimization/run_strain_design.py b/syn_elong/sucrose_optimization/run_strain_design.py index de735f0..6d2a76f 100644 --- a/syn_elong/sucrose_optimization/run_strain_design.py +++ b/syn_elong/sucrose_optimization/run_strain_design.py @@ -12,7 +12,7 @@ import pandas as pd pd.set_option('display.float_format', lambda x: f'{x:.3f}') -from syn_elong.strain_design_simplified import compute_strain_designs, StrainDesign +from syn_elong.strain_design_simplified import StrainDesign from syn_elong import model from syn_elong.media import m9_media @@ -69,7 +69,7 @@ # gene_kos=True, ) - sols = sd_helper.run(max_solutions=10, max_cost=5, time_limit=3000, solution_approach=sd.names.ANY) + sols = sd_helper.run(max_solutions=10, max_cost=5, time_limit=30000, solution_approach=sd.names.ANY) print("Completed run") diff --git a/syn_elong/syn_elong.xml b/syn_elong/syn_elong.xml index 0a29c33..d6d4c6f 100644 --- a/syn_elong/syn_elong.xml +++ b/syn_elong/syn_elong.xml @@ -23664,166 +23664,166 @@ - + -

original_bigg_ids: ['cpmp', 'cpmp_c']

+

original_bigg_ids: ['iscs', 'iscs_c']

- + - - - - +
- + -

original_bigg_ids: ['moco', 'moco_c']

+

original_bigg_ids: ['moadamp', 'moadamp_c']

- + - - - +
- + -

original_bigg_ids: ['mptamp', 'mptamp_c']

+

original_bigg_ids: ['moadcosh', 'moadcosh_c']

- + - - - - - - - - +
- + -

original_bigg_ids: ['iscs', 'iscs_c']

+

original_bigg_ids: ['cpmp', 'cpmp_c']

- + - + + + +
- + -

original_bigg_ids: ['moadamp', 'moadamp_c']

+

original_bigg_ids: ['moadcoo', 'moadcoo_c']

- + - +
- + -

original_bigg_ids: ['moadcosh', 'moadcosh_c']

+

original_bigg_ids: ['mpt', 'mpt_c']

- + - + + + + + + + + + + +
- + -

original_bigg_ids: ['moadcoo', 'moadcoo_c']

+

original_bigg_ids: ['moco', 'moco_c']

- + - + + +
- + -

original_bigg_ids: ['mpt', 'mpt_c']

+

original_bigg_ids: ['mptamp', 'mptamp_c']

- + - - - - - - - - - - - + + + + + + + + @@ -23837,6 +23837,66 @@
+ + + +

original_bigg_ids: ['fdxo_2_2', 'fdxo_2_2_c', 'fdxo_DASH_2_2_c']

+ +
+ + + + + + + + + + + + + + + + + +
+ + + + + +

original_bigg_ids: ['mocogdp_c']

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -23897,7 +23957,7 @@ - + @@ -29365,7 +29425,10 @@ - + + + + @@ -29529,7 +29592,12 @@ - + + + + + + @@ -30391,7 +30459,10 @@ - + + + + @@ -31881,7 +31952,10 @@ - + + + + @@ -33710,7 +33784,7 @@ - + @@ -33941,7 +34015,10 @@ - + + + + @@ -34394,9 +34471,15 @@ - - - + + + + + + + + + @@ -35108,7 +35191,7 @@ - + @@ -35899,7 +35982,7 @@ - + @@ -35991,7 +36074,10 @@ - + + + + @@ -37654,7 +37740,10 @@ - + + + + @@ -39229,8 +39318,10 @@ - - + + + + @@ -39269,14 +39360,16 @@ - - - + + + + - - - + + + + @@ -39455,9 +39548,10 @@ - - - + + + + @@ -39498,10 +39592,12 @@ - - - - + + + + + + @@ -41394,11 +41490,16 @@ - - - - - + + + + + + + + + + @@ -42913,7 +43014,10 @@ - + + + + @@ -43923,7 +44027,7 @@ - + @@ -43939,7 +44043,7 @@ - + @@ -43955,7 +44059,7 @@ - + @@ -43971,7 +44075,7 @@ - + @@ -44106,7 +44210,7 @@ - + @@ -44122,7 +44226,7 @@ - + @@ -44226,7 +44330,7 @@ - + @@ -44242,7 +44346,7 @@ - + @@ -44380,7 +44484,7 @@ - + @@ -44396,7 +44500,7 @@ - + @@ -44412,7 +44516,7 @@ - + @@ -44428,7 +44532,7 @@ - + @@ -46554,7 +46658,7 @@ - + @@ -47204,7 +47308,7 @@ - + @@ -47320,7 +47424,7 @@ - + @@ -47344,7 +47448,7 @@ - + @@ -47366,7 +47470,7 @@ - + @@ -47480,7 +47584,7 @@ - + @@ -47526,7 +47630,7 @@ - + @@ -47630,10 +47734,13 @@ - + + + + - + @@ -47653,7 +47760,7 @@ - + @@ -47717,7 +47824,7 @@ - + @@ -47737,7 +47844,7 @@ - + @@ -47757,7 +47864,7 @@ - + @@ -47825,7 +47932,10 @@ - + + + + @@ -47895,7 +48005,7 @@ - + @@ -53280,18 +53390,39 @@ - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + @@ -54921,62 +55052,6 @@ - - - -

original_bigg_ids: ['CPMPS', 'MBP_1']

- -
- - - - - - - - - - - - - - - - - - - - -
- - - -

original_bigg_ids: ['MOCOS']

- -
- - - - - - - - - - - - - - - - - - - - - - -
@@ -55006,67 +55081,6 @@ - - - -

original_bigg_ids: ['MPTSS']

- -
- - - - - - - - - - - - - - - - - - - - -
- - - -

original_bigg_ids: ['MPTAT']

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -55090,9 +55104,126 @@ - + + + + + + +

original_bigg_ids: ['MOCOS']

+ +
+ + + + + + + + + + + + + + + + + + + + + + +
+ + + +

original_bigg_ids: ['MPTAT']

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +

original_bigg_ids: ['MPTSS']

+ +
+ + + + + + + + + + + + + + + + + + + + +
+ + + +

original_bigg_ids: ['CPMPS', 'MBP_1']

+ +
+ + + + + + + + + + + + + + + + + + +
@@ -55195,6 +55326,513 @@ + + + +

original_bigg_ids: ['FNOR']

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +

original_bigg_ids: ['PC6YM']

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + +

original_bigg_ids: ['MOGDS']

+ +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -66859,6 +67497,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/syn_elong/updates_from_ims837.py b/syn_elong/updates_from_ims837.py new file mode 100644 index 0000000..4597253 --- /dev/null +++ b/syn_elong/updates_from_ims837.py @@ -0,0 +1,731 @@ +""" +File adds reactions from the IMS837 model. +The actual IMS837 model doesn't work with memote due to sbml compliance. This file attempts to recreate +the reactions/changes from the IMS837 model, building off the current model. The code is copied from the ims837 repo. +There were 4 reactions missing that were assumed to exist. For those 4, we grabbed them from the universal model +or from the ijb792 model. + + +""" +from cobra import Reaction, Metabolite +from concerto.utils import universal_model +from syn_elong import ijb792 + +def add_reactions_not_in_model_but_ims837_thinks_exists(model): + # reaction not in the model currently, so adding it + rxns_to_add = [] + rxns_in_universal_model = ['FNOR', 'PC6YM'] + for rxn in rxns_in_universal_model: + rxns_to_add.append(universal_model.reactions.get_by_id(rxn).copy()) + + + rxns_from_ijb792 = ['LYCBC1', 'MOGDS'] + for rxn in rxns_from_ijb792: + rxns_to_add.append(ijb792.reactions.get_by_id(rxn).copy()) + + model.add_reactions(rxns_to_add) + return model + + +def update_5(model): + model = add_reactions_not_in_model_but_ims837_thinks_exists(model) + # add gene Synpcc7942_B2620 to CAT reaction + model.reactions.get_by_id('CAT').gene_reaction_rule = '( Synpcc7942_1656 or Synpcc7942_B2620 )' + + # where does this logic come from? + # add genes Synpcc7942_1088, Sypncc7942_0239, Synpcc7942_1630, Synpcc7942_2542, Synpcc7942_1054 and Synpcc7942_2158 to CBFCum reaction + model.reactions.get_by_id('CBFCum').gene_reaction_rule = \ + '(Synpcc7942_1231 and Synpcc7942_2331 and Synpcc7942_1232 and Synpcc7942_2332 and Synpcc7942_1088 ' \ + 'and Synpcc7942_1479 and ((Synpcc7942_0239) or (Synpcc7942_1630) or (Synpcc7942_2542)) and ' \ + 'Synpcc7942_0113 and Synpcc7942_2426 and Synpcc7942_0475 and Synpcc7942_1053 and Synpcc7942_1048 and' \ + ' Synpcc7942_1052 and Synpcc7942_1047 and Synpcc7942_1049 and Synpcc7942_1050 and Synpcc7942_1051 and ' \ + 'Synpcc7942_1054 and Synpcc7942_1055 and Synpcc7942_2030 and Synpcc7942_0327 and Synpcc7942_0326 and ' \ + 'Synpcc7942_0325 and Synpcc7942_0328 and Synpcc7942_2158 and Synpcc7942_0322 and Synpcc7942_0323 and ' \ + 'Synpcc7942_1478 and Synpcc7942_0511)' + # add genes Synpcc7942_0201 and Sypncc7942_0202 to CYOOum reaction + model.reactions.get_by_id('CYOOum').gene_reaction_rule = \ + '(Synpcc7942_2602 or Synpcc7942_0201) and (Synpcc7942_2603 or Synpcc7942_0202) and Synpcc7942_2604' + # add gene Synpcc7942_1408 to FE3abcppreaction + model.reactions.get_by_id('FE3abcpp').gene_reaction_rule = \ + '(Synpcc7942_1409 and Synpcc7942_1407 and Synpcc7942_1406 and Synpcc7942_1408) or (Synpcc7942_2175 ' \ + 'and Synpcc7942_1407 and Synpcc7942_1406 and Synpcc7942_1408)' + + + + # add genes Synpcc7942_0338, Synpcc7942_0698, Synpcc7942_0898, Synpcc7942_1749, Synpcc7942_2581, Synpcc7942_1499, + # Synpcc7942_0814 and Synpcc7942_1541 to FNOR reaction + model.reactions.get_by_id('FNOR').gene_reaction_rule = \ + '((Synpcc7942_0338 or Synpcc7942_0698 or Synpcc7942_0898 or Synpcc7942_1749) and Synpcc7942_2581 and ' \ + 'Synpcc7942_1499 and Synpcc7942_0814 and Synpcc7942_1541 and Synpcc7942_0978)' + # add gene Synpcc7942_0508 to GGDPR reaction + model.reactions.get_by_id('GGDPR').gene_reaction_rule = '(Synpcc7942_0385) or (Synpcc7942_0508)' + # add gene Synpcc7942_0357 to H2CO3_NAt_syn reaction + model.reactions.get_by_id('H2CO3_NAt_syn').gene_reaction_rule = '(Synpcc7942_1475) or (Synpcc7942_0357)' + # add genes Synpcc7942_1388 and Synpcc7942_B2619 to HCO3E_1_cx reaction + model.reactions.get_by_id('HCO3E_1_cx').gene_reaction_rule = \ + '(Synpcc7942_1447) or (Synpcc7942_1388) or (Synpcc7942_B2619) or (Synpcc7942_1423)' + # add gene Synpcc7942_1378 to LPADSS2 reaction + model.reactions.get_by_id('LPADSS2').gene_reaction_rule = '(Synpcc7942_0932) and (Synpcc7942_1378)' + # add gene Synpcc7942_0652 to LYCBC1 reaction + model.reactions.get_by_id('LYCBC1').gene_reaction_rule = '(Synpcc7942_2062) or (Synpcc7942_0652)' + # add genes Synpcc7942_0888 and Synpcc7942_0498 to MAN1PT reaction + model.reactions.get_by_id('MAN1PT').gene_reaction_rule = \ + '(Synpcc7942_1608) or (Synpcc7942_0888) or (Synpcc7942_0498) or (Synpcc7942_1973)' + # add gene Synpcc7942_1763 to MI3PP reaction + model.reactions.get_by_id('MI3PP').gene_reaction_rule = '(Synpcc7942_2582) or (Synpcc7942_1763)' + # add gene Synpcc7942_1910 to NPHBDC reaction + model.reactions.get_by_id('NPHBDC').gene_reaction_rule = \ + '(Synpcc7942_2588 and Synpcc7942_2055 and Synpcc7942_1910 and Synpcc7942_0135)' + # add gene Synpcc7942_1266 to NTPP2 reaction + model.reactions.get_by_id('NTPP2').gene_reaction_rule = '(Synpcc7942_1266) or (Synpcc7942_1493)' + # add gene Synpcc7942_0706 to PC6YM reaction + model.reactions.get_by_id('PC6YM').gene_reaction_rule = '(Synpcc7942_0706) or (Synpcc7942_1850)' + # add gene Synpcc7942_0693 to PGLYCP reaction + model.reactions.get_by_id('PGLYCP').gene_reaction_rule = '(Synpcc7942_2613) or (Synpcc7942_0693)' + # add gene Synpcc7942_1450 to PIuabcpp reaction + model.reactions.get_by_id('PIuabcpp').gene_reaction_rule = \ + '((Synpcc7942_2444) or (Synpcc7942_2445)) and (Synpcc7942_2443) and (Synpcc7942_2442) ' \ + 'and (Synpcc7942_1450 or Synpcc7942_2441)' + # add gene Synpcc7942_0974 to UDPGD reaction + model.reactions.get_by_id('UDPGD').gene_reaction_rule = '(Synpcc7942_0973 or Synpcc7942_0974)' + # add gene Synpcc7942_1319 to UPPRT reaction + model.reactions.get_by_id('UPPRT').gene_reaction_rule = '( Synpcc7942_1715 or Synpcc7942_1319 )' + # add gene Synpcc7942_B2633 to MOGDS reaction + model.reactions.get_by_id('MOGDS').gene_reaction_rule = '( Synpcc7942_1189 or Synpcc7942_1211 or Synpcc7942_B2633 )' + # add gene Synpcc7942_1516 to PGM reaction + model.reactions.get_by_id('PGM').gene_reaction_rule = '( Synpcc7942_0485 or Synpcc7942_0469 or Synpcc7942_1516 or Synpcc7942_2078 )' + + m1 = model.metabolites.get_by_id('h2o_c') # h2o + m2 = Metabolite( + 'acmama_c', + formula='C14H23N2O9', + name='N-Acetyl-D-muramoyl-L-alanine', + compartment='c') # N-Acetyl-D-muramoyl-L-alanine + m3 = model.metabolites.get_by_id('ala__L_c') # L-alanine + m4 = Metabolite( + 'acmam_c', + formula='C11H18NO8', + name='N-Acetyl-D-muramoate', + compartment='c') # N-Acetyl-D-muramoate + + + # add AMAA reaction: + reaction = Reaction('AMAA') + reaction.name = 'N-acetylmuramoyl-L-alanine amidase' + reaction.subsystem = 'Peptidoglycan Biosynthesis' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: - 1.0, m3: 1.0, m4: 1.0}) + model.add_reactions([reaction]) + + m1 = model.metabolites.get_by_id('h_c') # H+ + m2 = model.metabolites.get_by_id('h2o_c') # h2o + m3 = Metabolite( + 'csn_c', + formula='C4H5N3O', + name='Cytosine', + compartment='c') # Cytosine + m4 = model.metabolites.get_by_id('nh4_c') # NH4 + m5 = model.metabolites.get_by_id('ura_c') # uracil + + # add CSND reaction: + reaction = Reaction('CSND') + reaction.name = 'Cytosine deaminase' + reaction.subsystem = 'Pyrimidine metabolism' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: - 1.0, m3: -1.0, m4: 1.0, m5: 1.0}) + model.add_reactions([reaction]) + m1 = model.metabolites.get_by_id('h2o_c') # h2o + m2 = Metabolite( + 'cyst-L_c', + formula='C7H14N2O4S', + name='L-Cystathionine', + compartment='c') # L-Cystathionine + m3 = model.metabolites.get_by_id('pyr_c') # pyruvate + m4 = model.metabolites.get_by_id('nh4_c') # NH4 + m5 = model.metabolites.get_by_id('hcys__L_c') # L-Homocysteine + + # add CYSTL reaction: + reaction = Reaction('CYSTL') + reaction.name = 'cystathionine b-lyase' + reaction.subsystem = 'Others' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: - 1.0, m3: 1.0, m4: 1.0, m5: 1.0}) + model.add_reactions([reaction]) + m1 = model.metabolites.get_by_id('13dpg_c') # 3-Phospho-D-glyceroyl phosphate + m2 = model.metabolites.get_by_id('h_c') # H+ + m3 = Metabolite( + '23dpg_c', + formula='C3H3O10P2', + name='2,3-Disphospho-D-glycerate', + compartment='c') # 2,3-Disphospho-D-glycerate + + + # add DPGM reaction: + reaction = Reaction('DPGM') + reaction.name = 'Diphosphoglyceromutase' + reaction.subsystem = 'Glycolysis/Gluconeogenesis' + reaction.lower_bound = -1000 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: 1.0, m3: 1.0}) + model.add_reactions([reaction]) + + m1 = model.metabolites.get_by_id('atp_c') # ATP + m2 = model.metabolites.get_by_id('5drib_c') # 5-Deoxy-D-ribose + m3 = model.metabolites.get_by_id('adp_c') # ADP + m4 = model.metabolites.get_by_id('h_c') # H+ + m5 = Metabolite( + '2dr5p_c', + formula='C5H9O7P', + name='2-Deoxy-D-ribose 5-phosphate', + compartment='c') # 2-Deoxy-D-ribose 5-phosphate + + + # add DRBK reaction: + reaction = Reaction('DRBK') + reaction.name = 'Deoxyribokinase' + reaction.subsystem = 'Pentose phosphate pathway' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -1.0, m3: 1.0, m4: 1.0, m5: 1.0}) + model.add_reactions([reaction]) + + m1 = model.metabolites.get_by_id('2dr5p_c') # 2-Deoxy-D-ribose 5-phosphate + m2 = model.metabolites.get_by_id('g3p_c') # D-Glyceraldehyde 3-phosphate + m3 = model.metabolites.get_by_id('acald_c') # Acetaldehyde + + + # add DRPA reaction: + reaction = Reaction('DRPA') + reaction.name = 'deoxyribose-phosphate aldolase' + reaction.subsystem = 'Pentose phosphate pathway' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: 1.0, m3: 1.0}) + model.add_reactions([reaction]) + + m1 = model.metabolites.get_by_id('nad_c') # NAD+ + m2 = model.metabolites.get_by_id('glc__D_c') # D-glucose + m3 = model.metabolites.get_by_id('h_c') # H+ + m4 = model.metabolites.get_by_id('nadh_c') # NADH + m5 = Metabolite( + 'g15lac_c', + formula='C6H10O6', + name='D-Glucono-1,5-lactone', + compartment='c') # D-Glucono-1,5-lactone + + + # add G1Dxreaction: + reaction = Reaction('G1Dx') + reaction.name = 'Glucose 1 dehydrogenase NAD' + reaction.subsystem = 'Carbohydrates and related molecules' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -1.0, m3: 1.0, m4: 1.0, m5: 1.0}) + model.add_reactions([reaction]) + + m1 = model.metabolites.get_by_id('gtp_c') # GTP + m2 = model.metabolites.get_by_id('ppi_c') # Diphosphate + m3 = Metabolite( + '35cgmp_c', + formula='C10H11N5O7P', + name='3 5 Cyclic GMP', + compartment='c') # 3',5'-Cyclic GMP + + + # add GUACYC reaction: + reaction = Reaction('GUACYC') + reaction.name = 'Diguanylate cyclase' + reaction.subsystem = 'Purine Metabolism' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: 1.0, m3: 1.0}) + model.add_reactions([reaction]) + + m1 = model.metabolites.get_by_id('nadh_c') # NADH + m2 = Metabolite( + 'rdxo_c', + formula='Fe1SO', + name='rubredoxin_oxidized', + compartment='c') # rubredoxin_oxidized + m3 = model.metabolites.get_by_id('h_c') # H+ + m4 = model.metabolites.get_by_id('nad_c') # NAD+ + m5 = Metabolite( + 'rdxr_c', + formula='Fe1SO', + name='rubredoxin_reduced', + compartment='c') # rubredoxin_reduced + + # add RDXRr reaction: + reaction = Reaction('RDXRr') + reaction.name = 'Rubrerythrin' + reaction.subsystem = 'Unassigned' + reaction.lower_bound = -1000 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -2.0, m3: 1.0, m4: 1.0, m5: 2.0}) + model.add_reactions([reaction]) + + m1 = model.metabolites.get_by_id('dcaACP_c') # Decanoyl-[acyl-carrier protein] + m2 = model.metabolites.get_by_id('h2o_c') # h2o + m3 = model.metabolites.get_by_id('ACP_c') # Acyl-carrier protein + m4 = Metabolite( + 'dca_c', + formula='C10H19O2', + name='Decanoate__n_C100_', + compartment='c') # Decanoate__n_C100_ + m5 = model.metabolites.get_by_id('h_c') # H+ + + # add FA100ACPHi reaction: + reaction = Reaction('FA100ACPHi') + reaction.name = 'fatty acyl ACP hydrolase' + reaction.subsystem = 'Fatty Acid Biosynthesis' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -1.0, m3: 1.0, m4: 1.0, m5: 1.0}) + model.add_reactions([reaction]) + + m1 = model.metabolites.get_by_id('ddcaACP_c') # Dodecanoyl-[acyl-carrier protein] + m2 = model.metabolites.get_by_id('h2o_c') # h2o + m3 = model.metabolites.get_by_id('ACP_c') # Acyl-carrier protein + m4 = Metabolite( + 'ddca_c', + formula='C12H23O2', + name='Dodecanoate__n_C120_', + compartment='c') # Dodecanoate__n_C120_ + m5 = model.metabolites.get_by_id('h_c') # H+ + + # add FA120ACPHi reaction: + reaction = Reaction('FA120ACPHi') + reaction.name = 'fatty acyl ACP hydrolase' + reaction.subsystem = 'Fatty Acid Biosynthesis' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -1.0, m3: 1.0, m4: 1.0, m5: 1.0}) + model.add_reactions([reaction]) + + m1 = model.metabolites.get_by_id('myrsACP_c') # Tetradecanoyl-[acyl-carrier protein] + m2 = model.metabolites.get_by_id('h2o_c') # h2o + m3 = model.metabolites.get_by_id('ACP_c') # Acyl-carrier protein + m4 = Metabolite( + 'ttdca_c', + formula='C14H27O2', + name='tetradecanoate__n_C140_', + compartment='c') # tetradecanoate__n_C140_ + m5 = model.metabolites.get_by_id('h_c') # H+ + + # add FA140ACPHi reaction: + reaction = Reaction('FA140ACPHi') + reaction.name = 'fatty acyl ACP hydrolase' + reaction.subsystem = 'Fatty Acid Biosynthesis' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -1.0, m3: 1.0, m4: 1.0, m5: 1.0}) + model.add_reactions([reaction]) + + m1 = model.metabolites.get_by_id('palmACP_c') # (9Z)-Hexadecanoyl-[acp] + m2 = model.metabolites.get_by_id('h2o_c') # h2o + m3 = model.metabolites.get_by_id('ACP_c') # Acyl-carrier protein + m4 = Metabolite( + 'hdca_c', + formula='C16H31O2', + name='Hexadecanoate__n_C160_', + compartment='c') # Hexadecanoate__n_C160_ + m5 = model.metabolites.get_by_id('h_c') # H+ + + # add FA160ACPHi reaction: + reaction = Reaction('FA160ACPHi') + reaction.name = 'fatty acyl ACP hydrolase' + reaction.subsystem = 'Fatty Acid Biosynthesis' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -1.0, m3: 1.0, m4: 1.0, m5: 1.0}) + model.add_reactions([reaction]) + + m1 = model.metabolites.get_by_id('hdeACP_c') # Hexadecenoyl-[acyl-carrier protein] + m2 = model.metabolites.get_by_id('h2o_c') # h2o + m3 = model.metabolites.get_by_id('ACP_c') # Acyl-carrier protein + m4 = Metabolite( + 'hdcea_c', + formula='C16H29O2', + name='Hexadecenoate__n_C161_', + compartment='c') # Hexadecenoate__n_C161_ + m5 = model.metabolites.get_by_id('h_c') # H+ + + # add FA161ACPHi reaction: + reaction = Reaction('FA161ACPHi') + reaction.name = 'fatty acyl ACP hydrolase' + reaction.subsystem = 'Fatty Acid Biosynthesis' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -1.0, m3: 1.0, m4: 1.0, m5: 1.0}) + model.add_reactions([reaction]) + + m1 = model.metabolites.get_by_id('3ooctdACP_c') # 3-Oxostearoyl-[acp] + m2 = model.metabolites.get_by_id('h2o_c') # h2o + m3 = model.metabolites.get_by_id('ACP_c') # Acyl-carrier protein + m4 = model.metabolites.get_by_id('ocdca_c') # Octadecanoate (n-C18:0) + m5 = model.metabolites.get_by_id('h_c') # H+ + + # add FA180ACPHi reaction: + reaction = Reaction('FA180ACPHi') + reaction.name = 'fatty acyl ACP hydrolase' + reaction.subsystem = 'Fatty Acid Biosynthesis' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -1.0, m3: 1.0, m4: 1.0, m5: 1.0}) + model.add_reactions([reaction]) + + m1 = model.metabolites.get_by_id('octe9ACP_c') # Oleoyl-[acyl-carrier protein] + m2 = model.metabolites.get_by_id('h2o_c') # h2o + m3 = model.metabolites.get_by_id('ACP_c') # Acyl-carrier protein + m4 = Metabolite( + 'octe9_c', + formula='C18H32O', + name='Oleoyl', + compartment='c') # Oleoyl + m5 = model.metabolites.get_by_id('h_c') # H+ + + # add FA181ACPHi reaction: + reaction = Reaction('FA181ACPHi') + reaction.name = 'fatty acyl ACP hydrolase' + reaction.subsystem = 'Fatty Acid Biosynthesis' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -1.0, m3: 1.0, m4: 1.0, m5: 1.0}) + model.add_reactions([reaction]) + + m1 = model.metabolites.get_by_id('ocACP_c') # Octanoyl-[acp] + m2 = model.metabolites.get_by_id('h2o_c') # h2o + m3 = model.metabolites.get_by_id('ACP_c') # Acyl-carrier protein + m4 = Metabolite( + 'octa_c', + formula='C8H15O2', + name='octanoate__n_C80_', + compartment='c') # octanoate__n_C80_ + m5 = model.metabolites.get_by_id('h_c') # H+ + + # add FA80ACPHi reaction: + reaction = Reaction('FA80ACPHi') + reaction.name = 'fatty acyl ACP hydrolase' + reaction.subsystem = 'Fatty Acid Biosynthesis' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -1.0, m3: 1.0, m4: 1.0, m5: 1.0}) + model.add_reactions([reaction]) + + m1 = Metabolite( + 'dcacoa_c', + formula='C31H50N7O17P3S', + name='Decanoyl_CoA__n_C100CoA_', + compartment='c') # Decanoyl_CoA__n_C100CoA_ + m2 = model.metabolites.get_by_id('h2o_c') # h2o + m3 = model.metabolites.get_by_id('coa_c') # CoA + m4 = model.metabolites.get_by_id('dca_c') # Decanoate__n_C100_ + m5 = model.metabolites.get_by_id('h_c') # H+ + + # add FACOAE100 reaction: + reaction = Reaction('FACOAE100') + reaction.name = 'fatty acid CoA thioesterase decanoate' + reaction.subsystem = 'Fatty Acid Metabolism' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -1.0, m3: 1.0, m4: 1.0, m5: 1.0}) + model.add_reactions([reaction]) + + m1 = Metabolite( + 'ddcacoa_c', + formula='C33H54N7O17P3S', + name='Dodecanoyl_CoA__n_C120CoA_', + compartment='c') # Dodecanoyl_CoA__n_C120CoA_ + m2 = model.metabolites.get_by_id('h2o_c') # h2o + m3 = model.metabolites.get_by_id('coa_c') # CoA + m4 = model.metabolites.get_by_id('ddca_c') # Dodecanoate__n_C120_ + m5 = model.metabolites.get_by_id('h_c') # H+ + + # add FACOAE120 reaction: + reaction = Reaction('FACOAE120') + reaction.name = 'fatty acid CoA thioesterase dodecanoate' + reaction.subsystem = 'Fatty Acid Metabolism' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -1.0, m3: 1.0, m4: 1.0, m5: 1.0}) + model.add_reactions([reaction]) + + m1 = Metabolite( + 'tdcoa_c', + formula='C35H58N7O17P3S', + name='Tetradecanoyl_CoA__n_C140CoA_', + compartment='c') # Tetradecanoyl_CoA__n_C140CoA_ + m2 = model.metabolites.get_by_id('h2o_c') # h2o + m3 = model.metabolites.get_by_id('coa_c') # CoA + m4 = model.metabolites.get_by_id('ttdca_c') # tetradecanoate__n_C140_ + m5 = model.metabolites.get_by_id('h_c') # H+ + + # add FACOAE140 reaction: + reaction = Reaction('FACOAE140') + reaction.name = 'fatty acid CoA thioesterase tetradecanoate' + reaction.subsystem = 'Fatty Acid Metabolism' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -1.0, m3: 1.0, m4: 1.0, m5: 1.0}) + model.add_reactions([reaction]) + + m1 = Metabolite( + 'pmtcoa_c', + formula='C37H62N7O17P3S', + name='Palmitoyl_CoA__n_C160CoA_', + compartment='c') # Palmitoyl_CoA__n_C160CoA_ + m2 = model.metabolites.get_by_id('h2o_c') # h2o + m3 = model.metabolites.get_by_id('coa_c') # CoA + m4 = model.metabolites.get_by_id('hdca_c') # Hexadecanoate__n_C160_ + m5 = model.metabolites.get_by_id('h_c') # H+ + + # add FACOAE160 reaction: + reaction = Reaction('FACOAE160') + reaction.name = 'fatty acid CoA thioesterase hexadecanoate' + reaction.subsystem = 'Fatty Acid Metabolism' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -1.0, m3: 1.0, m4: 1.0, m5: 1.0}) + model.add_reactions([reaction]) + + m1 = Metabolite( + 'hdcoa_c', + formula='C37H60N7O17P3S', + name='Hexadecenoyl_CoA__n_C161CoA_', + compartment='c') # Hexadecenoyl_CoA__n_C161CoA_ + m2 = model.metabolites.get_by_id('h2o_c') # h2o + m3 = model.metabolites.get_by_id('coa_c') # CoA + m4 = model.metabolites.get_by_id('hdcea_c') # Hexadecenoate__n_C161_ + m5 = model.metabolites.get_by_id('h_c') # H+ + + # add FACOAE161 reaction: + reaction = Reaction('FACOAE161') + reaction.name = 'fatty acid CoA thioesterase hexadecenoate' + reaction.subsystem = 'Fatty Acid Metabolism' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -1.0, m3: 1.0, m4: 1.0, m5: 1.0}) + model.add_reactions([reaction]) + + m1 = Metabolite( + 'stcoa_c', + formula='C39H66N7O17P3S', + name='Stearoyl_CoA__n_C180CoA_', + compartment='c') # Stearoyl_CoA__n_C180CoA_ + m2 = model.metabolites.get_by_id('h2o_c') # h2o + m3 = model.metabolites.get_by_id('coa_c') # CoA + m4 = model.metabolites.get_by_id('ocdca_c') # Octadecanoate (n-C18:0) + m5 = model.metabolites.get_by_id('h_c') # H+ + + # add FACOAE180 reaction: + reaction = Reaction('FACOAE180') + reaction.name = 'fatty acid CoA thioesterase octadecanoate' + reaction.subsystem = 'Fatty Acid Metabolism' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -1.0, m3: 1.0, m4: 1.0, m5: 1.0}) + model.add_reactions([reaction]) + + m1 = Metabolite( + 'octe9coa_c', + formula='C39H64N7O17P3S', + name='Octadecenoyl_CoA__n_C181CoA_', + compartment='c') # Octadecenoyl_CoA__n_C181CoA_ + m2 = model.metabolites.get_by_id('h2o_c') # h2o + m3 = model.metabolites.get_by_id('coa_c') # CoA + m4 = model.metabolites.get_by_id('octe9_c') # Oleoyl + m5 = model.metabolites.get_by_id('h_c') # H+ + + # add FACOAE181 reaction: + reaction = Reaction('FACOAE181') + reaction.name = 'fatty acid CoA thioesterase octadecenoate' + reaction.subsystem = 'Fatty Acid Metabolism' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -1.0, m3: 1.0, m4: 1.0, m5: 1.0}) + model.add_reactions([reaction]) + + m1 = Metabolite( + 'occoa_c', + formula='C29H46N7O17P3S', + name='Octanoyl_CoA__n_C80CoA_', + compartment='c') # Octanoyl_CoA__n_C80CoA_ + m2 = model.metabolites.get_by_id('h2o_c') # h2o + m3 = model.metabolites.get_by_id('coa_c') # CoA + m4 = model.metabolites.get_by_id('octa_c') # octanoate__n_C80_ + m5 = model.metabolites.get_by_id('h_c') # H+ + + # add FACOAE80 reaction: + reaction = Reaction('FACOAE80') + reaction.name = 'fatty acid CoA thioesterase octanoate' + reaction.subsystem = 'Fatty Acid Metabolism' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -1.0, m3: 1.0, m4: 1.0, m5: 1.0}) + model.add_reactions([reaction]) + + m1 = model.metabolites.get_by_id('atp_c') # ATP + m2 = model.metabolites.get_by_id('coa_c') # CoA + m3 = model.metabolites.get_by_id('dca_c') # Decanoate__n_C100_ + m4 = model.metabolites.get_by_id('amp_c') # AMP + m5 = model.metabolites.get_by_id('dcacoa_c') # Decanoyl_CoA__n_C100CoA_ + m6 = model.metabolites.get_by_id('ppi_c') # Diphosphate + + # add FACOAL100i reaction: + reaction = Reaction('FACOAL100i') + reaction.name = 'fatty acid CoA ligase decanoate' + reaction.subsystem = 'Fatty Acid Metabolism' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -1.0, m3: -1.0, m4: 1.0, m5: 1.0, m6: 1.0}) + model.add_reactions([reaction]) + + m1 = model.metabolites.get_by_id('atp_c') # ATP + m2 = model.metabolites.get_by_id('coa_c') # CoA + m3 = model.metabolites.get_by_id('ddca_c') # Dodecanoate__n_C120_ + m4 = model.metabolites.get_by_id('amp_c') # AMP + m5 = model.metabolites.get_by_id('ddcacoa_c') # Dodecanoyl_CoA__n_C120CoA_ + m6 = model.metabolites.get_by_id('ppi_c') # Diphosphate + + # add FACOAL120i reaction: + reaction = Reaction('FACOAL120i') + reaction.name = 'fatty acid CoA ligase dodecanoate' + reaction.subsystem = 'Fatty Acid Metabolism' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -1.0, m3: -1.0, m4: 1.0, m5: 1.0, m6: 1.0}) + model.add_reactions([reaction]) + + m1 = model.metabolites.get_by_id('atp_c') # ATP + m2 = model.metabolites.get_by_id('coa_c') # CoA + m3 = model.metabolites.get_by_id('ttdca_c') # tetradecanoate__n_C140_ + m4 = model.metabolites.get_by_id('amp_c') # AMP + m5 = model.metabolites.get_by_id('tdcoa_c') # Tetradecanoyl_CoA__n_C140CoA_ + m6 = model.metabolites.get_by_id('ppi_c') # Diphosphate + + # add FACOAL140i reaction: + reaction = Reaction('FACOAL140i') + reaction.name = 'fatty acid CoA ligase tetradecanoate' + reaction.subsystem = 'Fatty Acid Metabolism' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -1.0, m3: -1.0, m4: 1.0, m5: 1.0, m6: 1.0}) + model.add_reactions([reaction]) + + m1 = model.metabolites.get_by_id('atp_c') # ATP + m2 = model.metabolites.get_by_id('coa_c') # CoA + m3 = model.metabolites.get_by_id('hdca_c') # Hexadecanoate__n_C160_ + m4 = model.metabolites.get_by_id('amp_c') # AMP + m5 = model.metabolites.get_by_id('pmtcoa_c') # Palmitoyl_CoA__n_C160CoA_ + m6 = model.metabolites.get_by_id('ppi_c') # Diphosphate + + # add FACOAL160i reaction: + reaction = Reaction('FACOAL160i') + reaction.name = 'C160 fatty acid activation' + reaction.subsystem = 'Fatty Acid Metabolism' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -1.0, m3: -1.0, m4: 1.0, m5: 1.0, m6: 1.0}) + model.add_reactions([reaction]) + + m1 = model.metabolites.get_by_id('atp_c') # ATP + m2 = model.metabolites.get_by_id('coa_c') # CoA + m3 = model.metabolites.get_by_id('hdcea_c') # Hexadecenoate__n_C161_ + m4 = model.metabolites.get_by_id('amp_c') # AMP + m5 = model.metabolites.get_by_id('hdcoa_c') # Hexadecenoyl_CoA__n_C161CoA_ + m6 = model.metabolites.get_by_id('ppi_c') # Diphosphate + + # add FACOAL161i reaction: + reaction = Reaction('FACOAL161i') + reaction.name = 'fatty acid CoA ligase hexadecenoate' + reaction.subsystem = 'Fatty Acid Metabolism' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -1.0, m3: -1.0, m4: 1.0, m5: 1.0, m6: 1.0}) + model.add_reactions([reaction]) + + m1 = model.metabolites.get_by_id('atp_c') # ATP + m2 = model.metabolites.get_by_id('coa_c') # CoA + m3 = model.metabolites.get_by_id('ocdca_c') # Octadecanoate (n-C18:0) + m4 = model.metabolites.get_by_id('amp_c') # AMP + m5 = model.metabolites.get_by_id('stcoa_c') # Stearoyl_CoA__n_C180CoA_ + m6 = model.metabolites.get_by_id('ppi_c') # Diphosphate + + # add FACOAL180i reaction: + reaction = Reaction('FACOAL180i') + reaction.name = 'C180 fatty acid activation' + reaction.subsystem = 'Fatty Acid Metabolism' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -1.0, m3: -1.0, m4: 1.0, m5: 1.0, m6: 1.0}) + model.add_reactions([reaction]) + + m1 = model.metabolites.get_by_id('atp_c') # ATP + m2 = model.metabolites.get_by_id('coa_c') # CoA + m3 = model.metabolites.get_by_id('octe9_c') # Oleoyl + m4 = model.metabolites.get_by_id('amp_c') # AMP + m5 = model.metabolites.get_by_id('octe9coa_c') # Octadecenoyl_CoA__n_C181CoA_ + m6 = model.metabolites.get_by_id('ppi_c') # Diphosphate + + # add FACOAL181i reaction: + reaction = Reaction('FACOAL181i') + reaction.name = 'C181 fatty acid activation' + reaction.subsystem = 'Fatty Acid Metabolism' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -1.0, m3: -1.0, m4: 1.0, m5: 1.0, m6: 1.0}) + model.add_reactions([reaction]) + + m1 = model.metabolites.get_by_id('atp_c') # ATP + m2 = model.metabolites.get_by_id('coa_c') # CoA + m3 = model.metabolites.get_by_id('octa_c') # octanoate__n_C80_ + m4 = model.metabolites.get_by_id('amp_c') # AMP + m5 = model.metabolites.get_by_id('occoa_c') # Octanoyl_CoA__n_C80CoA_ + m6 = model.metabolites.get_by_id('ppi_c') # Diphosphate + + # add FACOAL80i reaction: + reaction = Reaction('FACOAL80i') + reaction.name = 'fatty acid CoA ligase octanoate' + reaction.subsystem = 'Fatty Acid Metabolism' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -1.0, m3: -1.0, m4: 1.0, m5: 1.0, m6: 1.0}) + model.add_reactions([reaction]) + + m1 = Metabolite( + 'bglyg4n_c', + formula='C24H40O20', + name='branching_glycogen__4_units_', + compartment='c') # branching_glycogen__4_units_ + m2 = model.metabolites.get_by_id('pi_c') # Orthophosphate + m3 = model.metabolites.get_by_id('g1p_c') # D-Glucose 1-phosphate + + # add GLCP4 reaction: + reaction = Reaction('GLCP4') + reaction.name = 'glycogen phosphorylase 4 units' + reaction.subsystem = 'Glycogen and sucrose metabolism' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -4.0, m3: 4.0}) + model.add_reactions([reaction]) + + m1 = Metabolite( + 'glyg4n_c', + formula='C24H40O20', + name='glycogen__4_units__linear_glucan', + compartment='c') # glycogen__4_units__linear_glucan + m2 = model.metabolites.get_by_id('pi_c') # Orthophosphate + m3 = model.metabolites.get_by_id('g1p_c') # D-Glucose 1-phosphate + + # add GLCP3 reaction: + reaction = Reaction('GLCP3') + reaction.name = 'glycogen phosphorylase 4 units' + reaction.subsystem = 'Glycogen and sucrose metabolism' + reaction.lower_bound = 0 + reaction.upper_bound = 1000 + reaction.add_metabolites({m1: - 1.0, m2: -4.0, m3: 4.0}) + model.add_reactions([reaction]) + return model \ No newline at end of file