appendix, instroduction

This commit is contained in:
elvis
2025-11-25 18:28:49 +01:00
parent 75822cd92d
commit f0cbdadde6
8 changed files with 341 additions and 198 deletions

70
appendix.tex Normal file
View File

@ -0,0 +1,70 @@
\begin{chapter}{Appendix}
\begin{section}{Running the software}
\begin{subsection}{Reaction Systems}
The code is available at the repository\ \cite{ReactionSystemsGit}.
To download the software the git\ \cite{git} utility is recommended.
To run the CLI a rust installation is necessary. It is recommended to install rustup\ \cite{rustup} from the official site or via a package manager:
\begin{minted}{Bash}
sudo apt install rustup
sudo dnf install rustup
sudo pacman -S rustup
brew install rustup
\end{minted}
After installation run \mintinline{bash}{rustup default stable} to install a target.
To build the code into an executable run \mintinline{bash}{cargo build --release}; to run the executable \mintinline{bash}{cargo run --release}.
The repository contains only one executable workspace, called \(\texttt{analysis}\), that provides the CLI.\ It expects a path to a file with structure described in section\ \ref{instructions_analysis}.
\end{subsection}
\begin{subsection}{Reaction Systems GUI}
The code is available at the repository\ \cite{ReactionSystemsGUIGit}.
To download the software the git\ \cite{git} utility is recommended.
To run the GUI a rust installation is necessary. It is recommended to install rustup\ \cite{rustup} from the official site or via a package manager:
\begin{minted}{Bash}
sudo apt install rustup
sudo dnf install rustup
sudo pacman -S rustup
brew install rustup
\end{minted}
After installation run \mintinline{bash}{rustup default stable} to install a target. To install the wasm32 target a script is provided in the folder \(\texttt{reaction\_systems\_gui/}\) named \(\texttt{setup\_web.sh}\).
A script is provided to check for errors during development in the folder \(\texttt{reaction\_systems\_gui/}\) called \(\texttt{check.sh}\).
To format the code in a uniform way run \mintinline{bash}{cargo +nightly fmt}.
To run the program use \mintinline{bash}{cargo run --release --features "persistence"}. % chktex 18
The option \(\texttt{--features "persistence"}\)% chktex 18
enables file reading and saving.
To run the web application a script is provided in the folder \(\texttt{reaction\_systems\_gui/}\) called \(\texttt{build\_web.sh}\).
The binary generated by rust is optimized using wasm-opt\ \cite{binaryen_2025}. It can be installed using a package manager:
\begin{minted}{bash}
sudo apt install binaryen
sudo dnf install binaryen
sudo pacman -S binaryen
brew install binaryen
\end{minted}
The optimization step can be skipped by providing the flag \(\texttt{--fast}\) to the script.
To run locally serve the files in the folder \(\texttt{reaction\_systems\_gui/docs/}\). This can be done with any simple http server. For example one can be installed by running \mintinline{bash}{cargo install basic-http-server}.
A script is provided to run the server in the folder \(\texttt{reaction\_systems\_gui/}\) named \(\texttt{start\_server.sh}\).
\end{subsection}
\end{section}
\end{chapter}

View File

@ -1,4 +1,4 @@
\begin{chapter}{Background} \begin{chapter}{Background}\label{background_chap}
\begin{section}{Reaction Systems} \begin{section}{Reaction Systems}
Reaction Systems are a qualitative model inspired by biochemical processes. Reaction Systems are a qualitative model inspired by biochemical processes.
The behavior is described by reactions, each of them requiring some reactants \(R\) and requiring the absence of inhibitors \(I\) to produce some product elements \(P\). ``Elements'' and ``entities'' will be used interchangeably to refer to elements of these sets. The behavior is described by reactions, each of them requiring some reactants \(R\) and requiring the absence of inhibitors \(I\) to produce some product elements \(P\). ``Elements'' and ``entities'' will be used interchangeably to refer to elements of these sets.

View File

@ -13,6 +13,6 @@
\end{itemize} \end{itemize}
\end{section} \end{section}
Future work may extend current models by a more in-depth performance analysis and optimization; may extend the methods available in the GUI;\ may provide new Reaction Systems types, like Quantitative Reaction Systems\cite{Mitrana_Păun_Petre_Prelipcean_2025} or Multiset Reaction Systems\cite{Bottoni_Mitrana_Petre_2025}; may provide methods to convert different structures like boolean networks into RS;\ or may provide additional test coverage of the current code. Future work may extend current models by a more in-depth performance analysis and optimization; may extend the methods available in the GUI;\ may provide new Reaction Systems types, like Quantitative Reaction Systems\cite{Mitrana_Paun_Petre_Prelipcean_2025} or Multiset Reaction Systems\cite{Bottoni_Mitrana_Petre_2025}; may provide methods to convert different structures like boolean networks into RS;\ or may provide additional test coverage of the current code.
\end{chapter} \end{chapter}

View File

@ -921,7 +921,7 @@
\end{minipage} \end{minipage}
\end{subsection} \end{subsection}
\begin{subsection}{Instructions} \begin{subsection}{Instructions}\label{instructions_analysis}
The command line interface provided by the workspace \(\texttt{analysis}\) expects as input a path to a file with a RS and some instructions, reads the file, executes the instructions and returns the result in the forms specified. The syntax for specifying instructions is as follows:\vspace{1em} The command line interface provided by the workspace \(\texttt{analysis}\) expects as input a path to a file with a RS and some instructions, reads the file, executes the instructions and returns the result in the forms specified. The syntax for specifying instructions is as follows:\vspace{1em}
\begin{minipage}{\textwidth} \begin{minipage}{\textwidth}

View File

@ -1,274 +1,343 @@
@article{Brodo_Bruni_Falaschi_2021, @article{Brodo_Bruni_Falaschi_2021,
author = {Brodo, Linda and Bruni, Roberto and Falaschi,
Moreno},
doi = {10.1016/j.tcs.2021.03.024},
journal = {Theoretical Computer Science},
month = 7,
pages = {1-27},
title = {A logical and graphical framework for Reaction title = {A logical and graphical framework for Reaction
Systems}, Systems},
volume = 875, volume = 875,
DOI = {10.1016/j.tcs.2021.03.024},
journal = {Theoretical Computer Science},
author = {Brodo, Linda and Bruni, Roberto and Falaschi,
Moreno},
year = 2021, year = 2021,
month = 7, bdsk-url-1 = {https://doi.org/10.1016/j.tcs.2021.03.024}
pages = {127}
} }
@article{Rozenberg_Engelfriet_1998, @article{Rozenberg_Engelfriet_1998,
title = {Elementary Net Systems},
DOI = {10.1007/3-540-65306-6_14},
journal = {Lecture Notes in Computer Science},
author = {Rozenberg, Grzegorz and Engelfriet, Joost}, author = {Rozenberg, Grzegorz and Engelfriet, Joost},
doi = {10.1007/3-540-65306-6_14},
journal = {Lecture Notes in Computer Science},
pages = {12-121},
title = {Elementary Net Systems},
year = 1998, year = 1998,
pages = {12121} bdsk-url-1 = {https://doi.org/10.1007/3-540-65306-6_14}
} }
@book{Baier_Katoen_Larsen_2016, @book{Baier_Katoen_Larsen_2016,
place = {Cumberland},
title = {Principles of model checking},
publisher = {MIT Press, The},
author = {Baier, Christel and Katoen, Joost-Pieter and Larsen, author = {Baier, Christel and Katoen, Joost-Pieter and Larsen,
Kim Guldstrand}, Kim Guldstrand},
place = {Cumberland},
publisher = {MIT Press, The},
title = {Principles of model checking},
year = 2016 year = 2016
} }
@article{Aceto_Ingolfsdottir_Srba_2011, @article{Aceto_Ingolfsdottir_Srba_2011,
title = {The algorithmics of Bisimilarity}, author = {Aceto, Luca and Ingolfsdottir, Anna and Srba,
DOI = {10.1017/cbo9780511792588.004}, Jir{\'\i}},
doi = {10.1017/cbo9780511792588.004},
journal = {Advanced Topics in Bisimulation and Coinduction}, journal = {Advanced Topics in Bisimulation and Coinduction},
author = {Aceto, Luca and Ingolfsdottir, Anna and Srba, Jirí},
year = 2011,
month = 9, month = 9,
pages = {100172} pages = {100-172},
title = {The algorithmics of Bisimilarity},
year = 2011,
bdsk-url-1 = {https://doi.org/10.1017/cbo9780511792588.004}
} }
@article{Cleaveland_Sokolsky_2001, @article{Cleaveland_Sokolsky_2001,
author = {Cleaveland, Rance and Sokolsky, Oleg},
doi = {10.1016/b978-044482830-9/50024-2},
journal = {Handbook of Process Algebra},
pages = {391-424},
title = {Equivalence and preorder checking for finite-state title = {Equivalence and preorder checking for finite-state
systems}, systems},
DOI = {10.1016/b978-044482830-9/50024-2},
journal = {Handbook of Process Algebra},
author = {Cleaveland, Rance and Sokolsky, Oleg},
year = 2001, year = 2001,
pages = {391424} bdsk-url-1 = {https://doi.org/10.1016/b978-044482830-9/50024-2}
} }
@article{Paige_Tarjan_1987, @article{Paige_Tarjan_1987,
author = {Paige, Robert and Tarjan, Robert E.},
doi = {10.1137/0216062},
journal = {SIAM Journal on Computing},
month = 12,
number = 6,
pages = {973-989},
title = {Three partition refinement algorithms}, title = {Three partition refinement algorithms},
volume = 16, volume = 16,
DOI = {10.1137/0216062},
number = 6,
journal = {SIAM Journal on Computing},
author = {Paige, Robert and Tarjan, Robert E.},
year = 1987, year = 1987,
month = 12, bdsk-url-1 = {https://doi.org/10.1137/0216062}
pages = {973989}
} }
@Online{rust_2025, @online{rust_2025,
accessed = {2025-09-14}, accessed = {2025-09-14},
author = {The Rust teams}, author = {The Rust teams},
title = {Rust Programming Language}, title = {Rust Programming Language},
url = {https://rust-lang.org/} url = {https://rust-lang.org/},
bdsk-url-1 = {https://rust-lang.org/}
} }
@report{WebAssemblyCoreSpecification2, @report{WebAssemblyCoreSpecification2,
title = {{WebAssembly Core Specification}},
version = {2.0},
editor = {Rossberg, Andreas},
date = {2025-09-14}, date = {2025-09-14},
editor = {Rossberg, Andreas},
institution = {{W3C}}, institution = {{W3C}},
url = {https://www.w3.org/TR/wasm-core-2/},
langid = {english}, langid = {english},
} title = {{WebAssembly Core Specification}},
url = {https://www.w3.org/TR/wasm-core-2/},
version = {2.0},
bdsk-url-1 = {https://www.w3.org/TR/wasm-core-2/}}
@software {Burgener2025, @software{Burgener2025,
author = {Daniel Burgener}, author = {Daniel Burgener},
date = {2025-05-22},
license = {Apache-2.0 OR MIT},
title = {{lalrpop}: convenient LR(1) parser generator}, title = {{lalrpop}: convenient LR(1) parser generator},
url = {https://github.com/lalrpop/lalrpop}, url = {https://github.com/lalrpop/lalrpop},
date = {2025-05-22},
version = {0.22.2}, version = {0.22.2},
license = {Apache-2.0 OR MIT}, bdsk-url-1 = {https://github.com/lalrpop/lalrpop}}
}
@software {Borgna2025, @software{Borgna2025,
author = {Agustín Borgna}, author = {Agust{\'\i}n Borgna},
title = {{petgraph}: Graph data structure library. Provides
graph types and graph algorithms.},
url = {https://github.com/petgraph/petgraph},
date = {2025-09-30}, date = {2025-09-30},
license = {MIT OR Apache-2.0},
title = {{petgraph}: Graph data structure library. Provides graph types and graph algorithms.},
url = {https://github.com/petgraph/petgraph},
version = {0.8.3}, version = {0.8.3},
license = {MIT OR Apache-2.0}, bdsk-url-1 = {https://github.com/petgraph/petgraph}}
}
@Online{graphviz_2025, @online{graphviz_2025,
accessed = {2025-09-14}, accessed = {2025-09-14},
title = {Graphviz is open source graph visualization
software.},
author = {Ellson, John}, author = {Ellson, John},
title = {Graphviz is open source graph visualization software.},
url = {https://graphviz.org/doc/info/lang.html}, url = {https://graphviz.org/doc/info/lang.html},
} bdsk-url-1 = {https://graphviz.org/doc/info/lang.html}}
@Online{graphml_2025, @online{graphml_2025,
accessed = {2025-09-14}, accessed = {2025-09-14},
title = {GraphML is a comprehensive and easy-to-use file
format for graphs.},
author = {The GraphML Team}, author = {The GraphML Team},
title = {GraphML is a comprehensive and easy-to-use file format for graphs.},
url = {http://graphml.graphdrawing.org/}, url = {http://graphml.graphdrawing.org/},
} bdsk-url-1 = {http://graphml.graphdrawing.org/}}
@software {egui_node_graph22024, @software{egui_node_graph22024,
author = {trevyn}, author = {trevyn},
title = {{egui\_node\_graph2}: A helper library to create
interactive node graphs using egui},
url = {https://github.com/trevyn/egui_node_graph2},
date = {2024-11-03}, date = {2024-11-03},
version = {0.7.0},
license = {MIT}, license = {MIT},
} title = {{egui\_node\_graph2}: A helper library to create interactive node graphs using egui},
url = {https://github.com/trevyn/egui_node_graph2},
version = {0.7.0},
bdsk-url-1 = {https://github.com/trevyn/egui_node_graph2}}
@software {Ernerfeldt2025, @software{Ernerfeldt2025,
author = {Emil Ernerfeldt}, author = {Emil Ernerfeldt},
title = {{egui}: An easy-to-use immediate mode GUI that runs
on both web and native},
url = {https://github.com/emilk/egui},
date = {2025-11-13}, date = {2025-11-13},
version = {0.33.2},
license = {MIT OR Apache-2.0}, license = {MIT OR Apache-2.0},
} title = {{egui}: An easy-to-use immediate mode GUI that runs on both web and native},
url = {https://github.com/emilk/egui},
version = {0.33.2},
bdsk-url-1 = {https://github.com/emilk/egui}}
@Online{btree_2025, @online{btree_2025,
accessed = {2025-09-14}, accessed = {2025-09-14},
author = {The Rust teams},
title = {An ordered set based on a B-Tree.}, title = {An ordered set based on a B-Tree.},
author = {The Rust teams},
url = {https://doc.rust-lang.org/std/collections/struct.BTreeSet.html}, url = {https://doc.rust-lang.org/std/collections/struct.BTreeSet.html},
} bdsk-url-1 = {https://doc.rust-lang.org/std/collections/struct.BTreeSet.html}}
@Online{arc_2025, @online{arc_2025,
accessed = {2025-09-14}, accessed = {2025-09-14},
title = {A thread-safe reference-counting pointer. Arc
stands for Atomically Reference Counted.},
author = {The Rust teams}, author = {The Rust teams},
title = {A thread-safe reference-counting pointer. `Arc' stands for `Atomically Reference Counted'.},
url = {https://doc.rust-lang.org/std/sync/struct.Arc.html}, url = {https://doc.rust-lang.org/std/sync/struct.Arc.html},
} bdsk-url-1 = {https://doc.rust-lang.org/std/sync/struct.Arc.html}}
@software {Rotem2025, @software{Rotem2025,
author = {Nadav Rotem}, author = {Nadav Rotem},
date = {2025-04-24},
license = {MIT},
title = {{layout-rs}: A graph visualization program}, title = {{layout-rs}: A graph visualization program},
url = {https://github.com/nadavrot/layout}, url = {https://github.com/nadavrot/layout},
date = {2025-04-24},
version = {0.1.3}, version = {0.1.3},
license = {MIT}, bdsk-url-1 = {https://github.com/nadavrot/layout}}
}
@software {Stampfl2025, @software{Stampfl2025,
author = {Laurenz Stampfl}, author = {Laurenz Stampfl},
date = {2025-04-17},
license = {Apache-2.0 OR MIT},
title = {{resvg}: An SVG rendering library.}, title = {{resvg}: An SVG rendering library.},
url = {https://github.com/linebender/resvg}, url = {https://github.com/linebender/resvg},
date = {2025-04-17},
version = {0.45.1}, version = {0.45.1},
license = {Apache-2.0 OR MIT}, bdsk-url-1 = {https://github.com/linebender/resvg}}
}
@software {wasm-bindgen2025, @software{wasm-bindgen2025,
author = {daxpedda}, author = {daxpedda},
title = {{wasm-bindgen}: Easy support for interacting between
JS and Rust.},
url = {https://github.com/wasm-bindgen/wasm-bindgen},
date = {2025-10-27}, date = {2025-10-27},
version = {0.2.105},
license = {MIT OR Apache-2.0}, license = {MIT OR Apache-2.0},
} title = {{wasm-bindgen}: Easy support for interacting between JS and Rust.},
url = {https://github.com/wasm-bindgen/wasm-bindgen},
version = {0.2.105},
bdsk-url-1 = {https://github.com/wasm-bindgen/wasm-bindgen}}
@Software{binaryen_2025, @software{binaryen_2025,
title = {{binaryen}: a compiler and toolchain infrastructure
library for WebAssembly, written in C++.},
date = {2025-10-27}, date = {2025-10-27},
title = {{binaryen}: a compiler and toolchain infrastructure library for WebAssembly, written in C++.},
url = {https://github.com/WebAssembly/binaryen}, url = {https://github.com/WebAssembly/binaryen},
} bdsk-url-1 = {https://github.com/WebAssembly/binaryen}}
@Manual{manualperf_2025, @manual{manualperf_2025,
title = {perf(1) — Linux manual page},
edition = {6.17-2}, edition = {6.17-2},
month = 11, month = 11,
year = 2025, title = {perf(1) - Linux manual page},
year = 2025
} }
@software {Ochtman2025, @software{Ochtman2025,
author = {Dirkjan Ochtman}, author = {Dirkjan Ochtman},
date = {2025-11-07},
license = {MIT OR Apache-2.0},
title = {{flamegraph}: A simple cargo subcommand for generating flamegraphs, using inferno under the hood}, title = {{flamegraph}: A simple cargo subcommand for generating flamegraphs, using inferno under the hood},
url = {https://github.com/flamegraph-rs/flamegraph}, url = {https://github.com/flamegraph-rs/flamegraph},
date = {2025-11-07},
version = {0.6.10}, version = {0.6.10},
license = {MIT OR Apache-2.0}, bdsk-url-1 = {https://github.com/flamegraph-rs/flamegraph}}
}
@article{Brodo_Bruni_Falaschi_Gori_Milazzo_2025, @article{Brodo_Bruni_Falaschi_Gori_Milazzo_2025,
title = {Slicing analyses for negative dependencies in
Reaction Systems Modeling Gene Regulatory Networks},
DOI = {10.1007/s11047-025-10046-5},
journal = {Natural Computing},
author = {Brodo, Linda and Bruni, Roberto and Falaschi, Moreno author = {Brodo, Linda and Bruni, Roberto and Falaschi, Moreno
and Gori, Roberta and Milazzo, Paolo}, and Gori, Roberta and Milazzo, Paolo},
doi = {10.1007/s11047-025-10046-5},
journal = {Natural Computing},
month = 9,
title = {Slicing analyses for negative dependencies in
Reaction Systems Modeling Gene Regulatory Networks},
year = 2025, year = 2025,
month = 9 bdsk-url-1 = {https://doi.org/10.1007/s11047-025-10046-5}
} }
@article{Mitrana_Păun_Petre_Prelipcean_2025, @article{Mitrana_Paun_Petre_Prelipcean_2025,
title = {Quantitative reaction systems}, author = {Mitrana, Victor and P{\u a}un, Mihaela and Petre,
DOI = {10.1109/iraset64571.2025.11008263}, Ion and Prelipcean, Ana-Maria},
doi = {10.1109/iraset64571.2025.11008263},
journal = {2025 5th International Conference on Innovative journal = {2025 5th International Conference on Innovative
Research in Applied Science, Engineering and Research in Applied Science, Engineering and
Technology (IRASET)}, Technology (IRASET)},
author = {Mitrana, Victor and Păun, Mihaela and Petre, Ion and
Prelipcean, Ana-Maria},
year = 2025,
month = 5, month = 5,
pages = {16} pages = {1-6},
title = {Quantitative reaction systems},
year = 2025,
bdsk-url-1 = {https://doi.org/10.1109/iraset64571.2025.11008263}
} }
@article{Bottoni_Mitrana_Petre_2025, @article{Bottoni_Mitrana_Petre_2025,
title = {Multiset Reaction Systems},
DOI = {10.1007/978-3-031-97274-4_11},
journal = {Lecture Notes in Computer Science},
author = {Bottoni, Paolo and Mitrana, Victor and Petre, Ion}, author = {Bottoni, Paolo and Mitrana, Victor and Petre, Ion},
doi = {10.1007/978-3-031-97274-4_11},
journal = {Lecture Notes in Computer Science},
pages = {179-193},
title = {Multiset Reaction Systems},
year = 2025, year = 2025,
pages = {179193} bdsk-url-1 = {https://doi.org/10.1007/978-3-031-97274-4_11}
} }
@Misc{ReactionSystemsGit, @misc{ReactionSystemsGit,
author = {Rossi, Elvis}, author = {Rossi, Elvis},
title = {ReactionSystems},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/elvisrossi/ReactionSystems}}, howpublished = {\url{https://github.com/elvisrossi/ReactionSystems}},
year = 2025, journal = {GitHub repository},
publisher = {GitHub},
title = {ReactionSystems},
year = 2025
} }
@Misc{ReactionSystemsGUIGit, @misc{ReactionSystemsGUIGit,
author = {Rossi, Elvis}, author = {Rossi, Elvis},
title = {ReactionSystems},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = howpublished =
{\url{https://github.com/elvisrossi/ReactionSystemsGUI}}, {\url{https://github.com/elvisrossi/ReactionSystemsGUI}},
year = 2025, journal = {GitHub repository},
publisher = {GitHub},
title = {ReactionSystems},
year = 2025
} }
@Misc{BioResolve2025, @misc{BioResolve2025,
howpublished = {\url{https://pages.di.unipi.it/bruni/LTSRS/}},
title = {BioResolve web page, a Prolog interpreter for title = {BioResolve web page, a Prolog interpreter for
Reaction Systems analysis.}, Reaction Systems analysis.},
howpublished = {\url{https://pages.di.unipi.it/bruni/LTSRS/}}, year = 2025
year = 2025,
} }
@article{Brodo_Bruni_Falaschi_Gori_Milazzo_Montagna_Pulieri_2024, @article{Brodo_Bruni_Falaschi_Gori_Milazzo_Montagna_Pulieri_2024,
title = {Causal analysis of positive reaction systems},
volume = 26,
DOI = {10.1007/s10009-024-00757-y},
number = 4,
journal = {International Journal on Software Tools for
Technology Transfer},
author = {Brodo, Linda and Bruni, Roberto and Falaschi, Moreno author = {Brodo, Linda and Bruni, Roberto and Falaschi, Moreno
and Gori, Roberta and Milazzo, Paolo and Montagna, and Gori, Roberta and Milazzo, Paolo and Montagna,
Valeria and Pulieri, Pasquale}, Valeria and Pulieri, Pasquale},
doi = {10.1007/s10009-024-00757-y},
journal = {International Journal on Software Tools for
Technology Transfer},
month = 6,
number = 4,
pages = {509-526},
title = {Causal analysis of positive reaction systems},
volume = 26,
year = 2024, year = 2024,
month = {6}, bdsk-url-1 = {https://doi.org/10.1007/s10009-024-00757-y}
pages = {509526} }
@inbook{Ehrenfeucht_Rozenberg_2004,
place = {Auckland, New Zealand},
title = {Basic Notions of Reaction Systems},
volume = {8th International Conference},
booktitle = {Developments in Language Theory},
publisher = {Springer},
author = {A. Ehrenfeucht and G. Rozenberg},
year = 2004,
pages = {27-29}
}
@article{Ehrenfeucht_Rozenberg_2007,
author = {Ehrenfeucht, A. and Rozenberg, G.},
title = {Reaction Systems},
year = 2007,
issue_date = {January 2007},
publisher = {IOS Press},
address = {NLD},
volume = 75,
number = {1-4},
issn = {0169-2968},
abstract = {Interactions between biochemical reactions lie at
the heart of functioning of a living cell. In order
to formalize these interactions we introduce
reaction systems. We motivate them by explicitely
stating a number of assumptions/axioms that (we
believe) hold for a great number of biochemical
reactions - we point out that these assumptions are
very different from the ones underlying traditional
models of computation. The paper provides the basic
definitions, illustrates them by biology and
computer science oriented examples, relates reaction
systems to some traditional models of computation,
and proves some basic properties of reaction
systems.},
journal = {Fundam. Inf.},
month = jan,
pages = {263-280},
numpages = 18
}
@inbook{Clark_Pazdernik_McGehee_2018,
edition = {3rd},
title = {Regulation of Transcription in Prokaryotes},
booktitle = {Molecular Biology},
publisher = {Academic Press},
author = {Clark, David P. and Pazdernik, Nanette J. and
McGehee, Michelle R.},
year = 2018,
pages = {532-542}
}
@Misc{git,
key = {https://git-scm.com/},
author = {Junio Hamano and others},
title = {Git},
year = 2025
}
@Misc{rustup,
key = {https://rustup.rs/},
author = {The Rust Project},
title = {Rustup: the Rust toolchain installer},
year = 2025
} }

Binary file not shown.

View File

@ -282,6 +282,7 @@
\input{development} \input{development}
\input{validation} \input{validation}
\input{conclusion} \input{conclusion}
\input{appendix}
\printbibliography% \printbibliography%

View File

@ -1,23 +1,26 @@
\begin{chapter}{Introduction} \begin{chapter}{Introduction}
Reaction Systems (RSs) are a successful computational framework inspired by biological system. Reaction System (RS) is a successful computational framework inspired by biological system,
The interaction between biochemical reactions and the functioning of single reactions are based on the mechanisms of facilitation and inhibition, which can be modeled and analyzed using RS.\ first described in\ \cite{Ehrenfeucht_Rozenberg_2004, Ehrenfeucht_Rozenberg_2007}.
The interaction between biochemical reactions and the functioning of single reactions is based on the mechanisms of facilitation and inhibition.
Facilitation and inhibition are key concepts in molecular biology\ \cite{Clark_Pazdernik_McGehee_2018}: gene promoters, both in lower and higher organisms, function poorly or not at all in the absence of extra proteins known as gene activator proteins, or transcription factors.
Other promoters may be inherently active: these are often controlled by a class of gene regulator proteins known as repressors that act to turn genes off.
Reaction Systems aims to models cell biology by represent this complex interaction between inducers and genes.
In this work new software for modeling, analyzing and designing Reaction Systems is designed and developed, with focus on performance and user interface design. A Reaction System consists of a set of entities and a set of reactions over such entities. Each reaction if enabled produces a set of entities P (called products). A reaction is enabled if its set R (called reactants) is wholly present and if the set I (called inhibitors) of entities is completely absent.
A Reaction System consists of a set of entities and a set of reactions over them. Each reaction produces some set of entities P (called products) if enabled, meaning if a set R (called reactants) is wholly present and if a set I (called inhibitors) of entities is completely absent.
The use of inhibitors induces non-monotonic behaviors that are difficult to analyze. The use of inhibitors induces non-monotonic behaviors that are difficult to analyze.
Entities can also be provided by an external context sequence to simulate \textit{in silico} biological experiment, expanded by structural operational semantics (SOS) rules to account for several biological experiments. In addition Positive RS, trace slicing, graph generation, bisimulation and more is available through an intuitive visual language with a graphical interface. Entities can also be provided by an external context sequence to simulate interaction with an environment, based on a structural operational semantics (SOS) coupled with different transformations and new frameworks aiming at analyzing causal properties that have been developed during the past years\ \cite{Brodo_Bruni_Falaschi_2021, Brodo_Bruni_Falaschi_Gori_Milazzo_Montagna_Pulieri_2024, Brodo_Bruni_Falaschi_Gori_Milazzo_2025}.
A comprehensive overview of all the different transformations and techniques implemented in the proposed tool are listed in chapter\ \ref{background_chap}.
Despite the rich theoretical development of Reaction Systems, practical tools for working with RS models have lagged behind. Numerous versions of Prolog and Python programs have been developed\cite{BioResolve2025}, but have problems regarding performance and usability. Future developments may be hindered by this lack of software by this technological barrier. Despite the rich theoretical development of Reaction Systems, practical tools for working with RS models have lagged behind. Numerous versions of Prolog and Python programs have been developed\cite{BioResolve2025}, but have problems regarding performance and usability.
This technological barrier caused by lack of appropriate software may hinder future developments.
This thesis aims to bridge the gap between the theoretical foundations of Reaction Systems and their practical application. To achieve this a new software platform for modeling, analyzing and designing Reaction Systems is proposed.
This thesis aims to bridge the gab between the theoretical foundations of Reaction Systems and their practical application. To achieve this a new software platform for modeling, analyzing and designing Reaction Systems is proposed.
\begin{section}{Software Design and Key Features} \begin{section}{Software Design and Key Features}
The core contribution here presented is a new software tool built from the ground up to support Reaction Systems modeling and analysis. Equal emphasis has been placed on performance and user experience. The software is implemented in Rust\cite{rust_2025}, a modern systems programming language chosen for its efficiency and reliability. The core contribution of this work is a new software tool built from the ground up to support Reaction Systems modeling and analysis. Equal emphasis has been placed on performance and user experience. The software is implemented in Rust\cite{rust_2025}, a modern systems programming language chosen for its efficiency and reliability.
Rusts strong performance characteristics (memory safety, speed, and concurrency support) help ensure that even larger Reaction System models can be analyzed quickly, while its emphasis on code safety and clarity makes the tool more maintainable in the long term. Rusts strong performance characteristics (memory safety, speed, and concurrency support) help to ensure that even larger Reaction System models can be analyzed quickly, while its emphasis on code safety and clarity makes the tool more maintainable in the long term.
The platform provides two user interfaces to accommodate different user needs. A command-line interface (CLI) is available for quick integration in already existing pipelines. The CLI allows specification of Reaction Systems and instructions over them and is easily expandable to meed the need of the programmer. The platform provides two user interfaces to accommodate different user needs. A command-line interface (CLI) is available for quick integration in already existing pipelines. The CLI allows specification of Reaction Systems and instructions over them and is easily expandable to meet the need of the programmer.
A graphical user interface (GUI) is also available both as standalone native application and as a static web application running on WebAssembly\cite{WebAssemblyCoreSpecification2}. The GUI lowers the learning curve for new users: instead of writing code or scripts, one can construct reactions, run simulations and view results through the same interface through interactive diagrams and controls. By providing both CLI and graphical native/web interfaces, the tool caters to a wide audience. A graphical user interface (GUI) is also available both as standalone native application and as a static web application running on WebAssembly\cite{WebAssemblyCoreSpecification2}. The GUI lowers the learning curve for new users: instead of writing code or scripts, one can construct reactions, run simulations and view results through the same interface through interactive diagrams and controls. By providing both CLI and graphical native/web interfaces, the tool caters to a wide audience.
@ -27,7 +30,7 @@
\item Graphical interface for modeling and simulation: An interactive GUI that allows users to graphically define RS components and simulate their behavior. \item Graphical interface for modeling and simulation: An interactive GUI that allows users to graphically define RS components and simulate their behavior.
\item Trace slicing: tools for examining execution traces in detail. Trace slicing allows a user to isolate and inspect specific segments of a reaction sequence, exploring causality between produced elements or inhibited reactions. \item Trace slicing: tools for examining execution traces in detail. Trace slicing allows a user to isolate and inspect specific segments of a reaction sequence, exploring causality between produced elements or inhibited reactions.
\item Bisimulation analysis: support for formal bisimulation analysis, which enables comparing different Reaction Systems models for behavioral equivalence. The methods are not restricted to just analyzing RS, but are available for any graph-like structure. \item Bisimulation analysis: support for formal bisimulation analysis, which enables comparing different Reaction Systems models for behavioral equivalence. The methods are not restricted to just analyzing RS, but are available for any graph-like structure.
\item Conversion between Reaction Systems and Positive Reactions Systems: to better explore traces and causality, a more suitable model is provided. Conversion between systems is handled automatically and the dafaults can be fine tuned or overridden. \item Conversion between Reaction Systems and Positive Reactions Systems: to better explore traces and causality, a more suitable model is provided. Conversion between systems is handled automatically and the defaults can be fine tuned or overridden.
\end{itemize} \end{itemize}
Together, these features make the software a comprehensive environment for working with Reaction Systems. The user can construct, simulate and analyze the results through multiple lenses: from observing cyclic behaviors to checking formal equivalences and visualizing interaction networks. Together, these features make the software a comprehensive environment for working with Reaction Systems. The user can construct, simulate and analyze the results through multiple lenses: from observing cyclic behaviors to checking formal equivalences and visualizing interaction networks.