full draft - uploaded version

This commit is contained in:
Tom
2026-06-14 23:55:02 +02:00
parent 584f44166f
commit 2f33a66152
5 changed files with 562 additions and 400 deletions

BIN
bn_repressilator.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

View File

@@ -23,6 +23,14 @@ probabilistic_funcs = [
]
repressilator_funcs = [
lambda x1, x2, x3: not x3,
lambda x1, x2, x3: not x1,
lambda x1, x2, x3: not x2,
]
funcs = repressilator_funcs
nodes = []
@@ -72,7 +80,7 @@ def simulate(initial_state):
def get_table():
for i in product((0, 1), repeat=4):
for i in product((0, 1), repeat=3):
init(tuple(i))
state = state_to_str()
update()
@@ -81,8 +89,8 @@ def get_table():
def update():
# return synchronous_update()
# return sequential_update([0, 1, 2, 3])
return probabilistic_update()
return sequential_update([0, 1, 2])
# return probabilistic_update()
# return block_sequential_update(...)
# return asynchronous_deterministic_update(...)

BIN
paper.pdf

Binary file not shown.

916
paper.tex
View File

@@ -12,10 +12,10 @@
\usepackage[usenames]{xcolor} % colors for highlighting etc.
\usepackage{url} % for urls
\usepackage[%pdftitle=, % define the PDF metadata
%pdfauthor=,
colorlinks=true, linkcolor=purple, urlcolor=blue, citecolor=cyan,
anchorcolor=black % make links/references 'clickable' without ugly frames
]{hyperref}
%pdfauthor=,
colorlinks=true, linkcolor=purple, urlcolor=blue, citecolor=cyan,
anchorcolor=black % make links/references 'clickable' without ugly frames
]{hyperref}
\usepackage{cleveref} % smart references to figures, equations etc.
% some packages which may be useful when drafting, but should be removed before submission
@@ -48,411 +48,533 @@
\newcommand{\eye}{\bm{I}} % identity matrix
\newcommand{\ei}{\bm{e}_i} % standard basis vector e_i
\newcommand{\ej}{\bm{e}_j} % standard basis vector e_j
% TIP: Resist the temptation to be too clever with macros
% - \ei and \ej are easier to type than e.g. \ee[i] (note that \e is a low-level command and should not be redefined)
% - While you can define macros in terms of other macros (eg we could define \ei in terms of \vec),
% many journals wont accept this. Recursive macros also produce more frequent and more complicated compilation errors
% TIP: Resist the temptation to be too clever with macros
% - \ei and \ej are easier to type than e.g. \ee[i] (note that \e is a low-level command and should not be redefined)
% - While you can define macros in terms of other macros (eg we could define \ei in terms of \vec),
% many journals wont accept this. Recursive macros also produce more frequent and more complicated compilation errors
% Commands like \sin and \exp ensure proper fonts and spacing for math operators.
% Use the dedicated \DeclareMathOperator to define new operators
\DeclareMathOperator{\diag}{diag}
\begin{document}
\title{Influence of update schemes on boolean networks}
% author information
% COMMENT OUT THESE LINES FOR YOUR CONFERENCE SUBMISSION!
\author{Tom Zuidberg \\ 455969}
\maketitle
\thispagestyle{plain}
\pagestyle{plain}
\begin{abstract}
In this paper we will introduce boolean networks (BN) and their relevance to gene regulatory networks (GRN). We will have a closer look on update schemes. Specifically, synchronous, sequential and asynchronous update schemes and their effect on the behavior of BN and GRN respectively.
\todo[inline]{will be change once introduction and conclusion are done}
\end{abstract}
\section{Introduction}
Boolean networks were first introduced by Stuart Kauffman in the late 1960s as a simplified model of biochemical systems \cite{helikar2011boolean}. In this framework, genes or regulatory components are represented as binary variables whose states evolve according to logical functions encoding regulatory interactions. Despite their simplicity, boolean networks have proven useful in capturing qualitative dynamical behavior in complex biochemical systems and have since become a standard tool of modeling in this field.
A key abstraction in Boolean network modeling is the representation of dynamics via a state graph, where nodes correspond to network states and directed edges represent transitions induced by update functions. The long term behavior of the network is typically described in terms of attractors in this graph, which are often interpreted as stable cellular or functional states \cite{helikar2011boolean}.
When it comes to modeling a system by a boolean network, the choice of the update scheme takes an important role, as it defines how and when individual parts of the network change. Some of the most commonly used schemes include the synchronous scheme, where all nodes update synchronously; asynchronous scheme, where only individual nodes are updated; sequential and probabilistic which introduces randomness into the system.
The choice of the update scheme will lead to a different behavior, such as other attractors and cycles, a change in reachability and different robustness with regards to perturbations.
In the following, we will introduce different update schemes and their respective effects on boolean networks illustrated on examples and find the best use case for each scheme.
\todo[inline]{use more \textbf{references}!}
\section{Boolean networks}
\label{sec:bn}
A boolean network consists of nodes $x_i(t)$ that have a boolean state, either $0$ or $1$, at a point in time $t$. Each node has a corresponding update function
$$
x_i(t+1) = f_i(x_1(t), x_2(t), \ldots, x_n(t))
$$ expressing the new state of $x_i(t+1)$. The state of the boolean network can be describe as a boolean number \mbox{$x(t) = x_1 x_2\ldots x_n$} where each node is replaced with the corresponding state 0 or 1.
\begin{figure}
\title{Influence of update schemes on boolean networks}
% author information
% COMMENT OUT THESE LINES FOR YOUR CONFERENCE SUBMISSION!
\author{Tom Zuidberg \\ 455969}
\maketitle
\thispagestyle{plain}
\pagestyle{plain}
\begin{abstract}
Boolean networks are a widely used framework for modeling the qualitative dynamics of biological regulatory systems. A central modeling decision is the choice of update scheme, which determines how and when individual nodes are evaluated at each time step and directly shapes the resulting dynamics. This paper introduces and compares four commonly used update schemes: synchronous, sequential, probabilistic, and asynchronous. We analyze how each scheme affects attractor structure, reachability, and network robustness, and discuss their practical implications for the modeling of gene regulatory networks. A central finding is that the same network can exhibit fundamentally different attractors depending on which scheme is used, demonstrating that the choice of update scheme is not a neutral implementation detail but directly shapes the dynamical behavior of the model and the biological conclusions that can be drawn from it.
\end{abstract}
\section{Introduction}
Boolean networks were first introduced by Stuart Kauffman in the late 1960s as a simplified model of biochemical systems \cite{helikar2011boolean}. In this framework, genes or regulatory components are represented as binary variables, each taking a value of either 0 (inactive) or 1 (active), whose states evolve according to logical update functions encoding regulatory interactions. Despite their simplicity, boolean networks have proven useful in capturing qualitative dynamical behavior in complex biochemical systems and have since become a standard tool of modeling in systems biology \cite{bornholdt2008boolean}.
A key abstraction in boolean network modeling is the concept of attractors. Since a network of $n$ binary nodes has exactly $2^n$ possible states and the update functions are deterministic, the system must eventually revisit a state it has already visited. The resulting recurring patterns, either fixed points or limit cycles, are called attractors and are often interpreted as stable cellular or functional states \cite{helikar2011boolean}. In the context of gene regulatory networks (GRNs), attractors have been proposed to correspond to distinct cell types or phenotypic states \cite{bornholdt2008boolean}.
Gene regulatory networks describe the interactions between genes, transcription factors and other molecular entities that together control gene expression. Modeling GRNs as boolean networks provides a simplified view: instead of tracking continuous concentration levels of molecular species, each gene is treated as either expressed or silenced. This allows for qualitative insight into questions such as how different cell types arise from the same genetic blueprint, or how mutations affect the stable states of the system \cite{bornholdt2008boolean, schwab2020concepts}.
When it comes to modeling a system as a boolean network, the choice of update scheme plays an important role, as it defines how and when individual nodes are updated at each time step. This choice is not merely a technical detail, since it affects which attractors exist, which states are reachable from a given initial condition, and how robustly the network responds to perturbations \cite{schwab2020concepts, aracena2009robustness}. The most commonly used schemes include the synchronous scheme, where all nodes update simultaneously; the sequential scheme, where nodes are updated one after another in a fixed order; the probabilistic scheme, which introduces randomness into the update process; and the asynchronous scheme, where only one node is updated per time step.
The question of which update scheme best reflects biological reality has been an active area of research. Asynchronous schemes have often been considered more biologically plausible, since biochemical processes in living cells rarely occur simultaneously across all genes. However, as recent studies have shown, synchronous and asynchronous schemes can lead to the same meaningful behavior under the right conditions, and the practical choice of scheme often comes down to available biological knowledge and computational feasibility \cite{schwab2020concepts}.
In the following, we will introduce the formal model of boolean networks in \cref{sec:bn}, followed by a comparison of the different update schemes in \cref{sec:update_schemes}. Finally, in \cref{sec:relevance_grn}, we will discuss the implications of these schemes for the modeling of gene regulatory networks.
\section{Boolean networks}
\label{sec:bn}
A boolean network consists of nodes $x_i(t)$ that have a boolean state, either $0$ or $1$, at a point in time $t$. Each node has a corresponding update function
$$
x_i(t+1) = f_i(x_1(t), x_2(t), \ldots, x_n(t))
$$ expressing the new state of $x_i(t+1)$. The state of the boolean network can be described as a binary string \mbox{$x(t) = x_1 x_2\ldots x_n$} where each node is replaced with the corresponding state 0 or 1.
\begin{figure}
\centering
\tikzset{every picture/.style={line width=0.75pt}} %set default line width to 0.75pt
\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1]
%uncomment if require: \path (0,321); %set diagram left start at 0, and has height of 321
%Shape: Circle [id:dp6120737986176485]
\draw (89.67,50) .. controls (89.67,38.95) and (98.62,30) .. (109.67,30) .. controls (120.71,30) and (129.67,38.95) .. (129.67,50) .. controls (129.67,61.05) and (120.71,70) .. (109.67,70) .. controls (98.62,70) and (89.67,61.05) .. (89.67,50) -- cycle ;
%Shape: Circle [id:dp4460102181537059]
\draw (179.67,50) .. controls (179.67,38.95) and (188.62,30) .. (199.67,30) .. controls (210.71,30) and (219.67,38.95) .. (219.67,50) .. controls (219.67,61.05) and (210.71,70) .. (199.67,70) .. controls (188.62,70) and (179.67,61.05) .. (179.67,50) -- cycle ;
%Shape: Circle [id:dp5043508885922044]
\draw (89.67,130) .. controls (89.67,118.95) and (98.62,110) .. (109.67,110) .. controls (120.71,110) and (129.67,118.95) .. (129.67,130) .. controls (129.67,141.05) and (120.71,150) .. (109.67,150) .. controls (98.62,150) and (89.67,141.05) .. (89.67,130) -- cycle ;
%Shape: Circle [id:dp19837549619745176]
\draw (179.67,130) .. controls (179.67,118.95) and (188.62,110) .. (199.67,110) .. controls (210.71,110) and (219.67,118.95) .. (219.67,130) .. controls (219.67,141.05) and (210.71,150) .. (199.67,150) .. controls (188.62,150) and (179.67,141.05) .. (179.67,130) -- cycle ;
%Straight Lines [id:da34212297668952507]
\draw (129.67,46) -- (177.67,46) ;
\draw [shift={(179.67,46)}, rotate = 180] [fill={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.08] [draw opacity=0] (12,-3) -- (0,0) -- (12,3) -- cycle ;
%Straight Lines [id:da9191192486085845]
\draw (179.67,54) -- (131.67,54) ;
\draw [shift={(129.67,54)}, rotate = 360] [fill={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.08] [draw opacity=0] (12,-3) -- (0,0) -- (12,3) -- cycle ;
%Straight Lines [id:da9988186797184601]
\draw (109.67,70) -- (109.67,108) ;
\draw [shift={(109.67,110)}, rotate = 270] [fill={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.08] [draw opacity=0] (12,-3) -- (0,0) -- (12,3) -- cycle ;
%Straight Lines [id:da0026996459711727816]
\draw (129.67,126) -- (177.67,126) ;
\draw [shift={(179.67,126)}, rotate = 180] [fill={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.08] [draw opacity=0] (12,-3) -- (0,0) -- (12,3) -- cycle ;
%Straight Lines [id:da6389438894367955]
\draw (179.67,134) -- (131.67,134) ;
\draw [shift={(129.67,134)}, rotate = 360] [fill={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.08] [draw opacity=0] (12,-3) -- (0,0) -- (12,3) -- cycle ;
% Text Node
\draw (105.17,42.5) node [anchor=north west][inner sep=0.75pt] [align=left] {1};
% Text Node
\draw (194.67,42.5) node [anchor=north west][inner sep=0.75pt] [align=left] {2};
% Text Node
\draw (104.67,122.5) node [anchor=north west][inner sep=0.75pt] [align=left] {3};
% Text Node
\draw (194.67,122) node [anchor=north west][inner sep=0.75pt] [align=left] {4};
% Text Node
\draw (111.33,207.8) node [anchor=north west][inner sep=0.75pt] {$ \begin{array}{l}
f_{1} =\neg x_{2}\\
f_{2} =x_{1}\\
f_{3} =x_{1} \oplus x_{4}\\
f_{4} =x_{3}
\end{array}$};
\end{tikzpicture}
\caption{Example of a boolean network with four nodes. Each vertex indicates that a node is part of the update function of the other node. For instance $x_1$ is part of $f_2$ and $f_3$. Note that $\neg$ means the logical NOT and $\oplus$ means the logical XOR function.
}
\label{fig:bn_example}
\end{figure}
Consider the boolean network shown in \cref{fig:bn_example}. For example, if the state is $x(t)=0011$ at time $t$, meaning that $x_1, x_2$ are $0$ and $x_3, x_4$ are $1$. After applying the synchronous update, the next state $x(t+1)$ is $1011$. Updating the network multiple times creates a trajectory, which is the sequence of the states starting from the initial state. With our example, the trajectory is $0011 \rightarrow 1011 \rightarrow 1101 \rightarrow 0100 \rightarrow \ldots$. Each trajectory in a reasonably small boolean network eventually reaches one of two scenarios. Either it falls into a state, called an attractor, that does not change when updated, or it falls into a cycle of states.
A state graph shows all possible states of the network with the corresponding trajectory. For example, the state graph in \cref{fig:bn_syn_state_graph} shows the trajectories from the boolean network in \cref{fig:bn_example}. These state graphs help visualize the attractors and cycles, e.g. 2 cycles of length 8.
In boolean networks, robustness refers to the stability of the behavior with regard to perturbations, e.g. a single node state change. A boolean network with poor robustness means that a simple flip of a node can change the resulting attractor or cycle for that trajectory. With regard to our example from \cref{fig:bn_syn_state_graph}, if either $x_3$ or $x_4$ (not both at once) is flipped, the cycle switches. A strong robustness however would mean that even with such perturbations, the resulting attractor or cycle does not change.
The set of all states that eventually lead to a particular attractor is called its \emph{basin of attraction}. In the state graph in \cref{fig:bn_syn_state_graph}, the two cycles each have a basin of eight states, meaning that starting from any state in a basin, the network will always converge to the corresponding attractor. Larger basins generally indicate more dominant or robust attractors. In biological terms, a large basin corresponds to a cell state that is easily reached and hard to escape from, which is a desirable property for modeling stable functional states such as cell types.
Not every state in a boolean network is reachable from another state through the dynamics. States that have no predecessor in the state graph are called \emph{garden-of-Eden states}: they can only appear as initial conditions and are never produced by any update step. Their presence reduces the effective state space that the network can explore during normal operation. In the synchronous state graph of \cref{fig:bn_syn_state_graph}, no garden-of-Eden states are present, since every state is reachable from at least one other state within the two cycles.
The structure of the state graph, including the number and size of attractors, the shape of their basins and the presence of garden-of-Eden states, depends critically on both the network topology and the choice of update scheme. The following section shows that changing the update scheme while keeping the network and its update functions fixed can produce a completely different state graph, with different attractors, different basins and different reachability properties.
\begin{figure}
\centering
\includegraphics[height=7cm]{bn_example_table.png}
\caption{State transitions for all states of the boolean network from \cref{fig:bn_example} using synchronous update scheme once.}
\label{fig:bn_state_table}
\end{figure}
\begin{figure}
\tikzset{every picture/.style={line width=0.75pt}} %set default line width to 0.75pt
\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1]
%uncomment if require: \path (0,182); %set diagram left start at 0, and has height of 182
%Straight Lines [id:da7515060673133168]
\draw (63,30) -- (91,30) ;
\draw [shift={(93,30)}, rotate = 180] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da5101009163931332]
\draw (133,30) -- (161,30) ;
\draw [shift={(163,30)}, rotate = 180] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da17974568496180332]
\draw (203,30) -- (231,30) ;
\draw [shift={(233,30)}, rotate = 180] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da28479803325341]
\draw (93,70) -- (65,70) ;
\draw [shift={(63,70)}, rotate = 360] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da9289522355407928]
\draw (163,70) -- (135,70) ;
\draw [shift={(133,70)}, rotate = 360] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da5098188343671546]
\draw (233,70) -- (205,70) ;
\draw [shift={(203,70)}, rotate = 360] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da48531701923414494]
\draw (43,60) -- (43,42) ;
\draw [shift={(43,40)}, rotate = 90] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da8391791574907262]
\draw (253,40) -- (253,58) ;
\draw [shift={(253,60)}, rotate = 270] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da24177074905043572]
\draw (63,110) -- (91,110) ;
\draw [shift={(93,110)}, rotate = 180] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da21625025411268273]
\draw (133,110) -- (161,110) ;
\draw [shift={(163,110)}, rotate = 180] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da9822082649794383]
\draw (203,110) -- (231,110) ;
\draw [shift={(233,110)}, rotate = 180] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da1915219980691898]
\draw (93,150) -- (65,150) ;
\draw [shift={(63,150)}, rotate = 360] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da22061673245947822]
\draw (163,150) -- (135,150) ;
\draw [shift={(133,150)}, rotate = 360] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da6267831846161589]
\draw (233,150) -- (205,150) ;
\draw [shift={(203,150)}, rotate = 360] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da6290428382558753]
\draw (43,140) -- (43,122) ;
\draw [shift={(43,120)}, rotate = 90] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da9391797989074463]
\draw (253,120) -- (253,138) ;
\draw [shift={(253,140)}, rotate = 270] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
% Text Node
\draw (24,22) node [anchor=north west][inner sep=0.75pt] [align=left] {0000};
% Text Node
\draw (94,22) node [anchor=north west][inner sep=0.75pt] [align=left] {1000};
% Text Node
\draw (164,22) node [anchor=north west][inner sep=0.75pt] [align=left] {1110};
% Text Node
\draw (234,22) node [anchor=north west][inner sep=0.75pt] [align=left] {0111};
% Text Node
\draw (94,62) node [anchor=north west][inner sep=0.75pt] [align=left] {1101};
% Text Node
\draw (24,62) node [anchor=north west][inner sep=0.75pt] [align=left] {0100};
% Text Node
\draw (164,62) node [anchor=north west][inner sep=0.75pt] [align=left] {1011};
% Text Node
\draw (234,62) node [anchor=north west][inner sep=0.75pt] [align=left] {0011};
% Text Node
\draw (24,102) node [anchor=north west][inner sep=0.75pt] [align=left] {0001};
% Text Node
\draw (94,102) node [anchor=north west][inner sep=0.75pt] [align=left] {1010};
% Text Node
\draw (164,102) node [anchor=north west][inner sep=0.75pt] [align=left] {1111};
% Text Node
\draw (234,102) node [anchor=north west][inner sep=0.75pt] [align=left] {0101};
% Text Node
\draw (94,142) node [anchor=north west][inner sep=0.75pt] [align=left] {1100};
% Text Node
\draw (24,142) node [anchor=north west][inner sep=0.75pt] [align=left] {0110};
% Text Node
\draw (164,142) node [anchor=north west][inner sep=0.75pt] [align=left] {1001};
% Text Node
\draw (234,142) node [anchor=north west][inner sep=0.75pt] [align=left] {0010};
\end{tikzpicture}
\centering
\caption{State graph of the boolean network shown in \cref{fig:bn_example} using synchronous update scheme.}
\label{fig:bn_syn_state_graph}
\end{figure}
\section{Update Schemes}
\label{sec:update_schemes}
The dynamics of a boolean network depend not only on its topology and update functions, but also on the choice of update scheme, which defines how and when nodes are updated at each time step. Different schemes can lead to notably different behavior, including different attractor structures, reachability properties and robustness characteristics \cite{schwab2020concepts, aracena2009robustness}. In general, update schemes can be divided into deterministic schemes, where the sequence of updates is fixed, and stochastic schemes, where randomness plays a role. In the following subsections, we introduce four commonly used update schemes and illustrate their effects on the boolean network from \cref{fig:bn_example}.
\subsection{Synchronous scheme}
In \cref{sec:bn}, we have used the synchronous update scheme to introduce the general dynamics of boolean networks. This scheme assumes that each update function takes the exact same amount of time and executes at the same time, which means that regardless of the outcome of the first function, any subsequent function will have the same result. Updating the network with this method is quite simple, always leads to a deterministic output and does not require a lot of computing power in order to simulate larger networks, as each state of the network results in exactly one updated state. With regard to gene regulatory networks however, this is an oversimplification as normal GRNs never execute fully synchronously. Furthermore, the change of one node has no effect on any other function, whereas larger biochemical systems often show dependencies between functions.
Despite this biological limitation, the synchronous scheme has important structural properties that make it the most widely used scheme in practice. Since every global state maps to exactly one successor state, the state space forms a functional graph in which every node has exactly one outgoing edge. This means that every trajectory will eventually converge to either a fixed-point attractor or a periodic cycle, and the full attractor landscape is completely determined by the update functions alone \cite{helikar2011boolean}. As a direct consequence, all attractors can be found by exhaustively simulating every possible initial state, which requires at most $2^n$ simulations of bounded length. For networks of moderate size this is computationally feasible, making synchronous update well suited for systematic attractor analysis.
The synchronous scheme was also the original formulation used by Kauffman when he introduced random boolean networks as a model of gene regulation \cite{helikar2011boolean}. In his analysis of networks where update functions are assigned randomly, Kauffman found that the average number and length of attractors depends strongly on the average node connectivity $K$. At low connectivity the network settles quickly into a small number of short attractors; at high connectivity the dynamics become chaotic with very long cycle lengths. At a critical connectivity of around $K = 2$ the network is poised between these two regimes, a property that has been proposed as a signature of real biological regulatory networks \cite{bornholdt2008boolean}. This critical behavior and the tools used to study it are defined with respect to the synchronous scheme, which illustrates why synchronous update remains central to the theoretical analysis of boolean networks even when other schemes may be more biologically appropriate.
\subsection{Sequential scheme}
In the sequential update scheme, nodes are updated one after another in a fixed order within each time step, which allows for side effects: the updated value of an earlier node in the sequence can influence the outcome of later ones. For example, take the sequence $(x_1, x_2, x_3, x_4)$. Updating the state $0000$ means first using $f_1$ which results in an intermediate state $1000$, then using $f_2$, then $f_3$, and lastly $f_4$. This will lead to $0000 \rightarrow 1111$, a different state from that produced when using the synchronous update scheme. In fact, the whole state graph changes depending on the update scheme used, namely every initial state will fall into a single 4-state cycle: $0000 \rightarrow 1111 \rightarrow 0011 \rightarrow 1100 \rightarrow 0000$, see \cref{fig:bn_seq_state_graph}.
\begin{figure}
\centering
\tikzset{every picture/.style={line width=0.75pt}} %set default line width to 0.75pt
\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1]
%uncomment if require: \path (0,182); %set diagram left start at 0, and has height of 182
%Straight Lines [id:da7515060673133168]
\draw (60,40) -- (88.34,58.89) ;
\draw [shift={(90,60)}, rotate = 213.69] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da5101009163931332]
\draw (130,70) -- (158,70) ;
\draw [shift={(160,70)}, rotate = 180] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da17974568496180332]
\draw (180,40) -- (180,58) ;
\draw [shift={(180,60)}, rotate = 270] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da28479803325341]
\draw (230,70) -- (202,70) ;
\draw [shift={(200,70)}, rotate = 360] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da9289522355407928]
\draw (230,40) -- (201.66,58.89) ;
\draw [shift={(200,60)}, rotate = 326.31] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da5098188343671546]
\draw (230,110) -- (202,110) ;
\draw [shift={(200,110)}, rotate = 360] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da48531701923414494]
\draw (110,100) -- (110,82) ;
\draw [shift={(110,80)}, rotate = 90] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da8391791574907262]
\draw (180,80) -- (180,98) ;
\draw [shift={(180,100)}, rotate = 270] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da24177074905043572]
\draw (60,110) -- (88,110) ;
\draw [shift={(90,110)}, rotate = 180] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da21625025411268273]
\draw (60,70) -- (88,70) ;
\draw [shift={(90,70)}, rotate = 180] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da9822082649794383]
\draw (60,140) -- (88.34,121.11) ;
\draw [shift={(90,120)}, rotate = 146.31] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da1915219980691898]
\draw (180,140) -- (180,122) ;
\draw [shift={(180,120)}, rotate = 90] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da22061673245947822]
\draw (230,140) -- (201.66,121.11) ;
\draw [shift={(200,120)}, rotate = 33.69] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da6267831846161589]
\draw (160,110) -- (132,110) ;
\draw [shift={(130,110)}, rotate = 360] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da6290428382558753]
\draw (110,140) -- (110,122) ;
\draw [shift={(110,120)}, rotate = 90] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da9391797989074463]
\draw (110,40) -- (110,58) ;
\draw [shift={(110,60)}, rotate = 270] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
% Text Node
\draw (91,62) node [anchor=north west][inner sep=0.75pt] [align=left] {0000};
% Text Node
\draw (231,62) node [anchor=north west][inner sep=0.75pt] [align=left] {1000};
% Text Node
\draw (21,22) node [anchor=north west][inner sep=0.75pt] [align=left] {1110};
% Text Node
\draw (161,142) node [anchor=north west][inner sep=0.75pt] [align=left] {0111};
% Text Node
\draw (231,102) node [anchor=north west][inner sep=0.75pt] [align=left] {1101};
% Text Node
\draw (24,62) node [anchor=north west][inner sep=0.75pt] [align=left] {0100};
% Text Node
\draw (21,142) node [anchor=north west][inner sep=0.75pt] [align=left] {1011};
% Text Node
\draw (161,102) node [anchor=north west][inner sep=0.75pt] [align=left] {0011};
% Text Node
\draw (91,142) node [anchor=north west][inner sep=0.75pt] [align=left] {0001};
% Text Node
\draw (231,22) node [anchor=north west][inner sep=0.75pt] [align=left] {1010};
% Text Node
\draw (161,62) node [anchor=north west][inner sep=0.75pt] [align=left] {1111};
% Text Node
\draw (231,142) node [anchor=north west][inner sep=0.75pt] [align=left] {0101};
% Text Node
\draw (91,102) node [anchor=north west][inner sep=0.75pt] [align=left] {1100};
% Text Node
\draw (91,22) node [anchor=north west][inner sep=0.75pt] [align=left] {0110};
% Text Node
\draw (21,102) node [anchor=north west][inner sep=0.75pt] [align=left] {1001};
% Text Node
\draw (161,22) node [anchor=north west][inner sep=0.75pt] [align=left] {0010};
\end{tikzpicture}
\caption{State graph of the boolean network shown in \cref{fig:bn_example} using the sequential update with the sequence $(x_1, x_2, x_3, x_4)$}
\label{fig:bn_seq_state_graph}
\end{figure}
While the sequential update scheme produces different dynamics from the synchronous scheme, it is always possible to derive an equivalent synchronous function set that produces identical state transitions. The key observation is that when a node $x_i$ is evaluated in a sequential update, all nodes $x_j$ that appear earlier in the sequence have already been updated to their new values. The synchronous equivalent $f'_i$ is therefore obtained from $f_i$ by substituting, for each input variable $x_j$ that precedes $x_i$ in the sequence, the already-derived new function $f'_j$ in place of $x_j$.
For the boolean network from \cref{fig:bn_example} with sequence $(x_1, x_2, x_3, x_4)$, the conversion proceeds as follows. Since $x_1$ is first in the sequence, its function is unchanged. For $x_2$, the original function $f_2 = x_1$ depends on $x_1$, which has already been updated; substituting $x_1 \mapsto f'_1$ gives $f'_2 = f'_1$. For $x_3$, the function $f_3 = x_1 \oplus x_4$ depends on $x_1$ (already updated) but not $x_2$; substituting $x_1 \mapsto f'_1$ gives $f'_3 = f'_1 \oplus x_4$. Finally, $f_4 = x_3$ depends on $x_3$, which has already been updated; substituting $x_3 \mapsto f'_3$ gives $f'_4 = f'_3$. Expanding these yields the synchronous functions
$$
f'_1 = \neg x_2,
$$
$$
f'_2 = f'_1 = \neg x_2,
$$
$$
f'_3 = f'_1 \oplus x_4 = \neg x_2 \oplus x_4,
$$
$$
f'_4 = f'_3 = \neg x_2 \oplus x_4.
$$
This means that a sequential scheme can always be expressed as an equivalent synchronous scheme with a different set of update functions. Furthermore, if the side-effects from the sequential scheme are desired, the synchronous function set would become larger and more complex.
An extension of the sequential scheme is the block-sequential scheme. This allows the modeler to divide the nodes into groups, called blocks, that run synchronously, while the blocks execute in sequence. This allows for further fine-tuning of the behavior and can simplify the modeling of realistic systems. The block-sequential scheme can also be converted to a synchronous scheme, thus producing the same behavior as previously described \cite{goles2010block}.
An important practical consideration is that for a network with $n$ nodes, there are $n!$ possible sequential orderings, and different orderings can produce different state graphs and attractors. This makes the choice of sequence both a useful modeling tool and a potential source of ambiguity, since the biologically correct ordering is often not known in advance \cite{goles2010block}. The block-sequential scheme partially addresses this by only requiring a partition of nodes into blocks and an ordering of those blocks, rather than a complete linear ordering over all nodes.
\subsection{Probabilistic scheme}
The probabilistic scheme is an extension of the synchronous, sequential and non-random asynchronous schemes as it introduces randomness into the system. Instead of having one function per node, each node has multiple update functions with individual probabilities. Upon updating a node, one of these functions is chosen at random according to the probability distribution. This allows the introduction of noise and uncertainty into the system.
An example of how this can drastically change the outcome can be visualized when adding a second function to the node $x_4$ from the example in \cref{fig:bn_example}. Let $f_{4,\text{switch}} = \neg f_4 = \neg x_3$ with an equal probability distribution. This simple addition means that on average, every second update the state switches from one cycle to the other. Thus there are no longer two individual cycles. Any initial state will eventually reach all possible states and will never fall into a repeating pattern.
More formally, a probabilistic boolean network assigns to each node $x_i$ a set of update functions $\{f_i^{(1)}, \ldots, f_i^{(k_i)}\}$ with corresponding probabilities $\{p_i^{(1)}, \ldots, p_i^{(k_i)}\}$ that sum to 1. At each step, one function per node is selected at random according to these probabilities. The resulting dynamics can be analyzed as a Markov chain over the $2^n$ possible states, where the long-term behavior is described by a stationary distribution over states rather than a single fixed attractor \cite{schwab2020concepts}.
This connection to GRN modeling is particularly relevant for oscillatory networks such as the Repressilator, discussed in detail in \cref{sec:relevance_grn}. Under deterministic update schemes, the Repressilator produces a clean periodic oscillation. In real biological cells, however, gene expression is inherently noisy: a gene that should be repressed may occasionally still produce a small amount of protein due to stochastic effects such as transcriptional bursting or low molecule counts. By introducing a small probability for an alternative update function, this noise can be captured in the model. The result is an irregular oscillation whose period varies from cycle to cycle, which is considerably closer to the gene expression dynamics observed in living cells than the perfectly regular output of a deterministic scheme \cite{schwab2020concepts}.
\subsection{Asynchronous scheme}
While synchronous, sequential and probabilistic schemes update all the nodes in one time step, the asynchronous scheme only updates one node per time step. There are two main variants. In asynchronous deterministic update, a fixed predetermined sequence specifies which single node is updated at each time step. This differs from the sequential scheme in a fundamental way: in the sequential scheme, the entire sequence is executed within one time step, updating all nodes once; in asynchronous deterministic update, each element of the sequence constitutes a separate time step that updates exactly one node. The same node can therefore appear at multiple positions across successive time steps, giving it a higher effective update frequency and allowing the modeler to encode that certain regulatory processes occur faster than others. In asynchronous random update, the node to be updated at each step is chosen uniformly at random. While the probabilistic scheme introduced stochasticity at the level of function selection, asynchronous random update introduces stochasticity at the level of node selection: there is no predetermined order, and from any given state, multiple different transitions are possible depending on which node happens to be selected.
During early stages of boolean network research, it was believed that asynchronous update would lead to more realistic models of biochemical systems \cite{schwab2020concepts}. However, as studies have shown, asynchronous and synchronous schemes can lead to the same meaningful behavior for certain networks, and the choice between them often comes down to practical considerations. A concrete limitation of the asynchronous approach is its computational cost: since each time step updates only one node, a single full round over all $n$ nodes requires $n$ sequential steps. Assuming each step takes seconds to minutes, this adds up to days for large networks \cite{schwab2020concepts}.
A key structural consequence of the random asynchronous variant specifically is that it introduces non-determinism into the state graph. Since the node to update is chosen at random, from any given state there are in general multiple possible successor states rather than a single deterministic one. This makes identifying attractors more complex than in the synchronous or sequential case, since a state can lead to different trajectories on different runs \cite{schwab2020concepts}.
This difference has a concrete consequence in GRN models. In the Repressilator (see \cref{sec:relevance_grn} and \cref{fig:bn_repr_state_graph}), the synchronous scheme produces two attractors: a biologically meaningful 6-cycle and an artificial 2-cycle that alternates between the all-off state $000$ and the all-on state $111$. Under random asynchronous update, neither $000$ nor $111$ are attractors. From state $000$, for example, each update function evaluates to $\neg 0 = 1$, meaning any node selected for updating immediately moves the network into one of the oscillatory states. The artificial 2-cycle therefore disappears, and only the biologically relevant oscillation remains. This illustrates a broader finding: many cyclic attractors in synchronous boolean networks are artifacts of simultaneous updating that vanish under asynchronous dynamics \cite{bornholdt2008boolean}.
Furthermore, the random asynchronous scheme is closely related to the probabilistic scheme. Rather than randomizing which update function is applied to each node, it randomizes which node is updated at each step, while keeping the update functions themselves fixed.
\section{Relevance for Gene Regulatory Networks}
\label{sec:relevance_grn}
A gene regulatory network (GRN) is a system of interactions between genes, transcription factors and other regulatory molecules that together control gene expression in a cell. Since each gene can be treated as either active (expressed) or inactive (silenced), boolean networks are a natural fit for modeling GRNs. They have been applied to a variety of well-known GRNs, such as the cell-cycle network of \textit{Saccharomyces cerevisiae} or the segment polarity network of \textit{Drosophila melanogaster} \cite{helikar2011boolean, bornholdt2008boolean}. In these models, the attractors of the boolean network are interpreted as stable gene expression patterns corresponding to distinct cell types or functional states. A cell that has committed to a specific developmental fate, for example, would correspond to a fixed-point attractor in the GRN model, while transient oscillations in gene expression would appear as limit cycles.
A particularly instructive example for studying the effect of update schemes on GRN models is the \textit{Repressilator}: a synthetic regulatory circuit in which three genes each repress the next in a cyclic fashion \cite{bornholdt2008boolean}. As shown in \cref{fig:bn_repr}, the network has update functions of the form $f_i = \neg x_{i-1}$ (indices modulo 3). Despite having only three nodes and eight possible states, the Repressilator shows a strikingly different attractor structure depending on which update scheme is used.
\begin{figure}
\centering
\includegraphics[height=6cm]{bn_repressilator.png}
\caption{The GRN Repressilator modeled as a boolean network and the update table using the synchronous scheme.}
\label{fig:bn_repr}
\end{figure}
Under the \textbf{synchronous} scheme, the network has two attractors, shown in the upper part of \cref{fig:bn_repr_state_graph}. The first is a period-6 oscillation cycle through the states $100 \rightarrow 101 \rightarrow 001 \rightarrow 011 \rightarrow 010 \rightarrow 110 \rightarrow 100$, which corresponds to the alternating gene expression observed in experimental implementations of the Repressilator. The second is an artificial period-2 cycle alternating between $000$ (all genes off) and $111$ (all genes on). This second attractor has no biological basis: it arises purely because updating all three repressors simultaneously maps $000$ to $111$ and back, a dynamic that would not occur if the genes were updated at slightly different times.
Under \textbf{random asynchronous} update, the picture changes. From state $000$, any node selected for updating will have $f_i = \neg 0 = 1$, meaning the network is immediately pushed into one of the oscillatory states regardless of which node is chosen. The same applies to $111$. Neither state can sustain itself, so they become transient states and the artificial 2-cycle disappears entirely. Only the biologically meaningful oscillation remains as an attractor. This confirms that the period-2 cycle in the synchronous case was indeed an artifact of simultaneous updating \cite{bornholdt2008boolean}, and it illustrates why asynchronous update is often considered more biologically faithful for oscillatory GRN models.
Under a \textbf{sequential} scheme with sequence $(x_1, x_2, x_3)$, the attractor structure changes even more dramatically, as shown in the lower part of \cref{fig:bn_repr_state_graph}. Tracing through the state transitions reveals that the only attractor is now a period-2 cycle between states $010$ and $101$, a subset of the states from the synchronous 6-cycle. The synchronous 6-cycle itself no longer exists as an attractor, and all eight states converge to this single 2-cycle. This is a clear example that even among deterministic schemes, changing the update order can completely alter the attractor landscape.
\begin{figure}
\centering
\tikzset{every picture/.style={line width=0.75pt}} %set default line width to 0.75pt
\tikzset{every picture/.style={line width=0.75pt}} %set default line width to 0.75pt
\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1]
%uncomment if require: \path (0,321); %set diagram left start at 0, and has height of 321
%Shape: Circle [id:dp6120737986176485]
\draw (89.67,50) .. controls (89.67,38.95) and (98.62,30) .. (109.67,30) .. controls (120.71,30) and (129.67,38.95) .. (129.67,50) .. controls (129.67,61.05) and (120.71,70) .. (109.67,70) .. controls (98.62,70) and (89.67,61.05) .. (89.67,50) -- cycle ;
%Shape: Circle [id:dp4460102181537059]
\draw (179.67,50) .. controls (179.67,38.95) and (188.62,30) .. (199.67,30) .. controls (210.71,30) and (219.67,38.95) .. (219.67,50) .. controls (219.67,61.05) and (210.71,70) .. (199.67,70) .. controls (188.62,70) and (179.67,61.05) .. (179.67,50) -- cycle ;
%Shape: Circle [id:dp5043508885922044]
\draw (89.67,130) .. controls (89.67,118.95) and (98.62,110) .. (109.67,110) .. controls (120.71,110) and (129.67,118.95) .. (129.67,130) .. controls (129.67,141.05) and (120.71,150) .. (109.67,150) .. controls (98.62,150) and (89.67,141.05) .. (89.67,130) -- cycle ;
%Shape: Circle [id:dp19837549619745176]
\draw (179.67,130) .. controls (179.67,118.95) and (188.62,110) .. (199.67,110) .. controls (210.71,110) and (219.67,118.95) .. (219.67,130) .. controls (219.67,141.05) and (210.71,150) .. (199.67,150) .. controls (188.62,150) and (179.67,141.05) .. (179.67,130) -- cycle ;
%Straight Lines [id:da34212297668952507]
\draw (129.67,46) -- (177.67,46) ;
\draw [shift={(179.67,46)}, rotate = 180] [fill={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.08] [draw opacity=0] (12,-3) -- (0,0) -- (12,3) -- cycle ;
%Straight Lines [id:da9191192486085845]
\draw (179.67,54) -- (131.67,54) ;
\draw [shift={(129.67,54)}, rotate = 360] [fill={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.08] [draw opacity=0] (12,-3) -- (0,0) -- (12,3) -- cycle ;
%Straight Lines [id:da9988186797184601]
\draw (109.67,70) -- (109.67,108) ;
\draw [shift={(109.67,110)}, rotate = 270] [fill={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.08] [draw opacity=0] (12,-3) -- (0,0) -- (12,3) -- cycle ;
%Straight Lines [id:da0026996459711727816]
\draw (129.67,126) -- (177.67,126) ;
\draw [shift={(179.67,126)}, rotate = 180] [fill={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.08] [draw opacity=0] (12,-3) -- (0,0) -- (12,3) -- cycle ;
%Straight Lines [id:da6389438894367955]
\draw (179.67,134) -- (131.67,134) ;
\draw [shift={(129.67,134)}, rotate = 360] [fill={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.08] [draw opacity=0] (12,-3) -- (0,0) -- (12,3) -- cycle ;
%uncomment if require: \path (0,273); %set diagram left start at 0, and has height of 273
%Straight Lines [id:da6732952894657575]
\draw (117.8,28.2) -- (144.8,28.2) ;
\draw [shift={(147.8,28.2)}, rotate = 180] [fill={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.08] [draw opacity=0] (8.93,-4.29) -- (0,0) -- (8.93,4.29) -- cycle ;
%Straight Lines [id:da46162142180164867]
\draw (162.8,38.2) -- (162.8,55.2) ;
\draw [shift={(162.8,58.2)}, rotate = 270] [fill={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.08] [draw opacity=0] (8.93,-4.29) -- (0,0) -- (8.93,4.29) -- cycle ;
%Straight Lines [id:da8411742710774129]
\draw (162.8,78.2) -- (162.8,95.2) ;
\draw [shift={(162.8,98.2)}, rotate = 270] [fill={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.08] [draw opacity=0] (8.93,-4.29) -- (0,0) -- (8.93,4.29) -- cycle ;
%Straight Lines [id:da02385519127417357]
\draw (147.8,108.2) -- (120.8,108.2) ;
\draw [shift={(117.8,108.2)}, rotate = 360] [fill={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.08] [draw opacity=0] (8.93,-4.29) -- (0,0) -- (8.93,4.29) -- cycle ;
%Straight Lines [id:da9369563609902064]
\draw (102.8,58.2) -- (102.8,41.2) ;
\draw [shift={(102.8,38.2)}, rotate = 90] [fill={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.08] [draw opacity=0] (8.93,-4.29) -- (0,0) -- (8.93,4.29) -- cycle ;
%Straight Lines [id:da2026651869232049]
\draw (102.8,98.2) -- (102.8,81.2) ;
\draw [shift={(102.8,78.2)}, rotate = 90] [fill={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.08] [draw opacity=0] (8.93,-4.29) -- (0,0) -- (8.93,4.29) -- cycle ;
%Straight Lines [id:da9759950912927599]
\draw (218.8,78.2) -- (218.8,61.2) ;
\draw [shift={(218.8,58.2)}, rotate = 90] [fill={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.08] [draw opacity=0] (8.93,-4.29) -- (0,0) -- (8.93,4.29) -- cycle ;
%Straight Lines [id:da42118359777387304]
\draw (227.8,58.2) -- (227.8,75.2) ;
\draw [shift={(227.8,78.2)}, rotate = 270] [fill={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.08] [draw opacity=0] (8.93,-4.29) -- (0,0) -- (8.93,4.29) -- cycle ;
%Straight Lines [id:da6189979487429944]
\draw (87,201) -- (114,201) ;
\draw [shift={(117,201)}, rotate = 180] [fill={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.08] [draw opacity=0] (8.93,-4.29) -- (0,0) -- (8.93,4.29) -- cycle ;
%Straight Lines [id:da24388249395288197]
\draw (132,171) -- (132,188) ;
\draw [shift={(132,191)}, rotate = 270] [fill={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.08] [draw opacity=0] (8.93,-4.29) -- (0,0) -- (8.93,4.29) -- cycle ;
%Straight Lines [id:da5377128840336186]
\draw (192,171) -- (192,188) ;
\draw [shift={(192,191)}, rotate = 270] [fill={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.08] [draw opacity=0] (8.93,-4.29) -- (0,0) -- (8.93,4.29) -- cycle ;
%Straight Lines [id:da7172765108275505]
\draw (237,201) -- (210,201) ;
\draw [shift={(207,201)}, rotate = 360] [fill={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.08] [draw opacity=0] (8.93,-4.29) -- (0,0) -- (8.93,4.29) -- cycle ;
%Straight Lines [id:da7736169235673199]
\draw (147,197) -- (174,197) ;
\draw [shift={(177,197)}, rotate = 180] [fill={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.08] [draw opacity=0] (8.93,-4.29) -- (0,0) -- (8.93,4.29) -- cycle ;
%Straight Lines [id:da6598487496376828]
\draw (132,231) -- (132,214) ;
\draw [shift={(132,211)}, rotate = 90] [fill={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.08] [draw opacity=0] (8.93,-4.29) -- (0,0) -- (8.93,4.29) -- cycle ;
%Straight Lines [id:da5213149848331206]
\draw (192,231) -- (192,214) ;
\draw [shift={(192,211)}, rotate = 90] [fill={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.08] [draw opacity=0] (8.93,-4.29) -- (0,0) -- (8.93,4.29) -- cycle ;
%Straight Lines [id:da35822810959220885]
\draw (177,206) -- (150,206) ;
\draw [shift={(147,206)}, rotate = 360] [fill={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.08] [draw opacity=0] (8.93,-4.29) -- (0,0) -- (8.93,4.29) -- cycle ;
% Text Node
\draw (105.17,42.5) node [anchor=north west][inner sep=0.75pt] [align=left] {1};
\draw (90.8,20.2) node [anchor=north west][inner sep=0.75pt] [align=left] {001};
% Text Node
\draw (194.67,42.5) node [anchor=north west][inner sep=0.75pt] [align=left] {2};
\draw (148.8,20.2) node [anchor=north west][inner sep=0.75pt] [align=left] {011};
% Text Node
\draw (104.67,122.5) node [anchor=north west][inner sep=0.75pt] [align=left] {3};
\draw (150.8,100.2) node [anchor=north west][inner sep=0.75pt] [align=left] {110};
% Text Node
\draw (194.67,122) node [anchor=north west][inner sep=0.75pt] [align=left] {4};
\draw (90.8,60.2) node [anchor=north west][inner sep=0.75pt] [align=left] {101};
% Text Node
\draw (111.33,207.8) node [anchor=north west][inner sep=0.75pt] {$ \begin{array}{l}
f_{1} =\neg x_{2}\\
f_{2} =x_{1}\\
f_{3} =x_{1} \oplus x_{4}\\
f_{4} =x_{3}
\end{array}$};
\draw (90.8,100.2) node [anchor=north west][inner sep=0.75pt] [align=left] {100};
% Text Node
\draw (150.8,60.2) node [anchor=north west][inner sep=0.75pt] [align=left] {010};
% Text Node
\draw (208.8,40.2) node [anchor=north west][inner sep=0.75pt] [align=left] {000};
% Text Node
\draw (208.8,80.2) node [anchor=north west][inner sep=0.75pt] [align=left] {111};
% Text Node
\draw (178,233) node [anchor=north west][inner sep=0.75pt] [align=left] {001};
% Text Node
\draw (178,153) node [anchor=north west][inner sep=0.75pt] [align=left] {011};
% Text Node
\draw (118,153) node [anchor=north west][inner sep=0.75pt] [align=left] {110};
% Text Node
\draw (118,193) node [anchor=north west][inner sep=0.75pt] [align=left] {101};
% Text Node
\draw (118,233) node [anchor=north west][inner sep=0.75pt] [align=left] {100};
% Text Node
\draw (178,193) node [anchor=north west][inner sep=0.75pt] [align=left] {010};
% Text Node
\draw (58,193) node [anchor=north west][inner sep=0.75pt] [align=left] {000};
% Text Node
\draw (238,193) node [anchor=north west][inner sep=0.75pt] [align=left] {111};
\end{tikzpicture}
\caption{Example of a boolean network with four nodes. Each vertex indicates that a node is part of the update function of the other node. For instance $x_1$ is part of $f_2$ and $f_3$. Note that $\neg$ means the logical NOT and $\oplus$ means the logical XOR function.
}
\label{fig:bn_example}
\end{figure}
Consider the boolean network shown in \cref{fig:bn_example}. For example, if the state is $x(t)=0011$ at time $t$, meaning that $x_1, x_2$ are $0$ and $x_3, x_4$ are $1$. After applying the synchronous update, the next state $x(t+1)$ is $1011$. Updating the network multiple times creates a trajectory, which is the sequence of the states starting from the initial state. With our example, the trajectory is $0011 \rightarrow 1011 \rightarrow 1101 \rightarrow 0100 \rightarrow \ldots$. Each trajectory in a reasonably small boolean network eventually reaches one of two scenarios. Either it falls into a state, called attractor, that doesn't change when updated, or it falls into a cycle of states.
A state graph shows all possible states of the network with the corresponding trajectory. For example, the state graph in \cref{fig:bn_syn_state_graph} shows the trajectories from the boolean network in \cref{fig:bn_example}. These state graphs help visualizing the attractors and cycles, e.g. 2 cycles of length 8.
%TODO: Subsection??
In boolean networks, robustness refers to stability of the behavior with regards to perturbations, e.g. a single node state change. A boolean network with poor robustness means that a simple flip of a node can change the resulting attractor, respectively cycle for that trajectory. In regards to our example from \cref{fig:bn_syn_state_graph}, if either $x_3$ or $x_4$ (not both at once) is flipped, the cycle switches. A strong robustness however would mean that even with such perturbations, the resulting attractor or cycle doesn't change.
\todo[inline]{currently feels to short. once introduction is implemented, create a better transition/section 2 introduction. Also introduce robustness!}
\todo[inline]{combine figure 1, 2, 3 into a single figure* (page-width figure), or split the table from figure 2 into to parts of 8 states}
\begin{figure}
\centering
\includegraphics[height=7cm]{bn_example_table.png}
\caption{State transitions for all states of the boolean network from \cref{fig:bn_example} using synchronous update scheme once.}
\label{fig:bn_state_table}
\end{figure}
\begin{figure}
\tikzset{every picture/.style={line width=0.75pt}} %set default line width to 0.75pt
\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1]
%uncomment if require: \path (0,182); %set diagram left start at 0, and has height of 182
%Straight Lines [id:da7515060673133168]
\draw (63,30) -- (91,30) ;
\draw [shift={(93,30)}, rotate = 180] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da5101009163931332]
\draw (133,30) -- (161,30) ;
\draw [shift={(163,30)}, rotate = 180] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da17974568496180332]
\draw (203,30) -- (231,30) ;
\draw [shift={(233,30)}, rotate = 180] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da28479803325341]
\draw (93,70) -- (65,70) ;
\draw [shift={(63,70)}, rotate = 360] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da9289522355407928]
\draw (163,70) -- (135,70) ;
\draw [shift={(133,70)}, rotate = 360] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da5098188343671546]
\draw (233,70) -- (205,70) ;
\draw [shift={(203,70)}, rotate = 360] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da48531701923414494]
\draw (43,60) -- (43,42) ;
\draw [shift={(43,40)}, rotate = 90] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da8391791574907262]
\draw (253,40) -- (253,58) ;
\draw [shift={(253,60)}, rotate = 270] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da24177074905043572]
\draw (63,110) -- (91,110) ;
\draw [shift={(93,110)}, rotate = 180] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da21625025411268273]
\draw (133,110) -- (161,110) ;
\draw [shift={(163,110)}, rotate = 180] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da9822082649794383]
\draw (203,110) -- (231,110) ;
\draw [shift={(233,110)}, rotate = 180] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da1915219980691898]
\draw (93,150) -- (65,150) ;
\draw [shift={(63,150)}, rotate = 360] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da22061673245947822]
\draw (163,150) -- (135,150) ;
\draw [shift={(133,150)}, rotate = 360] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da6267831846161589]
\draw (233,150) -- (205,150) ;
\draw [shift={(203,150)}, rotate = 360] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da6290428382558753]
\draw (43,140) -- (43,122) ;
\draw [shift={(43,120)}, rotate = 90] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da9391797989074463]
\draw (253,120) -- (253,138) ;
\draw [shift={(253,140)}, rotate = 270] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
% Text Node
\draw (24,22) node [anchor=north west][inner sep=0.75pt] [align=left] {0000};
% Text Node
\draw (94,22) node [anchor=north west][inner sep=0.75pt] [align=left] {1000};
% Text Node
\draw (164,22) node [anchor=north west][inner sep=0.75pt] [align=left] {1110};
% Text Node
\draw (234,22) node [anchor=north west][inner sep=0.75pt] [align=left] {0111};
% Text Node
\draw (94,62) node [anchor=north west][inner sep=0.75pt] [align=left] {1101};
% Text Node
\draw (24,62) node [anchor=north west][inner sep=0.75pt] [align=left] {0100};
% Text Node
\draw (164,62) node [anchor=north west][inner sep=0.75pt] [align=left] {1011};
% Text Node
\draw (234,62) node [anchor=north west][inner sep=0.75pt] [align=left] {0011};
% Text Node
\draw (24,102) node [anchor=north west][inner sep=0.75pt] [align=left] {0001};
% Text Node
\draw (94,102) node [anchor=north west][inner sep=0.75pt] [align=left] {1010};
% Text Node
\draw (164,102) node [anchor=north west][inner sep=0.75pt] [align=left] {1111};
% Text Node
\draw (234,102) node [anchor=north west][inner sep=0.75pt] [align=left] {0101};
% Text Node
\draw (94,142) node [anchor=north west][inner sep=0.75pt] [align=left] {1100};
% Text Node
\draw (24,142) node [anchor=north west][inner sep=0.75pt] [align=left] {0110};
% Text Node
\draw (164,142) node [anchor=north west][inner sep=0.75pt] [align=left] {1001};
% Text Node
\draw (234,142) node [anchor=north west][inner sep=0.75pt] [align=left] {0010};
\end{tikzpicture}
\centering
\caption{State graph of the boolean network shown in \cref{fig:bn_example} using synchronous update scheme.}
\label{fig:bn_syn_state_graph}
\end{figure}
\section{Update Schemes}
Explain different update schemes including characteristics for behavior especially chaotic behavior. These will mostly focus on boolean networks only. Maybe mention of use-cases for each update scheme.
\todo[inline]{update this text.. (or remove it)}
\subsection{Synchronous scheme}
In \cref{sec:bn}, we have used the synchronous update scheme to introduce the general dynamics of boolean networks. This scheme assumes that each update function takes the exact same amount of time and executes at the same time, which means that regardless of the outcome of the first function, any subsequenct function will have the same result. Updating the network with this method is quite simple, always leads to a deterministic output and doesn't require a lot of computing power in order to simulate larger networks, as each state of the network results in exactly on updated state. In regards to gene regulatory networks however, this is an oversimplification as normal GRNs never execute fully synchronously. Furthermore, the change of one node has no effect on any other function, whereas larger biochemical system often show dependencies between functions.
\todo[inline]{add more context and information about grn and their effects, split text into logical paragraphs}
\subsection{Sequential scheme}
Unlike the synchronous scheme, the sequential scheme allows for side effects when updating the network by having an order in which nodes are updated at each step.
When using the sequential update scheme, the update cycle evaluates each after another in a fixed order. For example take the sequence $(x_1, x_2, x_3, x_4)$. Updating the state $0000$ means first using $f_1$ which results in an intermediate state $1000$, then using $f_2$, then $f_3$, and lastly $f_4$. This will lead to $0000 \rightarrow 1111$, a different state as when using the synchronous update scheme. In fact, the whole state graph changes depending on the update scheme used, namely every initial state will fall into a single 4-state cycle being $0000 \rightarrow 1111 \rightarrow 0011 \rightarrow 1100 \rightarrow 0000$, see \cref{fig:bn_seq_state_graph}.
\begin{figure}
\centering
\tikzset{every picture/.style={line width=0.75pt}} %set default line width to 0.75pt
\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1]
%uncomment if require: \path (0,182); %set diagram left start at 0, and has height of 182
%Straight Lines [id:da7515060673133168]
\draw (60,40) -- (88.34,58.89) ;
\draw [shift={(90,60)}, rotate = 213.69] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da5101009163931332]
\draw (130,70) -- (158,70) ;
\draw [shift={(160,70)}, rotate = 180] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da17974568496180332]
\draw (180,40) -- (180,58) ;
\draw [shift={(180,60)}, rotate = 270] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da28479803325341]
\draw (230,70) -- (202,70) ;
\draw [shift={(200,70)}, rotate = 360] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da9289522355407928]
\draw (230,40) -- (201.66,58.89) ;
\draw [shift={(200,60)}, rotate = 326.31] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da5098188343671546]
\draw (230,110) -- (202,110) ;
\draw [shift={(200,110)}, rotate = 360] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da48531701923414494]
\draw (110,100) -- (110,82) ;
\draw [shift={(110,80)}, rotate = 90] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da8391791574907262]
\draw (180,80) -- (180,98) ;
\draw [shift={(180,100)}, rotate = 270] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da24177074905043572]
\draw (60,110) -- (88,110) ;
\draw [shift={(90,110)}, rotate = 180] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da21625025411268273]
\draw (60,70) -- (88,70) ;
\draw [shift={(90,70)}, rotate = 180] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da9822082649794383]
\draw (60,140) -- (88.34,121.11) ;
\draw [shift={(90,120)}, rotate = 146.31] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da1915219980691898]
\draw (180,140) -- (180,122) ;
\draw [shift={(180,120)}, rotate = 90] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da22061673245947822]
\draw (230,140) -- (201.66,121.11) ;
\draw [shift={(200,120)}, rotate = 33.69] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da6267831846161589]
\draw (160,110) -- (132,110) ;
\draw [shift={(130,110)}, rotate = 360] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da6290428382558753]
\draw (110,140) -- (110,122) ;
\draw [shift={(110,120)}, rotate = 90] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
%Straight Lines [id:da9391797989074463]
\draw (110,40) -- (110,58) ;
\draw [shift={(110,60)}, rotate = 270] [color={rgb, 255:red, 0; green, 0; blue, 0 } ][line width=0.75] (10.93,-3.29) .. controls (6.95,-1.4) and (3.31,-0.3) .. (0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29) ;
% Text Node
\draw (91,62) node [anchor=north west][inner sep=0.75pt] [align=left] {0000};
% Text Node
\draw (231,62) node [anchor=north west][inner sep=0.75pt] [align=left] {1000};
% Text Node
\draw (21,22) node [anchor=north west][inner sep=0.75pt] [align=left] {1110};
% Text Node
\draw (161,142) node [anchor=north west][inner sep=0.75pt] [align=left] {0111};
% Text Node
\draw (231,102) node [anchor=north west][inner sep=0.75pt] [align=left] {1101};
% Text Node
\draw (24,62) node [anchor=north west][inner sep=0.75pt] [align=left] {0100};
% Text Node
\draw (21,142) node [anchor=north west][inner sep=0.75pt] [align=left] {1011};
% Text Node
\draw (161,102) node [anchor=north west][inner sep=0.75pt] [align=left] {0011};
% Text Node
\draw (91,142) node [anchor=north west][inner sep=0.75pt] [align=left] {0001};
% Text Node
\draw (231,22) node [anchor=north west][inner sep=0.75pt] [align=left] {1010};
% Text Node
\draw (161,62) node [anchor=north west][inner sep=0.75pt] [align=left] {1111};
% Text Node
\draw (231,142) node [anchor=north west][inner sep=0.75pt] [align=left] {0101};
% Text Node
\draw (91,102) node [anchor=north west][inner sep=0.75pt] [align=left] {1100};
% Text Node
\draw (91,22) node [anchor=north west][inner sep=0.75pt] [align=left] {0110};
% Text Node
\draw (21,102) node [anchor=north west][inner sep=0.75pt] [align=left] {1001};
% Text Node
\draw (161,22) node [anchor=north west][inner sep=0.75pt] [align=left] {0010};
\end{tikzpicture}
\caption{State graph of the boolean network shown in \cref{fig:bn_example} using the sequential update with the sequence $(x_1, x_2, x_3, x_4)$}
\label{fig:bn_seq_state_graph}
\end{figure}
While the sequential update scheme seems to be different from synchronous, it is actually possible to derive a set of functions for a synchronous update scheme that have the same outcome as the current set for a particular sequential scheme. This can be achieved by reevaluating each function in the order of the sequence and replacing $x_i$ with $f'_i$ if $f'_i$ has been computed previously where $f'_i$ represents the new function for synchronous use. In case of the boolean network from \cref{fig:bn_example} with sequence $(x_1, x_2, x_3, x_4)$, the resulting functions are
%TODO: Above: rewording of explanation for creating the sync function set from seqential
$$
f'_1 = \neg x_2,
$$
$$
f'_2 = f'_1 = \neg x_2,
$$
$$
f'_3 = f'_1 \oplus x_4 = \neg x_2 \oplus x_4,
$$
$$
f'_4 = f'_3 = \neg x_2 \oplus x_4.
$$
This means that sequential schemes share the same characteristics as the synchronous scheme. Furthermore, if the side-effects from the sequential scheme are desired, the synchronous function set would become larger and more complex.
An extension of the sequential scheme is the block-sequential scheme. This allows to divide the nodes into groups, called blocks, that run synchronously, while the blocks execute in sequence. This allows for further fine-tuning of the behavior and can simplify the modeling of realistic systems. The block-sequential scheme can also be converted to a synchronous scheme, thus producing the same behavior as previously described.
\subsection{Probabilistic scheme}
The probabilistic scheme is an extension of synchronous, sequential and non-random asynchronous scheme as it introduces randomness into the system. Instead of having one function per node, a node has multiple functions with individual probabilities. Upon updating a node, one of these functions is chosen randomly with regards to the probability distribution. This allows the introduction of noise and uncertainty into the system.
An example of how this can drastically change the outcome can be visualized when adding a second function to the node $x_4$ from the example in \cref{fig:bn_example}. Let $f_{4 switch} = \neg f_4 = \neg x_3$ with an equal probability distribution. This simple addition to the boolean network causes that on average, every second update the state switches from one cycle to the other. Thus there are no longer two individual cycles. Any initial state will eventually reach all possible states and will never fall into a repeating pattern.
\todo[inline]{refer to \cite{schwab2020concepts} and potentially add figure 2 from that paper}
\subsection{Asynchronous scheme}
While synchronous, sequential and probabilistic schemes update all the nodes in one time step, the asynchronous scheme only updates one node per time step. The order in which nodes are updated depend on the chosen asynchronous scheme.
\begin{itemize}
\item Asynchronous deterministic is similar to sequential in that it has a sequence of nodes in which the nodes are updated. However, nodes can appear an arbitrary amount of times in one sequence, allowing for a more dynamical behavior modeling compared to sequential scheme.
\item Asynchronous random is pretty straight forward. On each update cycle a random node is chosen to be updated.
\end{itemize}
During early stages of research of boolean networks, it was believed that asynchronous update schemes would lead to a more realistic modeling of biochemical systems \cite{schwab2020concepts}. However, as studies have shown, asynchronous update schemes and synchronous update schemes can lead to the same meaningful behavior for biochemical systems. Furthermore, assuming that one update process takes a few seconds to minutes, updating a large system can take days to have every node updated once, if not longer\cite{schwab2020concepts}.
\todo[inline]{create introduction, conclusion/transition to the next scheme for each scheme}
\section{Relevance for Gene Regulatory Networks}
\label{sec:relevance_grn}
Tie the update schemes and their different outcomes or behavior to GRN.
Emphasizing the drawbacks of asynchronous models when applied to GRN e.g. it takes way to long to update a GRN using asynchronous deterministic for it to have an effect; assuming that one update takes a few minutes, when the whole process can take days to complete.\cite{schwab2020concepts}
\section{Conclusion}
While initially believed that different update schemes lead to different outputs, it turns out that in general, most schemes are equal, especially synchronous, sequential, block-sequential and asynchronous deterministic. It only requires a different function set, in order to move from one update scheme to the next one.
Only the probabilistic scheme and asynchronous random are non deterministic and cannot truly be changed to a different update scheme with just a change of functions.
Choosing an update scheme depends mostly on which effect is required and most simple to model using a certain scheme. No side effects? Choose synchronous. With side effects? Choose sequential or asynchronous. Have a system with noise? Give probabilistic a try or maybe even asynchronous random.
References: \cite{schwab2020concepts}\cite{aracena2009robustness}\cite{bornholdt2008boolean}\cite{goles2010block}\cite{helikar2011boolean}
\todo[inline]{currently not really using references. i need to go over everything again and add the references at the right spots and even mention them explicitly in sentences for further context.}
% The list of references is provided as `references.bib`
\bibliographystyle{unsrt}
\bibliography{IEEEabrv,references}
\caption{State graphs of the repressilator as boolean network: The upper two cycles are the result of the use of synchronous scheme; the lower graph is the result of sequential scheme with sequence $(x_1, x_2,x_3)$.}
\label{fig:bn_repr_state_graph}
\end{figure}
Under a \textbf{probabilistic} scheme, the clean periodic oscillation gives way to an irregular, noisy one. Introducing a small probability for an alternative update function on any of the three genes, modeling the stochastic fluctuations that occur in real gene expression, means the network occasionally deviates from the regular cycle. The long-term behavior is no longer a fixed attractor but a stationary distribution over states, reflecting how much time the system spends in each expression configuration on average \cite{schwab2020concepts}. This type of model is particularly useful for understanding phenotypic variability within a population of genetically identical cells.
The Repressilator example illustrates a key point for GRN modeling in general: the choice of update scheme is not a neutral decision. It directly affects which attractors exist, which states are biologically accessible, and how realistically the model captures the noise and timing characteristics of the underlying system. For large-scale GRNs where the biological timing of regulatory events is not known, synchronous update remains the practical standard due to its computational simplicity and the ease of attractor analysis. Sequential or block-sequential update is appropriate when relative timing information is available. Asynchronous update is biologically motivated but becomes slow for large networks, and probabilistic update is the method of choice when transcriptional noise is a central modeling goal.
\section{Conclusion}
This paper gave an overview of four update schemes for boolean networks and analyzed how they affect the dynamics of a model. The synchronous scheme, where all nodes update simultaneously, produces fully deterministic and easily enumerable dynamics, making it the most widely used approach in practice despite its biological simplifications. Sequential and block-sequential schemes allow for a more realistic encoding of temporal ordering between regulatory events while retaining determinism. The probabilistic scheme introduces stochastic variation at the level of the update functions, capturing noise and fluctuations in the system. The asynchronous scheme updates one node at a time and, in its random variant, introduces non-determinism at the level of node selection rather than function selection.
The Repressilator example from \cref{sec:relevance_grn} makes the practical stakes of this choice concrete. Even in a network with only three nodes, as illustrated in \cref{fig:bn_repr_state_graph}, the synchronous scheme produces a spurious 2-cycle between $000$ and $111$ alongside the biologically relevant 6-cycle. The asynchronous scheme eliminates this artifact. The sequential scheme with sequence $(x_1, x_2, x_3)$ replaces the 6-cycle with an entirely different 2-cycle through $010 \leftrightarrow 101$. The probabilistic scheme turns the regular oscillation into a noisy, variable one. The update scheme is therefore not just a computational choice, it determines which attractors the model has and what biological conclusions can be drawn from them.
The question of which scheme best captures the biology of a given system remains an active area of research. A notable recent contribution is the introduction of Most Permissive Boolean Networks \cite{pauleve2020reconciling}, a new update semantics that generalizes both synchronous and asynchronous approaches and carries a formal guarantee that no behavior achievable by a compatible quantitative model is missed. Unlike standard asynchronous update, the most permissive semantics also avoids the state-space explosion that makes large-scale asynchronous analysis intractable, enabling attractor analysis of genome-scale regulatory networks. On the tooling side, software packages such as BoolNet \cite{mussel2010boolnet} and GINsim \cite{naldi2018colomoto} bring multiple update schemes and attractor analysis algorithms to a broader research community.
Open questions include how to choose a biologically grounded update scheme when experimental timing data is sparse, how to parameterize probabilistic models from single-cell RNA sequencing data, and how to efficiently compute attractor landscapes in asynchronous networks with thousands of nodes. Boolean networks, despite their simplicity, remain a powerful framework for understanding the dynamical logic of gene regulation, and the update scheme is central to using them well.
% The list of references is provided as `references.bib`
\bibliographystyle{unsrt}
\bibliography{IEEEabrv,references}
\end{document}

View File

@@ -48,3 +48,35 @@
year={2008},
publisher={The Royal Society}
}
@article{pauleve2020reconciling,
title={Reconciling qualitative, abstract, and scalable modeling of biological networks},
author={Paulev{\'e}, Lo{\"\i}c and Kol{\v{c}}{\'a}k, Juri and Chatain, Thomas and Haar, Stefan},
journal={Nature communications},
volume={11},
number={1},
pages={4256},
year={2020},
publisher={Nature Publishing Group UK London}
}
@article{mussel2010boolnet,
title={BoolNet—an R package for generation, reconstruction and analysis of Boolean networks},
author={M{\"u}ssel, Christoph and Hopfensitz, Martin and Kestler, Hans A},
journal={Bioinformatics},
volume={26},
number={10},
pages={1378--1380},
year={2010},
publisher={Oxford University Press}
}
@article{naldi2018colomoto,
title={The CoLoMoTo interactive notebook: accessible and reproducible computational analyses for qualitative biological networks},
author={Naldi, Aur{\'e}lien and Hernandez, C{\'e}line and Levy, Nicolas and Stoll, Gautier and Monteiro, Pedro T and Chaouiya, Claudine and Helikar, Tom{\'a}{\v{s}} and Zinovyev, Andrei and Calzone, Laurence and Cohen-Boulakia, Sarah and others},
journal={Frontiers in physiology},
volume={9},
pages={680},
year={2018},
publisher={Frontiers Media SA}
}