{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# FlexibleBiommassPkg example" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "import cobra\n", "from cobra import Model, Reaction, Metabolite\n", "import pandas as pd\n", "import cplex\n", "import optlang\n", "import math\n", "import json\n", "import sys\n", "from cobra.flux_analysis.parsimonious import pfba\n", "import cobrakbase\n", "sys.path.append(\"/Users/chenry/code/ModelSEEDpy\")\n", "#import modelseedpy.fbapkg\n", "from modelseedpy import FlexibleBiomassPkg, ElementUptakePkg, KBaseMediaPkg\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "rna:cpd00052_c0:480.13250600000003:-12.483445156:-0.026\n", "rna:cpd00038_c0:520.156606:-26.007516912:-0.026\n", "rna:cpd00062_c0:481.117266:-38.997683093999996:-0.027\n", "rna:cpd00012_x0:174.951264:-25.176533237999994:0.079\n", "rna:cpd00001_d1:18.01528:-23.753326117999993:0.079\n", "dna:cpd00115_c0:488.157806:-14.644734179999999:-0.03\n", "dna:cpd00356_c0:464.133106:-26.712194935999996:-0.026\n", "dna:cpd00241_c0:504.157206:-39.820282291999995:-0.026\n", "dna:cpd00357_c0:479.144446:-54.194615672:-0.03\n", "dna:cpd00012_x0:174.951264:-34.600074104:0.11199999999999999\n", "dna:cpd00001_d1:18.01528:-32.582362744:0.11199999999999999\n", "protein:cpd00023_c0:146.12132:-18.9957716:-0.13\n", "protein:cpd00033_c0:75.0666:-30.2557616:-0.15\n", "protein:cpd00035_c0:89.09318:-44.59976358:-0.161\n", "protein:cpd00039_c0:147.1955:-58.730531580000005:-0.096\n", "protein:cpd00041_c0:132.09474:-71.6758161:-0.098\n", "protein:cpd00051_c0:175.2089:-90.94879510000001:-0.11\n", "protein:cpd00053_c0:146.1445:-101.32505460000002:-0.071\n", "protein:cpd00054_c0:105.09258:-111.83431260000002:-0.1\n", "protein:cpd00060_c0:149.21134:-119.14566826000002:-0.049\n", "protein:cpd00065_c0:204.22518:-124.04707258000002:-0.024\n", "protein:cpd00066_c0:165.18913999999998:-136.27106894000002:-0.074\n", "protein:cpd00069_c0:181.18854:-145.14930740000003:-0.049\n", "protein:cpd00084_c0:121.15818:-148.66289462000003:-0.029\n", "protein:cpd00107_c0:131.17291999999998:-171.22463686000003:-0.172\n", "protein:cpd00119_c0:155.15456:-177.12051014000002:-0.038\n", "protein:cpd00129_c0:115.13046:-188.1730343:-0.096\n", "protein:cpd00132_c0:132.11792:-195.57163782:-0.056\n", "protein:cpd00156_c0:117.14634:-210.44922300000002:-0.127\n", "protein:cpd00161_c0:119.11916:-221.88466236000002:-0.096\n", "protein:cpd00322_c0:131.17291999999998:-232.77201472000002:-0.083\n", "protein:cpd00001_d1:18.01528:-200.18237320000003:1.809\n", "energy:cpd00008_c0:425.18524399999995:12755.557319999998:30\n", "energy:cpd00001_d1:18.01528:12215.098919999999:-30\n", "energy:cpd00002_d1:504.157206:-2909.617260000001:-30\n", "energy:cpd00009_d1:95.97930199999999:-30.238200000001143:30\n", "energy:cpd00067_d1:1.00794:-1.1404210908949608e-12:30\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
IN_FLUXESOUT_FLUXESOBJECTIVES
IDFLUXIDFLUXIDFLUX
0cpd00076_e05.000000cpd00001_e08.212613bio13.142214
1cpd00013_e03.199010cpd00067_e04.180729NaNNaN
2cpd19001_c02.356661cpd11416_c03.142214NaNNaN
3cpd00014_c01.805202cpd00007_e02.685331NaNNaN
4cpd00205_e01.688155cpd00163_c01.602566NaNNaN
5cpd00009_e01.388617cpd00205_c00.723495NaNNaN
6cpd00604_c01.296163cpd00099_c00.494899NaNNaN
7cpd00099_e01.154764cpd00080_c00.306366NaNNaN
8cpd00214_c00.775341cpd00012_x00.263946NaNNaN
9cpd30321_c00.535198NaNNaNNaNNaN
10cpd11632_e00.319930NaNNaNNaNNaN
11cpd00048_e00.247965NaNNaNNaNNaN
12cpd00331_c00.202673NaNNaNNaNNaN
13cpd01059_c00.179106NaNNaNNaNNaN
14cpd00032_c00.178399NaNNaNNaNNaN
15cpd00159_c00.091910NaNNaNNaNNaN
16cpd16443_c00.088846NaNNaNNaNNaN
17cpd00130_c00.087196NaNNaNNaNNaN
\n", "
" ], "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "kbase_api = cobrakbase.KBaseAPI(token = \"5YAOMNFB7XOEKBKHRHJB4AIZSQ2EJGA5\")\n", "\n", "model = kbase_api.get_from_ws(\"C4_Calvin_Zmays_Model\",25427)\n", "#model = kbase_api.get_from_ws(\"E_iML1515.kb\",40576)\n", "model.solver = 'optlang-cplex'\n", "\n", "#Applying uptake limit to total carbon uptake by model\n", "eup = ElementUptakePkg(model)\n", "eup.build_package({\"C\":60})\n", "#Applying constraints based on KBase media\n", "#media = kbase_api.get_from_ws(\"Btheta_Ecoli_minimal_media\",40576)\n", "kmp = KBaseMediaPkg(model)\n", "#kmp.build_package(media)\n", "kmp.build_package(None)\n", "#Applying flexible biomass constraints\n", "fbp = FlexibleBiomassPkg(model)\n", "fbp.build_package({\"bio_rxn_id\":\"bio1\",\"use_rna_class\":[-0.75,0.75],\n", " \"use_dna_class\":[-0.75,0.75],\n", " \"use_protein_class\":[-0.1052,-0.1052],\n", " \"use_energy_class\":[-0.1,0.1]})\n", "#Setting the objective to biomass\n", "biomass_objective = model.problem.Objective(\n", " 1 * model.reactions.bio1.flux_expression,\n", " direction='max')\n", "model.objective = biomass_objective\n", "#Printing LP file\n", "with open('FlexibleBiomass.lp', 'w') as out:\n", " out.write(str(model.solver))\n", "#Solving\n", "sol=model.optimize()\n", "model.summary()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "FLEX_cpd00201_c0:-3.450255666989782e-05\n", "FLEX_cpd24604_c0:-4.022719611736966e-06\n", "FLEX_cpd03445_c0:-3.450255666989782e-05\n", "FLEX_cpd24682_c0:-4.022719611736965e-05\n", "FLEX_cpd00035_c0:0.0794779544089827\n", "FLEX_cpd00017_c0:-3.450255666989782e-05\n", "FLEX_cpd00051_c0:-0.04576493382288079\n", "FLEX_cpd00132_c0:0.03729602600027901\n", "FLEX_cpd00041_c0:0.03729602600027901\n", "FLEX_cpd00104_c0:-3.0943997013361277e-07\n", "FLEX_cpd00063_c0:0.0008053175222727272\n", "FLEX_cpd00099_c0:0.0008053175222727272\n", "FLEX_cpd00010_c0:-8.911871139848047e-05\n", "FLEX_cpd00149_c0:3.86799962667016e-06\n", "FLEX_cpd00052_c0:0.020656355766299185\n", "FLEX_cpd00058_c0:0.00010969646941236572\n", "FLEX_cpd00084_c0:-0.014169256232418128\n", "FLEX_cpd00115_c0:-0.0040484031292580555\n", "FLEX_cpd00356_c0:0.004180069836549908\n", "FLEX_cpd00241_c0:-0.004180069836549908\n", "FLEX_cpd00015_c0:-3.450255666989782e-05\n", "FLEX_cpd10515_c0:0.0010389446997236048\n", "FLEX_cpd10516_c0:0.0012080536434016242\n", "FLEX_cpd00053_c0:0.040716111270180766\n", "FLEX_cpd00023_c0:0.040716111270180766\n", "FLEX_cpd00033_c0:-0.09478734221135812\n", "FLEX_cpd00038_c0:-0.023642791862056332\n", "FLEX_cpd00119_c0:-0.014657861945259103\n", "FLEX_cpd00322_c0:-0.044950642541474184\n", "FLEX_cpd00205_c0:0.030200258045145142\n", "FLEX_cpd03586_e0:0.003010232029459785\n", "FLEX_cpd00107_c0:0.06970614959213335\n", "FLEX_cpd00039_c0:0.05309386479551034\n", "FLEX_cpd00060_c0:-0.023778295624977203\n", "FLEX_cpd00254_c0:0.0013421958704545453\n", "FLEX_cpd00125_c0:-3.450255666989782e-05\n", "FLEX_cpd00030_c0:0.00010691150968116322\n", "FLEX_cpd11574_c0:1.0830398954676446e-06\n", "FLEX_cpd15514_p0:-0.0021496794725182075\n", "FLEX_cpd00003_c0:-0.00028329229265732246\n", "FLEX_cpd00006_c0:-6.915983332486246e-05\n", "FLEX_cpd00013_c0:0.0020133711656743518\n", "FLEX_cpd00244_c0:4.997455517657846e-05\n", "FLEX_cpd15531_p0:0.009873301127053181\n", "FLEX_cpd15532_p0:0.011637108956814775\n", "FLEX_cpd00066_c0:-0.028664198033401884\n", "FLEX_cpd00028_c0:-3.450255666989782e-05\n", "FLEX_cpd00129_c0:-0.03420162629894288\n", "FLEX_cpd00016_c0:3.450255666989782e-05\n", "FLEX_cpd00220_c0:-3.450255666989782e-05\n", "FLEX_cpd00054_c0:0.03338733501753628\n", "FLEX_cpd00557_c0:-3.450255666989782e-05\n", "FLEX_cpd00048_c0:0.000671175295219806\n", "FLEX_cpd00078_c0:-1.5162558536547025e-05\n", "FLEX_cpd00087_c0:-3.450255666989782e-05\n", "FLEX_cpd00056_c0:-3.450255666989782e-05\n", "FLEX_cpd00161_c0:-0.018206546111615842\n", "FLEX_cpd00065_c0:-0.008794748111152474\n", "FLEX_cpd00069_c0:-0.02133526706077233\n", "FLEX_cpd25775_c0:-8.509599178674351e-06\n", "FLEX_cpd00034_c0:5.275951490778098e-05\n", "rna_flex:-0.15471998506680637\n", "dna_flex:0.010314665671120425\n", "protein_flex:0.02475519761068902\n", "energy_flex:-0.0412586626844817\n" ] } ], "source": [ "for reaction in fbp.new_reactions:\n", " print(reaction+\":\"+str(fbp.new_reactions[reaction].forward_variable.primal-fbp.new_reactions[reaction].reverse_variable.primal))" ] } ], "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.9.12" } }, "nbformat": 4, "nbformat_minor": 4 }