{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Application of MPBNs to the Bladder Tumorigenesis model by Remy et al. 2015\n", "\n", "We use Most Permissive Boolean Networks to analyze *reachable* attractors in the logical model published in [(Remy et al., 2015)](https://doi.org/10.1158/0008-5472.CAN-15-0602), by reproducing part of the experiments performed in [Estimating Attractor Reachability in Asynchronous Logical Models (Mendes et al, 2018](https://doi.org/10.3389/fphys.2018.01161) (Table 3).\n", "\n", "Note that, currently, the `mpbn` tool does not provide quantification of the propensity of reachable attractors. However, it guarantees their exhaustive identification." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import biolqm\n", "import ginsim\n", "import mpbn\n", "from colomoto_jupyter import tabulate" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Model\n", "\n", "### Original multivalued model" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/markdown": [ "Downloading http://ginsim.org/sites/default/files/Bladder_Model.zginml" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lrg = ginsim.load(\"http://ginsim.org/sites/default/files/Bladder_Model.zginml\")\n", "ginsim.show(lrg)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We use `biolqm` to convert it to a pure Boolean model." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "35" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bn = biolqm.to_minibn(biolqm.booleanize(lrg.getModel()))\n", "mbn = mpbn.MPBooleanNetwork(bn)\n", "len(mbn) # display number of components" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['DNAdamage', 'EGFR_stimulus', 'FGFR3_stimulus', 'GrowthInhibitors']" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "inputs = bn.inputs()\n", "inputs" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "outputs = [\"Apoptosis_b1\", \"Growth_Arrest\", \"Proliferation\"]\n", "non_outputs = [n for n in bn if n not in outputs]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Attractors\n", "\n", "We first compute the full list of attractors of the Most Permissive semantics.\n", "We recover exactly the same number as reported in the original publication." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 6.12 ms, sys: 1.01 ms, total: 7.14 ms\n", "Wall time: 6.82 ms\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AKTATM_b1ATM_b2Apoptosis_b1Apoptosis_b2CDC25ACHEK1_2_b1CHEK1_2_b2CyclinACyclinD1CyclinE1DNAdamageE2F1_b1E2F1_b2E2F3_b1E2F3_b2EGFREGFR_stimulusFGFR3FGFR3_stimulusGRB2GrowthInhibitorsGrowth_ArrestMDM2PI3KPTENProliferationRASRB1RBL2SPRYTP53p14ARFp16INK4ap21CIP
000000000000000000000001000001100000
100000000000000000000011000000100011
200000000000000000000011000001100001
300000000000000000011011000011110001
400000000000000000111011000011110001
500000000000000100011011000010110011
600000000000000100111011000010110011
700000100101010100011010000110010110
800000100101010100111010000110010110
900000100111010100011000000110010100
1000000100111010100111000000110010100
1101010010000100000000001001001101001
1201010010000100000000011001000101011
1301010010000100000000011001001101001
1401010010000100000011001001011111001
1501010010000100000011011001011111001
1601010010000100000111001001011111001
1701010010000100000111011001011111001
180101001000010000*100*010010*11*1001
190101001000010000*100*110010*11*1001
2001010010000100100011011001010111011
2101010010000100100111011001010111011
2201010010000100*0*100*110010*01*1011
23*0000000000000*0*100*11**00*01*001*
24*0000*00***0*0*0*100*0***0*****0*00
\n", "
" ], "text/plain": [ " AKT ATM_b1 ATM_b2 Apoptosis_b1 Apoptosis_b2 CDC25A CHEK1_2_b1 \\\n", "0 0 0 0 0 0 0 0 \n", "1 0 0 0 0 0 0 0 \n", "2 0 0 0 0 0 0 0 \n", "3 0 0 0 0 0 0 0 \n", "4 0 0 0 0 0 0 0 \n", "5 0 0 0 0 0 0 0 \n", "6 0 0 0 0 0 0 0 \n", "7 0 0 0 0 0 1 0 \n", "8 0 0 0 0 0 1 0 \n", "9 0 0 0 0 0 1 0 \n", "10 0 0 0 0 0 1 0 \n", "11 0 1 0 1 0 0 1 \n", "12 0 1 0 1 0 0 1 \n", "13 0 1 0 1 0 0 1 \n", "14 0 1 0 1 0 0 1 \n", "15 0 1 0 1 0 0 1 \n", "16 0 1 0 1 0 0 1 \n", "17 0 1 0 1 0 0 1 \n", "18 0 1 0 1 0 0 1 \n", "19 0 1 0 1 0 0 1 \n", "20 0 1 0 1 0 0 1 \n", "21 0 1 0 1 0 0 1 \n", "22 0 1 0 1 0 0 1 \n", "23 * 0 0 0 0 0 0 \n", "24 * 0 0 0 0 * 0 \n", "\n", " CHEK1_2_b2 CyclinA CyclinD1 CyclinE1 DNAdamage E2F1_b1 E2F1_b2 E2F3_b1 \\\n", "0 0 0 0 0 0 0 0 0 \n", "1 0 0 0 0 0 0 0 0 \n", "2 0 0 0 0 0 0 0 0 \n", "3 0 0 0 0 0 0 0 0 \n", "4 0 0 0 0 0 0 0 0 \n", "5 0 0 0 0 0 0 0 1 \n", "6 0 0 0 0 0 0 0 1 \n", "7 0 1 0 1 0 1 0 1 \n", "8 0 1 0 1 0 1 0 1 \n", "9 0 1 1 1 0 1 0 1 \n", "10 0 1 1 1 0 1 0 1 \n", "11 0 0 0 0 1 0 0 0 \n", "12 0 0 0 0 1 0 0 0 \n", "13 0 0 0 0 1 0 0 0 \n", "14 0 0 0 0 1 0 0 0 \n", "15 0 0 0 0 1 0 0 0 \n", "16 0 0 0 0 1 0 0 0 \n", "17 0 0 0 0 1 0 0 0 \n", "18 0 0 0 0 1 0 0 0 \n", "19 0 0 0 0 1 0 0 0 \n", "20 0 0 0 0 1 0 0 1 \n", "21 0 0 0 0 1 0 0 1 \n", "22 0 0 0 0 1 0 0 * \n", "23 0 0 0 0 0 0 0 * \n", "24 0 * * * 0 * 0 * \n", "\n", " E2F3_b2 EGFR EGFR_stimulus FGFR3 FGFR3_stimulus GRB2 GrowthInhibitors \\\n", "0 0 0 0 0 0 0 0 \n", "1 0 0 0 0 0 0 1 \n", "2 0 0 0 0 0 0 1 \n", "3 0 0 0 1 1 0 1 \n", "4 0 0 1 1 1 0 1 \n", "5 0 0 0 1 1 0 1 \n", "6 0 0 1 1 1 0 1 \n", "7 0 0 0 1 1 0 1 \n", "8 0 0 1 1 1 0 1 \n", "9 0 0 0 1 1 0 0 \n", "10 0 0 1 1 1 0 0 \n", "11 0 0 0 0 0 0 0 \n", "12 0 0 0 0 0 0 1 \n", "13 0 0 0 0 0 0 1 \n", "14 0 0 0 1 1 0 0 \n", "15 0 0 0 1 1 0 1 \n", "16 0 0 1 1 1 0 0 \n", "17 0 0 1 1 1 0 1 \n", "18 0 * 1 0 0 * 0 \n", "19 0 * 1 0 0 * 1 \n", "20 0 0 0 1 1 0 1 \n", "21 0 0 1 1 1 0 1 \n", "22 0 * 1 0 0 * 1 \n", "23 0 * 1 0 0 * 1 \n", "24 0 * 1 0 0 * 0 \n", "\n", " Growth_Arrest MDM2 PI3K PTEN Proliferation RAS RB1 RBL2 SPRY TP53 p14ARF \\\n", "0 1 0 0 0 0 0 1 1 0 0 0 \n", "1 1 0 0 0 0 0 0 1 0 0 0 \n", "2 1 0 0 0 0 0 1 1 0 0 0 \n", "3 1 0 0 0 0 1 1 1 1 0 0 \n", "4 1 0 0 0 0 1 1 1 1 0 0 \n", "5 1 0 0 0 0 1 0 1 1 0 0 \n", "6 1 0 0 0 0 1 0 1 1 0 0 \n", "7 0 0 0 0 1 1 0 0 1 0 1 \n", "8 0 0 0 0 1 1 0 0 1 0 1 \n", "9 0 0 0 0 1 1 0 0 1 0 1 \n", "10 0 0 0 0 1 1 0 0 1 0 1 \n", "11 1 0 0 1 0 0 1 1 0 1 0 \n", "12 1 0 0 1 0 0 0 1 0 1 0 \n", "13 1 0 0 1 0 0 1 1 0 1 0 \n", "14 1 0 0 1 0 1 1 1 1 1 0 \n", "15 1 0 0 1 0 1 1 1 1 1 0 \n", "16 1 0 0 1 0 1 1 1 1 1 0 \n", "17 1 0 0 1 0 1 1 1 1 1 0 \n", "18 1 0 0 1 0 * 1 1 * 1 0 \n", "19 1 0 0 1 0 * 1 1 * 1 0 \n", "20 1 0 0 1 0 1 0 1 1 1 0 \n", "21 1 0 0 1 0 1 0 1 1 1 0 \n", "22 1 0 0 1 0 * 0 1 * 1 0 \n", "23 1 * * 0 0 * 0 1 * 0 0 \n", "24 * * * 0 * * * * * 0 * \n", "\n", " p16INK4a p21CIP \n", "0 0 0 \n", "1 1 1 \n", "2 0 1 \n", "3 0 1 \n", "4 0 1 \n", "5 1 1 \n", "6 1 1 \n", "7 1 0 \n", "8 1 0 \n", "9 0 0 \n", "10 0 0 \n", "11 0 1 \n", "12 1 1 \n", "13 0 1 \n", "14 0 1 \n", "15 0 1 \n", "16 0 1 \n", "17 0 1 \n", "18 0 1 \n", "19 0 1 \n", "20 1 1 \n", "21 1 1 \n", "22 1 1 \n", "23 1 * \n", "24 0 0 " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%time a = list(mbn.attractors())\n", "tabulate(a)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To have a better overview of the input/output behaviour, we display the attractors by selecting only input and output components and then only output components." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
DNAdamageEGFR_stimulusFGFR3_stimulusGrowthInhibitorsApoptosis_b1Growth_ArrestProliferation
00000010
10001010
20010001
30011001
40011010
501000**
60101010
70110001
80111001
90111010
101000110
111001110
121010110
131011110
141100110
151101110
161110110
171111110
\n", "
" ], "text/plain": [ " DNAdamage EGFR_stimulus FGFR3_stimulus GrowthInhibitors Apoptosis_b1 \\\n", "0 0 0 0 0 0 \n", "1 0 0 0 1 0 \n", "2 0 0 1 0 0 \n", "3 0 0 1 1 0 \n", "4 0 0 1 1 0 \n", "5 0 1 0 0 0 \n", "6 0 1 0 1 0 \n", "7 0 1 1 0 0 \n", "8 0 1 1 1 0 \n", "9 0 1 1 1 0 \n", "10 1 0 0 0 1 \n", "11 1 0 0 1 1 \n", "12 1 0 1 0 1 \n", "13 1 0 1 1 1 \n", "14 1 1 0 0 1 \n", "15 1 1 0 1 1 \n", "16 1 1 1 0 1 \n", "17 1 1 1 1 1 \n", "\n", " Growth_Arrest Proliferation \n", "0 1 0 \n", "1 1 0 \n", "2 0 1 \n", "3 0 1 \n", "4 1 0 \n", "5 * * \n", "6 1 0 \n", "7 0 1 \n", "8 0 1 \n", "9 1 0 \n", "10 1 0 \n", "11 1 0 \n", "12 1 0 \n", "13 1 0 \n", "14 1 0 \n", "15 1 0 \n", "16 1 0 \n", "17 1 0 " ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tabulate(a, columns=inputs+outputs)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Apoptosis_b1Growth_ArrestProliferation
0001
1010
20**
3110
\n", "
" ], "text/plain": [ " Apoptosis_b1 Growth_Arrest Proliferation\n", "0 0 0 1\n", "1 0 1 0\n", "2 0 * *\n", "3 1 1 0" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tabulate(a, columns=outputs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Reachable attractors\n", "\n", "For different input settings, and starting from all the other nodes being inactive, we compute the reachable attractors in the wild-type model." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "all_zero = dict([(n,0) for n in bn])" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 8.46 ms, sys: 27 µs, total: 8.48 ms\n", "Wall time: 7.92 ms\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Apoptosis_b1Growth_ArrestProliferationAKTATM_b1ATM_b2Apoptosis_b2CDC25ACHEK1_2_b1CHEK1_2_b2CyclinACyclinD1CyclinE1DNAdamageE2F1_b1E2F1_b2E2F3_b1E2F3_b2EGFREGFR_stimulusFGFR3FGFR3_stimulusGRB2GrowthInhibitorsMDM2PI3KPTENRASRB1RBL2SPRYTP53p14ARFp16INK4ap21CIP
001000000000000000000000100000100011
101000000000000000000000100001100001
\n", "
" ], "text/plain": [ " Apoptosis_b1 Growth_Arrest Proliferation AKT ATM_b1 ATM_b2 \\\n", "0 0 1 0 0 0 0 \n", "1 0 1 0 0 0 0 \n", "\n", " Apoptosis_b2 CDC25A CHEK1_2_b1 CHEK1_2_b2 CyclinA CyclinD1 CyclinE1 \\\n", "0 0 0 0 0 0 0 0 \n", "1 0 0 0 0 0 0 0 \n", "\n", " DNAdamage E2F1_b1 E2F1_b2 E2F3_b1 E2F3_b2 EGFR EGFR_stimulus FGFR3 \\\n", "0 0 0 0 0 0 0 0 0 \n", "1 0 0 0 0 0 0 0 0 \n", "\n", " FGFR3_stimulus GRB2 GrowthInhibitors MDM2 PI3K PTEN RAS RB1 RBL2 \\\n", "0 0 0 1 0 0 0 0 0 1 \n", "1 0 0 1 0 0 0 0 1 1 \n", "\n", " SPRY TP53 p14ARF p16INK4a p21CIP \n", "0 0 0 0 1 1 \n", "1 0 0 0 0 1 " ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "init = all_zero.copy()\n", "init[\"GrowthInhibitors\"] = 1\n", "%time a = list(mbn.attractors(reachable_from=init))\n", "tabulate(a, columns=outputs+non_outputs)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 10.2 ms, sys: 60 µs, total: 10.2 ms\n", "Wall time: 9.19 ms\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Apoptosis_b1Growth_ArrestProliferationAKTATM_b1ATM_b2Apoptosis_b2CDC25ACHEK1_2_b1CHEK1_2_b2CyclinACyclinD1CyclinE1DNAdamageE2F1_b1E2F1_b2E2F3_b1E2F3_b2EGFREGFR_stimulusFGFR3FGFR3_stimulusGRB2GrowthInhibitorsMDM2PI3KPTENRASRB1RBL2SPRYTP53p14ARFp16INK4ap21CIP
00***000*00***0*0*0*100*0**0****0*00
\n", "
" ], "text/plain": [ " Apoptosis_b1 Growth_Arrest Proliferation AKT ATM_b1 ATM_b2 Apoptosis_b2 \\\n", "0 0 * * * 0 0 0 \n", "\n", " CDC25A CHEK1_2_b1 CHEK1_2_b2 CyclinA CyclinD1 CyclinE1 DNAdamage E2F1_b1 \\\n", "0 * 0 0 * * * 0 * \n", "\n", " E2F1_b2 E2F3_b1 E2F3_b2 EGFR EGFR_stimulus FGFR3 FGFR3_stimulus GRB2 \\\n", "0 0 * 0 * 1 0 0 * \n", "\n", " GrowthInhibitors MDM2 PI3K PTEN RAS RB1 RBL2 SPRY TP53 p14ARF p16INK4a \\\n", "0 0 * * 0 * * * * 0 * 0 \n", "\n", " p21CIP \n", "0 0 " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "init = all_zero.copy()\n", "init[\"EGFR_stimulus\"] = 1\n", "%time a = list(mbn.attractors(reachable_from=init))\n", "tabulate(a, columns=outputs+non_outputs)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 10.3 ms, sys: 7 µs, total: 10.3 ms\n", "Wall time: 9.25 ms\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Apoptosis_b1Growth_ArrestProliferationAKTATM_b1ATM_b2Apoptosis_b2CDC25ACHEK1_2_b1CHEK1_2_b2CyclinACyclinD1CyclinE1DNAdamageE2F1_b1E2F1_b2E2F3_b1E2F3_b2EGFREGFR_stimulusFGFR3FGFR3_stimulusGRB2GrowthInhibitorsMDM2PI3KPTENRASRB1RBL2SPRYTP53p14ARFp16INK4ap21CIP
0010*000000000000*0*100*1**0*01*001*
\n", "
" ], "text/plain": [ " Apoptosis_b1 Growth_Arrest Proliferation AKT ATM_b1 ATM_b2 \\\n", "0 0 1 0 * 0 0 \n", "\n", " Apoptosis_b2 CDC25A CHEK1_2_b1 CHEK1_2_b2 CyclinA CyclinD1 CyclinE1 \\\n", "0 0 0 0 0 0 0 0 \n", "\n", " DNAdamage E2F1_b1 E2F1_b2 E2F3_b1 E2F3_b2 EGFR EGFR_stimulus FGFR3 \\\n", "0 0 0 0 * 0 * 1 0 \n", "\n", " FGFR3_stimulus GRB2 GrowthInhibitors MDM2 PI3K PTEN RAS RB1 RBL2 SPRY \\\n", "0 0 * 1 * * 0 * 0 1 * \n", "\n", " TP53 p14ARF p16INK4a p21CIP \n", "0 0 0 1 * " ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "init = all_zero.copy()\n", "init[\"EGFR_stimulus\"] = 1\n", "init[\"GrowthInhibitors\"] = 1\n", "%time a = list(mbn.attractors(reachable_from=init))\n", "tabulate(a, columns=outputs+non_outputs)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 11 ms, sys: 0 ns, total: 11 ms\n", "Wall time: 9.83 ms\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Apoptosis_b1Growth_ArrestProliferationAKTATM_b1ATM_b2Apoptosis_b2CDC25ACHEK1_2_b1CHEK1_2_b2CyclinACyclinD1CyclinE1DNAdamageE2F1_b1E2F1_b2E2F3_b1E2F3_b2EGFREGFR_stimulusFGFR3FGFR3_stimulusGRB2GrowthInhibitorsMDM2PI3KPTENRASRB1RBL2SPRYTP53p14ARFp16INK4ap21CIP
000100001001010101001110100010010110
101000000000000000001110100011110001
201000000000000001001110100010110011
\n", "
" ], "text/plain": [ " Apoptosis_b1 Growth_Arrest Proliferation AKT ATM_b1 ATM_b2 \\\n", "0 0 0 1 0 0 0 \n", "1 0 1 0 0 0 0 \n", "2 0 1 0 0 0 0 \n", "\n", " Apoptosis_b2 CDC25A CHEK1_2_b1 CHEK1_2_b2 CyclinA CyclinD1 CyclinE1 \\\n", "0 0 1 0 0 1 0 1 \n", "1 0 0 0 0 0 0 0 \n", "2 0 0 0 0 0 0 0 \n", "\n", " DNAdamage E2F1_b1 E2F1_b2 E2F3_b1 E2F3_b2 EGFR EGFR_stimulus FGFR3 \\\n", "0 0 1 0 1 0 0 1 1 \n", "1 0 0 0 0 0 0 1 1 \n", "2 0 0 0 1 0 0 1 1 \n", "\n", " FGFR3_stimulus GRB2 GrowthInhibitors MDM2 PI3K PTEN RAS RB1 RBL2 \\\n", "0 1 0 1 0 0 0 1 0 0 \n", "1 1 0 1 0 0 0 1 1 1 \n", "2 1 0 1 0 0 0 1 0 1 \n", "\n", " SPRY TP53 p14ARF p16INK4a p21CIP \n", "0 1 0 1 1 0 \n", "1 1 0 0 0 1 \n", "2 1 0 0 1 1 " ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "init = all_zero.copy()\n", "init[\"EGFR_stimulus\"] = 1\n", "init[\"FGFR3_stimulus\"] = 1\n", "init[\"GrowthInhibitors\"] = 1\n", "%time a = list(mbn.attractors(reachable_from=init))\n", "tabulate(a, columns=outputs+non_outputs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Attractors with model perturbations\n", "\n", "We reproduce the analysis of attractors under various mutations, focusing when `DNAdamage` is off. They match with Table 2 of [(Remy et al., 2015)](https://doi.org/10.3389/fbioe.2014.00086)." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 7.73 ms, sys: 1.04 ms, total: 8.77 ms\n", "Wall time: 7.45 ms\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Apoptosis_b1Growth_ArrestProliferation
0001
1010
20**
\n", "
" ], "text/plain": [ " Apoptosis_b1 Growth_Arrest Proliferation\n", "0 0 0 1\n", "1 0 1 0\n", "2 0 * *" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%time a = list(mbn.attractors(constraints={\"DNAdamage\":0}))\n", "tabulate(a, columns=outputs)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 6.33 ms, sys: 905 µs, total: 7.24 ms\n", "Wall time: 6.42 ms\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Apoptosis_b1Growth_ArrestProliferation
0001
1010
\n", "
" ], "text/plain": [ " Apoptosis_b1 Growth_Arrest Proliferation\n", "0 0 0 1\n", "1 0 1 0" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bn_mut = mbn.copy()\n", "bn_mut[\"FGFR3\"] = 1\n", "%time a = list(bn_mut.attractors(constraints={\"DNAdamage\":0}))\n", "tabulate(a, columns=outputs)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 7.59 ms, sys: 6 µs, total: 7.6 ms\n", "Wall time: 6.67 ms\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Apoptosis_b1Growth_ArrestProliferation
0000
1001
200*
3010
\n", "
" ], "text/plain": [ " Apoptosis_b1 Growth_Arrest Proliferation\n", "0 0 0 0\n", "1 0 0 1\n", "2 0 0 *\n", "3 0 1 0" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bn_mut = mbn.copy()\n", "bn_mut[\"PI3K\"] = 1\n", "%time a = list(bn_mut.attractors(constraints={\"DNAdamage\":0}))\n", "tabulate(a, columns=outputs)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 8.13 ms, sys: 6 µs, total: 8.14 ms\n", "Wall time: 7.05 ms\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Apoptosis_b1Growth_ArrestProliferation
0001
1010
\n", "
" ], "text/plain": [ " Apoptosis_b1 Growth_Arrest Proliferation\n", "0 0 0 1\n", "1 0 1 0" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bn_mut = mbn.copy()\n", "bn_mut[\"PI3K\"] = 1\n", "bn_mut[\"FGFR3\"] = 1\n", "%time a = list(bn_mut.attractors(constraints={\"DNAdamage\":0}))\n", "tabulate(a, columns=outputs)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 6.14 ms, sys: 65 µs, total: 6.2 ms\n", "Wall time: 5.33 ms\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Apoptosis_b1Growth_ArrestProliferation
0001
\n", "
" ], "text/plain": [ " Apoptosis_b1 Growth_Arrest Proliferation\n", "0 0 0 1" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bn_mut = mbn.copy()\n", "bn_mut[\"PI3K\"] = 1\n", "bn_mut[\"FGFR3\"] = 1\n", "bn_mut[\"p16INK4a\"] = 0\n", "%time a = list(bn_mut.attractors(constraints={\"DNAdamage\":0}))\n", "tabulate(a, columns=outputs)" ] }, { "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.7.7" } }, "nbformat": 4, "nbformat_minor": 2 }