1 Introduction
Drug discovery, as its name indicates, aims at discovering new drugs against diseases. This process can be segmented into three steps: i) disease model provision, where experimental models are developed, ii) target identification, where therapeutic targets are proposed, and iii) target validation, where the proposed therapeutic targets are assessed. The present work focuses on the second step of drug discovery: target identification [1,2].
Given an organism suffering from a disease, target identification aims at finding where to act among its multitude of biomolecules in order to alleviate, or ultimately cure, the physiological consequences of the disease. These biomolecules on which perturbations should be applied are called targets and are targeted by drugs [3]. This raises two questions: which target should be therapeutically perturbed and what type of perturbation should be applied. Broadly, the functional perturbation of a target by a drug can be either activating or inactivating, regardless the way the drug achieves it.
One solution is to test all, or at least a large number of, biomolecules for activation or inactivation. Knowing that targeting several biomolecules is potentially more effective [4], the number of possibilities is consequently huge. This rather brute-force screening can be refined with knowledge about the pathophysiology by identifying potential targets based on the role they play in it [5]. Even with this knowledge, experimentally assessing the selected potential targets in vitro or in vivo is far from straightforward. Such experiments are costly in time and resources and exhibit a high risk of failure [6]. Fortunately, in silico experiments appear as valuable tools in improving the efficiency of therapeutic research [7] since they are less costly in time and resources than the traditional in vitro and in vivo ones. However, the stumbling block of in silico experiments is that they are built from the available knowledge: not all is known about everything.
Nevertheless, an impressive and ever increasing amount of biological knowledge is already available in the scientific literature, databases and knowledge bases such as, to name a few, DrugBank [8], KEGG [9], PharmGKB [10], Reactome [11] and TTD [12]. In addition to the complexity of integrating an increasing body of knowledge comes the inherent complexity of biological systems themselves [13]: this is where computational tools can help [14]. The interplay between experimental and computational biology is synergistic rather than competitive [15]. Since in vitro and in vivo experiments produce factual results, they are trustworthy sources of knowledge. Once these factual pieces of knowledge are obtained, computational tools can help to integrate them and infer new ones. This computationally obtained knowledge can be subsequently used to direct further in vitro or in vivo experiments, hence mutually potentiating the whole.
The goal of the present work is to propose a computational methodology implemented in an algorithm for target identification using Boolean network attractors. It assumes that Boolean network attractors correspond to phenotypes produced by the modeled biological network, an assumption successfully applied in several works [16–21] to cite a few. Assuming that a phenotype is an observable and hence a relatively stable state of a biological system and assuming that the state of a biological system results from its dynamics, a phenotype is likely to correspond to an attractor. This assumption can be stated for any dynamical model but, in the present work, only Boolean networks are considered. Reasons are that, in their most basic form, Boolean networks do not require parameter values [22] and that parameter values are not straightforward to estimate due to experimental limitations, particularly at the subcellular scale, the scale where drugs interact with their targets. Moreover, since synchronous Boolean networks are easier to compute than asynchronous ones [23], only synchronous Boolean networks are considered. This does not exclude the possibility, at a later stage, to extend the algorithm for both synchronous and asynchronous updating schemes.
For a biological network involved in a disease, two possible variants are considered: the physiological variant, exhibited by healthy organisms, which produces physiological phenotypes, and the pathological variant, exhibited by ill organisms, which produces pathological phenotypes or which fails to produce physiological ones. A physiological phenotype does not impair life quantity/quality while a pathological phenotype does. It should be noted that the loss of a physiological phenotype is also a pathological condition. The physiological and pathological variants differ in that the latter results from the occurrence of some alterations known to be responsible for disorders. With a pathological variant, there are two non-exclusive pathological scenarios: pathological phenotypes are gained or physiological phenotypes are lost.
The primary goal of the proposed algorithm is to identify, in a pathological variant, target combinations together with the perturbations to apply on them, here called bullets, which render it unable to exhibit pathological phenotypes. The secondary goal is to classify the obtained bullets according to their ability at rendering the pathological variant able to exhibit previously lost physiological phenotypes, if any.
2 Methods
This section briefly introduces some basic principles, namely biological networks [24,25] and Boolean networks [26], defines some concepts and then describes the proposed algorithm. An example network to illustrate it plus a case study to illustrate its intended applications are also described. Finally, some details about implementation and code availability are mentioned.
2.1 Basic principles
2.1.1 Biological networks
A network can be seen as a digraph G = (V, E) where $V=\{{v}_{1},\dots ,{v}_{n}\}$ is the set of cardinality n containing exactly all the nodes ${v}_{i}$ of the network and where $E=\{({v}_{i,1},{v}_{j,1}),\dots ,({v}_{i,m},{v}_{j,m})\}\subseteq {V}^{2}$ is the set of cardinality m containing exactly all the edges $({v}_{i},{v}_{j})$ of the network [27,28]. In practice, nodes represent entities and edges represent binary relations R ⊆ V^{2} involving them: ${v}_{i}\phantom{\rule{thinmathspace}{0ex}}R\phantom{\rule{thinmathspace}{0ex}}{v}_{j}$. For example, in gene regulatory networks, nodes represent gene products and edges represent gene expression modulations [29].
2.1.2 Boolean networks
A Boolean network is a network where nodes are Boolean variables x_{i} and where edges (x_{i}, x_{j}) represent the binary is input of relation: x_{i} is input of x_{j}. Each x_{i} has b_{i}∈ 〚 0, n 〛 inputs ${x}_{i,1},\dots ,{x}_{i,{b}_{i}}$. The variables which are not inputs of x_{i} have no direct influence on it. If b_{i} = 0 then x_{i} is a parameter and does not depend on other variables. At each iteration k∈ 〚 k_{0}, k_{end} 〛 of the simulation, the value x_{i}(k) ∈ {0, 1} of each x_{i} is updated to the value x_{i}(k + 1) using a Boolean function f_{i} and the values ${x}_{i,1}(k),\dots ,{x}_{i,{b}_{i}}(k)$ of its inputs, as in the following pseudocode:
1 | fork∈ 〚 k_{0}, k_{end} − 1 〛 do |
2 | ${x}_{1}(k+1)={f}_{1}({x}_{1,1}(k),\dots ,{x}_{1,{b}_{1}}(k))$ |
3 | … |
4 | ${x}_{n}(k+1)={f}_{n}({x}_{n,1}(k),\dots ,{x}_{n,{b}_{n}}(k))$ |
5 | end for |
which can be written in a more concise form:
1 | fork∈ 〚 k_{0}, k_{end} − 1 〛 do |
2 | x(k + 1) = f(x(k)) |
3 | end for |
where f = (f_{1},…,f_{n}) is the Boolean transition function and x = (x_{1},…,x_{n}) is the state vector. In the present work, it is assumed that k_{0} = 1. The value x(k) = (x_{1}(k),…,x_{n}(k)) ∈ {0, 1}^{n} of x at k belongs to the state space S = {0, 1}^{n} which is the set of cardinality 2^{n} containing exactly all the possible states. If the values of all the x_{i} are updated simultaneously at each k then the network is synchronous, otherwise it is asynchronous. With synchronous Boolean networks, x(k) has a unique possible successor x(k + 1): synchronous Boolean networks are deterministic.
In the particular case where k = k_{0}, x(k_{0}) = x_{0} is the initial state and, in deterministic dynamical systems, determines entirely the trajectory $w=(x({k}_{0}),\dots ,x({k}_{\mathrm{end}}))$. Since it is assumed that k_{0} = 1, $w$ is a sequence of length k_{end} resulting from the iterative computation of x(k) from k_{0} to k_{end}. This iterative computation can be seen as the discretization of a time interval: Boolean networks are discrete dynamical systems as they simulate discretely the time course of the state vector.
The set A = {a_{1},…,a_{p}} of cardinality p containing exactly all the attractors a_{i} is called the attractor set. Due to the determinism of synchronous Boolean networks, all the attractors are cycles. A cycle is a sequence (x_{1},…,x_{q}) of length q such that ∀j ∈ 〚1, q 〛 , x_{j+1} = f(x_{j}) and x_{q+1} = x_{1}: once the system reaches a state x_{j} belonging to a cycle, it successively visits its states x_{j+1},…,x_{q}, x_{1},…,x_{j} for infinity. In the particular case where q = 1, the cycle is called a point attractor. The set B_{i} ⊆ S containing exactly all the x ∈ S from which a_{i} can be reached is called its basin of attraction. With deterministic dynamical systems, the family of sets (B_{1},…,B_{p}) constitutes a partition of S.
2.2 Definitions
Some concepts used in the present work should be formally defined.physiological phenotype
A phenotype which does not impair life quantity/quality of the organism which exhibits it.
pathological phenotypeA phenotype which impairs life quantity/quality of the organism which exhibits it.
variant (of a biological network)Given a biological network of interest, a variant of it is one of its versions, namely the network plus eventually some modifications. It should be noted that this does not exclude the possibility that a variant can be the network of interest as is.
physiological variantA variant which produces only physiological phenotypes. It is the biological network of interest as it should be, namely the one of healthy organisms.
pathological variantA variant which produces at least one pathological phenotype. It is a dysfunctional version of the biological network of interest, namely a version found in ill organisms.
physiological attractor setThe attractor set A_{physio} of the physiological variant.
pathological attractor setThe attractor set A_{patho} of the pathological variant.
physiological Boolean transition functionThe Boolean transition function f_{physio} of the physiological variant.
pathological Boolean transition functionThe Boolean transition function f_{patho} of the pathological variant.
runAn iterative computation of x(k) starting from an x_{0} until an a_{i} is reached. It returns $w=(x({k}_{0}),\dots ,x({k}_{\mathrm{end}}))$ where k_{end} depends on when a_{i} is reached and hence on x_{0}.
physiological attractorAn a_{i} such that a_{i} ∈ A_{physio}.
pathological attractorAn a_{i} such that a_{i} ∉ A_{physio}.
modalityThe functional perturbation moda_{i} applied on a node ${v}_{j}\in V$ of the network, either activating (moda_{i} = 1) or inactivating (moda_{i} = 0): at each k, moda_{i} overwrites f_{j}(x(k)) and hence x_{j}(k + 1) = moda_{i}.
targetA node targ_{i} ∈ V of the network on which a moda_{i} is applied.
bulletA couple (c_{targ}, c_{moda}) where c_{targ} = (targ_{1},…,targ_{r}) is a combination without repetition of targ_{i} and where c_{moda} = (moda_{1},…,moda_{r}) is an arrangement with repetition of moda_{i}, r∈ 〚1, n 〛 being the number of targets in the bullet. Here, moda_{i} is intended to be applied on targ_{i}.
therapeutic bulletA bullet which makes A_{patho} ⊆ A_{physio}.
silver bulletA therapeutic bullet which makes A_{patho} ⊊ A_{physio}.
golden bulletA therapeutic bullet which makes A_{patho} = A_{physio}.
The assumed link between phenotypes and attractors is the reason why attractors are qualified as either physiological or pathological according to the phenotype they produce. This is also the reason why, in the present work, target identification aims at manipulating attractor sets of pathological variants.
2.3 Steps of the algorithm
The algorithm has two goals: i) finding therapeutic bullets and ii) classifying them as either golden or silver. A therapeutic bullet makes the pathological variant unable at reaching pathological attractors, that is A_{patho} ⊆ A_{physio}. If such a bullet is applied on a pathological variant, the organism bearing it no longer exhibits the associated pathological phenotypes. However, a therapeutic bullet does not necessarily preserve/restore the physiological attractors. If a therapeutic bullet preserves/restores the physiological attractors, namely if A_{patho} = A_{physio}, then it is a golden one but if A_{patho} ⊊ A_{physio} then it is a silver one.
Given a physiological and a pathological variant, that is f_{physio} and f_{patho}, the algorithm follows five steps:
- 1. with f_{physio} it computes the control attractor set A_{physio}
- 2. it generates bullets and, for each of them, it performs the three following steps
- 3. with f_{patho} plus the bullet, it computes the variant attractor set A_{patho}
- 4. it assesses the therapeutic potential of the bullet by comparing A_{physio} and A_{patho} to detect pathological attractors
- 5. if the bullet is therapeutic then it is classified as either golden or silver by comparing A_{physio} and A_{patho} for equality.
These steps can be written in pseudocode as:
1 | with f_{physio} compute A_{physio} |
2 | generate bullet _ set |
3 | forbullet ∈ bullet _ set do |
4 | with f_{patho} plus bullet compute A_{patho} |
5 | if A_{patho} ⊆ A_{physio} then |
6 | bullet is therapeutic |
7 | if A_{patho} = A_{physio} then |
8 | bullet is golden |
9 | else |
10 | bullet is silver |
11 | end if |
12 | end if |
13 | end for |
2.3.1 Step 1: computing A_{physio}
First of all, A_{physio} has to be computed since it is the control and, as such, determines what is pathological. To do so, runs are performed with f_{physio} and the reached a_{i} are stored in A_{physio}. However, x_{0} ∈ S and card S increases exponentially with n. Even for reasonable values of n, card S explodes: more than 1 000 000 possible x_{0} for n = 20. One solution ensuring that all the a_{i} are reached is to start a run from each of the possible x_{0}, that is from each of the x ∈ S. Practically, this is unfeasible for an arbitrary value of n since the required computational resources can be too demanding. For example, assuming that a run requires 1 millisecond and that n = 50, performing a run from each of the 2^{50} x ∈ S requires nearly 36 000 years.
Given that with deterministic dynamical systems (B_{1},…,B_{p}) is a partition of S, a solution is to select a subset D ⊆ S of a reasonable cardinality containing the x_{0} to start from. In the present work, D is selected randomly from a uniform distribution. The stumbling block of this solution is that it does not ensure that at least one x_{0} per B_{i} is selected and then does not ensure that all the a_{i} are reached. This stumbling block holds only if card D < card S.
Again given that synchronous Boolean networks are deterministic, if a run visits a state already visited in a previous run then its destination, that is the reached attractor, is already found. If so, the run can be stopped and the algorithm can jump to the next one. To implement this, previous trajectories are stored in a set H, the history, and at each k the algorithm checks if $\exists w\in H:\phantom{\rule{thinmathspace}{0ex}}x(k)\in w$. If this check is positive then the algorithm jumps to the next run.
Since, with deterministic dynamical systems, attractors are cycles, the algorithm checks at each k if x(k + 1) is an already visited state of the current run, namely if ∃k′ ∈ 〚1, k 〛 : x(k + 1) = x(k′). If this check is positive then a_{i} = (x(k′),…,x(k)).
This step can be written in pseudocode as:
1 | prompt card D |
2 | card D = min(card D, 2^{n}) |
3 | generate D ⊆ S |
4 | H = {} |
5 | A_{physio} = {} |
6 | forx_{0} ∈ D do |
7 | k = 1 |
8 | x(k) = x_{0} |
9 | while true do |
10 | if $\exists w\in H:\phantom{\rule{thinmathspace}{0ex}}x(k)\in w$ then |
11 | break |
12 | end if |
13 | x(k + 1) = f_{physio}(x(k)) |
14 | if ∃k′ ∈ 〚1, k 〛 : x(k + 1) = x(k′) then |
15 | A_{physio} = A_{physio} ∪ {(x(k′),…,x(k))} |
16 | break |
17 | end if |
18 | k = k + 1 |
19 | end while |
20 | H = H ∪ {(x(1),…,x(k))} |
21 | end for |
22 | returnA_{physio} |
23 | do step 2 |
It should be noted that the purpose of the present work is not to propose an algorithm for finding Boolean network attractors since advanced algorithms for such tasks are already published [30,31]. The purpose is to introduce a methodology exploiting Boolean network attractors for target identification, a methodology which requires de facto these attractors to be found.
2.3.2 Step 2: generating bullets
Bullets are candidate perturbations to apply on the pathological variant to make it unable at reaching pathological attractors and hence unable at producing pathological phenotypes. Generating a bullet requires a choice of targ_{i} ∈ V and associated moda_{i} ∈ {0, 1}. In the present work, there is no time sequencing in target engagement nor in modality application. This means that, given a bullet and during a run, all the targ_{i} are engaged simultaneously and constantly and the moda_{i} do not change. As a consequence, for a given bullet, choosing the same targ_{i} more than once is senseless, while it is possible to choose the same moda_{i} for more than one targ_{i}. Therefore, a bullet is a combination c_{targ} without repetition of targ_{i} together with an arrangement c_{moda} with repetition of moda_{i}.
If bullets containing r targets have to be generated then there are n !/(r ! · (n − r) !) possible c_{targ} and, for each of them, there are 2^{r} possible c_{moda}. This raises the same difficulty than with state space explosion since there are (n ! ·2^{r})/(r ! · (n − r) !) possible bullets. For example, with n = 50 and r = 3, there are more than 150 000 possible bullets. Knowing that the algorithm, as explained below, computes one attractor set per bullet, the computation time becomes practically unfeasible.
To overcome this barrier, the algorithm asks for r as an interval 〚r_{min}, r_{max}〛, asks for a maximum number $\underset{\mathrm{targ}}{\mathrm{max}}$ of c_{targ} to generate and asks for a maximum number $\underset{\mathrm{moda}}{\mathrm{max}}$ of c_{moda} to test for each c_{targ}. The algorithm then generates a set C_{targ} of c_{targ} with $\mathrm{card}\phantom{\rule{thinmathspace}{0ex}}{C}_{\mathrm{targ}}\le \underset{\mathrm{targ}}{\mathrm{max}}$ by randomly selecting, from a uniform distribution and without repetition, nodes in the network. In the same way, the algorithm generates a set C_{moda} of c_{moda} with $\mathrm{card}\phantom{\rule{thinmathspace}{0ex}}{C}_{\mathrm{moda}}\le \underset{\mathrm{moda}}{\mathrm{max}}$ by randomly choosing, from a uniform distribution and with repetition, modalities as either activating (= 1) or inactivating (= 0).
The result is the bullets: per r∈ 〚 r_{min}, r_{max} 〛, a C_{targ} together with a C_{moda}. As with state space explosion, the stumbling block of this method is that it does not ensure that all the possible c_{targ} together with all the possible c_{moda} are tested. This stumbling block holds only if $\underset{\mathrm{targ}}{\mathrm{max}}<n!/(r!\xb7(n-r)!)$ or $\underset{\mathrm{moda}}{\mathrm{max}}<{2}^{r}$.
This step can be written in pseudocode as:
1 | prompt${r}_{\mathrm{min}},{r}_{\mathrm{max}},\underset{\mathrm{targ}}{\mathrm{max}},\underset{\mathrm{moda}}{\mathrm{max}}$ |
2 | r_{max} = min(r_{max}, n) |
3 | golden _ set = {} |
4 | silver _ set = {} |
5 | forr∈ 〚 r_{min}, r_{max} 〛 do |
6 | ${\mathrm{max}}_{\mathrm{targ}}^{r}=\mathrm{min}(\underset{\mathrm{targ}}{\mathrm{max}},n!/(r!\xb7(n-r)!))$ |
7 | ${\mathrm{max}}_{\mathrm{moda}}^{r}=\mathrm{min}(\underset{\mathrm{moda}}{\mathrm{max}},{2}^{r})$ |
8 | C_{targ} = {} |
9 | C_{moda} = {} |
10 | while $\mathrm{card}\phantom{\rule{thinmathspace}{0ex}}{C}_{\mathrm{targ}}<{\mathrm{max}}_{\mathrm{targ}}^{r}$ do |
11 | generate c_{targ} ∉ C_{targ} |
12 | C_{targ} = C_{targ} ∪ {c_{targ}} |
13 | end while |
14 | while $\mathrm{card}\phantom{\rule{thinmathspace}{0ex}}{C}_{\mathrm{moda}}<{\mathrm{max}}_{\mathrm{moda}}^{r}$ do |
15 | generate c_{moda} ∉ C_{moda} |
16 | C_{moda} = C_{moda} ∪ {c_{moda}} |
17 | end while |
18 | do steps 3 to 5 |
19 | end for |
20 | returngolden _ set, silver _ set |
2.3.3 Step 3: computing A_{patho}
Having the control attractor set A_{physio} and a bullet (c_{targ}, c_{moda}) ∈ C_{targ} × C_{moda}, the algorithm computes the variant attractor set A_{patho} under the bullet by almost the same way A_{physio} is computed in step 1. However, f_{patho} is used instead of f_{physio} and the bullet is applied: at each k, f_{j}(x(k)) is overwritten by moda_{i} ∈ c_{moda}, that is x_{j}(k + 1) = moda_{i}, provided that ${v}_{j}={\mathrm{targ}}_{i}\in {c}_{\mathrm{targ}}$.
In order to apply all the generated bullets, the algorithm uses two nested for loops. For each c_{targ} ∈ C_{targ} it uses successively all the c_{moda} ∈ C_{moda}. For each (c_{targ}, c_{moda}), the algorithm computes the corresponding A_{patho} and does steps 4 and 5.
This step can be written in pseudocode as:
1 | forc_{targ} ∈ C_{targ} do |
2 | for c_{moda} ∈ C_{moda} do |
3 | H = {} |
4 | A_{patho} = {} |
5 | for x_{0} ∈ D do |
6 | k = 1 |
7 | x(k) = x_{0} |
8 | while true do |
9 | if $\exists w\in H:\phantom{\rule{thinmathspace}{0ex}}x(k)\in w$ then |
10 | break |
11 | end if |
12 | x(k + 1) = f_{patho}(x(k)) |
13 | for targ_{i} ∈ c_{targ} do |
14 | for ${v}_{j}\in V$ do |
15 | if ${v}_{j}={\mathrm{targ}}_{i}$ then |
16 | x_{j}(k + 1) = moda_{i} |
17 | end if |
18 | end for |
19 | end for |
20 | if ∃k′ ∈ 〚1, k 〛 : x(k + 1) = x(k′) then |
21 | A_{patho} = A_{patho} ∪ {(x(k′),…,x(k))} |
22 | break |
23 | end if |
24 | k = k + 1 |
25 | end while |
26 | H = H ∪ {(x(1),…,x(k))} |
27 | end for |
28 | do step 4 and 5 |
29 | end for |
30 | end for |
2.3.4 Step 4: identifying therapeutic bullets
To identify therapeutic bullets among the generated ones, for each (c_{targ}, c_{moda}) tested in step 3 and once the corresponding A_{patho} is obtained, the algorithm compares it with A_{physio} to check if A_{patho} ⊆ A_{physio}. This check ensures that, under the bullet, all the pathological attractors are removed and if new attractors appear then they are physiological ones. If this check is positive, then the bullet is therapeutic and the algorithm pursues with step 5.
This step can be written in pseudocode as:
1 | ifA_{patho} ⊆ A_{physio} then |
2 | do step 5 |
3 | end if |
2.3.5 Step 5: assessing therapeutic bullets
Therapeutic bullets are qualified as either golden or silver according to their ability at making the pathological variant reaching the physiological attractors. All therapeutic bullets, being golden or silver, remove the pathological attractors without creating new ones, that is A_{patho} ⊆ A_{physio}. However, this does not imply that therapeutic bullets preserve/restore the physiological attractors. A golden bullet preserves/restores the physiological attractors: A_{patho} = A_{physio} while a silver bullet does not: A_{patho} ⊊ A_{physio}.
In this setting, golden bullets are perfect therapies while silver bullets are not. However, since precious things are rare and just as gold is rarer than silver, finding golden bullets is less likely than finding silver ones. Indeed, given that more constraints are required for a therapeutic bullet to be a golden one, it is more likely that the found therapeutic bullets are silver ones, except in one case: card A_{physio} = 1.
Theorem 1
If card A_{physio} = 1 then all therapeutic bullets are golden.
Proof
$$(\mathrm{therapeutic}\text{\hspace{0.28em}}\mathrm{bullet})\Rightarrow ({A}_{\mathrm{patho}}\subseteq {A}_{\mathrm{physio}})$$ | (1) |
$$(1)\Rightarrow ({A}_{\mathrm{patho}}\in \mathcal{P}({A}_{\mathrm{physio}}))$$ | (2) |
$$(\mathrm{card}\phantom{\rule{thinmathspace}{0ex}}{A}_{\mathrm{physio}}=1)\Rightarrow ({A}_{\mathrm{physio}}=\{a\})$$ | (3) |
$$(3)\Rightarrow (\mathcal{P}({A}_{\mathrm{physio}})=\{\varnothing ,\{a\}\})$$ | (4) |
$$((2)\wedge (4))\Rightarrow (({A}_{\mathrm{patho}}=\{a\})\vee ({A}_{\mathrm{patho}}=\varnothing ))$$ | (5) |
$$(\mathrm{deterministic}\text{\hspace{0.28em}}\mathrm{dynamical}\text{\hspace{0.28em}}\mathrm{systems})\Rightarrow (A\ne \varnothing )$$ | (6) |
$$(6)\Rightarrow ({A}_{\mathrm{patho}}\ne \varnothing )$$ | (7) |
$$((5)\wedge (7))\Rightarrow ({A}_{\mathrm{patho}}=\{a\})$$ | (8) |
$$((3)\wedge (8))\Rightarrow ({A}_{\mathrm{patho}}={A}_{\mathrm{physio}})$$ | (9) |
$$(9)\Rightarrow (\mathrm{therapeutic}\text{\hspace{0.28em}}\mathrm{bullet}\text{\hspace{0.28em}}\mathrm{is}\text{\hspace{0.28em}}\mathrm{golden})$$ | (10) |
Practically, in the present setting, an organism bearing a pathological variant treated with a therapeutic bullet no longer exhibits the associated pathological phenotypes. Moreover, if the therapeutic bullet is golden then the organism exhibits the same phenotypes than its healthy counterpart. However, if the therapeutic bullet is silver then the organism fails to exhibit at least one physiological phenotype. With a silver bullet this is a matter of choice: what is the less detrimental between a silver bullet and no therapeutic bullet at all.
This step can be written in pseudocode as:
1 | ifA_{patho} = A_{physio} then |
2 | golden _ set = golden _ set ∪ {(c_{targ}, c_{moda})} |
3 | else |
4 | silver _ set = silver _ set ∪ {(c_{targ}, c_{moda})} |
5 | end if |
2.4 Example network
To illustrate the algorithm, it is used on a Boolean model of the mammalian cell cycle published by Faure et al. [18]. This model is chosen for several reasons: i) synchronous updating is performed: to date, the algorithm focuses on synchronous Boolean networks, ii) a mammalian biological system is modeled: the closer to human physiology the model is, the better it illustrates the intended applications, iii) the cell cycle is a at the heart of cancer: this gives relevancy to the example network, iv) the network comprises ten nodes: easily computable in face of its state space and v) attractors are already computed: useful to validate the algorithm in finding them.
Below are the Boolean functions of the example network where, for the sake of readability, x_{i} stands for x_{i}(k) and x_{i+} stands for x_{i}(k + 1).
$$\begin{array}{ccc}{\mathrm{CycD}}_{+}\hfill & =\hfill & \mathrm{CycD}\hfill \\ {\mathrm{Rb}}_{+}\hfill & =\hfill & (\neg \mathrm{CycD}\wedge \neg \mathrm{CycE}\wedge \neg \mathrm{CycA}\wedge \neg \mathrm{CycB})\vee (p27\wedge \neg \mathrm{CycD}\wedge \neg \mathrm{CycB})\hfill \\ E2{F}_{+}\hfill & =\hfill & (\neg \mathrm{Rb}\wedge \neg \mathrm{CycA}\wedge \neg \mathrm{CycB})\vee (p27\wedge \neg \mathrm{Rb}\wedge \neg \mathrm{CycB})\hfill \\ {\mathrm{CycE}}_{+}\hfill & =\hfill & E2F\wedge \neg \mathrm{Rb}\hfill \\ {\mathrm{CycA}}_{+}\hfill & =\hfill & (E2F\wedge \neg \mathrm{Rb}\wedge \neg \mathrm{Cdc}20\wedge \neg (\mathrm{Cdh}1\wedge \mathrm{UbcH}10))\vee (\mathrm{CycA}\wedge \neg \mathrm{Rb}\wedge \neg \mathrm{Cdc}20\wedge \neg (\mathrm{Cdh}1\wedge \mathrm{UbcH}10))\hfill \\ p{27}_{+}\hfill & =\hfill & (\neg \mathrm{CycD}\wedge \neg \mathrm{CycE}\wedge \neg \mathrm{CycA}\wedge \neg \mathrm{CycB})\vee (p27\wedge \neg (\mathrm{CycE}\wedge \mathrm{CycA})\wedge \neg \mathrm{CycB}\wedge \neg \mathrm{CycD})\hfill \\ \mathrm{Cdc}{20}_{+}\hfill & =\hfill & \mathrm{CycB}\hfill \\ \mathrm{Cdh}{1}_{+}\hfill & =\hfill & (\neg \mathrm{CycA}\wedge \neg \mathrm{CycB})\vee \mathrm{Cdc}20\vee (p27\wedge \neg \mathrm{CycB})\hfill \\ \mathrm{UbcH}{10}_{+}\hfill & =\hfill & \neg \mathrm{Cdh}1\vee (\mathrm{Cdh}1\wedge \mathrm{UbcH}10\wedge (\mathrm{Cdc}20\vee \mathrm{CycA}\vee \mathrm{CycB}))\hfill \\ {\mathrm{CycB}}_{+}\hfill & =\hfill & \neg \mathrm{Cdc}20\wedge \neg \mathrm{Cdh}1\hfill \end{array}$$ |
Having the example network, two variants of it are needed: the physiological one and the pathological one. The physiological variant is the network as is while the pathological variant is the network plus a constitutive activation/inactivation of at least one of its nodes. For simplicity, and given the relatively small number of entities, only one is chosen: the retinoblastoma protein Rb, for which a constitutive inactivation is applied. To implement this, the corresponding f_{i} becomes:
$$\mathrm{Rb}(k+1)=0$$ |
2.5 Case study
To illustrate the intended usage of the proposed methodology, the algorithm is used on a Boolean model of the Fanconi Anemia/Breast Cancer (FA/BRCA) pathway published by Rodriguez et al. [33]. This model is chosen for several reasons: i) two pathological conditions are studied: required for a case study of an in silico target identification, ii) the physiological and pathological variants are clearly described: required by the algorithm iii) it is nearly three times bigger than the example network: representative of a more comprehensive biological model while remaining computationally tractable, iv) synchronous updating is used: to date, the algorithm focuses on synchronous Boolean networks and v) attractors are already interpreted in terms of phenotypes.
The FA/BRCA pathway is dedicated to DNA repair and more precisely to interstrand cross-links (ICLs) removal. As expected with any DNA repair impairment, individuals suffering from FA/BRCA pathway malfunction are subjected to increased risk of cancer, such as in Fanconi anemia, a rare genetic disorder causing bone marrow failure, congenital abnormalities and increased risk of cancer [34–36].
Rodriguez et al. propose a Boolean model comprising the FA/BRCA pathway and three types of DNA damages commonly observed in Fanconi anemia, namely ICLs, double-strand breaks (DSBs) and DNA adducts (ADDs). DSBs and ADDs can be created during ICLs repair before being removed, therefore leaving an undamaged DNA ready for the cell cycle. For a complete description of the model, please see [33]. The Boolean functions can be found in Appendix B.
The physiological variant is the FA/BRCA pathway model as is. To it, Rodriguez et al. propose two pathological variants, here called patho1 and patho2, modeling two mutations involving genes of the FA/BRCA pathway. These mutations are observed in patients suffering from Fanconi anemia [37]. The first one involves the FANCA gene, corresponding to the FAcore variable, and the second one involves the FANCD1/BRCA2 or FANCN/PALB2 gene, corresponding to the FANCD1N variable. These mutations are of loss-of-function kind: to simulate them the corresponding f_{i} becomes
$$\mathrm{FAcore}(k+1)=0$$ |
$$\mathrm{FANCD}1N(k+1)=0$$ |
2.6 Implementation
The algorithm is implemented in Fortran 95 compiled with GFortran.^{1} The code is available on GitHub^{2} at https://github.com/arnaudporet/kali-targ under a BSD 3-Clause License.^{3}
3 Results
This section exposes results produced with the algorithm on the example network to illustrate how it works. Next, results produced with the algorithm on the case study are exposed to illustrate its intended applications in target identification.
3.1 Results of step 1
Owing to the relatively small size of the example network, card D is set to card S = 1024. Since card D = card S, all the attractors are found. The algorithm returns the following attractors:
$${a}_{1}=\begin{array}{cccccccc}\hfill \mathrm{CycD}\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill \\ \hfill \mathrm{Rb}\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill E2F\hfill & \hfill 0\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{CycE}\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{CycA}\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill \\ \hfill p27\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{Cdc}20\hfill & \hfill 1\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 1\hfill \\ \hfill \mathrm{Cdh}1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{UbcH}10\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 1\hfill & \hfill 1\hfill \\ \hfill \mathrm{CycB}\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 1\hfill & \hfill 1\hfill \end{array}\phantom{\rule{1em}{0ex}}{a}_{2}=\begin{array}{cc}\hfill \mathrm{CycD}\hfill & \hfill 0\hfill \\ \hfill \mathrm{Rb}\hfill & \hfill 1\hfill \\ \hfill E2F\hfill & \hfill 0\hfill \\ \hfill \mathrm{CycE}\hfill & \hfill 0\hfill \\ \hfill \mathrm{CycA}\hfill & \hfill 0\hfill \\ \hfill p27\hfill & \hfill 1\hfill \\ \hfill \mathrm{Cdc}20\hfill & \hfill 0\hfill \\ \hfill \mathrm{Cdh}1\hfill & \hfill 1\hfill \\ \hfill \mathrm{UbcH}10\hfill & \hfill 0\hfill \\ \hfill \mathrm{CycB}\hfill & \hfill 0\hfill \end{array}$$ |
Attractors are presented as matrices where, for an attractor of length q, lines correspond to the x_{i}(k), k∈ 〚1, q 〛 and columns to x(k). A_{physio} = {a_{1}, a_{2}}, which corresponds to results obtained by Faure et al.. By the way, a_{1} and a_{2} are the two physiological attractors. In terms of phenotypes, a_{1} corresponds to the cell cycle while a_{2} corresponds to quiescence.
3.2 Results of steps 2 to 5
Results of steps 2 to 5 are grouped since only therapeutic bullets found in step 4 and classified in step 5 are returned. The algorithm is launched with r_{min} = 1 and r_{max} = 2. Again due to the relatively small size of the example network, $\underset{\mathrm{targ}}{\mathrm{max}}$ and $\underset{\mathrm{moda}}{\mathrm{max}}$ are set to their maximum, namely $\underset{\mathrm{targ}}{\mathrm{max}}=45$ and $\underset{\mathrm{moda}}{\mathrm{max}}=4$. As a consequence, all the possible bullets made of 1 to 2 targets are tested. The algorithm returns the following therapeutic bullets:
$$\begin{array}{ccc}\hfill +\mathrm{CycD}\hfill & \hfill \hfill & \hfill \mathrm{silver}\hfill \\ \hfill +\mathrm{CycD}\hfill & \hfill -p27\hfill & \hfill \mathrm{silver}\hfill \\ \hfill -\mathrm{CycD}\hfill & \hfill +\mathrm{Rb}\hfill & \hfill \mathrm{silver}\hfill \\ \hfill +\mathrm{CycD}\hfill & \hfill -\mathrm{Rb}\hfill & \hfill \mathrm{silver}\hfill \\ \hfill \hfill & \hfill \hfill & \hfill \hfill \end{array}$$ |
To better illustrate what is performed to obtain these therapeutic bullets, below is A_{patho} without any bullet:
$${a}_{3}=\begin{array}{ccccccccc}\hfill \mathrm{CycD}\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{Rb}\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill E2F\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{CycE}\hfill & \hfill 0\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{CycA}\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 0\hfill \\ \hfill p27\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{Cdc}20\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 1\hfill & \hfill 1\hfill \\ \hfill \mathrm{Cdh}1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 1\hfill \\ \hfill \mathrm{UbcH}10\hfill & \hfill 1\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill \\ \hfill \mathrm{CycB}\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 0\hfill \end{array}$$ |
$${a}_{4}=\begin{array}{cccccccc}\hfill \mathrm{CycD}\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill \\ \hfill \mathrm{Rb}\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill E2F\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{CycE}\hfill & \hfill 0\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{CycA}\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 0\hfill \\ \hfill p27\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{Cdc}20\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 1\hfill & \hfill 1\hfill \\ \hfill \mathrm{Cdh}1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 1\hfill \\ \hfill \mathrm{UbcH}10\hfill & \hfill 1\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 1\hfill \\ \hfill \mathrm{CycB}\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 1\hfill & \hfill 1\hfill & \hfill 0\hfill \end{array}$$ |
It should be noted that a_{4} = a_{1} ∈ A_{physio}: a_{4} is a physiological attractor. It is possible that the pathological variant produces physiological attractors: A_{patho} is not the set containing exactly all the pathological attractors, it is the attractor set of the pathological variant. As a consequence, A_{physio}∩ A_{patho} ≠ ∅ is possible. However, a_{3} ∉ A_{physio}: it is a pathological attractor and is what a therapeutic bullet, being golden or silver, is intended to avoid.
Again to better illustrate what is performed to obtain these therapeutic bullets, below is A_{patho} under the third bullet:
$$\begin{array}{cc}\hfill \mathrm{CycD}\hfill & \hfill 0\hfill \\ \hfill \mathrm{Rb}\hfill & \hfill 1\hfill \\ \hfill E2F\hfill & \hfill 0\hfill \\ \hfill \mathrm{CycE}\hfill & \hfill 0\hfill \\ \hfill \mathrm{CycA}\hfill & \hfill 0\hfill \\ \hfill p27\hfill & \hfill 1\hfill \\ \hfill \mathrm{Cdc}20\hfill & \hfill 0\hfill \\ \hfill \mathrm{Cdh}1\hfill & \hfill 1\hfill \\ \hfill \mathrm{UbcH}10\hfill & \hfill 0\hfill \\ \hfill \mathrm{CycB}\hfill & \hfill 0\hfill \end{array}$$ |
3.3 Results on the case study
With the case study, card S = 2^{28} = 268 435 456: computing attractors from all the x ∈ S becomes too demanding. Indeed, it should be recalled that the algorithm computes one attractor set per bullet, namely A_{patho} under the tested bullet. As a consequence, card D is set to a more reasonable value: card D = 10 000. Despite that card D < card S, it seems sufficient for the algorithm to find all the attractors, just as Rodriguez et al. whose computation covers the whole state space. Below are the computed attractors:
- • A_{physio} = {a_{1}}
- • A_{patho1} = {a_{1}}
- • A_{patho2} = {a_{1}, a_{2}}, a_{1} and a_{2} attracting respectively 29.5% and 70.5% of the x ∈ D under f_{patho2}
- • a_{1}: cell cycle progression
- • a_{2}: cell cycle arrest
In physiological conditions, in case of damaged DNA, cells repair it before performing the cell cycle, or die if repair fails. Such checkpoints enable cells to ensure genomic integrity by preventing damaged DNA to be replicated and then propagated [38,39]. Otherwise, genetic instability may appear, potentially leading to cancer [40]. The results show that the physiological variant is able to ensure genomic integrity since its unique attractor is a_{1}, where ICL = DSB = ADD = 0: DNA damages are repaired, if any, and the cell cycle can safely occur. Interestingly, the same physiological phenotype is computed for patho1 where A_{patho1} = A_{physio}. This suggests that cells bearing FANCA gene null mutation are nonetheless able to repair DNA.
With patho2, a pathological attractor appears: a_{2}, where DSB = 1. This suggests that cells bearing FANCD1/BRCA2 or FANCN/PALB2 gene null mutation are unable to repair DSBs, explaining why a_{2} corresponds to cell cycle arrest: DNA remains damaged. It should be noted that a_{1} ∈ A_{patho2}, suggesting that from certain x_{0}, that is under certain conditions, such cells could be able to repair DNA. However, a_{1} attracts only 29.5% of the x ∈ D under f_{patho2}, indicating that the pathological phenotype associated with a_{2} is more likely to occur.
Altogether, according to computed attractors and their phenotypic interpretation, and limited to the scope studied by the model of Rodriguez et al., FANCA gene null mutation may not induce pathological phenotypes. However, with FANCD1/BRCA2 or FANCN/PALB2 gene null mutation, two phenotypes are predicted: a physiological one and a pathological one, the latter being the most likely to be exhibited. As a consequence, the algorithm has to operate on patho2 to find bullets able to remove the pathological attractor a_{2}.
By comprehensively testing all bullets made of 1 to 3 targets, the algorithm returns the following results:
number of all possible bullets | number of therapeutic bullets | |
r = 1 | 56 | 1 (1.786%) |
r = 2 | 1 512 | 20 (1.323%) |
r = 3 | 26 208 | 191 (0.729%) |
Occurrence of each node in the found therapeutic bullets, in percentage of the total number of tested bullets, can be found in Appendix E. Below is the top five:
ATM | 87.736% |
ICL | 22.170% |
BRCA1 | 18.396% |
DSB | 11.792% |
MRN | 10.377% |
In the present case study, DNA damages such as ICLs and DSBs are the pathological events. Unsurprisingly, the algorithm suggests them to be targeted: this is a logical consequence. However, DNA damages are not biomolecules in themselves and directly targeting them by means of drugs appears senseless. What is relevant are the biomolecules of the FA/BRCA pathway suggested as therapeutic targets. Interestingly, ATM dominates all the other candidates, predicting ATM to be a pivotal therapeutic target for the patho2 condition, namely the FA/BRCA pathway bearing FANCD1/BRCA2 or FANCN/PALB2 gene null mutation, as observed in Fanconi anemia.
4 Conclusion
Under the assumption that dynamical system attractors and biological network phenotypes are linked when the former models the latter, the results show that the algorithm succeeds in performing the proposed in silico target identification. It returns therapeutic bullets for a pathological variant of the mammalian cell cycle relevant in diseases such as cancer and for a pathological variant modeling Fanconi anemia. Consequently, the algorithm can be used on other synchronous Boolean models of biological networks involved in diseases for in silico target identification. However, both the physiological and pathological variants have to be known. This can constitute a limit of the proposed methodology since all the pathophysiologies are not known. On the other hand, this can constitute a motivation to unravel pathophysiologies of poorly understood diseases.
Target identification, whether performed in silico or not, is a step belonging to a wider process: drug discovery. Having demonstrated a potential target in silico, or even in vitro, is far from having a drug. Further work and many years are necessary before obtaining a drug which is effective in vivo. For example, and among other characteristics, such a drug has to be absorbed by the organism, has to reach its target and has to be non-toxic at therapeutic dosages. Furthermore, as with any in silico evidence, it should be validated in vitro and ultimately in vivo: there is a bridge to cross between theory and practice. For example, targeting ATM should restore a physiological running of the FA/BRCA pathway bearing FANCD1/BRCA2 or FANCN/PALB2 gene null mutation. However, if ATM operates in other pathways, targeting it may disrupt them, hence creating new pathological conditions. Nevertheless, it is expected that the algorithm is of interest for target identification.
While finding Boolean network attractors of biological networks is not the purpose of the present work, it is a necessary step which is in itself a challenging field of computational biology. As a consequence, incorporating advances made in this field could be a relevant improvement. Another possible improvement could be to extend the algorithm for asynchronous Boolean networks since such models are likely to more accurately describe the dynamics of biological systems. Indeed, in biological systems, events may be subjected to stochasticity, may not occur simultaneously or may not belong to the same time scale, three points that synchronous updating does not take into account. Yet another possible improvement could be to use finer logics, such as multivalued ones. Indeed, one of the main limitations of Boolean models is that their variables can take only two values. In reality, things are not necessarily binary and variables should be able to take more possible values. Multivalued logics enable it in a discrete manner where variables can take a finite number of values between 0 (false) and 1 (true). For example, one can state that Rb is partly impaired rather than totally. Such a statement is not implementable with Boolean models but is with multivalued ones such as, for example, a three-valued logic where true = 1, moderate = 0.5 and false = 0.
Finally, considering basin cardinalities of pathological attractors could be an interesting extension of the proposed criteria for selecting therapeutic bullets. In that case, the therapeutic potential of bullets could be assessed by estimating their ability at reducing the basin of pathological attractors, as performed by Fumia et al. with their Boolean model of cancer pathways [19]. Such a criterion enable to consider the particular case where pathological attractors are removed, that is where pathological basins are reduced to the empty set, but also the other cases where pathological basins are not necessarily reduced to the empty set. Such a less restrictive selection of therapeutic bullets would enable to consider more possibilities for counteracting diseases.
Appendix A
The algorithm in one block of pseudocode.
1 | prompt card D |
2 | card D = min(card D, 2^{n}) |
3 | generate D ⊆ S |
4 | H = {} |
5 | A_{physio} = {} |
6 | forx_{0} ∈ D do |
7 | k = 1 |
8 | x(k) = x_{0} |
9 | while true do |
10 | if $\exists w\in H:\phantom{\rule{thinmathspace}{0ex}}x(k)\in w$ then |
11 | break |
12 | end if |
13 | x(k + 1) = f_{physio}(x(k)) |
14 | if ∃k′ ∈ 〚1, k 〛 : x(k + 1) = x(k′) then |
15 | A_{physio} = A_{physio} ∪ {(x(k′),…,x(k))} |
16 | break |
17 | end if |
18 | k = k + 1 |
19 | end while |
20 | H = H ∪ {(x(1),…,x(k))} |
21 | end for |
22 | return A _{physio} |
23 | prompt ${r}_{\mathrm{min}},{r}_{\mathrm{max}},\underset{\mathrm{targ}}{\mathrm{max}},\underset{\mathrm{moda}}{\mathrm{max}}$ |
24 | r_{max} = min(r_{max}, n) |
25 | golden _ set = {} |
26 | silver _ set = {} |
27 | forr∈ 〚 r_{min}, r_{max} 〛 do |
28 | ${\mathrm{max}}_{\mathrm{targ}}^{r}=\mathrm{min}(\underset{\mathrm{targ}}{\mathrm{max}},n!/(r!\xb7(n-r)!))$ |
29 | ${\mathrm{max}}_{\mathrm{moda}}^{r}=\mathrm{min}(\underset{\mathrm{moda}}{\mathrm{max}},{2}^{r})$ |
30 | C_{targ} = {} |
31 | C_{moda} = {} |
32 | while $\mathrm{card}\phantom{\rule{thinmathspace}{0ex}}{C}_{\mathrm{targ}}<{\mathrm{max}}_{\mathrm{targ}}^{r}$ do |
33 | generate c_{targ} ∉ C_{targ} |
34 | C_{targ} = C_{targ} ∪ {c_{targ}} |
35 | end while |
36 | while $\mathrm{card}\phantom{\rule{thinmathspace}{0ex}}{C}_{\mathrm{moda}}<{\mathrm{max}}_{\mathrm{moda}}^{r}$ do |
37 | generate c_{moda} ∉ C_{moda} |
38 | C_{moda} = C_{moda} ∪ {c_{moda}} |
39 | end while |
40 | forc_{targ} ∈ C_{targ} do |
41 | for c_{moda} ∈ C_{moda} do |
42 | H = {} |
43 | A_{patho} = {} |
44 | for x_{0} ∈ D do |
45 | k = 1 |
46 | x(k) = x_{0} |
47 | while true do |
48 | if $\exists w\in H:\phantom{\rule{thinmathspace}{0ex}}x(k)\in w$ then |
49 | break |
50 | end if |
51 | x(k + 1) = f_{patho}(x(k)) |
52 | for targ_{i} ∈ c_{targ} do |
53 | for ${v}_{j}\in V$ do |
54 | if ${v}_{j}={\mathrm{targ}}_{i}$ then |
55 | x_{j}(k + 1) = moda_{i} |
56 | end if |
57 | end for |
58 | end for |
59 | if ∃k′ ∈ 〚1, k 〛 : x(k + 1) = x(k′) then |
60 | A_{patho} = A_{patho} ∪ {(x(k′),…,x(k))} |
61 | break |
62 | end if |
63 | k = k + 1 |
64 | end while |
65 | H = H ∪ {(x(1),…,x(k))} |
66 | end for |
67 | if A_{patho} ⊆ A_{physio} then |
68 | if A_{patho} = A_{physio} then |
69 | golden _ set = golden _ set ∪ {(c_{targ}, c_{moda})} |
70 | else |
71 | silver _ set = silver _ set ∪ {(c_{targ}, c_{moda})} |
72 | end if |
73 | end if |
74 | end for |
75 | end for |
76 | end for |
77 | returngolden _ set, silver _ set |
Appendix B
Boolean functions of the case study where, for the sake of readability, x_{i} stands for x_{i}(k) and x_{i+} stands for x_{i}(k + 1).
$$\begin{array}{ccc}{\mathrm{ICL}}_{+}\hfill & =\hfill & \mathrm{ICL}\wedge \neg \mathrm{DSB}\hfill \\ {\mathrm{FANCM}}_{+}\hfill & =\hfill & \mathrm{ICL}\wedge \neg \mathrm{CHKREC}\hfill \\ {\mathrm{FAcore}}_{+}\hfill & =\hfill & \mathrm{FANCM}\wedge (\mathrm{ATR}\vee \mathrm{ATM})\wedge \neg \mathrm{CHKREC}\hfill \\ \mathrm{FANCD}2{I}_{+}\hfill & =\hfill & \mathrm{FAcore}\wedge ((\mathrm{ATM}\vee \mathrm{ATR})\vee (H2\mathrm{AX}\wedge \mathrm{DSB}))\wedge \neg \mathrm{USP}1\hfill \\ \mathrm{MUS}{81}_{+}\hfill & =\hfill & \mathrm{ICL}\hfill \\ \mathrm{FANCJBRCA}{1}_{+}\hfill & =\hfill & (\mathrm{ICL}\vee \mathrm{ssDNARPA})\wedge (\mathrm{ATM}\vee \mathrm{ATR})\hfill \\ {\mathrm{XPF}}_{+}\hfill & =\hfill & (\mathrm{MUS}81\wedge \neg \mathrm{FANCM})\vee (\mathrm{MUS}81\wedge p53\wedge \neg (\mathrm{FAcore}\wedge \mathrm{FANCD}2I\wedge \mathrm{FAN}1))\hfill \\ \mathrm{FAN}{1}_{+}\hfill & =\hfill & \mathrm{MUS}81\wedge \mathrm{FANCD}2I\hfill \\ {\mathrm{ADD}}_{+}\hfill & =\hfill & (\mathrm{ADD}\vee (\mathrm{MUS}81\wedge (\mathrm{FAN}1\vee \mathrm{XPF})))\wedge \neg \mathrm{PCNATLS}\hfill \\ {\mathrm{DSB}}_{+}\hfill & =\hfill & (\mathrm{DSB}\vee \mathrm{FAN}1\vee \mathrm{XPF})\wedge \neg (\mathrm{NHEJ}\vee \mathrm{HRR})\hfill \\ {\mathrm{PCNATLS}}_{+}\hfill & =\hfill & (\mathrm{ADD}\vee (\mathrm{ADD}\wedge \mathrm{FAcore}))\wedge \neg (\mathrm{USP}1\vee \mathrm{FAN}1)\hfill \\ {\mathrm{MRN}}_{+}\hfill & =\hfill & \mathrm{DSB}\wedge \mathrm{ATM}\wedge \neg ((\mathrm{KU}\wedge \mathrm{FANCD}2I)\vee \mathrm{RAD}51\vee \mathrm{CHKREC})\hfill \\ \mathrm{BRCA}{1}_{+}\hfill & =\hfill & \mathrm{DSB}\wedge (\mathrm{ATM}\vee \mathrm{CHK}2\vee \mathrm{ATR})\wedge \neg \mathrm{CHKREC}\hfill \\ {\mathrm{ssDNARPA}}_{+}\hfill & =\hfill & \mathrm{DSB}\wedge ((\mathrm{FANCD}2I\wedge \mathrm{FANCJBRCA}1)\vee \mathrm{MRN})\wedge \neg (\mathrm{RAD}51\vee \mathrm{KU})\hfill \\ \mathrm{FANCD}1{N}_{+}\hfill & =\hfill & (\mathrm{ssDNARPA}\wedge \mathrm{BRCA}1)\vee (\mathrm{FANCD}2I\wedge \mathrm{ssDNARPA})\wedge \neg \mathrm{CHKREC}\hfill \\ \mathrm{RAD}{51}_{+}\hfill & =\hfill & \mathrm{ssDNARPA}\wedge \mathrm{FANCD}1N\wedge \neg \mathrm{CHKREC}\hfill \\ {\mathrm{HRR}}_{+}\hfill & =\hfill & \mathrm{DSB}\wedge \mathrm{RAD}51\wedge \mathrm{FANCD}1N\wedge \mathrm{BRCA}1\wedge \neg \mathrm{CHKREC}\hfill \\ \mathrm{USP}{1}_{+}\hfill & =\hfill & ((\mathrm{FANCD}1N\wedge \mathrm{FANCD}2I)\vee \mathrm{PCNATLS})\wedge \neg \mathrm{FANCM}\hfill \\ {\mathrm{KU}}_{+}\hfill & =\hfill & \mathrm{DSB}\wedge \neg (\mathrm{MRN}\vee \mathrm{FANCD}2I\vee \mathrm{CHKREC})\hfill \\ {\mathrm{DNAPK}}_{+}\hfill & =\hfill & (\mathrm{DSB}\wedge \mathrm{KU})\wedge \neg \mathrm{CHKREC}\hfill \\ {\mathrm{NHEJ}}_{+}\hfill & =\hfill & (\mathrm{DSB}\wedge \mathrm{DNAPK}\wedge \mathrm{XPF}\wedge \neg ((\mathrm{FANCJBRCA}1\wedge \mathrm{ssDNARPA})\vee \mathrm{CHKREC}))\vee ((\mathrm{DSB}\wedge \mathrm{DNAPK}\wedge \mathrm{KU})\wedge \neg (\mathrm{ATM}\wedge \mathrm{ATR}))\hfill \\ {\mathrm{ATR}}_{+}\hfill & =\hfill & (\mathrm{ssDNARPA}\vee \mathrm{FANCM}\vee \mathrm{ATM})\wedge \neg \mathrm{CHKREC}\hfill \\ {\mathrm{ATM}}_{+}\hfill & =\hfill & (\mathrm{ATR}\vee \mathrm{DSB})\wedge \neg \mathrm{CHKREC}\hfill \\ p{53}_{+}\hfill & =\hfill & (((\mathrm{ATM}\wedge \mathrm{CHK}2)\vee (\mathrm{ATR}\wedge \mathrm{CHK}1))\vee \mathrm{DNAPK})\wedge \neg \mathrm{CHKREC}\hfill \\ \mathrm{CHK}{1}_{+}\hfill & =\hfill & (\mathrm{ATM}\vee \mathrm{ATR}\vee \mathrm{DNAPK})\wedge \neg \mathrm{CHKREC}\hfill \\ \mathrm{CHK}{2}_{+}\hfill & =\hfill & (\mathrm{ATM}\vee \mathrm{ATR}\vee \mathrm{DNAPK})\wedge \neg \mathrm{CHKREC}\hfill \\ H2{\mathrm{AX}}_{+}\hfill & =\hfill & \mathrm{DSB}\wedge (\mathrm{ATM}\vee \mathrm{ATR}\vee \mathrm{DNAPK})\wedge \neg \mathrm{CHKREC}\hfill \\ {\mathrm{CHKREC}}_{+}\hfill & =\hfill & ((\mathrm{PCNATLS}\vee \mathrm{NHEJ}\vee \mathrm{HRR})\wedge \neg \mathrm{DSB})\vee ((\neg \mathrm{ADD})\wedge (\neg \mathrm{ICL})\wedge (\neg \mathrm{DSB})\wedge \neg \mathrm{CHKREC})\hfill \\ \hfill & \hfill & \hfill \end{array}$$ |
Appendix C
Computed attractors for the case study.
$${a}_{1}=\begin{array}{ccc}\hfill \mathrm{ICL}\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{FANCM}\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{FAcore}\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{FANCD}2I\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{MUS}81\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{FANCJBRCA}1\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{XPF}\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{FAN}1\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{ADD}\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{DSB}\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{PCNATLS}\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{MRN}\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{BRCA}1\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{ssDNARPA}\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{FANCD}1N\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{RAD}51\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{HRR}\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{USP}1\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{KU}\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{DNAPK}\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{NHEJ}\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{ATR}\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{ATM}\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill p53\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{CHK}1\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{CHK}2\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill H2\mathrm{AX}\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill \mathrm{CHKREC}\hfill & \hfill 0\hfill & \hfill 1\hfill \end{array}\phantom{\rule{2em}{0ex}}{a}_{2}=\begin{array}{cc}\hfill \mathrm{ICL}\hfill & \hfill 0\hfill \\ \hfill \mathrm{FANCM}\hfill & \hfill 0\hfill \\ \hfill \mathrm{FAcore}\hfill & \hfill 0\hfill \\ \hfill \mathrm{FANCD}2I\hfill & \hfill 0\hfill \\ \hfill \mathrm{MUS}81\hfill & \hfill 0\hfill \\ \hfill \mathrm{FANCJBRCA}1\hfill & \hfill 1\hfill \\ \hfill \mathrm{XPF}\hfill & \hfill 0\hfill \\ \hfill \mathrm{FAN}1\hfill & \hfill 0\hfill \\ \hfill \mathrm{ADD}\hfill & \hfill 0\hfill \\ \hfill \mathrm{DSB}\hfill & \hfill 1\hfill \\ \hfill \mathrm{PCNATLS}\hfill & \hfill 0\hfill \\ \hfill \mathrm{MRN}\hfill & \hfill 1\hfill \\ \hfill \mathrm{BRCA}1\hfill & \hfill 1\hfill \\ \hfill \mathrm{ssDNARPA}\hfill & \hfill 1\hfill \\ \hfill \mathrm{FANCD}1N\hfill & \hfill 0\hfill \\ \hfill \mathrm{RAD}51\hfill & \hfill 0\hfill \\ \hfill \mathrm{HRR}\hfill & \hfill 0\hfill \\ \hfill \mathrm{USP}1\hfill & \hfill 0\hfill \\ \hfill \mathrm{KU}\hfill & \hfill 0\hfill \\ \hfill \mathrm{DNAPK}\hfill & \hfill 0\hfill \\ \hfill \mathrm{NHEJ}\hfill & \hfill 0\hfill \\ \hfill \mathrm{ATR}\hfill & \hfill 1\hfill \\ \hfill \mathrm{ATM}\hfill & \hfill 1\hfill \\ \hfill p53\hfill & \hfill 1\hfill \\ \hfill \mathrm{CHK}1\hfill & \hfill 1\hfill \\ \hfill \mathrm{CHK}2\hfill & \hfill 1\hfill \\ \hfill H2\mathrm{AX}\hfill & \hfill 1\hfill \\ \hfill \mathrm{CHKREC}\hfill & \hfill 0\hfill \end{array}$$ |
Appendix D
Therapeutic bullets found for the case study.
−ATM | golden | ||
−ATM | −CHK2 | golden | |
−HRR | −ATM | golden | |
−ssDNARPA | −ATM | golden | |
−BRCA1 | −ATM | golden | |
−MRN | −ATM | golden | |
−FAN1 | −ATM | golden | |
−ICL | −DSB | golden | |
−FAcore | −ATM | golden | |
−USP1 | −ATM | golden | |
−ATM | −H2AX | golden | |
−ADD | −ATM | golden | |
−RAD51 | −ATM | golden | |
−XPF | −ATM | golden | |
−FANCM | −ATM | golden | |
−FANCD1N | −ATM | golden | |
−ATM | −CHK1 | golden | |
−ICL | −ATM | golden | |
−ATM | −p53 | golden | |
−FANCJBRCA1 | −ATM | golden | |
−FANCD2I | −ATM | golden | |
−ICL | −FANCD1N | −ATM | golden |
−ICL | −FAcore | −DSB | golden |
−BRCA1 | −USP1 | −ATM | golden |
−BRCA1 | −ssDNARPA | −ATM | golden |
−BRCA1 | −ATM | −CHK1 | golden |
−ADD | −ATM | −H2AX | golden |
−FAN1 | −MRN | −ATM | golden |
−ATM | −CHK2 | −H2AX | golden |
−ICL | −DSB | −MRN | golden |
−XPF | −MRN | −ATM | golden |
−FAcore | −FANCD2I | −ATM | golden |
−FANCM | −ATM | −CHK2 | golden |
−RAD51 | −ATM | −p53 | golden |
−ICL | −ssDNARPA | −ATM | golden |
−FANCM | −ATR | −ATM | golden |
−RAD51 | −ATM | −H2AX | golden |
−ADD | −FANCD1N | −ATM | golden |
−ICL | −USP1 | −ATM | golden |
−FANCM | −MRN | −ATR | golden |
−MRN | −USP1 | −ATM | golden |
−FAN1 | −HRR | −ATM | golden |
−BRCA1 | −ATM | −H2AX | golden |
−FANCJBRCA1 | −ADD | −ATM | golden |
−MRN | −ssDNARPA | −ATM | golden |
−FAcore | −ssDNARPA | −ATM | golden |
−FAcore | −FANCD1N | −ATM | golden |
−FANCD2I | −BRCA1 | −ATM | golden |
−ADD | −MRN | −ATM | golden |
−ATM | −p53 | −CHK2 | golden |
−RAD51 | −ATM | −CHK2 | golden |
−FANCM | −ATM | −H2AX | golden |
−ADD | −PCNATLS | −ATM | golden |
−FANCJBRCA1 | −ATM | −p53 | golden |
−FANCM | −MRN | −ATM | golden |
−FANCJBRCA1 | −ATM | −CHK2 | golden |
−FANCD2I | −USP1 | −ATM | golden |
−ADD | −ATM | −CHK2 | golden |
−FANCD2I | −FANCD1N | −ATM | golden |
−MRN | −HRR | −ATM | golden |
−ICL | −DSB | −USP1 | golden |
−FAN1 | −FANCD1N | −ATM | golden |
−FAN1 | −ATM | −H2AX | golden |
−FANCJBRCA1 | −FAN1 | −ATM | golden |
−ssDNARPA | −ATM | −H2AX | golden |
−ATM | −CHK1 | −CHK2 | golden |
−ADD | −HRR | −ATM | golden |
−ATM | −p53 | −CHK1 | golden |
−FAcore | −ATM | −H2AX | golden |
−FANCD2I | −ATM | −CHK2 | golden |
−FAN1 | −RAD51 | −ATM | golden |
−FANCD2I | −RAD51 | −ATM | golden |
−FANCJBRCA1 | −XPF | −ATM | golden |
−ICL | −FANCJBRCA1 | −DSB | golden |
−ssDNARPA | −HRR | −ATM | golden |
−MRN | −BRCA1 | −ATM | golden |
−FANCM | −FAN1 | −ATM | golden |
−ssDNARPA | −ATM | −p53 | golden |
−FAN1 | −ATM | −CHK2 | golden |
−FANCD2I | −ssDNARPA | −ATM | golden |
−FANCD2I | −FAN1 | −ATM | golden |
−XPF | −HRR | −ATM | golden |
−FAN1 | −BRCA1 | −ATM | golden |
−ADD | −ATM | −CHK1 | golden |
−FAcore | −HRR | −ATM | golden |
−XPF | −ATM | −CHK1 | golden |
−ADD | −BRCA1 | −ATM | golden |
−ICL | −FAN1 | −DSB | golden |
−ADD | −ATM | −p53 | golden |
−ICL | −MUS81 | −ATM | golden |
−FAcore | −RAD51 | −ATM | golden |
−ATM | −CHK1 | −H2AX | golden |
−ICL | −MRN | −ATM | golden |
−ssDNARPA | −ATM | −CHK2 | golden |
−XPF | −RAD51 | −ATM | golden |
−FANCM | −ATM | −CHK1 | golden |
−ICL | −DSB | −KU | golden |
−ICL | −MRN | −ATR | golden |
−ssDNARPA | −RAD51 | −ATM | golden |
−FANCJBRCA1 | −ssDNARPA | −ATM | golden |
−XPF | −ATM | −p53 | golden |
−FAcore | −MRN | −ATM | golden |
−HRR | −ATM | −H2AX | golden |
−HRR | −ATM | −p53 | golden |
−FANCJBRCA1 | −FANCD1N | −ATM | golden |
−FANCM | −ADD | −ATM | golden |
−FAcore | −ATM | −CHK2 | golden |
−ICL | −ATM | −CHK1 | golden |
−MRN | −FANCD1N | −ATM | golden |
−ADD | −ssDNARPA | −ATM | golden |
−MRN | −RAD51 | −ATM | golden |
−FANCD1N | −ATM | −p53 | golden |
−FANCD1N | −RAD51 | −ATM | golden |
−BRCA1 | −ATM | −CHK2 | golden |
−ADD | −RAD51 | −ATM | golden |
−ICL | −DSB | −FANCD1N | golden |
−ICL | −RAD51 | −ATM | golden |
−ICL | −ATM | −CHK2 | golden |
−FANCD1N | −ATM | −H2AX | golden |
−MRN | −ATM | −H2AX | golden |
−FAcore | −FAN1 | −ATM | golden |
−ICL | −XPF | −ATM | golden |
−FANCD2I | −ADD | −ATM | golden |
−FANCD2I | −ATM | −H2AX | golden |
−ICL | −ATR | −ATM | golden |
−FANCM | −HRR | −ATM | golden |
−USP1 | −ATM | −H2AX | golden |
−ICL | −DSB | −RAD51 | golden |
−ICL | −ATM | −H2AX | golden |
−FANCD1N | −USP1 | −ATM | golden |
−FANCM | −FANCD2I | −ATM | golden |
−FANCD2I | −MRN | −ATM | golden |
−FAcore | −ADD | −ATM | golden |
−ICL | −FAcore | −ATM | golden |
−FANCM | −ssDNARPA | −ATM | golden |
−XPF | −ATM | −H2AX | golden |
−FAcore | −USP1 | −ATM | golden |
−HRR | −ATM | −CHK1 | golden |
−BRCA1 | −RAD51 | −ATM | golden |
−FAN1 | −ADD | −ATM | golden |
−FANCJBRCA1 | −MRN | −ATM | golden |
−FANCM | −USP1 | −ATM | golden |
−FANCJBRCA1 | −ATM | −H2AX | golden |
−FANCM | −FAcore | −ATM | golden |
−HRR | −USP1 | −ATM | golden |
−ICL | −FANCM | −ATM | golden |
−ICL | −DSB | −ssDNARPA | golden |
−FAN1 | −USP1 | −ATM | golden |
−FANCM | −FANCJBRCA1 | −ATM | golden |
−ssDNARPA | −ATM | −CHK1 | golden |
−FAcore | −FANCJBRCA1 | −ATM | golden |
−FANCD2I | −HRR | −ATM | golden |
−FANCD2I | −FANCJBRCA1 | −ATM | golden |
−XPF | −ssDNARPA | −ATM | golden |
−USP1 | −ATM | −CHK1 | golden |
−ICL | −DSB | −ATM | golden |
−ICL | −ADD | −DSB | golden |
−USP1 | −ATM | −CHK2 | golden |
−XPF | −BRCA1 | −ATM | golden |
−RAD51 | −ATM | −CHK1 | golden |
−FANCD1N | −ATM | −CHK2 | golden |
−RAD51 | −HRR | −ATM | golden |
−ICL | −ATM | −p53 | golden |
−ICL | −DSB | −DNAPK | golden |
−FANCM | −FANCD1N | −ATM | golden |
−BRCA1 | −FANCD1N | −ATM | golden |
−ICL | −HRR | −ATM | golden |
−FANCJBRCA1 | −HRR | −ATM | golden |
−USP1 | −ATM | −p53 | golden |
−XPF | −ATM | −CHK2 | golden |
−ICL | −DSB | −CHK2 | golden |
−ICL | −XPF | −DSB | golden |
−ssDNARPA | −FANCD1N | −ATM | golden |
−FANCJBRCA1 | −RAD51 | −ATM | golden |
−ICL | −DSB | −ATR | golden |
−HRR | −ATM | −CHK2 | golden |
−ADD | −USP1 | −ATM | golden |
−FANCM | −RAD51 | −ATM | golden |
−FANCJBRCA1 | −ATM | −CHK1 | golden |
−FANCM | −ATM | −p53 | golden |
−XPF | −FANCD1N | −ATM | golden |
−FAcore | −BRCA1 | −ATM | golden |
−ICL | −DSB | −NHEJ | golden |
−BRCA1 | −ATM | −p53 | golden |
−BRCA1 | −HRR | −ATM | golden |
−FANCJBRCA1 | −USP1 | −ATM | golden |
−ssDNARPA | −USP1 | −ATM | golden |
−ICL | −DSB | −H2AX | golden |
−FANCM | −BRCA1 | −ATM | golden |
−MRN | −ATM | −CHK1 | golden |
−ICL | −FANCJBRCA1 | −ATM | golden |
−FANCD1N | −ATM | −CHK1 | golden |
−ICL | −DSB | −BRCA1 | golden |
−MRN | −ATM | −CHK2 | golden |
−FANCJBRCA1 | −BRCA1 | −ATM | golden |
−FAN1 | −ssDNARPA | −ATM | golden |
−MRN | −ATM | −p53 | golden |
−FANCD1N | −HRR | −ATM | golden |
−ICL | −MUS81 | −DSB | golden |
−ICL | −DSB | −p53 | golden |
−XPF | −USP1 | −ATM | golden |
−XPF | −ADD | −ATM | golden |
−ATM | −p53 | −H2AX | golden |
−ICL | −FANCM | −DSB | golden |
−ICL | −DSB | −HRR | golden |
−ICL | −BRCA1 | −ATM | golden |
−RAD51 | −USP1 | −ATM | golden |
−ICL | −FAN1 | −ATM | golden |
−ICL | −ADD | −ATM | golden |
−ICL | −DSB | −CHK1 | golden |
−ICL | −FANCD2I | −DSB | golden |
−ICL | −FANCD2I | −ATM | golden |
Appendix E
Occurrence of each node in the found therapeutic bullets, in percentage of the total number of tested bullets.
ATM | 87.736% |
ICL | 22.170% |
BRCA1 | 18.396% |
DSB | 11.792% |
MRN | 10.377% |
FANCM | 9.906% |
ADD | 9.906% |
FANCJBRCA1 | 9.434% |
ssDNARPA | 9.434% |
FANCD1N | 9.434% |
RAD51 | 9.434% |
HRR | 9.434% |
USP1 | 9.434% |
CHK2 | 9.434% |
H2AX | 9.434% |
FAcore | 8.019% |
FANCD2I | 8.019% |
FAN1 | 8.019% |
p53 | 8.019% |
CHK1 | 8.019% |
XPF | 7.547% |
ATR | 2.358% |
MUS81 | 0.943% |
PCNATLS | 0.472% |
KU | 0.472% |
DNAPK | 0.472% |
NHEJ | 0.472% |
CHKREC | 0% |