Email updates

Keep up to date with the latest news and content from BMC Bioinformatics and BioMed Central.

This article is part of the supplement: Selected articles from the 10th International Workshop on Computational Systems Biology (WCSB) 2013: Bioinformatics

Open Access Research

Computing preimages of Boolean networks

Johannes Georg Klotz*, Martin Bossert and Steffen Schober

Author Affiliations

Institute of Communications Engineering, Ulm University, Albert-Einstein-Allee 43, 89081 Ulm, Germany

For all author emails, please log on.

BMC Bioinformatics 2013, 14(Suppl 10):S4  doi:10.1186/1471-2105-14-S10-S4


The electronic version of this article is the complete one and can be found online at: http://www.biomedcentral.com/1471-2105/14/S10/S4


Published:12 August 2013

© 2013 Klotz et al; licensee BioMed Central Ltd.

This is an Open Access article distributed under the terms of the Creative Commons Attribution License (http://creativecommons.org/licenses/by/2.0), which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.

Abstract

In this paper we present an algorithm based on the sum-product algorithm that finds elements in the preimage of a feed-forward Boolean networks given an output of the network. Our probabilistic method runs in linear time with respect to the number of nodes in the network. We evaluate our algorithm for randomly constructed Boolean networks and a regulatory network of Escherichia coli and found that it gives a valid solution in most cases.

Introduction

In systems and computational biology Boolean networks (BN) are widely used to model regulative dependencies of organisms [1,2]. We consider networks, which map a set of environmental conditions to the presence of proteins and finally to actual chemical reactions, which are often modeled as fluxes of a flux-balance analysis [3]. Hence, these networks are used to make in silico predictions of behavior of organisms in a certain environment [4].

In this paper we address the inverse problem, i.e., we want to predict environmental conditions that allow certain reactions to take place, and others not. Hence, in general, we need to find a set of possible inputs that lead to a given output. This so called predecessor problem or preimage problem has been addressed by Wuensche in [5] and has been shown to NP-hard in general [6], which makes it infeasible to solve it for large networks. In [7] an algorithm with reduced complexity for BNs with canalizing Boolean functions has been introduced. However, the problem is infeasible under certain conditions. Both algorithms are designed to find the whole set of preimages, i.e., all inputs to the BN with lead to a certain, desired, output.

In some applications, knowledge of the whole preimage set is not important, merely it can be sufficient to know a subset of the preimage set. Here, we propose a probabilistic algorithm, which solves this problem in linear time with respect to the number of nodes in the network, based on a variation of the well known Sum-Product Algorithm (SPA) [8], which is used for a variety of tasks, including decoding error correction codes in communication engineering [9].

Methods

Boolean networks and main idea

We consider networks like shown in Figure 1, mapping the values of the N in-nodes <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M1','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M1">View MathML</a> to the M out-nodes <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M2','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M2">View MathML</a>, i.e., we can represent this BN as a function mapping the N input values uniquely to the M output values:

thumbnailFigure 1. Example of a feed-forward network

<a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M3','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M3">View MathML</a>

The network itself consists of n nodes, and a set of directed edges connecting these nodes. Each node i has a certain state, which can be either zero or one, represented by a variable xi. Its value is determined by evaluating a Boolean function (BF) fi. Further, lets define the set ñ(fj) as the incoming nodes of node j. For example in Figure 1, ñ(f5) = {1, 3}. The BF fj is a function mapping kj = (fj)| values of {0, 1}k to {0, 1}, where k is also called the in-degree of node j. The number of edges emerging from a node is called out-degree.

Given a vector of input values x ∈ {0, 1}N , x = (x1, x2, . . . , xN ) the corresponding output of f is y = f (x), y ∈ {0, 1}M. In general there does not exist a unique inverse function f−1. Instead the cardinality of the set Ωy := {x : f(x) = y} will be larger one. We call Ωy the set of preimages of y. In this paper we are interested to find at least parts of Ωy. Suppose there is a probability distribution Py on {0, 1}N such that

<a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M4','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M4">View MathML</a>

If we knew the probability distribution Py, we would have solved the problem. But as explained, this is too difficult in general. Our main idea now is to approximate Py by the product of the marginal distributions Pi on the individual xi, i.e.,

<a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M5','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M5">View MathML</a>

as the well-known SPA can be used to compute the marginals efficiently. If the approximation is good enough sampling out the product of the marginals will yield an element in Ωy with reasonable probability.

Proposed algorithm

In this section we will first discuss the basic principles of factor graphs and the SPA. Then we will describe the BN as factor graph and will formulate the actual algorithm to find the marginals. Finally, the sampling is described.

Factor graphs and sum-product algorithm

Assume some function g(x1, . . . , xn) defined on some domain <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M6','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M6">View MathML</a>, which can be factorized in m local functions hj, j ∈ [m] := {1, 2, . . . , m}, i.e.,

<a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M7','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M7">View MathML</a>

where Xj is the subset of [n] containing the argument of hj . We can then define a factor graph [8] as a bipartite graph consisting of n nodes representing variables {x1, . . . , xn} (variable nodes) and of m nodes representing functions {h1, . . . hm} (function node). Edges exist between a function node and a variable node if and only if xi is an input to function hj .

The marginal function gi(xi) is defined as [8]

<a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M8','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M8">View MathML</a>

where <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M9','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M9">View MathML</a> is defined as

<a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M10','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M10">View MathML</a>

In general the computation of the gi is difficult, but due to the factorization of g the task can be efficiently solved using the the so called Sum-Product Algorithm (SPA) [8]. The algorithm iteratively passes messages between the nodes of the graph. At each iteration the messages µ are sent from the function nodes to the variable nodes, containing the corresponding marginal function of the local function. These messages are computed as follows [8]:

Function to variable node

<a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M11','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M11">View MathML</a>

where n(i) give the set of neighboring nodes of node i.

At the variable nodes, these messages are then combined to a marginal function λ and sent back to the function nodes [8]:

Variable to function node

<a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M12','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M12">View MathML</a>

The Boolean network as factor graph

We apply the concept of factor graphs to BNs. Each node in the network represents one variable xi ∈ {0, 1}, i ∈ [n] of the factor graph, hence we have n variable nodes. Each BF fj of the BN <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M13','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M13">View MathML</a> is a function node and is connected to the node j and the incoming nodes ñ(fj). Lets to define <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M14','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M14">View MathML</a> as the variables of the incoming nodes of node j, i.e. the argument of the BN fj. Further, we define <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M15','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M15">View MathML</a> as <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M16','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M16">View MathML</a> without the node i.

Finally, if we consider the variables as each node as random variables, we have a common distribution of all variables nodes described by the density function,

<a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M17','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M17">View MathML</a>

For sake of readability we will omit the subscripts of the density function, if they are obvious from context. We are interested in finding the marginal distributions of the in-nodes, which can be described by the density functions

<a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M18','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M18">View MathML</a>

This problem is an instance of the problem described in Section Factor Graphs and Sum-Product Algorithm, hence we apply the same methods here.

Update rule: function to variable node

If we focus on one function node <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M19','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M19">View MathML</a> there exists a common distribution of all variables relevant for this node. Namely, these relevant variables are the ones located in <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M16','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M16">View MathML</a> of the BF fj, and the value of node j. We can write the density of this distribution as:

<a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M20','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M20">View MathML</a>

Lets define ñ(fj) as the set of indices of the input nodes of the BF fj.

We need to send the local marginal distribution of each variable i ∈ {j} ∪ ñ(fj) back to the variable node, or more formally:

<a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M21','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M21">View MathML</a>

(1)

If i = j, i.e. if the message is designated for the node containing the output of the BF, the density of the marginal distribution becomes:

<a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M22','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M22">View MathML</a>

which is the probability distribution of the functions output. We can assume that the elements of <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M14','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M14">View MathML</a> are pairwise independent, hence we can write:

<a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M23','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M23">View MathML</a>

where λl is the probability distribution of variable node l and is defined in Eq. 3.

In the other cases, i.e., i ≠ j, Eq. (1) becomes:

<a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M24','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M24">View MathML</a>

We still can assume that the elements of <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M25','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M25">View MathML</a> are pairwise independent, hence we can write:

<a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M26','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M26">View MathML</a>

If the Boolean functions output <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M27','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M27">View MathML</a> is already completely determined by <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M15','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M15">View MathML</a>, i.e., if the variable xi has no influence on the output for this particular choice of the other variables, we assume xi to be uniformly distributed:

<a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M28','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M28">View MathML</a>

and since xj is completely determined by <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M15','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M15">View MathML</a>

<a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M29','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M29">View MathML</a>

Otherwise, xi is totally determined by xj and the other variables, i.e., xi is 0 or 1 depending on BF. Hence, we can write

<a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M30','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M30">View MathML</a>

where <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M31','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M31">View MathML</a> is either 0 or 1. Further we can assume xj independent of <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M15','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M15">View MathML</a>, hence

<a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M32','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M32">View MathML</a>

Finally, we can summarize for i j:

<a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M33','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M33">View MathML</a>

(2)

with

<a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M34','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M34">View MathML</a>

Update rule: variable to function node

The update rule is the same for all variable nodes j ∈ [n] and is independent of the function node to which they are directed.

<a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M35','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M35">View MathML</a>

where <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M36','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M36">View MathML</a> is the set of all function nodes, which have node j as input.

Finding the input distributions

In our algorithm, we use the well known log-likelihood ratio (LLR) to represent the probability distribution of binary variables [10]. It is defined as:

<a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M37','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M37">View MathML</a>

(4)

A scheme of the algorithm is given in Algorithm 1.

The probability distribution of each node j ∈ [n] at iteration t is given as <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M38','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M38">View MathML</a> and are initialized with <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M39','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M39">View MathML</a>, which is equivalent to the uniform distribution. Then we set the LLRs for the out-nodes to either −or +depending on the desired output y of the BN. At each iteration the algorithm can be split in two steps. The first step iterates over all function nodes <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M13','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M13">View MathML</a> and all input variables i ñ(fj ) calculating the LLR <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M40','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M40">View MathML</a> using Eq. (2) and Eq. (4).

In the second step we update all variables-nodes, where the LLRs Lj represents the distributions λj and, hence the product of Eq. 3 becomes a summation. Please note, that the LLR of the previous iteration is also added to the sum, in order to prevent rapid changes of the distributions.

After performing a certain number of iterations tmax, the desired marginal distributions of the input variables are found.

Algorithm 1

    Initialize <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M39','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M39">View MathML</a> for all nodes

    Set the desired LLRs of the out-nodes, i.e., <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M41','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M41">View MathML</a> is either −or +, for all out-nodes <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M42','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M42">View MathML</a>.

    t = 0

    repeat

      t=t+1

      for each non-in-node <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M13','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M13">View MathML</a>do

        for each input variable i ñ(fj) do

          calculate Lj→i using Eq. (2) and Eq. (4)

        end for

      end for

      for each non-out-node v do

        <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M43','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M43">View MathML</a>

      end for

    until maximum number of iterations reached

Sampling

The sampling part of our approach is straightforward. Using the marginal distributions <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M44','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M44">View MathML</a>, <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M45','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M45">View MathML</a> we randomly draw vectors x and check if they fulfill y = f(x). If so, they are added to the set <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M46','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M46">View MathML</a>. This procedure is repeated for a certain number of samples.

Simulation results and discussion

We tested our algorithm with randomly generated networks and the regulatory network of Escherichia coli (E-coli) [2]. The random networks consist of 2400 nodes with N = 200 and M = 1200. We have chosen the BFs from:

· all functions with k ≤ 15 (Type A)

unate, i.e. locally monotone, functions with k ≤ 15 (Type B)

After generating a network we draw a certain number T of uniformly distributed input vectors x and obtain y = f(x). For each y we applied then Algorithm 1 to obtain the marginal distributions<a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M47','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M47">View MathML</a>,<a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M45','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M45">View MathML</a> . To investigate the convergence behavior with respect to tmax we first apply hard-decision to evaluate a good choice for tmax, i.e., we generate an estimate <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M48','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M48">View MathML</a> by setting

<a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M49','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M49">View MathML</a>

Then we evaluate the network <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M50','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M50">View MathML</a>, and measure the similarity between y and <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M51','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M51">View MathML</a> by counting the equal entries and divide them by the length of y. We did so for 100 networks of Type A and B, and set T = 100. The averaged results can be seen in Figure 2.

thumbnailFigure 2. Similarity of y and <a onClick="popup('http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M51','MathML',630,470);return false;" target="_blank" href="http://www.biomedcentral.com/1471-2105/14/S10/S4/mathml/M51">View MathML</a> versus tmax

One can see, that for tmax 14 there is almost no improvement in the similarity. This number is equal to two times the number of nodes between input and output, i.e., it seems to be sufficient that the messages travel once through the network and back. Thus, the following simulations have been perform setting tmax = 14.

Next, we apply sampling as described in Section Sampling. We did so for 100 different networks of Type A and B, and the E-coli network. For each random network we did T = 100 runs, for E-coli T = 1000. The results can be viewed in Table 1. We depict the percentage of solved networks, i.e. the portion of networks we found at least one valid x ∈ Ωy . Further, we give the average number of valid x and the average number of unique x.

Table 1. Simulation results for different networks

One can see from the results, that in general for most networks and ys at least one preimage can be found. It is worth mentioning, that for the E-coli network every sampled solution was unique. This is due to the fact, that there exist a few inputs, who completely determine the output. The other input variables have then no influence and hence a marginal distribution of 0.5. Further, the results for the network of type B are much better than for type A. It seems that the marginal distributions for unate functions give better estimation of the actual distribution than the marginal distributions for non-unate functions.

Conclusions

In this work, we proposed a probabilistic algorithm to address the preimage problem of Boolean networks. This is of interest when designing experiments, in which certain regulators are supposed to be in a specific state. Performing a series of simulations with Random networks we showed, that the algorithm works not only for unate functions, of which most biologically motivated networks consist, but for any kind of Boolean functions. By replacing the fixed output values of the network by probabilities one can simply apply the algorithm to networks, whose designated output is described by probability distributions. Further, the algorithm may be easily adjusted to work on stochastic, e.g. Bayesian, networks, where the nodes contain only transition probabilities instead of Boolean function. Therefore, it is needed to adapt the update rules accordingly. It remains an open question, which influence topographic properties, such as number of layers and number of nodes in these layers, have to the performance of the proposed algorithms, since we only investigated networks which are similar to the regulatory network of E-coli.

List of abbreviations

E-coli: Escherichia coli

BF: Boolean Function

BN: Boolean Network

Eq: Equation

LLR: Log-Likelihood Ratio

SPA: Sum-Product Algorithm

Competing interests

The authors declare that they have no competing interests.

Authors' contributions

Idea and Concept: JK, SS. Design of the overall project: MB. Scientific mentor of JK and SS: MB. Implementation and Evaluation: JK. Wrote Paper: JK and SS. All authors discussed the results and implications and commented on the manuscript at all stages.

Acknowledgements

The authors would like to thank Shrief Rizkalla for implementing parts of the simulation.

Declarations

This work was supported by the German research council " Deutsche Forschungsgemeinschaft" (DFG) under Grant Bo 867/25-2 and the Ulm University.

This article has been published as part of BMC Bioinformatics Volume 14 Supplement 10, 2013: Selected articles from the 10th International Workshop on Computational Systems Biology (WCSB) 2013: Bioinformatics. The full contents of the supplement are available online at http://www.biomedcentral.com/bmcbioinformatics/supplements/14/S10

References

  1. Kauffman SA, Peterson C, Samuelsson B, Troein C: Random Boolean network models and the yeast transcriptional network.

    Proceedings of the National Academy of Sciences of the United States of America 2003, 100(25):14796-14799. PubMed Abstract | Publisher Full Text | PubMed Central Full Text OpenURL

  2. Covert MW, Knight EM, Reed JL, Herrgard MJ, Palsson BO: Integrating high-throughput and computational data elucidates bacterial networks.

    Nature 2004, 429(6987):92-96. PubMed Abstract | Publisher Full Text OpenURL

  3. Feist AM, Henry CS, Reed JL, Krummenacker M, Joyce AR, Karp PD, Broadbelt LJ, Hatzimanikatis V, Palsson BO: A genome-scale metabolic reconstruction for Escherichia coli K-12 MG1655 that accounts for 1260 ORFs and thermodynamic information.

    Molecular Systems Biology 2007, 3:121. PubMed Abstract | Publisher Full Text | PubMed Central Full Text OpenURL

  4. Feuer R, Gottlieb K, Viertel G, Klotz J, Schober S, Bossert M, Sawodny O, Sprenger G, Ederer M: Model-based analysis of an adaptive evolution experiment with Escherichia coli in a pyruvate limited continuous culture with glycerol.

    EURASIP Journal on Bioinformatics and Systems Biology 2012, 2012:14. PubMed Abstract | BioMed Central Full Text | PubMed Central Full Text OpenURL

  5. Wuensche A: The Ghost in the Machine: Basins of Attraction of Random Boolean Networks. In Artificial Life III Proceedings, Santa Fe Institute Studies in the Sciences of Complexity. Addison-Wesley; 1994. OpenURL

  6. Akutsu T, Hayashida M, Zhang SQ, Ching WK, Ng MK: Analyses and Algorithms for Predecessor and Control Problems for Boolean Networks of Bounded Indegree.

    Information and Media Technologies 2009, 4(2):338-349. OpenURL

  7. Klotz JG, Schober S, Bossert M: On the Predecessor Problem in Boolean Network Models of Regulatory Networks.

    International Journal of Computers and Their Applications 2012, 19(2):93-100. OpenURL

  8. Kschischang F, Frey BJ, Loeliger HA: Factor Graphs and the Sum-Product Algorithm.

    IEEE Transactions on Information Theory 2001, 47:498-519. Publisher Full Text OpenURL

  9. Gallager RG: Low-Density Parity-Check Codes. Cambridge: M.I.T. Press; 1963. OpenURL

  10. Hagenauer J, Offer E, Papke L: Iterative decoding of binary block and convolutional codes.

    Information Theory, IEEE Transactions on 1996, 42(2):429-445. Publisher Full Text OpenURL