{ "cells": [ { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "# Tailored constraints, variables and objectives" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Thanks to the use of symbolic expressions via the optlang mathematical modeling package, it is relatively straight-forward to add new variables, constraints and advanced objectives that can not easily be formulated as a combination of different reaction and their corresponding upper and lower bounds. Here we demonstrate this optlang functionality which is exposed via the `model.solver.interface`." ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Constraints" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Suppose we want to ensure that two reactions have the same flux in our model. We can add this criteria as constraint to our model using the optlang solver interface by simply defining the relevant expression as follows." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "import cobra.test\n", "model = cobra.test.create_test_model('textbook')" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "same_flux = model.problem.Constraint(\n", " model.reactions.FBA.flux_expression - model.reactions.NH4t.flux_expression,\n", " lb=0,\n", " ub=0)\n", "model.add_cons_vars(same_flux)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "The flux for our reaction of interest is obtained by the `model.reactions.FBA.flux_expression` which is simply the sum of the forward and reverse flux, i.e.," ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "1.0*FBA - 1.0*FBA_reverse_84806" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.reactions.FBA.flux_expression" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Now I can maximize growth rate whilst the fluxes of reactions 'FBA' and 'NH4t' are constrained to be (near) identical." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4.66274904774 4.66274904774 0.855110960926157\n" ] } ], "source": [ "solution = model.optimize()\n", "print(solution.fluxes['FBA'], solution.fluxes['NH4t'],\n", " solution.objective_value)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Objectives\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Simple objective such as the maximization of the flux through one or more reactions can conveniently be done by simply \n", "assigning to the `model.objective` property as we have seen in previous chapters, e.g.," ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.8739215069684307\n" ] } ], "source": [ "model = cobra.test.create_test_model('textbook')\n", "with model:\n", " model.objective = {model.reactions.Biomass_Ecoli_core: 1}\n", " model.optimize()\n", " print(model.reactions.Biomass_Ecoli_core.flux)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "The objectives mathematical expression is seen by" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "-1.0*Biomass_Ecoli_core_reverse_2cdba + 1.0*Biomass_Ecoli_core" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.objective.expression" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "But suppose we need a more complicated objective, such as minimizing the Euclidean distance of the solution to the origin minus another variable, while subject to additional linear constraints. This is an objective function with both linear and quadratic components. " ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Consider the example problem:\n", "\n", "> **min** $\\frac{1}{2}\\left(x^2 + y^2 \\right) - y$\n", "\n", "> *subject to*\n", "\n", "> $x + y = 2$\n", "\n", "> $x \\ge 0$\n", "\n", "> $y \\ge 0$\n", "\n", "This (admittedly very artificial) problem can be visualized graphically where the optimum is indicated by the blue dot on the line of feasible solutions." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "application/pdf": "JVBERi0xLjQKJazcIKu6CjEgMCBvYmoKPDwgL1R5cGUgL0NhdGFsb2cgL1BhZ2VzIDIgMCBSID4+\nCmVuZG9iago4IDAgb2JqCjw8IC9YT2JqZWN0IDcgMCBSIC9Qcm9jU2V0IFsgL1BERiAvVGV4dCAv\nSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSSBdCi9TaGFkaW5nIDYgMCBSIC9Gb250IDMgMCBSIC9QYXR0\nZXJuIDUgMCBSIC9FeHRHU3RhdGUgNCAwIFIgPj4KZW5kb2JqCjEwIDAgb2JqCjw8IC9Hcm91cCA8\nPCAvQ1MgL0RldmljZVJHQiAvVHlwZSAvR3JvdXAgL1MgL1RyYW5zcGFyZW5jeSA+PgovTWVkaWFC\nb3ggWyAwIDAgMzU2Ljg4ODA2ODE4MTggMjkzLjIgXSAvQ29udGVudHMgOSAwIFIgL0Fubm90cyBb\nIF0KL1Jlc291cmNlcyA4IDAgUiAvVHlwZSAvUGFnZSAvUGFyZW50IDIgMCBSID4+CmVuZG9iago5\nIDAgb2JqCjw8IC9MZW5ndGggMTEgMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4\nnO2cS48tx3GE9/MremlvDuv9WEqwLUA7yQS8ELyiKNqEKMASYP99fxFZZ6ZnxEuBIoy7MC3QvEz2\n6a6uyoyIfDTz9e3LF7/I1zd/udL1LX/9z/W769/5+++vfP3q+uKfvv7v//zq69/+6pfXV395Sdi/\ne6l9PNZaaSz+8Y/3fyy7Pgqm9Pqn/3h5+dMLd+fKX3HDb15yftS4OKfH1N3aeOSb5Y93S1nl0TG9\n/epp4cZ/ePmv6/VfZP4XN6i1PbhuZv7/n7++/u360/XFL4pesFy/Zg3fXpk7vL2mXiq//Pbju5bx\nGGmUzp3SI7feetdqa3rssdcaV6mP1GVnNS//+vKb60euxs+9/vxNLOltQS/xL1jQ84qXl5zKY+yZ\n+75K6o86C/9jOTnVR9tlamPe7Dm1R+l97bh6cDpl2Mqy2pR1cEFuaV5fcQ9+uHIaNq9cebtLxtcH\nzkefM+cP1vV8XNzi1b4feaxa53W/8X7smtuY71bBBrXdUlu+xdua2cbUxyh64Nv7aXOf7/e2G29W\n3SM/dsoc1LuL8yPX1fKHGydeqq/6V8tIj5Rr6eu+6L2/5/Xuxtte3M23jbvd9rbJb4t4fyJvS76f\n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\n/QvT1y+ev3tnHorl1zmXH/8DLzW+7r7/4Gb+iT9Q/C3lCfPdD+7mn/iD7/0u/P3n4j/xB+n6xl+J\n8/eXX355ffEvmoS+vvyDPRdv9ZijBx012zxm8k+//P3LPxCA/3h9+e31z1++/2HVg9ET5BwC/r/+\nYXn7Yb5+/dEv3j7Jv6//9u3+7fv46u5ekjj98Nm8PbxrxpzkMHkU2/83+YeZ9H1lVTv+z99cn7zy\n5cOVLzwuvz6u3xb3/au4X52/39zfzP6yOrEdETif+I8GxMSiJn6+03Rj/mAMJ/u7Lo6PqG8XPr+q\n/tEX3T5bv115s/60y9/9ZxNeL3+z/j2XfzIIwNL46lTDj/OH/V7XWjGgrVvxV5t/09vfdjb+qxVv\n6z7/PYo3gxqhK+8x/g8dXB+ZnsfP59O++8Qa1Oz+eO0fv/cOf8O5f2aCn5ngZyb4mQl+ZoL/L0zw\nm5f/BXjtzFYKZW5kc3RyZWFtCmVuZG9iagoxMSAwIG9iago3MTkxCmVuZG9iagoxNiAwIG9iago8\nPCAvTGVuZ3RoIDgwIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nEWMuw3AMAhEe6Zg\nBH4mZp8olbN/GyBK3HBPunu4OhIyU95hhocEngwshlPxBpmjYDW4RlKNneyjsG5fdYHmelOr9fcH\nKk92dnE9zcsZ9AplbmRzdHJlYW0KZW5kb2JqCjE3IDAgb2JqCjw8IC9MZW5ndGggMjQ4IC9GaWx0\nZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nC1ROZIDQQjL5xV6QnPT77HLkff/6QrKAYOGQyA6\nLXFQxk8Qlive8shVtOHvmRjBd8Gh38p1GxY5EBVI0hhUTahdvB69B3YcZgLzpDUsgxnrAz9jCjd6\ncXhMxtntdRk1BHvXa09mUDIrF3HJxAVTddjImcNPpowL7VzPDci5EdZlGKSblcaMhCNNIVJIoeom\nqTNBkASjq1GjjRzFfunLI51hVSNqDPtcS9vXcxPOGjQ7Fqs8OaVHV5zLycULKwf9vM3ARVQaqzwQ\nEnC/20P9nOzkN97SubPF9Phec7K8MBVY8ea1G5BNtfg3L+L4PePr+fwDqKVbFgplbmRzdHJlYW0K\nZW5kb2JqCjE4IDAgb2JqCjw8IC9MZW5ndGggNDkgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3Ry\nZWFtCnicMza0UDBQMDQwB5JGhkCWkYlCiiEXSADEzOWCCeaAWQZAGqI4B64mhysNAMboDSYKZW5k\nc3RyZWFtCmVuZG9iagoxOSAwIG9iago8PCAvTGVuZ3RoIDIxMCAvRmlsdGVyIC9GbGF0ZURlY29k\nZSA+PgpzdHJlYW0KeJw1UMsNQzEIu2cKFqgUAoFknla9df9rbdA7YRH/QljIlAh5qcnOKelLPjpM\nD7Yuv7EiC611JezKmiCeK++hmbKx0djiYHAaJl6AFjdg6GmNGjV04YKmLpVCgcUl8Jl8dXvovk8Z\neGoZcnYEEUPJYAlquhZNWLQ8n5BOAeL/fsPuLeShkvPKnhv5G5zt8DuzbuEnanYi0XIVMtSzNMcY\nCBNFHjx5RaZw4rPWd9U0EtRmC06WAa5OP4wOAGAiXlmA7K5EOUvSjqWfb7zH9w9AAFO0CmVuZHN0\ncmVhbQplbmRvYmoKMTQgMCBvYmoKPDwgL0ZpcnN0Q2hhciAwIC9OYW1lIC9EZWphVnVTYW5zIC9C\nYXNlRm9udCAvRGVqYVZ1U2FucyAvV2lkdGhzIDEyIDAgUgovVHlwZSAvRm9udCAvTGFzdENoYXIg\nMjU1Ci9FbmNvZGluZyA8PCAvVHlwZSAvRW5jb2RpbmcgL0RpZmZlcmVuY2VzIFsgNDYgL3Blcmlv\nZCA0OCAvemVybyAvb25lIC90d28gXSA+PgovRm9udERlc2NyaXB0b3IgMTMgMCBSIC9Gb250TWF0\ncml4IFsgMC4wMDEgMCAwIDAuMDAxIDAgMCBdIC9TdWJ0eXBlIC9UeXBlMwovRm9udEJCb3ggWyAt\nMTAyMSAtNDYzIDE3OTQgMTIzMyBdIC9DaGFyUHJvY3MgMTUgMCBSID4+CmVuZG9iagoxMyAwIG9i\nago8PCAvRm9udE5hbWUgL0RlamFWdVNhbnMgL0l0YWxpY0FuZ2xlIDAgL0ZvbnRCQm94IFsgLTEw\nMjEgLTQ2MyAxNzk0IDEyMzMgXQovRmxhZ3MgMzIgL1N0ZW1WIDAgL01heFdpZHRoIDEzNDIgL0Rl\nc2NlbnQgLTIzNiAvWEhlaWdodCAwIC9DYXBIZWlnaHQgMAovVHlwZSAvRm9udERlc2NyaXB0b3Ig\nL0FzY2VudCA5MjkgPj4KZW5kb2JqCjEyIDAgb2JqClsgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAg\nNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAKNjAwIDYwMCA2\nMDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCAzMTggNDAxIDQ2\nMCA4MzggNjM2Cjk1MCA3ODAgMjc1IDM5MCAzOTAgNTAwIDgzOCAzMTggMzYxIDMxOCAzMzcgNjM2\nIDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNgo2MzYgNjM2IDMzNyAzMzcgODM4IDgzOCA4Mzgg\nNTMxIDEwMDAgNjg0IDY4NiA2OTggNzcwIDYzMiA1NzUgNzc1IDc1MiAyOTUKMjk1IDY1NiA1NTcg\nODYzIDc0OCA3ODcgNjAzIDc4NyA2OTUgNjM1IDYxMSA3MzIgNjg0IDk4OSA2ODUgNjExIDY4NSAz\nOTAgMzM3CjM5MCA4MzggNTAwIDUwMCA2MTMgNjM1IDU1MCA2MzUgNjE1IDM1MiA2MzUgNjM0IDI3\nOCAyNzggNTc5IDI3OCA5NzQgNjM0IDYxMgo2MzUgNjM1IDQxMSA1MjEgMzkyIDYzNCA1OTIgODE4\nIDU5MiA1OTIgNTI1IDYzNiAzMzcgNjM2IDgzOCA2MDAgNjM2IDYwMCAzMTgKMzUyIDUxOCAxMDAw\nIDUwMCA1MDAgNTAwIDEzNDIgNjM1IDQwMCAxMDcwIDYwMCA2ODUgNjAwIDYwMCAzMTggMzE4IDUx\nOCA1MTgKNTkwIDUwMCAxMDAwIDUwMCAxMDAwIDUyMSA0MDAgMTAyMyA2MDAgNTI1IDYxMSAzMTgg\nNDAxIDYzNiA2MzYgNjM2IDYzNiAzMzcKNTAwIDUwMCAxMDAwIDQ3MSA2MTIgODM4IDM2MSAxMDAw\nIDUwMCA1MDAgODM4IDQwMSA0MDEgNTAwIDYzNiA2MzYgMzE4IDUwMAo0MDEgNDcxIDYxMiA5Njkg\nOTY5IDk2OSA1MzEgNjg0IDY4NCA2ODQgNjg0IDY4NCA2ODQgOTc0IDY5OCA2MzIgNjMyIDYzMiA2\nMzIKMjk1IDI5NSAyOTUgMjk1IDc3NSA3NDggNzg3IDc4NyA3ODcgNzg3IDc4NyA4MzggNzg3IDcz\nMiA3MzIgNzMyIDczMiA2MTEgNjA1CjYzMCA2MTMgNjEzIDYxMyA2MTMgNjEzIDYxMyA5ODIgNTUw\nIDYxNSA2MTUgNjE1IDYxNSAyNzggMjc4IDI3OCAyNzggNjEyIDYzNAo2MTIgNjEyIDYxMiA2MTIg\nNjEyIDgzOCA2MTIgNjM0IDYzNCA2MzQgNjM0IDU5MiA2MzUgNTkyIF0KZW5kb2JqCjE1IDAgb2Jq\nCjw8IC9vbmUgMTYgMCBSIC90d28gMTcgMCBSIC9wZXJpb2QgMTggMCBSIC96ZXJvIDE5IDAgUiA+\nPgplbmRvYmoKMyAwIG9iago8PCAvRjEgMTQgMCBSID4+CmVuZG9iago0IDAgb2JqCjw8IC9BMSA8\nPCAvQ0EgMCAvVHlwZSAvRXh0R1N0YXRlIC9jYSAxID4+Ci9BMiA8PCAvQ0EgMSAvVHlwZSAvRXh0\nR1N0YXRlIC9jYSAxID4+ID4+CmVuZG9iago1IDAgb2JqCjw8ID4+CmVuZG9iago2IDAgb2JqCjw8\nID4+CmVuZG9iago3IDAgb2JqCjw8ID4+CmVuZG9iagoyIDAgb2JqCjw8IC9LaWRzIFsgMTAgMCBS\nIF0gL0NvdW50IDEgL1R5cGUgL1BhZ2VzID4+CmVuZG9iagoyMCAwIG9iago8PCAvQ3JlYXRpb25E\nYXRlIChEOjIwMTcwMzA3MTUzNTE3KzAyJzAwJykKL0NyZWF0b3IgKG1hdHBsb3RsaWIgMi4wLjAs\nIGh0dHA6Ly9tYXRwbG90bGliLm9yZykKL1Byb2R1Y2VyIChtYXRwbG90bGliIHBkZiBiYWNrZW5k\nKSA+PgplbmRvYmoKeHJlZgowIDIxCjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNiAwMDAw\nMCBuIAowMDAwMDEwNDA2IDAwMDAwIG4gCjAwMDAwMTAyMTIgMDAwMDAgbiAKMDAwMDAxMDI0NCAw\nMDAwMCBuIAowMDAwMDEwMzQzIDAwMDAwIG4gCjAwMDAwMTAzNjQgMDAwMDAgbiAKMDAwMDAxMDM4\nNSAwMDAwMCBuIAowMDAwMDAwMDY1IDAwMDAwIG4gCjAwMDAwMDAzOTggMDAwMDAgbiAKMDAwMDAw\nMDIwOCAwMDAwMCBuIAowMDAwMDA3NjY0IDAwMDAwIG4gCjAwMDAwMDkwODUgMDAwMDAgbiAKMDAw\nMDAwODg4NSAwMDAwMCBuIAowMDAwMDA4NTYyIDAwMDAwIG4gCjAwMDAwMTAxMzggMDAwMDAgbiAK\nMDAwMDAwNzY4NSAwMDAwMCBuIAowMDAwMDA3ODM3IDAwMDAwIG4gCjAwMDAwMDgxNTggMDAwMDAg\nbiAKMDAwMDAwODI3OSAwMDAwMCBuIAowMDAwMDEwNDY2IDAwMDAwIG4gCnRyYWlsZXIKPDwgL1Jv\nb3QgMSAwIFIgL0luZm8gMjAgMCBSIC9TaXplIDIxID4+CnN0YXJ0eHJlZgoxMDYxNAolJUVPRgo=\n", "image/png": "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\nAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import plot_helper\n", "\n", "plot_helper.plot_qp2()" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "We return to the textbook model and set the solver to one that can handle quadratic objectives such as cplex. We then add the linear constraint that the sum of our x and y reactions, that we set to FBA and NH4t, must equal 2." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "model.solver = 'cplex'\n", "sum_two = model.problem.Constraint(\n", " model.reactions.FBA.flux_expression + model.reactions.NH4t.flux_expression,\n", " lb=2,\n", " ub=2)\n", "model.add_cons_vars(sum_two)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Next we add the quadratic objective" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "quadratic_objective = model.problem.Objective(\n", " 0.5 * model.reactions.NH4t.flux_expression**2 + 0.5 *\n", " model.reactions.FBA.flux_expression**2 -\n", " model.reactions.FBA.flux_expression,\n", " direction='min')\n", "model.objective = quadratic_objective\n", "solution = model.optimize(objective_sense=None)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.5 1.5\n" ] } ], "source": [ "print(solution.fluxes['NH4t'], solution.fluxes['FBA'])" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Variables" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "We can also create additional variables to facilitate studying the effects of new constraints and variables. Suppose we want to study the difference in flux between nitrogen and carbon uptake whilst we block other reactions. For this it will may help to add another variable representing this difference." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "model = cobra.test.create_test_model('textbook')\n", "difference = model.problem.Variable('difference')" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "We use constraints to define what values this variable shall take" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "constraint = model.problem.Constraint(\n", " model.reactions.EX_glc__D_e.flux_expression -\n", " model.reactions.EX_nh4_e.flux_expression - difference,\n", " lb=0,\n", " ub=0)\n", "model.add_cons_vars([difference, constraint])" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Now we can access that difference directly during our knock-out exploration by looking at its primal value." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-5.234680806802543\n", "-5.2346808068025386\n", "-5.234680806802525\n", "-1.8644444444444337\n", "-1.8644444444444466\n" ] } ], "source": [ "for reaction in model.reactions[:5]:\n", " with model:\n", " reaction.knock_out()\n", " model.optimize()\n", " print(model.solver.variables.difference.primal)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.5.2" } }, "nbformat": 4, "nbformat_minor": 0 }