\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}
Possible points to mention here:
\begin{itemize}
	\item Explain shortly gene regulatory networks (GRN)
	\item Explain why boolean networks are used to model GRN
	\item Maybe mention history of boolean networks
	\item Set the focus to the update scheme as it seems to be rarely covered in the field of GRNs
	\item Possible open question about which update scheme might be best to model GRNs. Answer to this must follow in the conclusion
\end{itemize}


\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$.
	}
	\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}.
\todo[inline]{currently feels to short. once introduction is implemented, create a better transition/section 2 introduction. Also introduce robustness!}

\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 on one side 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, this is an oversimplification as normal GRNs never execute fully synchronously.



\todo[inline]{add more context and information about grn and their effects, split text into logical paragraphs}

\subsection{Sequential scheme}
When using the sequential update scheme, the update cycle processes 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}.

\todo[inline]{refer to synchronous by computing new functions that can be run synchronously with the same outcome as sequential with the current functions}

\subsection{Block-sequential scheme}
mix of synchronous and sequential. predefined blocks update sequential, inside a block the update follows the synchronous scheme

\subsection{Probabilistic scheme}
The Probabilistic update scheme is a synchronous scheme in terms of executing the functions, however, there is no longer only one function per node. Instead you can have multiple functions per node with each a fixed probability. This introduces some noise into the system and can lead to more realistic simulations. In order to show it using the example from \cref{fig:bn_example}, we need to extend the set of functions with alternatives and probability, which will only be used in this section.

$$
\text{PLACEHOLDER}
$$

\todo[inline]{refer to \cite{schwab2020concepts} and potentially add figure 2 from that paper}

\subsection{Asynchronous deterministic}
one node is updated per tick following a specific sequence


\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}
Not yet included: robustness! might be covered for each update scheme individually.

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.}
\todo[inline]{DON'T FORGET THE 2 MINUTE SLIDES!!!}




% The list of references is provided as `references.bib`
\bibliographystyle{unsrt}
\bibliography{IEEEabrv,references}

\end{document}
