diff --git a/appendix.tex b/appendix.tex new file mode 100644 index 0000000..e020570 --- /dev/null +++ b/appendix.tex @@ -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} diff --git a/background.tex b/background.tex index 6533a6f..87a1a7a 100644 --- a/background.tex +++ b/background.tex @@ -1,4 +1,4 @@ -\begin{chapter}{Background} +\begin{chapter}{Background}\label{background_chap} \begin{section}{Reaction Systems} 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. diff --git a/conclusion.tex b/conclusion.tex index 2312fbc..a6be173 100644 --- a/conclusion.tex +++ b/conclusion.tex @@ -13,6 +13,6 @@ \end{itemize} \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} diff --git a/design.tex b/design.tex index 3076a0c..dbfdacb 100644 --- a/design.tex +++ b/design.tex @@ -921,7 +921,7 @@ \end{minipage} \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} \begin{minipage}{\textwidth} diff --git a/document.bib b/document.bib index ff73aca..1b6aad7 100644 --- a/document.bib +++ b/document.bib @@ -1,274 +1,343 @@ @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 Systems}, 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, - month = 7, - pages = {1–27} + bdsk-url-1 = {https://doi.org/10.1016/j.tcs.2021.03.024} } @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}, + doi = {10.1007/3-540-65306-6_14}, + journal = {Lecture Notes in Computer Science}, + pages = {12-121}, + title = {Elementary Net Systems}, year = 1998, - pages = {12–121} + bdsk-url-1 = {https://doi.org/10.1007/3-540-65306-6_14} } @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, Kim Guldstrand}, + place = {Cumberland}, + publisher = {MIT Press, The}, + title = {Principles of model checking}, year = 2016 } @article{Aceto_Ingolfsdottir_Srba_2011, - title = {The algorithmics of Bisimilarity}, - DOI = {10.1017/cbo9780511792588.004}, + author = {Aceto, Luca and Ingolfsdottir, Anna and Srba, + Jir{\'\i}}, + doi = {10.1017/cbo9780511792588.004}, journal = {Advanced Topics in Bisimulation and Coinduction}, - author = {Aceto, Luca and Ingolfsdottir, Anna and Srba, Jirí}, - year = 2011, month = 9, - pages = {100–172} + pages = {100-172}, + title = {The algorithmics of Bisimilarity}, + year = 2011, + bdsk-url-1 = {https://doi.org/10.1017/cbo9780511792588.004} } @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 systems}, - DOI = {10.1016/b978-044482830-9/50024-2}, - journal = {Handbook of Process Algebra}, - author = {Cleaveland, Rance and Sokolsky, Oleg}, year = 2001, - pages = {391–424} + bdsk-url-1 = {https://doi.org/10.1016/b978-044482830-9/50024-2} } @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}, volume = 16, - DOI = {10.1137/0216062}, - number = 6, - journal = {SIAM Journal on Computing}, - author = {Paige, Robert and Tarjan, Robert E.}, year = 1987, - month = 12, - pages = {973–989} + bdsk-url-1 = {https://doi.org/10.1137/0216062} } -@Online{rust_2025, - accessed = {2025-09-14}, - author = {The Rust teams}, - title = {Rust Programming Language}, - url = {https://rust-lang.org/} +@online{rust_2025, + accessed = {2025-09-14}, + author = {The Rust teams}, + title = {Rust Programming Language}, + url = {https://rust-lang.org/}, + bdsk-url-1 = {https://rust-lang.org/} } @report{WebAssemblyCoreSpecification2, - title = {{WebAssembly Core Specification}}, - version = {2.0}, - editor = {Rossberg, Andreas}, - date = {2025-09-14}, - institution = {{W3C}}, - url = {https://www.w3.org/TR/wasm-core-2/}, - langid = {english}, -} + date = {2025-09-14}, + editor = {Rossberg, Andreas}, + institution = {{W3C}}, + 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, - author = {Daniel Burgener}, - title = {{lalrpop}: convenient LR(1) parser generator}, - url = {https://github.com/lalrpop/lalrpop}, - date = {2025-05-22}, - version = {0.22.2}, - license = {Apache-2.0 OR MIT}, -} +@software{Burgener2025, + author = {Daniel Burgener}, + date = {2025-05-22}, + license = {Apache-2.0 OR MIT}, + title = {{lalrpop}: convenient LR(1) parser generator}, + url = {https://github.com/lalrpop/lalrpop}, + version = {0.22.2}, + bdsk-url-1 = {https://github.com/lalrpop/lalrpop}} -@software {Borgna2025, - author = {Agustín Borgna}, - title = {{petgraph}: Graph data structure library. Provides - graph types and graph algorithms.}, - url = {https://github.com/petgraph/petgraph}, - date = {2025-09-30}, - version = {0.8.3}, - license = {MIT OR Apache-2.0}, -} +@software{Borgna2025, + author = {Agust{\'\i}n Borgna}, + 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}, + bdsk-url-1 = {https://github.com/petgraph/petgraph}} -@Online{graphviz_2025, - accessed = {2025-09-14}, - title = {Graphviz is open source graph visualization - software.}, - author = {Ellson, John}, - url = {https://graphviz.org/doc/info/lang.html}, -} +@online{graphviz_2025, + accessed = {2025-09-14}, + author = {Ellson, John}, + title = {Graphviz is open source graph visualization software.}, + url = {https://graphviz.org/doc/info/lang.html}, + bdsk-url-1 = {https://graphviz.org/doc/info/lang.html}} -@Online{graphml_2025, - accessed = {2025-09-14}, - title = {GraphML is a comprehensive and easy-to-use file - format for graphs.}, - author = {The GraphML Team}, - url = {http://graphml.graphdrawing.org/}, -} +@online{graphml_2025, + accessed = {2025-09-14}, + author = {The GraphML Team}, + title = {GraphML is a comprehensive and easy-to-use file format for graphs.}, + url = {http://graphml.graphdrawing.org/}, + bdsk-url-1 = {http://graphml.graphdrawing.org/}} -@software {egui_node_graph22024, - 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}, - version = {0.7.0}, - license = {MIT}, -} +@software{egui_node_graph22024, + author = {trevyn}, + date = {2024-11-03}, + 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, - 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}, - version = {0.33.2}, - license = {MIT OR Apache-2.0}, -} +@software{Ernerfeldt2025, + author = {Emil Ernerfeldt}, + date = {2025-11-13}, + 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, - accessed = {2025-09-14}, - title = {An ordered set based on a B-Tree.}, - author = {The Rust teams}, - url = {https://doc.rust-lang.org/std/collections/struct.BTreeSet.html}, -} +@online{btree_2025, + accessed = {2025-09-14}, + author = {The Rust teams}, + title = {An ordered set based on a B-Tree.}, + 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, - accessed = {2025-09-14}, - title = {A thread-safe reference-counting pointer. ‘Arc’ - stands for ‘Atomically Reference Counted’.}, - author = {The Rust teams}, - url = {https://doc.rust-lang.org/std/sync/struct.Arc.html}, -} +@online{arc_2025, + accessed = {2025-09-14}, + 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}, + bdsk-url-1 = {https://doc.rust-lang.org/std/sync/struct.Arc.html}} -@software {Rotem2025, - author = {Nadav Rotem}, - title = {{layout-rs}: A graph visualization program}, - url = {https://github.com/nadavrot/layout}, - date = {2025-04-24}, - version = {0.1.3}, - license = {MIT}, -} +@software{Rotem2025, + author = {Nadav Rotem}, + date = {2025-04-24}, + license = {MIT}, + title = {{layout-rs}: A graph visualization program}, + url = {https://github.com/nadavrot/layout}, + version = {0.1.3}, + bdsk-url-1 = {https://github.com/nadavrot/layout}} -@software {Stampfl2025, - author = {Laurenz Stampfl}, - title = {{resvg}: An SVG rendering library.}, - url = {https://github.com/linebender/resvg}, - date = {2025-04-17}, - version = {0.45.1}, - license = {Apache-2.0 OR MIT}, -} +@software{Stampfl2025, + author = {Laurenz Stampfl}, + date = {2025-04-17}, + license = {Apache-2.0 OR MIT}, + title = {{resvg}: An SVG rendering library.}, + url = {https://github.com/linebender/resvg}, + version = {0.45.1}, + bdsk-url-1 = {https://github.com/linebender/resvg}} -@software {wasm-bindgen2025, - 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}, - version = {0.2.105}, - license = {MIT OR Apache-2.0}, -} +@software{wasm-bindgen2025, + author = {daxpedda}, + date = {2025-10-27}, + 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, - title = {{binaryen}: a compiler and toolchain infrastructure - library for WebAssembly, written in C++.}, - date = {2025-10-27}, - url = {https://github.com/WebAssembly/binaryen}, -} +@software{binaryen_2025, + date = {2025-10-27}, + title = {{binaryen}: a compiler and toolchain infrastructure library for WebAssembly, written in C++.}, + url = {https://github.com/WebAssembly/binaryen}, + bdsk-url-1 = {https://github.com/WebAssembly/binaryen}} -@Manual{manualperf_2025, - title = {perf(1) — Linux manual page}, +@manual{manualperf_2025, edition = {6.17-2}, month = 11, - year = 2025, + title = {perf(1) - Linux manual page}, + year = 2025 } -@software {Ochtman2025, - author = {Dirkjan Ochtman}, - title = {{flamegraph}: A simple cargo subcommand for generating flamegraphs, using inferno under the hood}, - url = {https://github.com/flamegraph-rs/flamegraph}, - date = {2025-11-07}, - version = {0.6.10}, - license = {MIT OR Apache-2.0}, -} +@software{Ochtman2025, + 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}, + url = {https://github.com/flamegraph-rs/flamegraph}, + version = {0.6.10}, + bdsk-url-1 = {https://github.com/flamegraph-rs/flamegraph}} @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 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, - month = 9 + bdsk-url-1 = {https://doi.org/10.1007/s11047-025-10046-5} } -@article{Mitrana_Păun_Petre_Prelipcean_2025, - title = {Quantitative reaction systems}, - DOI = {10.1109/iraset64571.2025.11008263}, +@article{Mitrana_Paun_Petre_Prelipcean_2025, + author = {Mitrana, Victor and P{\u a}un, Mihaela and Petre, + Ion and Prelipcean, Ana-Maria}, + doi = {10.1109/iraset64571.2025.11008263}, journal = {2025 5th International Conference on Innovative Research in Applied Science, Engineering and Technology (IRASET)}, - author = {Mitrana, Victor and Păun, Mihaela and Petre, Ion and - Prelipcean, Ana-Maria}, - year = 2025, month = 5, - pages = {1–6} + 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, - 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}, + doi = {10.1007/978-3-031-97274-4_11}, + journal = {Lecture Notes in Computer Science}, + pages = {179-193}, + title = {Multiset Reaction Systems}, year = 2025, - pages = {179–193} + bdsk-url-1 = {https://doi.org/10.1007/978-3-031-97274-4_11} } -@Misc{ReactionSystemsGit, +@misc{ReactionSystemsGit, author = {Rossi, Elvis}, - title = {ReactionSystems}, - publisher = {GitHub}, - journal = {GitHub repository}, 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}, - title = {ReactionSystems}, - publisher = {GitHub}, - journal = {GitHub repository}, howpublished = {\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 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, - 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 and Gori, Roberta and Milazzo, Paolo and Montagna, 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, - month = {6}, - pages = {509–526} + bdsk-url-1 = {https://doi.org/10.1007/s10009-024-00757-y} +} + +@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 } diff --git a/document.pdf b/document.pdf index 209fdbc..e65cf98 100644 Binary files a/document.pdf and b/document.pdf differ diff --git a/document.tex b/document.tex index 5ba8785..685b6f7 100644 --- a/document.tex +++ b/document.tex @@ -282,6 +282,7 @@ \input{development} \input{validation} \input{conclusion} +\input{appendix} \printbibliography% diff --git a/introduction.tex b/introduction.tex index 3319487..bae6f8b 100644 --- a/introduction.tex +++ b/introduction.tex @@ -1,23 +1,26 @@ \begin{chapter}{Introduction} - Reaction Systems (RSs) are 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.\ + Reaction System (RS) is a successful computational framework inspired by biological system, + 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 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. + 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. 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 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. + 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. \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. - Rust’s 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. + 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. + Rust’s 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. @@ -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 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 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} 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.