Application of MPBNs to the Tumour invasion model by Cohen et al. 2015

We use Most Permissive Boolean Networks to analyse the Boolean model published in (Cohen et al., 2015) which shows cell fate decision processes related to tumour development.

In [1]:
import ginsim
from colomoto_jupyter import tabulate

This notebook has been executed using the docker image colomoto/colomoto-docker:2020-03-19

In [2]:
import mpbn

Model setup

Original model

In [3]:
lrg = ginsim.load("https://zenodo.org/record/3719029/files/SuppMat_Model_Master_Model.zginml?download=1")
ginsim.show(lrg)

Conversion to MPBN

In [4]:
bn = ginsim.to_minibn(lrg)
mbn = mpbn.MPBooleanNetwork(bn)
len(mbn) # display number of nodes
Out[4]:
32

Input and output nodes

In [5]:
inputs = ["DNAdamage", "ECMicroenv"]
outputs = ["Apoptosis","CellCycleArrest","EMT","Invasion","Migration","Metastasis"]

Analysis of reachable attractors

Complete listing of attractors

Let us first compute the full list of attractors of the MPBN.

In [6]:
%time a = list(mbn.attractors())
tabulate(a, columns=outputs)
CPU times: user 6.84 ms, sys: 32 µs, total: 6.87 ms
Wall time: 6.28 ms
Out[6]:
Apoptosis CellCycleArrest EMT Invasion Migration Metastasis
0 0 0 0 0 0 0
1 0 1 1 0 0 0
2 0 1 1 1 1 1
3 1 1 0 0 0 0

Remark they are all fixed points and thus match exactly with the attractors using asynchronous BNs.

Rechable attractors

Starting from all nodes but inputs to 0, we are interested in the set of reachable attractors, whatever the value of input nodes.

In [7]:
initial_condition = dict([(n,0) for n in bn if n not in inputs])

Wild-type

Let us first compute the reachable attractors in the wild type model. They match with the full attract listing.

In [8]:
%time a = list(mbn.attractors(reachable_from=initial_condition))
tabulate(a, columns=outputs)
CPU times: user 9.95 ms, sys: 20 µs, total: 9.97 ms
Wall time: 9.14 ms
Out[8]:
Apoptosis CellCycleArrest EMT Invasion Migration Metastasis
0 0 0 0 0 0 0
1 0 1 1 0 0 0
2 0 1 1 1 1 1
3 1 1 0 0 0 0

Notch GoF mutant

Now, we apply the Notch gain of function, and predict, as MaBoSS with asynchronous BNs, the loss of apoptotic attractor reachability.

In [9]:
mbn_mut = mbn.copy()
mbn_mut["NICD"] = 1
%time a = list(mbn_mut.attractors(reachable_from=initial_condition))
tabulate(a, columns=outputs)
CPU times: user 9.45 ms, sys: 19 µs, total: 9.47 ms
Wall time: 8.39 ms
Out[9]:
Apoptosis CellCycleArrest EMT Invasion Migration Metastasis
0 0 1 1 0 0 0
1 0 1 1 1 0 0
2 0 1 1 1 1 1

Notch GoF/p53 LoF double mutant

Adding p53 loss of function, leads, as MaBoSS, only to the metastatic attractor.

In [10]:
mbn_mut["p53"] = 0
%time a = list(mbn_mut.attractors(reachable_from=initial_condition))
tabulate(a, columns=outputs)
CPU times: user 8.87 ms, sys: 19 µs, total: 8.89 ms
Wall time: 7.7 ms
Out[10]:
Apoptosis CellCycleArrest EMT Invasion Migration Metastasis
0 0 1 1 1 1 1
In [ ]: