\documentclass[journal,compsoc,10pt]{IEEEtran}

% Load some possibly useful packages. You can remove the ones you don't need or
% add other packages that you need in your paper.
\usepackage{graphicx}                   % required to include graphics
\usepackage{amsfonts,amssymb,amsmath}   % mathsymbols etc
\usepackage{mathtools}                  % includes some fixes to amsmath, and adds convenience macros
\usepackage{bm}                         % make any letter boldface in math
\usepackage{algpseudocode}              % aka `algorithmicx`: same look `algorithmic`, but more flexible
\usepackage{array}                      % for better looking arrays
\usepackage{booktabs}                   % for better looking tables
\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}
\usepackage{cleveref}                   % smart references to figures, equations etc.

% some packages which may be useful when drafting, but should be removed before submission
\usepackage{todonotes}


\usepackage{tikz}



% You can define your own commands. This is useful for shorthands, for example
\newcommand{\EE}{\mathbb{E}}
\newcommand{\RR}{\mathbb{R}}
\newcommand{\eE}{\mathcal{E}}
\newcommand{\gG}{\mathcal{G}}
\newcommand{\nN}{\mathcal{N}}
\newcommand{\lnorm}[1]{\ell_{#1}\text{-norm}}

% Commands are also useful to ensure standardized notation, such as how to display vectors and matrices.
% The point is to replace formatting commands with semantic ones.
% This both makes the source more semantic, and also makes it easier to change formatting choices later
% IMPORTANT: In TeX, all commands share a global namespace. You need to be careful therefore not to overwrite an existing command.
%            Use \newcommand to ensure you don't accidentally overwrite an important macro
%            Use \renewcommand if you *do* want to overwrite a macro, have checked what the original does,
%            and have made sure the redefinition is safe.
\newcommand{\T}{\mathsf{T}}            % transpose
\renewcommand{\vec}[1]{\bm{#1}}        % redefine \vec to produce boldface instead of adding an arrow
\newcommand{\mat}[1]{\bm{#1}}          % define \vec to produce boldface
\newcommand{\ones}{\bm{1}}             % all-ones vector
\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 won’t 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 for 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, the choice of the update scheme for the boolean network takes an important role as it defines how and when individual parts of the network change. Most common schemes are 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 an update scheme will lead to a different behavior, in particular other attractors and cycles, change in reachability and change in robustness with regards to perturbations.
In the following, we will introduce different update scheme and their respective change on a network illustrated on examples and figure out 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 $x_1 x_2\ldots x_n$ where each node is replaced with the corresponding state.


\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}. Assume the current state is $0011$, meaning that $x_1, x_2$ are $0$ and $x_3, x_4$ are $1$. The next state when applying the update function all at once 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. In the example, there are 2 cycles of length 8 visible in \cref{fig:bn_syn_state_graph}.

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, 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 workings of boolean networks. This scheme assumes that each update function takes the exact same amount of time and executes at the same time, meaning regardless of the outcome of the first function, any other function will have the same result. Updating the network with this method is quite simple, deterministic 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.
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 synchronous update scheme that have the same outcome as the current set for sequential scheme. This can be achieved by reevaluating each function in 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


$$
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, and can have more simple functions at a larger scale, as synchronous would have to incorporate extra operations in order to simulate the side effects of one function happening before another.

An extension of the sequential scheme is the block-sequential scheme. This allows to devide 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 too can be converted to a synchronous scheme, thus producing the same behavior as the synchronous scheme.




\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}

\end{document}
