{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# CaspoFlux\n",
    "\n",
    "*Python3* notebook inferring the regulation rules of the *Case Study* regulated metabolic network from $6$ simulations.\n",
    "\n",
    "***Warning:*** Simulation files must have been generated to run this notebook. Please run the notebook *FlexFlux-Simulations* before playing this notebook.\n",
    "\n",
    "**Requirements:** Python 3 and the modules: bonesis, clingo, libsbml, networkX, pandas, numpy, biolqm.\n",
    "\n",
    "## Parameters\n",
    "\n",
    "Import the needed *Python* modules:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:10.265416Z",
     "iopub.status.busy": "2021-06-12T14:12:10.262795Z",
     "iopub.status.idle": "2021-06-12T14:12:11.575640Z",
     "shell.execute_reply": "2021-06-12T14:12:11.576158Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/markdown": [
       "This notebook has been executed using the docker image `colomoto/colomoto-docker:2021-02-01`"
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import bonesis\n",
    "import clingo\n",
    "from libsbml import SBMLReader\n",
    "import networkx as nx\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import biolqm\n",
    "from glob import glob\n",
    "from bonesis.asp_encoding import clingo_encode"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Regulated Metabolic Network\n",
    "\n",
    "Choose the regulated metabolic network whose regulation rules must be inferred:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:11.579786Z",
     "iopub.status.busy": "2021-06-12T14:12:11.579253Z",
     "iopub.status.idle": "2021-06-12T14:12:11.581885Z",
     "shell.execute_reply": "2021-06-12T14:12:11.582444Z"
    }
   },
   "outputs": [],
   "source": [
    "model = 'CaseStudy'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Metabolic network\n",
    "\n",
    "Load the *sbml* file describing the metabolic network:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:11.586258Z",
     "iopub.status.busy": "2021-06-12T14:12:11.585598Z",
     "iopub.status.idle": "2021-06-12T14:12:11.590801Z",
     "shell.execute_reply": "2021-06-12T14:12:11.591181Z"
    }
   },
   "outputs": [],
   "source": [
    "sbmld = SBMLReader().readSBML(f'./data/{model}/metabolic_network.xml')\n",
    "sbmlm = sbmld.getModel()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Extract informations: the reactions and the metabolites (internal and external)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:11.597132Z",
     "iopub.status.busy": "2021-06-12T14:12:11.596617Z",
     "iopub.status.idle": "2021-06-12T14:12:11.600029Z",
     "shell.execute_reply": "2021-06-12T14:12:11.600478Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'Growth', 'R6', 'R7', 'Rres', 'Tc1', 'Tc2', 'Td', 'Te', 'To2'}"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reactants = set()\n",
    "products = set()\n",
    "reactions = set()\n",
    "for reaction in sbmlm.getListOfReactions():\n",
    "    name = reaction.getId()\n",
    "    reactions.add(name)\n",
    "    reactants.update([a.getSpecies() for a in reaction.getListOfReactants()])\n",
    "    products.update([a.getSpecies() for a in reaction.getListOfProducts()])\n",
    "    assert not reaction.getListOfModifiers(), 'Not implemented'\n",
    "reactions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:11.604195Z",
     "iopub.status.busy": "2021-06-12T14:12:11.603550Z",
     "iopub.status.idle": "2021-06-12T14:12:11.605761Z",
     "shell.execute_reply": "2021-06-12T14:12:11.606221Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'Carbon1', 'Carbon2', 'Oxygen'}"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "inputs = reactants.difference(products)\n",
    "inputs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:11.610871Z",
     "iopub.status.busy": "2021-06-12T14:12:11.610227Z",
     "iopub.status.idle": "2021-06-12T14:12:11.612556Z",
     "shell.execute_reply": "2021-06-12T14:12:11.613188Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'Biomass', 'Dext', 'Eext'}"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "outputs = products.difference(reactants)\n",
    "outputs"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Regulatory functions\n",
    "\n",
    "#### Ground truth\n",
    "\n",
    "Load the ground truth model:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:11.616622Z",
     "iopub.status.busy": "2021-06-12T14:12:11.616015Z",
     "iopub.status.idle": "2021-06-12T14:12:12.055494Z",
     "shell.execute_reply": "2021-06-12T14:12:12.055851Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Carbon1 <- 0\n",
       "Oxygen <- 0\n",
       "RPO2 <- !Oxygen\n",
       "RPcl <- Carbon1\n",
       "Rres <- !RPO2\n",
       "Tc2 <- !RPcl"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lqm = biolqm.load(f'./data/{model}/regulatory_network.sbml')\n",
    "bn = biolqm.to_minibn(lqm)\n",
    "bn"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Domain of putative regulatory functions\n",
    "\n",
    "Select the domain of putative regulatory functions, *i.e.* the solution space."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:12.059976Z",
     "iopub.status.busy": "2021-06-12T14:12:12.059541Z",
     "iopub.status.idle": "2021-06-12T14:12:12.268082Z",
     "shell.execute_reply": "2021-06-12T14:12:12.267485Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "# computing graph layout...\n"
     ]
    },
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.42.3 (20191010.1750)\n",
       " -->\n",
       "<!-- Title: %3 Pages: 1 -->\n",
       "<svg width=\"357pt\" height=\"188pt\"\n",
       " viewBox=\"0.00 0.00 356.84 188.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 184)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-184 352.84,-184 352.84,4 -4,4\"/>\n",
       "<!-- Carbon1 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>Carbon1</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"50.7\" cy=\"-162\" rx=\"50.89\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"50.7\" y=\"-158.3\" font-family=\"Times,serif\" font-size=\"14.00\">Carbon1</text>\n",
       "</g>\n",
       "<!-- RPcl -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>RPcl</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"105.7\" cy=\"-90\" rx=\"32.49\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"105.7\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\">RPcl</text>\n",
       "</g>\n",
       "<!-- Carbon1&#45;&gt;RPcl -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>Carbon1&#45;&gt;RPcl</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M63.73,-144.41C70.61,-135.66 79.18,-124.75 86.77,-115.08\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"89.71,-117.01 93.13,-106.99 84.2,-112.69 89.71,-117.01\"/>\n",
       "</g>\n",
       "<!-- Tc2 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>Tc2</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"96.7\" cy=\"-18\" rx=\"27.9\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"96.7\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">Tc2</text>\n",
       "</g>\n",
       "<!-- RPcl&#45;&gt;Tc2 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>RPcl&#45;&gt;Tc2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M97.72,-72.41C95.86,-64.59 94.39,-55.06 93.6,-46.23\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"97.07,-45.74 93,-35.96 90.09,-46.14 97.07,-45.74\"/>\n",
       "</g>\n",
       "<!-- Tc1 -->\n",
       "<g id=\"node8\" class=\"node\">\n",
       "<title>Tc1</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"170.7\" cy=\"-18\" rx=\"27.9\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"170.7\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">Tc1</text>\n",
       "</g>\n",
       "<!-- RPcl&#45;&gt;Tc1 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>RPcl&#45;&gt;Tc1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M115.26,-72.41C123.36,-62.52 134.97,-49.89 145.56,-39.39\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"148.26,-41.66 153.03,-32.2 143.4,-36.62 148.26,-41.66\"/>\n",
       "</g>\n",
       "<!-- Carbon2 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>Carbon2</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"169.7\" cy=\"-162\" rx=\"50.89\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"169.7\" y=\"-158.3\" font-family=\"Times,serif\" font-size=\"14.00\">Carbon2</text>\n",
       "</g>\n",
       "<!-- Carbon2&#45;&gt;RPcl -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>Carbon2&#45;&gt;RPcl</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M154.85,-144.76C146.58,-135.71 136.13,-124.29 127,-114.3\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"129.35,-111.68 120.02,-106.67 124.18,-116.41 129.35,-111.68\"/>\n",
       "</g>\n",
       "<!-- Oxygen -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>Oxygen</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"302.7\" cy=\"-162\" rx=\"46.29\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"302.7\" y=\"-158.3\" font-family=\"Times,serif\" font-size=\"14.00\">Oxygen</text>\n",
       "</g>\n",
       "<!-- RPO2 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>RPO2</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"302.7\" cy=\"-90\" rx=\"37.89\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"302.7\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\">RPO2</text>\n",
       "</g>\n",
       "<!-- Oxygen&#45;&gt;RPO2 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>Oxygen&#45;&gt;RPO2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M302.7,-143.7C302.7,-135.98 302.7,-126.71 302.7,-118.11\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"306.2,-118.1 302.7,-108.1 299.2,-118.1 306.2,-118.1\"/>\n",
       "</g>\n",
       "<!-- Rres -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>Rres</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"302.7\" cy=\"-18\" rx=\"32.49\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"302.7\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">Rres</text>\n",
       "</g>\n",
       "<!-- RPO2&#45;&gt;Rres -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>RPO2&#45;&gt;Rres</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M296.82,-72.05C295.99,-64.23 295.75,-54.75 296.11,-45.98\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"299.61,-46.01 296.83,-35.79 292.63,-45.51 299.61,-46.01\"/>\n",
       "</g>\n",
       "<!-- Rres&#45;&gt;RPO2 -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>Rres&#45;&gt;RPO2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M308.56,-35.79C309.4,-43.59 309.64,-53.07 309.29,-61.85\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"305.78,-61.83 308.57,-72.05 312.77,-62.33 305.78,-61.83\"/>\n",
       "</g>\n",
       "<!-- Tc2&#45;&gt;RPcl -->\n",
       "<g id=\"edge8\" class=\"edge\">\n",
       "<title>Tc2&#45;&gt;RPcl</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M104.6,-35.31C106.51,-43.24 108.02,-52.98 108.81,-61.98\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"105.32,-62.27 109.4,-72.05 112.31,-61.87 105.32,-62.27\"/>\n",
       "</g>\n",
       "<!-- Tc1&#45;&gt;RPcl -->\n",
       "<g id=\"edge9\" class=\"edge\">\n",
       "<title>Tc1&#45;&gt;RPcl</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M161.53,-35.1C153.66,-44.76 142.31,-57.15 131.82,-67.62\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"129.13,-65.36 124.4,-74.83 134.01,-70.38 129.13,-65.36\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<networkx.classes.digraph.DiGraph at 0x7efc452d2550>"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pkn = nx.DiGraph()\n",
    "with open(f'./data/{model}/interactions.txt') as fp:\n",
    "    for line in fp:\n",
    "        line = line.strip()\n",
    "        if not line:\n",
    "            continue\n",
    "        a, b = line.split()\n",
    "        if b not in inputs:\n",
    "            pkn.add_edge(a, b, sign=0)\n",
    "        if a not in inputs:\n",
    "            pkn.add_edge(b, a, sign=0)\n",
    "pkn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:12.272012Z",
     "iopub.status.busy": "2021-06-12T14:12:12.271514Z",
     "iopub.status.idle": "2021-06-12T14:12:12.273243Z",
     "shell.execute_reply": "2021-06-12T14:12:12.273649Z"
    }
   },
   "outputs": [],
   "source": [
    "dom = bonesis.InfluenceGraph(pkn, allow_skipping_nodes=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Extract the set of regulatory proteins:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:12.277019Z",
     "iopub.status.busy": "2021-06-12T14:12:12.276511Z",
     "iopub.status.idle": "2021-06-12T14:12:12.278767Z",
     "shell.execute_reply": "2021-06-12T14:12:12.279258Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'RPO2', 'RPcl'}"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "regulators = set(pkn).difference(reactions).difference(inputs)\n",
    "regulators"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Boolean metabolic steady states\n",
    "\n",
    "### ASP model modeling boolean metabolic steady states\n",
    "\n",
    "Define the metabolic network into the ASP model:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:12.285489Z",
     "iopub.status.busy": "2021-06-12T14:12:12.284984Z",
     "iopub.status.idle": "2021-06-12T14:12:12.286635Z",
     "shell.execute_reply": "2021-06-12T14:12:12.287129Z"
    }
   },
   "outputs": [],
   "source": [
    "%%capture\n",
    "metabo_asp = []\n",
    "for reaction in sbmlm.getListOfReactions():\n",
    "    name = reaction.getName()\n",
    "    for a in reaction.getListOfReactants():\n",
    "        a = a.getSpecies()\n",
    "        metabo_asp.append(f'reactant(\"{a}\",\"{name}\").')\n",
    "    for a in reaction.getListOfProducts():\n",
    "        a = a.getSpecies()\n",
    "        metabo_asp.append(f'product(\"{a}\",\"{name}\").')\n",
    "    assert not reaction.getListOfModifiers(), 'Not implemented'\n",
    "metabo_asp = '\\n'.join(metabo_asp)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Define the quasi-steady states constraints in the ASP model:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:12.290574Z",
     "iopub.status.busy": "2021-06-12T14:12:12.290073Z",
     "iopub.status.idle": "2021-06-12T14:12:12.291731Z",
     "shell.execute_reply": "2021-06-12T14:12:12.292226Z"
    }
   },
   "outputs": [],
   "source": [
    "mss_asp = \"\"\"\n",
    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
    "% DATA PRE-PROCESSING\n",
    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
    "\n",
    "inp(X,R) :- reactant(X,R), not product(X,_).\n",
    "r(r,A,R) :- reactant(A,R), product(A,_).\n",
    "r(p,A,R) :- product(A,R), reactant(A,_).\n",
    "\n",
    "varm(A) :- r(_,A,_).\n",
    "varm(A) :- r(_,_,A).\n",
    "varm(A) :- inp(A,_).\n",
    "\n",
    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
    "% DEFINITION OF THE METABOLIC STEADY STATE\n",
    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
    "\n",
    "% Define the nodes possible states.\n",
    "1 { v(T,A,(1;-1)) } 1 :- time(T), varm(A).\n",
    "\n",
    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
    "% METABOLIC STEADY STATE\n",
    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
    "\n",
    "% Nodes states must follow the observations.\n",
    ":- obs(T,A,V), v(T,A,-V).\n",
    "\n",
    "% A metabolite is produced/consummed by at least one reaction.\n",
    ":- time(T), r(S,A,_), v(T,A,1), v(T,R,-1): r(S,A,R).\n",
    "\n",
    "% A reaction enable its reactants and products.\n",
    ":- time(T), r(_,A,R), v(T,R,1), v(T,A,-1).\n",
    "\n",
    "% An import reaction must have all its reactants in the cell environment.\n",
    ":- time(T), inp(X,R), v(T,X,-1), v(T,R,1).\n",
    "\"\"\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Instantiate the ASP model with *clingo*:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:12.297113Z",
     "iopub.status.busy": "2021-06-12T14:12:12.296531Z",
     "iopub.status.idle": "2021-06-12T14:12:12.300580Z",
     "shell.execute_reply": "2021-06-12T14:12:12.301144Z"
    }
   },
   "outputs": [],
   "source": [
    "mss = clingo.Control(['--project', '0'])\n",
    "mss.add('base', [], metabo_asp)\n",
    "mss.add('base', [], mss_asp)\n",
    "mss.add('base', [], 'time(t).')\n",
    "mss.add('base', [], '#show v/3.')\n",
    "mss.ground([('base', [])])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### List of Boolean metabolic steady states\n",
    "\n",
    "There are $38$ Boolean metabolic steady state compatible with the *Case Study* metabolic network. These Boolean metabolic networks are shown in the table below. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:12.306611Z",
     "iopub.status.busy": "2021-06-12T14:12:12.306109Z",
     "iopub.status.idle": "2021-06-12T14:12:12.334300Z",
     "shell.execute_reply": "2021-06-12T14:12:12.334725Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Carbon1</th>\n",
       "      <th>Carbon2</th>\n",
       "      <th>Oxygen</th>\n",
       "      <th>Growth</th>\n",
       "      <th>R6</th>\n",
       "      <th>R7</th>\n",
       "      <th>Rres</th>\n",
       "      <th>Tc1</th>\n",
       "      <th>Tc2</th>\n",
       "      <th>Td</th>\n",
       "      <th>Te</th>\n",
       "      <th>To2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    Carbon1  Carbon2  Oxygen  Growth  R6  R7  Rres  Tc1  Tc2  Td  Te  To2\n",
       "0         0        0       0       0   0   0     0    0    0   0   0    0\n",
       "1         0        0       1       0   0   0     0    0    0   0   0    0\n",
       "2         0        1       0       0   0   0     0    0    0   0   0    0\n",
       "3         0        1       0       1   1   1     0    0    1   1   1    0\n",
       "4         0        1       1       0   0   0     0    0    0   0   0    0\n",
       "5         0        1       1       1   0   0     1    0    1   0   0    1\n",
       "6         0        1       1       1   0   1     1    0    1   0   1    1\n",
       "7         0        1       1       1   1   0     1    0    1   1   0    1\n",
       "8         0        1       1       1   1   1     0    0    1   1   1    0\n",
       "9         0        1       1       1   1   1     1    0    1   1   1    1\n",
       "10        1        0       0       0   0   0     0    0    0   0   0    0\n",
       "11        1        0       0       1   1   1     0    1    0   1   1    0\n",
       "12        1        0       1       0   0   0     0    0    0   0   0    0\n",
       "13        1        0       1       1   0   0     1    1    0   0   0    1\n",
       "14        1        0       1       1   0   1     1    1    0   0   1    1\n",
       "15        1        0       1       1   1   0     1    1    0   1   0    1\n",
       "16        1        0       1       1   1   1     0    1    0   1   1    0\n",
       "17        1        0       1       1   1   1     1    1    0   1   1    1\n",
       "18        1        1       0       0   0   0     0    0    0   0   0    0\n",
       "19        1        1       0       1   1   1     0    0    1   1   1    0\n",
       "20        1        1       0       1   1   1     0    1    0   1   1    0\n",
       "21        1        1       0       1   1   1     0    1    1   1   1    0\n",
       "22        1        1       1       0   0   0     0    0    0   0   0    0\n",
       "23        1        1       1       1   0   0     1    0    1   0   0    1\n",
       "24        1        1       1       1   0   0     1    1    0   0   0    1\n",
       "25        1        1       1       1   0   0     1    1    1   0   0    1\n",
       "26        1        1       1       1   0   1     1    0    1   0   1    1\n",
       "27        1        1       1       1   0   1     1    1    0   0   1    1\n",
       "28        1        1       1       1   0   1     1    1    1   0   1    1\n",
       "29        1        1       1       1   1   0     1    0    1   1   0    1\n",
       "30        1        1       1       1   1   0     1    1    0   1   0    1\n",
       "31        1        1       1       1   1   0     1    1    1   1   0    1\n",
       "32        1        1       1       1   1   1     0    0    1   1   1    0\n",
       "33        1        1       1       1   1   1     0    1    0   1   1    0\n",
       "34        1        1       1       1   1   1     0    1    1   1   1    0\n",
       "35        1        1       1       1   1   1     1    0    1   1   1    1\n",
       "36        1        1       1       1   1   1     1    1    0   1   1    1\n",
       "37        1        1       1       1   1   1     1    1    1   1   1    1"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rows = []\n",
    "for s in mss.solve(yield_=True):\n",
    "    atoms = s.symbols(shown=True)\n",
    "    row = {a.arguments[1].string: 0 if a.arguments[2].number < 0 else 1 for a in atoms}\n",
    "    rows.append(row)\n",
    "mvars = list(sorted(set(rows[0].keys()).difference(inputs)))\n",
    "cols = list(sorted(inputs)) + list(sorted(reactions))\n",
    "pd.DataFrame(rows, columns=cols).sort_values(cols, ignore_index=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Simulations processing\n",
    "\n",
    "### Simulations\n",
    "\n",
    "***Warning:*** The simulations files must have been generate with the notebook *FlexFlux-Simulations*.\n",
    "\n",
    "Import the simulations of the *Case Study* regulated metabolic network for the $6$ experiments to the notebook."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:12.338688Z",
     "iopub.status.busy": "2021-06-12T14:12:12.338268Z",
     "iopub.status.idle": "2021-06-12T14:12:12.339791Z",
     "shell.execute_reply": "2021-06-12T14:12:12.340212Z"
    }
   },
   "outputs": [],
   "source": [
    "cols = list(sorted(inputs)) + list(sorted(reactions)) + list(sorted(regulators))\n",
    "def read_simulation(csvfile):\n",
    "    df = pd.read_csv(csvfile, sep='\\t', usecols=['Time'] + cols)\n",
    "    df['Time'] = (df['Time']*100).astype(int)\n",
    "    df.set_index('Time', inplace=True)\n",
    "    return df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:12.343581Z",
     "iopub.status.busy": "2021-06-12T14:12:12.342853Z",
     "iopub.status.idle": "2021-06-12T14:12:14.503743Z",
     "shell.execute_reply": "2021-06-12T14:12:14.504177Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "simfiles = glob(f'./simulations/{model}/Experiment*.csv')\n",
    "simulations = {i+1: read_simulation(f) for i, f in enumerate(sorted(simfiles))}\n",
    "\n",
    "# Display the simulations\n",
    "for i, df in simulations.items():\n",
    "    df.plot(title=f'Experiment {i}')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Transform each simulation's time step $t$ such that the quantity of external metabolites are the quantity after the time step $t-1$ rather than after the time step $t$. In fact, at a time step $t$, the quantity of external metabolites before the simulation of time $t$ must be known to allow computing the Boolean metabolic steady state admissible by the metabolic network at $t$. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:14.512354Z",
     "iopub.status.busy": "2021-06-12T14:12:14.511919Z",
     "iopub.status.idle": "2021-06-12T14:12:14.525134Z",
     "shell.execute_reply": "2021-06-12T14:12:14.524676Z"
    }
   },
   "outputs": [],
   "source": [
    "%%capture\n",
    "for i, df in simulations.items():\n",
    "    init = df[list(inputs)].iloc[0]\n",
    "    df.loc[1:,list(inputs)] = df[list(inputs)].shift(1).loc[1:,list(inputs)]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Binarization\n",
    "\n",
    "Binarize each simulation's time step and filter the redundant time step. A binarized time step $t$ is consider redundant if it is identical to the binarized time step $t-1$.\n",
    "\n",
    "Set of usefull functions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:14.529059Z",
     "iopub.status.busy": "2021-06-12T14:12:14.528630Z",
     "iopub.status.idle": "2021-06-12T14:12:14.530703Z",
     "shell.execute_reply": "2021-06-12T14:12:14.530257Z"
    }
   },
   "outputs": [],
   "source": [
    "def drop_repeats(df):\n",
    "    return df.loc[(df.shift() != df).any(1)]\n",
    "\n",
    "def bin_normalized_threshold(df):\n",
    "    threshold = 0\n",
    "    df = df/df.max() # normalization\n",
    "    db = (df > threshold).astype(int) # binarize\n",
    "    return drop_repeats(db)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Binarized and filtered time steps for each simulation."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:14.541164Z",
     "iopub.status.busy": "2021-06-12T14:12:14.540137Z",
     "iopub.status.idle": "2021-06-12T14:12:14.558847Z",
     "shell.execute_reply": "2021-06-12T14:12:14.559276Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>Carbon1</th>\n",
       "      <th>Carbon2</th>\n",
       "      <th>Growth</th>\n",
       "      <th>Oxygen</th>\n",
       "      <th>R6</th>\n",
       "      <th>R7</th>\n",
       "      <th>RPO2</th>\n",
       "      <th>RPcl</th>\n",
       "      <th>Rres</th>\n",
       "      <th>Tc1</th>\n",
       "      <th>Tc2</th>\n",
       "      <th>Td</th>\n",
       "      <th>Te</th>\n",
       "      <th>To2</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th>Time</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"5\" valign=\"top\">1</th>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>51</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>52</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>59</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"5\" valign=\"top\">2</th>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>83</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>84</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>97</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">3</th>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>83</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">4</th>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>83</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">5</th>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>51</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">6</th>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>51</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        Carbon1  Carbon2  Growth  Oxygen  R6  R7  RPO2  RPcl  Rres  Tc1  Tc2  \\\n",
       "  Time                                                                         \n",
       "1 0           1        1       0       1   0   0     0     1     0    0    0   \n",
       "  1           1        1       1       1   0   0     0     1     1    1    0   \n",
       "  51          0        1       0       1   0   0     0     0     0    0    0   \n",
       "  52          0        1       1       1   0   0     0     0     1    0    1   \n",
       "  59          0        0       0       1   0   0     0     0     0    0    0   \n",
       "2 0           1        1       0       0   0   0     1     1     0    0    0   \n",
       "  1           1        1       1       0   1   1     1     1     0    1    0   \n",
       "  83          0        1       0       0   0   0     1     0     0    0    0   \n",
       "  84          0        1       1       0   1   1     1     0     0    0    1   \n",
       "  97          0        0       0       0   0   0     1     0     0    0    0   \n",
       "3 0           0        1       0       0   0   0     1     0     0    0    0   \n",
       "  1           0        1       1       0   1   1     1     0     0    0    1   \n",
       "  83          0        0       0       0   0   0     1     0     0    0    0   \n",
       "4 0           1        0       0       0   0   0     1     1     0    0    0   \n",
       "  1           1        0       1       0   1   1     1     1     0    1    0   \n",
       "  83          0        0       0       0   0   0     1     0     0    0    0   \n",
       "5 0           1        0       0       1   0   0     0     1     0    0    0   \n",
       "  1           1        0       1       1   0   0     0     1     1    1    0   \n",
       "  51          0        0       0       1   0   0     0     0     0    0    0   \n",
       "6 0           0        1       0       1   0   0     0     0     0    0    0   \n",
       "  1           0        1       1       1   0   0     0     0     1    0    1   \n",
       "  51          0        0       0       1   0   0     0     0     0    0    0   \n",
       "\n",
       "        Td  Te  To2  \n",
       "  Time               \n",
       "1 0      0   0    0  \n",
       "  1      0   0    1  \n",
       "  51     0   0    0  \n",
       "  52     0   0    1  \n",
       "  59     0   0    0  \n",
       "2 0      0   0    0  \n",
       "  1      1   1    0  \n",
       "  83     0   0    0  \n",
       "  84     1   1    0  \n",
       "  97     0   0    0  \n",
       "3 0      0   0    0  \n",
       "  1      1   1    0  \n",
       "  83     0   0    0  \n",
       "4 0      0   0    0  \n",
       "  1      1   1    0  \n",
       "  83     0   0    0  \n",
       "5 0      0   0    0  \n",
       "  1      0   0    1  \n",
       "  51     0   0    0  \n",
       "6 0      0   0    0  \n",
       "  1      0   0    1  \n",
       "  51     0   0    0  "
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.concat({k: bin_normalized_threshold(df) for k, df in simulations.items()})\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Verification of dataset (Optional)\n",
    "\n",
    "The dataset composed of binarized time steps can be checked to ensure that there is not error in the input data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:14.564259Z",
     "iopub.status.busy": "2021-06-12T14:12:14.563828Z",
     "iopub.status.idle": "2021-06-12T14:12:14.565787Z",
     "shell.execute_reply": "2021-06-12T14:12:14.565351Z"
    }
   },
   "outputs": [],
   "source": [
    "def check_mss(row):\n",
    "    mss = clingo.Control()\n",
    "    mss.add('base', [], metabo_asp+mss_asp+'time(t).')\n",
    "    for n, v in row.items():\n",
    "        if not isinstance(v, int) and not v.is_integer():\n",
    "            continue\n",
    "        v = int(v*2-1)\n",
    "        n = clingo_encode(n)\n",
    "        v = clingo_encode(v)\n",
    "        cst = clingo.Function('v', (clingo.Function('t'), n, v))\n",
    "        mss.add('base', [], f'{cst}.')\n",
    "    mss.add('base', [], '')\n",
    "    mss.ground([('base', [])])\n",
    "    return mss.solve().satisfiable"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Removed all the incoherent time steps from the dataset. A time step is said incoherent if and only if it does not represent a metabolic steady state.\n",
    "\n",
    "For the *Case Study* regulated metabolic network and the $6$ simulations, both table should be identical."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:14.571506Z",
     "iopub.status.busy": "2021-06-12T14:12:14.571047Z",
     "iopub.status.idle": "2021-06-12T14:12:14.627966Z",
     "shell.execute_reply": "2021-06-12T14:12:14.627518Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>Carbon1</th>\n",
       "      <th>Carbon2</th>\n",
       "      <th>Growth</th>\n",
       "      <th>Oxygen</th>\n",
       "      <th>R6</th>\n",
       "      <th>R7</th>\n",
       "      <th>RPO2</th>\n",
       "      <th>RPcl</th>\n",
       "      <th>Rres</th>\n",
       "      <th>Tc1</th>\n",
       "      <th>Tc2</th>\n",
       "      <th>Td</th>\n",
       "      <th>Te</th>\n",
       "      <th>To2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"5\" valign=\"top\">1</th>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>51</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>52</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>59</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"5\" valign=\"top\">2</th>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>83</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>84</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>97</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">3</th>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>83</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">4</th>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>83</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">5</th>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>51</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">6</th>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>51</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Carbon1  Carbon2  Growth  Oxygen  R6  R7  RPO2  RPcl  Rres  Tc1  Tc2  \\\n",
       "1 0         1        1       0       1   0   0     0     1     0    0    0   \n",
       "  1         1        1       1       1   0   0     0     1     1    1    0   \n",
       "  51        0        1       0       1   0   0     0     0     0    0    0   \n",
       "  52        0        1       1       1   0   0     0     0     1    0    1   \n",
       "  59        0        0       0       1   0   0     0     0     0    0    0   \n",
       "2 0         1        1       0       0   0   0     1     1     0    0    0   \n",
       "  1         1        1       1       0   1   1     1     1     0    1    0   \n",
       "  83        0        1       0       0   0   0     1     0     0    0    0   \n",
       "  84        0        1       1       0   1   1     1     0     0    0    1   \n",
       "  97        0        0       0       0   0   0     1     0     0    0    0   \n",
       "3 0         0        1       0       0   0   0     1     0     0    0    0   \n",
       "  1         0        1       1       0   1   1     1     0     0    0    1   \n",
       "  83        0        0       0       0   0   0     1     0     0    0    0   \n",
       "4 0         1        0       0       0   0   0     1     1     0    0    0   \n",
       "  1         1        0       1       0   1   1     1     1     0    1    0   \n",
       "  83        0        0       0       0   0   0     1     0     0    0    0   \n",
       "5 0         1        0       0       1   0   0     0     1     0    0    0   \n",
       "  1         1        0       1       1   0   0     0     1     1    1    0   \n",
       "  51        0        0       0       1   0   0     0     0     0    0    0   \n",
       "6 0         0        1       0       1   0   0     0     0     0    0    0   \n",
       "  1         0        1       1       1   0   0     0     0     1    0    1   \n",
       "  51        0        0       0       1   0   0     0     0     0    0    0   \n",
       "\n",
       "      Td  Te  To2  \n",
       "1 0    0   0    0  \n",
       "  1    0   0    1  \n",
       "  51   0   0    0  \n",
       "  52   0   0    1  \n",
       "  59   0   0    0  \n",
       "2 0    0   0    0  \n",
       "  1    1   1    0  \n",
       "  83   0   0    0  \n",
       "  84   1   1    0  \n",
       "  97   0   0    0  \n",
       "3 0    0   0    0  \n",
       "  1    1   1    0  \n",
       "  83   0   0    0  \n",
       "4 0    0   0    0  \n",
       "  1    1   1    0  \n",
       "  83   0   0    0  \n",
       "5 0    0   0    0  \n",
       "  1    0   0    1  \n",
       "  51   0   0    0  \n",
       "6 0    0   0    0  \n",
       "  1    0   0    1  \n",
       "  51   0   0    0  "
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dg = df[df.apply(check_mss, axis=1)]\n",
    "assert(set(df.index).difference(dg.index) or True)\n",
    "\n",
    "df = dg\n",
    "\n",
    "data = {}\n",
    "timeseries = []\n",
    "let = (None,None)\n",
    "for et, row in df.iterrows():\n",
    "    if let[0] == et[0]:\n",
    "        timeseries.append((let,et))\n",
    "    obs = {k:int(v) for (k,v) in row.items()}\n",
    "    data[et] = obs\n",
    "    let = et\n",
    "df = pd.DataFrame(data).T\n",
    "df\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## ASP model for the inference problem \n",
    "\n",
    "### Algorithm\n",
    "\n",
    "Define the ASP model to infer regulatory functions from the simulations."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:14.633631Z",
     "iopub.status.busy": "2021-06-12T14:12:14.633193Z",
     "iopub.status.idle": "2021-06-12T14:12:14.634613Z",
     "shell.execute_reply": "2021-06-12T14:12:14.635038Z"
    }
   },
   "outputs": [],
   "source": [
    "%%capture\n",
    "# Define the model with the BoNesis approach.\n",
    "bo = bonesis.BoNesis(dom, data)\n",
    "# Add both the metabolic network data and the Boolean metabolic steady state constraints.\n",
    "bo.custom(metabo_asp)\n",
    "bo.custom(mss_asp)\n",
    "# Add information about the time steps successions.\n",
    "for t1, t2 in timeseries:\n",
    "    bo.custom(f'next({t1},{t2})')\n",
    "# Force finding a function for regulatory proteins.\n",
    "for k in regulators:\n",
    "    bo.custom(str(clingo.Function('node', [clingo_encode(k)])))\n",
    "# Add the final satisfiability constraints.\n",
    "bo.custom(\"\"\"\n",
    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
    "% DATA PRE-PROCESSING\n",
    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
    "\n",
    "tnext(T1,T2) :- next(T1,T2).\n",
    "\n",
    "time(T1) :- next(T1,_).\n",
    "time(T2) :- next(_,T2).\n",
    "\n",
    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
    "% BOOLEAN NETWORK\n",
    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
    "\n",
    "%% tune BoNesis encoding for using non-defined nodes\n",
    "{clause(N,1..C,L,S): in(L,N,S), maxC(N,C), node(N)}.\n",
    "\n",
    "read(T,A,V) :- tnext(T,_), not inp(A,_), v(T,A,V).\n",
    "read(T,A,V) :- tnext(T,T2), inp(A,_), obs(T2,A,V).\n",
    "\n",
    "%% update mode: synchronous\n",
    "update(T1,A) :- mode(T1,reg), node(A), not inp(A,_).\n",
    "\n",
    "%% eval\n",
    "eval(T,A,C,-1) :- update(T,A), clause(A,C,L,V), read(T,L,-V).\n",
    "eval(T,A,C,1) :- read(T,L,V): clause(A,C,L,V); update(T,A), clause(A,C,_,_).\n",
    "eval(T,A,1) :- eval(T,A,C,1), clause(A,C,_,_).\n",
    "eval(T,A,-1) :- eval(T,A,C,-1): clause(A,C,_,_); update(T,A), clause(A,C,_,_).\n",
    "eval(T,A,V) :- update(T,A), constant(A,V).\n",
    "\n",
    "%% intermediate regulated state\n",
    "mode(T1,reg) :- tnext(T1,_).\n",
    "\n",
    "% copy inputs\n",
    "w(T2,A,V) :- inp(A,_), tnext(_,T2), obs(T2,A,V).\n",
    "% copy non-updated\n",
    "w(T2,A,V) :- tnext(T1,T2), not inp(A,_), not update(T1,A), v(T1,A,V).\n",
    "% apply update\n",
    "w(T2,A,V) :- tnext(T1,T2), update(T1,A), eval(T1,A,V).\n",
    "\n",
    "% at least one change (to optimize)\n",
    "% :- v(T1,A,V):w(T2,A,V); tnext(T1,T2); tnext(_,T1).\n",
    "\n",
    "%% variables not in the Boolean metabolic steady state\n",
    "varx(A) :- node(A), not varm(A).\n",
    "1{v(T,A,(-1;1))}1 :- varx(A), time(T).\n",
    "% forward non Boolean metabolic steady state variables\n",
    ":- varx(A), w(T,A,V), v(T,A,-V).\n",
    "\n",
    "% if regulated is 0, mss cannot activate it\n",
    ":- w(T,A,-1), v(T,A,1), node(A).\n",
    "\n",
    "% input metabolites have a constant regulatory rules\n",
    "constant(A,-1) :- inp(A,_).\n",
    "\n",
    "% no constant\n",
    ":- constant(A), not inp(A,_).\n",
    "\"\"\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Define the objective function (here `score`) with the saturation method. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:14.639397Z",
     "iopub.status.busy": "2021-06-12T14:12:14.638957Z",
     "iopub.status.idle": "2021-06-12T14:12:14.640977Z",
     "shell.execute_reply": "2021-06-12T14:12:14.640539Z"
    }
   },
   "outputs": [],
   "source": [
    "%%capture\n",
    "sat_mss = \"\"\"\n",
    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
    "% DEFINITION OF THE SATURATED BOOLEAN METABOLIC STEADY STATES\n",
    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
    "\n",
    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
    "% DISJUNCTION\n",
    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
    "\n",
    "% A node is activated or disabled.\n",
    "z(T,A,1);z(T,A,-1) :- time(T), varm(A).\n",
    "\n",
    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
    "% BOOLEAN METABOLIC STEADY STATE\n",
    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
    "\n",
    "% Inputs must follow the observations.\n",
    "no_mss(T) :- inp(A,_), v(T,A,V), z(T,A,-V).\n",
    "\n",
    "% A metabolite is produced/consummed by at least one reaction.\n",
    "no_mss(T) :- time(T), r(S,A,_), z(T,A,1), z(T,R,-1): r(S,A,R).\n",
    "\n",
    "% A reaction activates its reactants and products.\n",
    "no_mss(T) :- time(T), r(_,A,R), z(T,R,1), z(T,A,-1).\n",
    "\n",
    "% An import reaction must have all its reactants in the cell environment.\n",
    "no_mss(T) :- time(T), inp(X,R), z(T,X,-1), z(T,R,1).\n",
    "\n",
    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
    "% APPLICATION OF THE REGULATIONS\n",
    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
    "\n",
    "% A regulatory protein follow the regulations.\n",
    "no_reg(T):- varx(A), w(T,A,V), z(T,A,-V).\n",
    "\n",
    "% A reaction follow its regulation.\n",
    "no_reg(T) :- w(T,A,-1), z(T,A,1), node(A).\n",
    "\n",
    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
    "% OBJECTIVE FUNCTION\n",
    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
    "\n",
    "% Subset of reactions used to compute the objective functions.\n",
    "% They are the reactions whose reactants are the input metabolites.\n",
    "opt(T) :- T=(\"Tc1\";\"Tc2\";\"To2\").\n",
    "\n",
    "% Define the observation score.\n",
    "score(T,o,S) :- time(T), S=#count{1,A: opt(A), v(T,A,1)}.\n",
    "\n",
    "% Define an intermediary score needed to compute the score of the current\n",
    "% Boolean metabolic steady state.\n",
    "score_z(T,N,1) :- z(T,N,1). \n",
    "score_z(T,N,0) :- z(T,N,-1).\n",
    "\n",
    "% Define the current Boolean metabolic steady state score.\n",
    "score(T,v,S) :- time(T), S=TC1+TC2+TO2,\n",
    "                score_z(T,\"Tc1\",TC1), \n",
    "                score_z(T,\"Tc2\",TC2), \n",
    "                score_z(T,\"To2\",TO2).\n",
    "\n",
    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
    "% SATURATION\n",
    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
    "\n",
    "% A Boolean metabolic state which is not at steady state is valid.\n",
    "valid(T) :- time(T), no_mss(T).\n",
    "\n",
    "% A Boolean metabolic steady state which does not respect the regulation is valid.\n",
    "valid(T) :- time(T), no_reg(T).\n",
    "\n",
    "% A Boolean metabolic steady state whose score is less or equal to the observation score is valid.\n",
    "valid(T) :- time(T), score(T,v,V), score(T,o,O), V <= O.\n",
    "\n",
    "% Saturate all the valid Boolean metabolic state.\n",
    "z(T,A,-V) :- time(T), varm(A), z(T,A,V), valid(T).\n",
    "\n",
    "% All the Boolean metabolic state must be valid.\n",
    ":- time((E,T)), not valid((E,T)), 0 < T.\n",
    "\"\"\"\n",
    "\n",
    "bo.custom(sat_mss)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Results\n",
    "\n",
    "Define usefull display functions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:14.645050Z",
     "iopub.status.busy": "2021-06-12T14:12:14.644623Z",
     "iopub.status.idle": "2021-06-12T14:12:14.646709Z",
     "shell.execute_reply": "2021-06-12T14:12:14.646260Z"
    }
   },
   "outputs": [],
   "source": [
    "def pretty_df(out):\n",
    "    # put background truth in yellow\n",
    "    out = out.style.set_table_styles([{'selector': '.row0', 'props': [('background-color', 'darkred')]}])\n",
    "\n",
    "    # green matching results\n",
    "    def highlight_match(data):\n",
    "        attr = 'color: green'\n",
    "        match = data == data[0]\n",
    "        if data[0] == False:\n",
    "            match |= data == ''\n",
    "        match[0] = False\n",
    "        return np.where(match, attr, '')\n",
    "    return out.apply(highlight_match, axis=0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Admissible models\n",
    "\n",
    "Solve the infering problem with *clingo*. Here, only the satisfiability constraints are considered."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:14.649723Z",
     "iopub.status.busy": "2021-06-12T14:12:14.649302Z",
     "iopub.status.idle": "2021-06-12T14:12:14.734767Z",
     "shell.execute_reply": "2021-06-12T14:12:14.734326Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Grounding...done in 0.0s\n",
      "CPU times: user 150 ms, sys: 9.46 ms, total: 159 ms\n",
      "Wall time: 81.9 ms\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "40"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%time results = list(bo.boolean_networks())\n",
    "len(results)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Display the set of all the admissible models."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:14.740785Z",
     "iopub.status.busy": "2021-06-12T14:12:14.740359Z",
     "iopub.status.idle": "2021-06-12T14:12:14.879744Z",
     "shell.execute_reply": "2021-06-12T14:12:14.879292Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style  type=\"text/css\" >\n",
       "    #T_17c29_ .row0 {\n",
       "          background-color: darkred;\n",
       "    }#T_17c29_row1_col1,#T_17c29_row1_col3,#T_17c29_row1_col4,#T_17c29_row2_col1,#T_17c29_row2_col3,#T_17c29_row3_col1,#T_17c29_row3_col2,#T_17c29_row3_col3,#T_17c29_row3_col4,#T_17c29_row4_col1,#T_17c29_row4_col2,#T_17c29_row4_col3,#T_17c29_row5_col3,#T_17c29_row5_col4,#T_17c29_row6_col3,#T_17c29_row7_col2,#T_17c29_row7_col3,#T_17c29_row7_col4,#T_17c29_row8_col2,#T_17c29_row8_col3,#T_17c29_row9_col0,#T_17c29_row9_col1,#T_17c29_row9_col3,#T_17c29_row9_col4,#T_17c29_row10_col0,#T_17c29_row10_col1,#T_17c29_row10_col3,#T_17c29_row11_col0,#T_17c29_row11_col1,#T_17c29_row11_col2,#T_17c29_row11_col3,#T_17c29_row11_col4,#T_17c29_row12_col0,#T_17c29_row12_col1,#T_17c29_row12_col2,#T_17c29_row12_col3,#T_17c29_row13_col0,#T_17c29_row13_col3,#T_17c29_row13_col4,#T_17c29_row14_col0,#T_17c29_row14_col3,#T_17c29_row15_col0,#T_17c29_row15_col2,#T_17c29_row15_col3,#T_17c29_row15_col4,#T_17c29_row16_col0,#T_17c29_row16_col2,#T_17c29_row16_col3,#T_17c29_row17_col1,#T_17c29_row17_col3,#T_17c29_row17_col4,#T_17c29_row18_col1,#T_17c29_row18_col3,#T_17c29_row19_col1,#T_17c29_row19_col2,#T_17c29_row19_col3,#T_17c29_row19_col4,#T_17c29_row20_col1,#T_17c29_row20_col2,#T_17c29_row20_col3,#T_17c29_row21_col3,#T_17c29_row21_col4,#T_17c29_row22_col3,#T_17c29_row23_col2,#T_17c29_row23_col3,#T_17c29_row23_col4,#T_17c29_row24_col2,#T_17c29_row24_col3,#T_17c29_row25_col1,#T_17c29_row25_col3,#T_17c29_row25_col4,#T_17c29_row26_col1,#T_17c29_row26_col3,#T_17c29_row27_col1,#T_17c29_row27_col2,#T_17c29_row27_col3,#T_17c29_row27_col4,#T_17c29_row28_col1,#T_17c29_row28_col2,#T_17c29_row28_col3,#T_17c29_row29_col3,#T_17c29_row29_col4,#T_17c29_row30_col3,#T_17c29_row31_col2,#T_17c29_row31_col3,#T_17c29_row31_col4,#T_17c29_row32_col2,#T_17c29_row32_col3,#T_17c29_row33_col1,#T_17c29_row33_col3,#T_17c29_row33_col4,#T_17c29_row34_col1,#T_17c29_row34_col3,#T_17c29_row35_col1,#T_17c29_row35_col2,#T_17c29_row35_col3,#T_17c29_row35_col4,#T_17c29_row36_col1,#T_17c29_row36_col2,#T_17c29_row36_col3,#T_17c29_row37_col3,#T_17c29_row37_col4,#T_17c29_row38_col3,#T_17c29_row39_col2,#T_17c29_row39_col3,#T_17c29_row39_col4,#T_17c29_row40_col2,#T_17c29_row40_col3{\n",
       "            color:  green;\n",
       "        }</style><table id=\"T_17c29_\" ><thead>    <tr>        <th class=\"blank level0\" ></th>        <th class=\"col_heading level0 col0\" >RPcl</th>        <th class=\"col_heading level0 col1\" >RPO2</th>        <th class=\"col_heading level0 col2\" >Rres</th>        <th class=\"col_heading level0 col3\" >Tc2</th>        <th class=\"col_heading level0 col4\" >Tc1</th>    </tr></thead><tbody>\n",
       "                <tr>\n",
       "                        <th id=\"T_17c29_level0_row0\" class=\"row_heading level0 row0\" >0</th>\n",
       "                        <td id=\"T_17c29_row0_col0\" class=\"data row0 col0\" >Carbon1</td>\n",
       "                        <td id=\"T_17c29_row0_col1\" class=\"data row0 col1\" >!Oxygen</td>\n",
       "                        <td id=\"T_17c29_row0_col2\" class=\"data row0 col2\" >!RPO2</td>\n",
       "                        <td id=\"T_17c29_row0_col3\" class=\"data row0 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row0_col4\" class=\"data row0 col4\" ></td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row1\" class=\"row_heading level0 row1\" >1</th>\n",
       "                        <td id=\"T_17c29_row1_col0\" class=\"data row1 col0\" >(Carbon1&!Tc1)|(Carbon1&!Tc2)</td>\n",
       "                        <td id=\"T_17c29_row1_col1\" class=\"data row1 col1\" >!Oxygen</td>\n",
       "                        <td id=\"T_17c29_row1_col2\" class=\"data row1 col2\" ></td>\n",
       "                        <td id=\"T_17c29_row1_col3\" class=\"data row1 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row1_col4\" class=\"data row1 col4\" ></td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row2\" class=\"row_heading level0 row2\" >2</th>\n",
       "                        <td id=\"T_17c29_row2_col0\" class=\"data row2 col0\" >(Carbon1&!Tc1)|(Carbon1&!Tc2)</td>\n",
       "                        <td id=\"T_17c29_row2_col1\" class=\"data row2 col1\" >!Oxygen</td>\n",
       "                        <td id=\"T_17c29_row2_col2\" class=\"data row2 col2\" ></td>\n",
       "                        <td id=\"T_17c29_row2_col3\" class=\"data row2 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row2_col4\" class=\"data row2 col4\" >RPcl</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row3\" class=\"row_heading level0 row3\" >3</th>\n",
       "                        <td id=\"T_17c29_row3_col0\" class=\"data row3 col0\" >(Carbon1&!Tc1)|(Carbon1&!Tc2)</td>\n",
       "                        <td id=\"T_17c29_row3_col1\" class=\"data row3 col1\" >!Oxygen</td>\n",
       "                        <td id=\"T_17c29_row3_col2\" class=\"data row3 col2\" >!RPO2</td>\n",
       "                        <td id=\"T_17c29_row3_col3\" class=\"data row3 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row3_col4\" class=\"data row3 col4\" ></td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row4\" class=\"row_heading level0 row4\" >4</th>\n",
       "                        <td id=\"T_17c29_row4_col0\" class=\"data row4 col0\" >(Carbon1&!Tc1)|(Carbon1&!Tc2)</td>\n",
       "                        <td id=\"T_17c29_row4_col1\" class=\"data row4 col1\" >!Oxygen</td>\n",
       "                        <td id=\"T_17c29_row4_col2\" class=\"data row4 col2\" >!RPO2</td>\n",
       "                        <td id=\"T_17c29_row4_col3\" class=\"data row4 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row4_col4\" class=\"data row4 col4\" >RPcl</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row5\" class=\"row_heading level0 row5\" >5</th>\n",
       "                        <td id=\"T_17c29_row5_col0\" class=\"data row5 col0\" >(Carbon1&!Tc1)|(Carbon1&!Tc2)</td>\n",
       "                        <td id=\"T_17c29_row5_col1\" class=\"data row5 col1\" >!Oxygen&!Rres</td>\n",
       "                        <td id=\"T_17c29_row5_col2\" class=\"data row5 col2\" ></td>\n",
       "                        <td id=\"T_17c29_row5_col3\" class=\"data row5 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row5_col4\" class=\"data row5 col4\" ></td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row6\" class=\"row_heading level0 row6\" >6</th>\n",
       "                        <td id=\"T_17c29_row6_col0\" class=\"data row6 col0\" >(Carbon1&!Tc1)|(Carbon1&!Tc2)</td>\n",
       "                        <td id=\"T_17c29_row6_col1\" class=\"data row6 col1\" >!Oxygen&!Rres</td>\n",
       "                        <td id=\"T_17c29_row6_col2\" class=\"data row6 col2\" ></td>\n",
       "                        <td id=\"T_17c29_row6_col3\" class=\"data row6 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row6_col4\" class=\"data row6 col4\" >RPcl</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row7\" class=\"row_heading level0 row7\" >7</th>\n",
       "                        <td id=\"T_17c29_row7_col0\" class=\"data row7 col0\" >(Carbon1&!Tc1)|(Carbon1&!Tc2)</td>\n",
       "                        <td id=\"T_17c29_row7_col1\" class=\"data row7 col1\" >!Oxygen&!Rres</td>\n",
       "                        <td id=\"T_17c29_row7_col2\" class=\"data row7 col2\" >!RPO2</td>\n",
       "                        <td id=\"T_17c29_row7_col3\" class=\"data row7 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row7_col4\" class=\"data row7 col4\" ></td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row8\" class=\"row_heading level0 row8\" >8</th>\n",
       "                        <td id=\"T_17c29_row8_col0\" class=\"data row8 col0\" >(Carbon1&!Tc1)|(Carbon1&!Tc2)</td>\n",
       "                        <td id=\"T_17c29_row8_col1\" class=\"data row8 col1\" >!Oxygen&!Rres</td>\n",
       "                        <td id=\"T_17c29_row8_col2\" class=\"data row8 col2\" >!RPO2</td>\n",
       "                        <td id=\"T_17c29_row8_col3\" class=\"data row8 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row8_col4\" class=\"data row8 col4\" >RPcl</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row9\" class=\"row_heading level0 row9\" >9</th>\n",
       "                        <td id=\"T_17c29_row9_col0\" class=\"data row9 col0\" >Carbon1</td>\n",
       "                        <td id=\"T_17c29_row9_col1\" class=\"data row9 col1\" >!Oxygen</td>\n",
       "                        <td id=\"T_17c29_row9_col2\" class=\"data row9 col2\" ></td>\n",
       "                        <td id=\"T_17c29_row9_col3\" class=\"data row9 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row9_col4\" class=\"data row9 col4\" ></td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row10\" class=\"row_heading level0 row10\" >10</th>\n",
       "                        <td id=\"T_17c29_row10_col0\" class=\"data row10 col0\" >Carbon1</td>\n",
       "                        <td id=\"T_17c29_row10_col1\" class=\"data row10 col1\" >!Oxygen</td>\n",
       "                        <td id=\"T_17c29_row10_col2\" class=\"data row10 col2\" ></td>\n",
       "                        <td id=\"T_17c29_row10_col3\" class=\"data row10 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row10_col4\" class=\"data row10 col4\" >RPcl</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row11\" class=\"row_heading level0 row11\" >11</th>\n",
       "                        <td id=\"T_17c29_row11_col0\" class=\"data row11 col0\" >Carbon1</td>\n",
       "                        <td id=\"T_17c29_row11_col1\" class=\"data row11 col1\" >!Oxygen</td>\n",
       "                        <td id=\"T_17c29_row11_col2\" class=\"data row11 col2\" >!RPO2</td>\n",
       "                        <td id=\"T_17c29_row11_col3\" class=\"data row11 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row11_col4\" class=\"data row11 col4\" ></td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row12\" class=\"row_heading level0 row12\" >12</th>\n",
       "                        <td id=\"T_17c29_row12_col0\" class=\"data row12 col0\" >Carbon1</td>\n",
       "                        <td id=\"T_17c29_row12_col1\" class=\"data row12 col1\" >!Oxygen</td>\n",
       "                        <td id=\"T_17c29_row12_col2\" class=\"data row12 col2\" >!RPO2</td>\n",
       "                        <td id=\"T_17c29_row12_col3\" class=\"data row12 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row12_col4\" class=\"data row12 col4\" >RPcl</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row13\" class=\"row_heading level0 row13\" >13</th>\n",
       "                        <td id=\"T_17c29_row13_col0\" class=\"data row13 col0\" >Carbon1</td>\n",
       "                        <td id=\"T_17c29_row13_col1\" class=\"data row13 col1\" >!Oxygen&!Rres</td>\n",
       "                        <td id=\"T_17c29_row13_col2\" class=\"data row13 col2\" ></td>\n",
       "                        <td id=\"T_17c29_row13_col3\" class=\"data row13 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row13_col4\" class=\"data row13 col4\" ></td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row14\" class=\"row_heading level0 row14\" >14</th>\n",
       "                        <td id=\"T_17c29_row14_col0\" class=\"data row14 col0\" >Carbon1</td>\n",
       "                        <td id=\"T_17c29_row14_col1\" class=\"data row14 col1\" >!Oxygen&!Rres</td>\n",
       "                        <td id=\"T_17c29_row14_col2\" class=\"data row14 col2\" ></td>\n",
       "                        <td id=\"T_17c29_row14_col3\" class=\"data row14 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row14_col4\" class=\"data row14 col4\" >RPcl</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row15\" class=\"row_heading level0 row15\" >15</th>\n",
       "                        <td id=\"T_17c29_row15_col0\" class=\"data row15 col0\" >Carbon1</td>\n",
       "                        <td id=\"T_17c29_row15_col1\" class=\"data row15 col1\" >!Oxygen&!Rres</td>\n",
       "                        <td id=\"T_17c29_row15_col2\" class=\"data row15 col2\" >!RPO2</td>\n",
       "                        <td id=\"T_17c29_row15_col3\" class=\"data row15 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row15_col4\" class=\"data row15 col4\" ></td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row16\" class=\"row_heading level0 row16\" >16</th>\n",
       "                        <td id=\"T_17c29_row16_col0\" class=\"data row16 col0\" >Carbon1</td>\n",
       "                        <td id=\"T_17c29_row16_col1\" class=\"data row16 col1\" >!Oxygen&!Rres</td>\n",
       "                        <td id=\"T_17c29_row16_col2\" class=\"data row16 col2\" >!RPO2</td>\n",
       "                        <td id=\"T_17c29_row16_col3\" class=\"data row16 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row16_col4\" class=\"data row16 col4\" >RPcl</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row17\" class=\"row_heading level0 row17\" >17</th>\n",
       "                        <td id=\"T_17c29_row17_col0\" class=\"data row17 col0\" >Carbon1&!Tc1</td>\n",
       "                        <td id=\"T_17c29_row17_col1\" class=\"data row17 col1\" >!Oxygen</td>\n",
       "                        <td id=\"T_17c29_row17_col2\" class=\"data row17 col2\" ></td>\n",
       "                        <td id=\"T_17c29_row17_col3\" class=\"data row17 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row17_col4\" class=\"data row17 col4\" ></td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row18\" class=\"row_heading level0 row18\" >18</th>\n",
       "                        <td id=\"T_17c29_row18_col0\" class=\"data row18 col0\" >Carbon1&!Tc1</td>\n",
       "                        <td id=\"T_17c29_row18_col1\" class=\"data row18 col1\" >!Oxygen</td>\n",
       "                        <td id=\"T_17c29_row18_col2\" class=\"data row18 col2\" ></td>\n",
       "                        <td id=\"T_17c29_row18_col3\" class=\"data row18 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row18_col4\" class=\"data row18 col4\" >RPcl</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row19\" class=\"row_heading level0 row19\" >19</th>\n",
       "                        <td id=\"T_17c29_row19_col0\" class=\"data row19 col0\" >Carbon1&!Tc1</td>\n",
       "                        <td id=\"T_17c29_row19_col1\" class=\"data row19 col1\" >!Oxygen</td>\n",
       "                        <td id=\"T_17c29_row19_col2\" class=\"data row19 col2\" >!RPO2</td>\n",
       "                        <td id=\"T_17c29_row19_col3\" class=\"data row19 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row19_col4\" class=\"data row19 col4\" ></td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row20\" class=\"row_heading level0 row20\" >20</th>\n",
       "                        <td id=\"T_17c29_row20_col0\" class=\"data row20 col0\" >Carbon1&!Tc1</td>\n",
       "                        <td id=\"T_17c29_row20_col1\" class=\"data row20 col1\" >!Oxygen</td>\n",
       "                        <td id=\"T_17c29_row20_col2\" class=\"data row20 col2\" >!RPO2</td>\n",
       "                        <td id=\"T_17c29_row20_col3\" class=\"data row20 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row20_col4\" class=\"data row20 col4\" >RPcl</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row21\" class=\"row_heading level0 row21\" >21</th>\n",
       "                        <td id=\"T_17c29_row21_col0\" class=\"data row21 col0\" >Carbon1&!Tc1</td>\n",
       "                        <td id=\"T_17c29_row21_col1\" class=\"data row21 col1\" >!Oxygen&!Rres</td>\n",
       "                        <td id=\"T_17c29_row21_col2\" class=\"data row21 col2\" ></td>\n",
       "                        <td id=\"T_17c29_row21_col3\" class=\"data row21 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row21_col4\" class=\"data row21 col4\" ></td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row22\" class=\"row_heading level0 row22\" >22</th>\n",
       "                        <td id=\"T_17c29_row22_col0\" class=\"data row22 col0\" >Carbon1&!Tc1</td>\n",
       "                        <td id=\"T_17c29_row22_col1\" class=\"data row22 col1\" >!Oxygen&!Rres</td>\n",
       "                        <td id=\"T_17c29_row22_col2\" class=\"data row22 col2\" ></td>\n",
       "                        <td id=\"T_17c29_row22_col3\" class=\"data row22 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row22_col4\" class=\"data row22 col4\" >RPcl</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row23\" class=\"row_heading level0 row23\" >23</th>\n",
       "                        <td id=\"T_17c29_row23_col0\" class=\"data row23 col0\" >Carbon1&!Tc1</td>\n",
       "                        <td id=\"T_17c29_row23_col1\" class=\"data row23 col1\" >!Oxygen&!Rres</td>\n",
       "                        <td id=\"T_17c29_row23_col2\" class=\"data row23 col2\" >!RPO2</td>\n",
       "                        <td id=\"T_17c29_row23_col3\" class=\"data row23 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row23_col4\" class=\"data row23 col4\" ></td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row24\" class=\"row_heading level0 row24\" >24</th>\n",
       "                        <td id=\"T_17c29_row24_col0\" class=\"data row24 col0\" >Carbon1&!Tc1</td>\n",
       "                        <td id=\"T_17c29_row24_col1\" class=\"data row24 col1\" >!Oxygen&!Rres</td>\n",
       "                        <td id=\"T_17c29_row24_col2\" class=\"data row24 col2\" >!RPO2</td>\n",
       "                        <td id=\"T_17c29_row24_col3\" class=\"data row24 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row24_col4\" class=\"data row24 col4\" >RPcl</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row25\" class=\"row_heading level0 row25\" >25</th>\n",
       "                        <td id=\"T_17c29_row25_col0\" class=\"data row25 col0\" >Carbon1&!Tc1&!Tc2</td>\n",
       "                        <td id=\"T_17c29_row25_col1\" class=\"data row25 col1\" >!Oxygen</td>\n",
       "                        <td id=\"T_17c29_row25_col2\" class=\"data row25 col2\" ></td>\n",
       "                        <td id=\"T_17c29_row25_col3\" class=\"data row25 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row25_col4\" class=\"data row25 col4\" ></td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row26\" class=\"row_heading level0 row26\" >26</th>\n",
       "                        <td id=\"T_17c29_row26_col0\" class=\"data row26 col0\" >Carbon1&!Tc1&!Tc2</td>\n",
       "                        <td id=\"T_17c29_row26_col1\" class=\"data row26 col1\" >!Oxygen</td>\n",
       "                        <td id=\"T_17c29_row26_col2\" class=\"data row26 col2\" ></td>\n",
       "                        <td id=\"T_17c29_row26_col3\" class=\"data row26 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row26_col4\" class=\"data row26 col4\" >RPcl</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row27\" class=\"row_heading level0 row27\" >27</th>\n",
       "                        <td id=\"T_17c29_row27_col0\" class=\"data row27 col0\" >Carbon1&!Tc1&!Tc2</td>\n",
       "                        <td id=\"T_17c29_row27_col1\" class=\"data row27 col1\" >!Oxygen</td>\n",
       "                        <td id=\"T_17c29_row27_col2\" class=\"data row27 col2\" >!RPO2</td>\n",
       "                        <td id=\"T_17c29_row27_col3\" class=\"data row27 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row27_col4\" class=\"data row27 col4\" ></td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row28\" class=\"row_heading level0 row28\" >28</th>\n",
       "                        <td id=\"T_17c29_row28_col0\" class=\"data row28 col0\" >Carbon1&!Tc1&!Tc2</td>\n",
       "                        <td id=\"T_17c29_row28_col1\" class=\"data row28 col1\" >!Oxygen</td>\n",
       "                        <td id=\"T_17c29_row28_col2\" class=\"data row28 col2\" >!RPO2</td>\n",
       "                        <td id=\"T_17c29_row28_col3\" class=\"data row28 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row28_col4\" class=\"data row28 col4\" >RPcl</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row29\" class=\"row_heading level0 row29\" >29</th>\n",
       "                        <td id=\"T_17c29_row29_col0\" class=\"data row29 col0\" >Carbon1&!Tc1&!Tc2</td>\n",
       "                        <td id=\"T_17c29_row29_col1\" class=\"data row29 col1\" >!Oxygen&!Rres</td>\n",
       "                        <td id=\"T_17c29_row29_col2\" class=\"data row29 col2\" ></td>\n",
       "                        <td id=\"T_17c29_row29_col3\" class=\"data row29 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row29_col4\" class=\"data row29 col4\" ></td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row30\" class=\"row_heading level0 row30\" >30</th>\n",
       "                        <td id=\"T_17c29_row30_col0\" class=\"data row30 col0\" >Carbon1&!Tc1&!Tc2</td>\n",
       "                        <td id=\"T_17c29_row30_col1\" class=\"data row30 col1\" >!Oxygen&!Rres</td>\n",
       "                        <td id=\"T_17c29_row30_col2\" class=\"data row30 col2\" ></td>\n",
       "                        <td id=\"T_17c29_row30_col3\" class=\"data row30 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row30_col4\" class=\"data row30 col4\" >RPcl</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row31\" class=\"row_heading level0 row31\" >31</th>\n",
       "                        <td id=\"T_17c29_row31_col0\" class=\"data row31 col0\" >Carbon1&!Tc1&!Tc2</td>\n",
       "                        <td id=\"T_17c29_row31_col1\" class=\"data row31 col1\" >!Oxygen&!Rres</td>\n",
       "                        <td id=\"T_17c29_row31_col2\" class=\"data row31 col2\" >!RPO2</td>\n",
       "                        <td id=\"T_17c29_row31_col3\" class=\"data row31 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row31_col4\" class=\"data row31 col4\" ></td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row32\" class=\"row_heading level0 row32\" >32</th>\n",
       "                        <td id=\"T_17c29_row32_col0\" class=\"data row32 col0\" >Carbon1&!Tc1&!Tc2</td>\n",
       "                        <td id=\"T_17c29_row32_col1\" class=\"data row32 col1\" >!Oxygen&!Rres</td>\n",
       "                        <td id=\"T_17c29_row32_col2\" class=\"data row32 col2\" >!RPO2</td>\n",
       "                        <td id=\"T_17c29_row32_col3\" class=\"data row32 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row32_col4\" class=\"data row32 col4\" >RPcl</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row33\" class=\"row_heading level0 row33\" >33</th>\n",
       "                        <td id=\"T_17c29_row33_col0\" class=\"data row33 col0\" >Carbon1&!Tc2</td>\n",
       "                        <td id=\"T_17c29_row33_col1\" class=\"data row33 col1\" >!Oxygen</td>\n",
       "                        <td id=\"T_17c29_row33_col2\" class=\"data row33 col2\" ></td>\n",
       "                        <td id=\"T_17c29_row33_col3\" class=\"data row33 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row33_col4\" class=\"data row33 col4\" ></td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row34\" class=\"row_heading level0 row34\" >34</th>\n",
       "                        <td id=\"T_17c29_row34_col0\" class=\"data row34 col0\" >Carbon1&!Tc2</td>\n",
       "                        <td id=\"T_17c29_row34_col1\" class=\"data row34 col1\" >!Oxygen</td>\n",
       "                        <td id=\"T_17c29_row34_col2\" class=\"data row34 col2\" ></td>\n",
       "                        <td id=\"T_17c29_row34_col3\" class=\"data row34 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row34_col4\" class=\"data row34 col4\" >RPcl</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row35\" class=\"row_heading level0 row35\" >35</th>\n",
       "                        <td id=\"T_17c29_row35_col0\" class=\"data row35 col0\" >Carbon1&!Tc2</td>\n",
       "                        <td id=\"T_17c29_row35_col1\" class=\"data row35 col1\" >!Oxygen</td>\n",
       "                        <td id=\"T_17c29_row35_col2\" class=\"data row35 col2\" >!RPO2</td>\n",
       "                        <td id=\"T_17c29_row35_col3\" class=\"data row35 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row35_col4\" class=\"data row35 col4\" ></td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row36\" class=\"row_heading level0 row36\" >36</th>\n",
       "                        <td id=\"T_17c29_row36_col0\" class=\"data row36 col0\" >Carbon1&!Tc2</td>\n",
       "                        <td id=\"T_17c29_row36_col1\" class=\"data row36 col1\" >!Oxygen</td>\n",
       "                        <td id=\"T_17c29_row36_col2\" class=\"data row36 col2\" >!RPO2</td>\n",
       "                        <td id=\"T_17c29_row36_col3\" class=\"data row36 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row36_col4\" class=\"data row36 col4\" >RPcl</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row37\" class=\"row_heading level0 row37\" >37</th>\n",
       "                        <td id=\"T_17c29_row37_col0\" class=\"data row37 col0\" >Carbon1&!Tc2</td>\n",
       "                        <td id=\"T_17c29_row37_col1\" class=\"data row37 col1\" >!Oxygen&!Rres</td>\n",
       "                        <td id=\"T_17c29_row37_col2\" class=\"data row37 col2\" ></td>\n",
       "                        <td id=\"T_17c29_row37_col3\" class=\"data row37 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row37_col4\" class=\"data row37 col4\" ></td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row38\" class=\"row_heading level0 row38\" >38</th>\n",
       "                        <td id=\"T_17c29_row38_col0\" class=\"data row38 col0\" >Carbon1&!Tc2</td>\n",
       "                        <td id=\"T_17c29_row38_col1\" class=\"data row38 col1\" >!Oxygen&!Rres</td>\n",
       "                        <td id=\"T_17c29_row38_col2\" class=\"data row38 col2\" ></td>\n",
       "                        <td id=\"T_17c29_row38_col3\" class=\"data row38 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row38_col4\" class=\"data row38 col4\" >RPcl</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row39\" class=\"row_heading level0 row39\" >39</th>\n",
       "                        <td id=\"T_17c29_row39_col0\" class=\"data row39 col0\" >Carbon1&!Tc2</td>\n",
       "                        <td id=\"T_17c29_row39_col1\" class=\"data row39 col1\" >!Oxygen&!Rres</td>\n",
       "                        <td id=\"T_17c29_row39_col2\" class=\"data row39 col2\" >!RPO2</td>\n",
       "                        <td id=\"T_17c29_row39_col3\" class=\"data row39 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row39_col4\" class=\"data row39 col4\" ></td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_17c29_level0_row40\" class=\"row_heading level0 row40\" >40</th>\n",
       "                        <td id=\"T_17c29_row40_col0\" class=\"data row40 col0\" >Carbon1&!Tc2</td>\n",
       "                        <td id=\"T_17c29_row40_col1\" class=\"data row40 col1\" >!Oxygen&!Rres</td>\n",
       "                        <td id=\"T_17c29_row40_col2\" class=\"data row40 col2\" >!RPO2</td>\n",
       "                        <td id=\"T_17c29_row40_col3\" class=\"data row40 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_17c29_row40_col4\" class=\"data row40 col4\" >RPcl</td>\n",
       "            </tr>\n",
       "    </tbody></table>"
      ],
      "text/plain": [
       "<pandas.io.formats.style.Styler at 0x7efc3bad64f0>"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cols = [k for k in pkn if k not in inputs]\n",
    "\n",
    "# sort solutions\n",
    "def repr_bn(f):\n",
    "    r = [str(f[k]) if k in f else '' for k in cols]\n",
    "    return r\n",
    "out = pd.DataFrame([bn] + list(sorted(results, key=repr_bn)), columns=cols).fillna('')\n",
    "\n",
    "pretty_df(out)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "It is possible to summarize the local function admissible for each node. Thus, a local function $f_i$ is admissible for a node $i$ if and only if the node $i$ has the local function $f_i$ in at least one admissible model.\n",
    "\n",
    "The table summarizing these admissible local functions for each node is shown below."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:14.883891Z",
     "iopub.status.busy": "2021-06-12T14:12:14.883464Z",
     "iopub.status.idle": "2021-06-12T14:12:14.988026Z",
     "shell.execute_reply": "2021-06-12T14:12:14.987568Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Grounding...done in 0.0s\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<style  type=\"text/css\" >\n",
       "    #T_cc955_ .row0 {\n",
       "          background-color: darkred;\n",
       "    }#T_cc955_row1_col0,#T_cc955_row1_col1,#T_cc955_row1_col3,#T_cc955_row1_col5,#T_cc955_row1_col6,#T_cc955_row2_col0,#T_cc955_row2_col2,#T_cc955_row2_col3,#T_cc955_row2_col4,#T_cc955_row2_col7,#T_cc955_row3_col0,#T_cc955_row3_col2,#T_cc955_row3_col3,#T_cc955_row3_col7,#T_cc955_row4_col0,#T_cc955_row4_col2,#T_cc955_row4_col3,#T_cc955_row4_col7,#T_cc955_row5_col0,#T_cc955_row5_col2,#T_cc955_row5_col3,#T_cc955_row5_col7{\n",
       "            color:  green;\n",
       "        }</style><table id=\"T_cc955_\" ><thead>    <tr>        <th class=\"blank level0\" ></th>        <th class=\"col_heading level0 col0\" >Carbon1</th>        <th class=\"col_heading level0 col1\" >RPcl</th>        <th class=\"col_heading level0 col2\" >Carbon2</th>        <th class=\"col_heading level0 col3\" >Oxygen</th>        <th class=\"col_heading level0 col4\" >RPO2</th>        <th class=\"col_heading level0 col5\" >Rres</th>        <th class=\"col_heading level0 col6\" >Tc2</th>        <th class=\"col_heading level0 col7\" >Tc1</th>    </tr></thead><tbody>\n",
       "                <tr>\n",
       "                        <th id=\"T_cc955_level0_row0\" class=\"row_heading level0 row0\" >0</th>\n",
       "                        <td id=\"T_cc955_row0_col0\" class=\"data row0 col0\" >0</td>\n",
       "                        <td id=\"T_cc955_row0_col1\" class=\"data row0 col1\" >Carbon1</td>\n",
       "                        <td id=\"T_cc955_row0_col2\" class=\"data row0 col2\" >0</td>\n",
       "                        <td id=\"T_cc955_row0_col3\" class=\"data row0 col3\" >0</td>\n",
       "                        <td id=\"T_cc955_row0_col4\" class=\"data row0 col4\" >!Oxygen</td>\n",
       "                        <td id=\"T_cc955_row0_col5\" class=\"data row0 col5\" >!RPO2</td>\n",
       "                        <td id=\"T_cc955_row0_col6\" class=\"data row0 col6\" >!RPcl</td>\n",
       "                        <td id=\"T_cc955_row0_col7\" class=\"data row0 col7\" >0</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_cc955_level0_row1\" class=\"row_heading level0 row1\" >1</th>\n",
       "                        <td id=\"T_cc955_row1_col0\" class=\"data row1 col0\" >0</td>\n",
       "                        <td id=\"T_cc955_row1_col1\" class=\"data row1 col1\" >Carbon1</td>\n",
       "                        <td id=\"T_cc955_row1_col2\" class=\"data row1 col2\" >0</td>\n",
       "                        <td id=\"T_cc955_row1_col3\" class=\"data row1 col3\" >0</td>\n",
       "                        <td id=\"T_cc955_row1_col4\" class=\"data row1 col4\" >!Oxygen&!Rres</td>\n",
       "                        <td id=\"T_cc955_row1_col5\" class=\"data row1 col5\" >!RPO2</td>\n",
       "                        <td id=\"T_cc955_row1_col6\" class=\"data row1 col6\" >!RPcl</td>\n",
       "                        <td id=\"T_cc955_row1_col7\" class=\"data row1 col7\" >RPcl</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_cc955_level0_row2\" class=\"row_heading level0 row2\" >2</th>\n",
       "                        <td id=\"T_cc955_row2_col0\" class=\"data row2 col0\" ></td>\n",
       "                        <td id=\"T_cc955_row2_col1\" class=\"data row2 col1\" >Carbon1&!Tc2</td>\n",
       "                        <td id=\"T_cc955_row2_col2\" class=\"data row2 col2\" ></td>\n",
       "                        <td id=\"T_cc955_row2_col3\" class=\"data row2 col3\" ></td>\n",
       "                        <td id=\"T_cc955_row2_col4\" class=\"data row2 col4\" >!Oxygen</td>\n",
       "                        <td id=\"T_cc955_row2_col5\" class=\"data row2 col5\" ></td>\n",
       "                        <td id=\"T_cc955_row2_col6\" class=\"data row2 col6\" ></td>\n",
       "                        <td id=\"T_cc955_row2_col7\" class=\"data row2 col7\" ></td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_cc955_level0_row3\" class=\"row_heading level0 row3\" >3</th>\n",
       "                        <td id=\"T_cc955_row3_col0\" class=\"data row3 col0\" ></td>\n",
       "                        <td id=\"T_cc955_row3_col1\" class=\"data row3 col1\" >Carbon1&!Tc1&!Tc2</td>\n",
       "                        <td id=\"T_cc955_row3_col2\" class=\"data row3 col2\" ></td>\n",
       "                        <td id=\"T_cc955_row3_col3\" class=\"data row3 col3\" ></td>\n",
       "                        <td id=\"T_cc955_row3_col4\" class=\"data row3 col4\" ></td>\n",
       "                        <td id=\"T_cc955_row3_col5\" class=\"data row3 col5\" ></td>\n",
       "                        <td id=\"T_cc955_row3_col6\" class=\"data row3 col6\" ></td>\n",
       "                        <td id=\"T_cc955_row3_col7\" class=\"data row3 col7\" ></td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_cc955_level0_row4\" class=\"row_heading level0 row4\" >4</th>\n",
       "                        <td id=\"T_cc955_row4_col0\" class=\"data row4 col0\" ></td>\n",
       "                        <td id=\"T_cc955_row4_col1\" class=\"data row4 col1\" >Carbon1&!Tc1</td>\n",
       "                        <td id=\"T_cc955_row4_col2\" class=\"data row4 col2\" ></td>\n",
       "                        <td id=\"T_cc955_row4_col3\" class=\"data row4 col3\" ></td>\n",
       "                        <td id=\"T_cc955_row4_col4\" class=\"data row4 col4\" ></td>\n",
       "                        <td id=\"T_cc955_row4_col5\" class=\"data row4 col5\" ></td>\n",
       "                        <td id=\"T_cc955_row4_col6\" class=\"data row4 col6\" ></td>\n",
       "                        <td id=\"T_cc955_row4_col7\" class=\"data row4 col7\" ></td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_cc955_level0_row5\" class=\"row_heading level0 row5\" >5</th>\n",
       "                        <td id=\"T_cc955_row5_col0\" class=\"data row5 col0\" ></td>\n",
       "                        <td id=\"T_cc955_row5_col1\" class=\"data row5 col1\" >(Carbon1&!Tc1)|(Carbon1&!Tc2)</td>\n",
       "                        <td id=\"T_cc955_row5_col2\" class=\"data row5 col2\" ></td>\n",
       "                        <td id=\"T_cc955_row5_col3\" class=\"data row5 col3\" ></td>\n",
       "                        <td id=\"T_cc955_row5_col4\" class=\"data row5 col4\" ></td>\n",
       "                        <td id=\"T_cc955_row5_col5\" class=\"data row5 col5\" ></td>\n",
       "                        <td id=\"T_cc955_row5_col6\" class=\"data row5 col6\" ></td>\n",
       "                        <td id=\"T_cc955_row5_col7\" class=\"data row5 col7\" ></td>\n",
       "            </tr>\n",
       "    </tbody></table>"
      ],
      "text/plain": [
       "<pandas.io.formats.style.Styler at 0x7efc3bb72370>"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pernode = bo.local_functions(skip_empty=True)\n",
    "p = pernode.as_dict()\n",
    "\n",
    "assert(False not in [f in p[k] for k, f in bn.items() if f != False])\n",
    "\n",
    "q = {k: [bn[k] if k in bn else 0]+fs for k,fs in p.items()}\n",
    "out = pd.DataFrame.from_dict(q, orient='index').fillna('').T\n",
    "\n",
    "pretty_df(out)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Subset minimal models\n",
    "\n",
    "Solve the infering problem with *clingo*. Here, the satisfiability constraints and the subset minimal constraint are considered."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:14.991243Z",
     "iopub.status.busy": "2021-06-12T14:12:14.990813Z",
     "iopub.status.idle": "2021-06-12T14:12:15.066682Z",
     "shell.execute_reply": "2021-06-12T14:12:15.066123Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Grounding...done in 0.0s\n",
      "CPU times: user 106 ms, sys: 7.37 ms, total: 113 ms\n",
      "Wall time: 71.5 ms\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%time results = list(bo.boolean_networks(solutions='subset-minimal'))\n",
    "len(results)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Display the set of all the admissible subset minimal models."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:15.079239Z",
     "iopub.status.busy": "2021-06-12T14:12:15.078767Z",
     "iopub.status.idle": "2021-06-12T14:12:15.081363Z",
     "shell.execute_reply": "2021-06-12T14:12:15.080913Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style  type=\"text/css\" >\n",
       "    #T_fab39_ .row0 {\n",
       "          background-color: darkred;\n",
       "    }#T_fab39_row1_col0,#T_fab39_row1_col1,#T_fab39_row1_col3,#T_fab39_row1_col4{\n",
       "            color:  green;\n",
       "        }</style><table id=\"T_fab39_\" ><thead>    <tr>        <th class=\"blank level0\" ></th>        <th class=\"col_heading level0 col0\" >RPcl</th>        <th class=\"col_heading level0 col1\" >RPO2</th>        <th class=\"col_heading level0 col2\" >Rres</th>        <th class=\"col_heading level0 col3\" >Tc2</th>        <th class=\"col_heading level0 col4\" >Tc1</th>    </tr></thead><tbody>\n",
       "                <tr>\n",
       "                        <th id=\"T_fab39_level0_row0\" class=\"row_heading level0 row0\" >0</th>\n",
       "                        <td id=\"T_fab39_row0_col0\" class=\"data row0 col0\" >Carbon1</td>\n",
       "                        <td id=\"T_fab39_row0_col1\" class=\"data row0 col1\" >!Oxygen</td>\n",
       "                        <td id=\"T_fab39_row0_col2\" class=\"data row0 col2\" >!RPO2</td>\n",
       "                        <td id=\"T_fab39_row0_col3\" class=\"data row0 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_fab39_row0_col4\" class=\"data row0 col4\" ></td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_fab39_level0_row1\" class=\"row_heading level0 row1\" >1</th>\n",
       "                        <td id=\"T_fab39_row1_col0\" class=\"data row1 col0\" >Carbon1</td>\n",
       "                        <td id=\"T_fab39_row1_col1\" class=\"data row1 col1\" >!Oxygen</td>\n",
       "                        <td id=\"T_fab39_row1_col2\" class=\"data row1 col2\" ></td>\n",
       "                        <td id=\"T_fab39_row1_col3\" class=\"data row1 col3\" >!RPcl</td>\n",
       "                        <td id=\"T_fab39_row1_col4\" class=\"data row1 col4\" ></td>\n",
       "            </tr>\n",
       "    </tbody></table>"
      ],
      "text/plain": [
       "<pandas.io.formats.style.Styler at 0x7efc3bad68e0>"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cols = [k for k in pkn if k not in inputs]\n",
    "\n",
    "# sort solutions\n",
    "def repr_bn(f):\n",
    "    r = [str(f[k]) if k in f else '' for k in cols]\n",
    "    return r\n",
    "out = pd.DataFrame([bn] + list(sorted(results, key=repr_bn)), columns=cols).fillna('')\n",
    "\n",
    "pretty_df(out)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The table summarizing the admissible local functions for each node is shown below. It considers the subset minimal constraint."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-12T14:12:15.085466Z",
     "iopub.status.busy": "2021-06-12T14:12:15.085044Z",
     "iopub.status.idle": "2021-06-12T14:12:15.196012Z",
     "shell.execute_reply": "2021-06-12T14:12:15.195621Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Grounding...done in 0.0s\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<style  type=\"text/css\" >\n",
       "    #T_4c2f8_ .row0 {\n",
       "          background-color: darkred;\n",
       "    }#T_4c2f8_row1_col0,#T_4c2f8_row1_col1,#T_4c2f8_row1_col3,#T_4c2f8_row1_col4,#T_4c2f8_row1_col5,#T_4c2f8_row1_col6{\n",
       "            color:  green;\n",
       "        }</style><table id=\"T_4c2f8_\" ><thead>    <tr>        <th class=\"blank level0\" ></th>        <th class=\"col_heading level0 col0\" >Carbon1</th>        <th class=\"col_heading level0 col1\" >RPcl</th>        <th class=\"col_heading level0 col2\" >Carbon2</th>        <th class=\"col_heading level0 col3\" >Oxygen</th>        <th class=\"col_heading level0 col4\" >RPO2</th>        <th class=\"col_heading level0 col5\" >Rres</th>        <th class=\"col_heading level0 col6\" >Tc2</th>        <th class=\"col_heading level0 col7\" >Tc1</th>    </tr></thead><tbody>\n",
       "                <tr>\n",
       "                        <th id=\"T_4c2f8_level0_row0\" class=\"row_heading level0 row0\" >0</th>\n",
       "                        <td id=\"T_4c2f8_row0_col0\" class=\"data row0 col0\" >0</td>\n",
       "                        <td id=\"T_4c2f8_row0_col1\" class=\"data row0 col1\" >Carbon1</td>\n",
       "                        <td id=\"T_4c2f8_row0_col2\" class=\"data row0 col2\" >0</td>\n",
       "                        <td id=\"T_4c2f8_row0_col3\" class=\"data row0 col3\" >0</td>\n",
       "                        <td id=\"T_4c2f8_row0_col4\" class=\"data row0 col4\" >!Oxygen</td>\n",
       "                        <td id=\"T_4c2f8_row0_col5\" class=\"data row0 col5\" >!RPO2</td>\n",
       "                        <td id=\"T_4c2f8_row0_col6\" class=\"data row0 col6\" >!RPcl</td>\n",
       "                        <td id=\"T_4c2f8_row0_col7\" class=\"data row0 col7\" >0</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_4c2f8_level0_row1\" class=\"row_heading level0 row1\" >1</th>\n",
       "                        <td id=\"T_4c2f8_row1_col0\" class=\"data row1 col0\" >0</td>\n",
       "                        <td id=\"T_4c2f8_row1_col1\" class=\"data row1 col1\" >Carbon1</td>\n",
       "                        <td id=\"T_4c2f8_row1_col2\" class=\"data row1 col2\" >0</td>\n",
       "                        <td id=\"T_4c2f8_row1_col3\" class=\"data row1 col3\" >0</td>\n",
       "                        <td id=\"T_4c2f8_row1_col4\" class=\"data row1 col4\" >!Oxygen</td>\n",
       "                        <td id=\"T_4c2f8_row1_col5\" class=\"data row1 col5\" >!RPO2</td>\n",
       "                        <td id=\"T_4c2f8_row1_col6\" class=\"data row1 col6\" >!RPcl</td>\n",
       "                        <td id=\"T_4c2f8_row1_col7\" class=\"data row1 col7\" >RPcl</td>\n",
       "            </tr>\n",
       "    </tbody></table>"
      ],
      "text/plain": [
       "<pandas.io.formats.style.Styler at 0x7efc4515aa90>"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pernode = bo.local_functions(solutions='subset-minimal', skip_empty=True)\n",
    "p = pernode.as_dict()\n",
    "\n",
    "assert(False not in [f in p[k] for k, f in bn.items() if f != False])\n",
    "\n",
    "q = {k: [bn[k] if k in bn else 0]+fs for k,fs in p.items()}\n",
    "out = pd.DataFrame.from_dict(q, orient='index').fillna('').T\n",
    "pretty_df(out)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "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.9.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
