Apart from having worked as a Software Devloper in industry, I have also gained a lot of experience in crafting scientific applications. Having reproducibility in mind, it is essential to strive for high quality scientific software, providing user friendly, performant and well-tested simulations and analysis tools. This goes hand-in-hand with open source development, which greatly accelerates development.
SPARKX is a Python software package for the analysis of heavy ion collision simulation data. It provides access to a broad range of commonly used observables by directly reading in two of the most widespread data formats used in theoretical nuclear physics: OSCAR and JETSCAPE.
Although there are other analysis frameworks for nuclear physics available, they are mostly tailored for the analysis of experiments, and favour maximal performance over accessibility, as they suffer from a steep learning curve. SPARKX on the other hand is best suited for small and medium-sized data sets, as usually present in simulation data, for which even a bachelor student with minimal prior Python knowledge can perform a data analysis with SPARKX in a few minutes - as opposed to hours writing the analysis themselves or with other frameworks.
The starting point in the development of SPARKX was the observation that most researchers write their analysis frameworks from scratch. This increases the risk of bugs, reduces reproducibilty and performance and costs valuable time. Integrating, refactoring and improving analysis tools instead collectivly in order to create a "one for all" tool to analyse data can greatly increase quality.
Originally started by Dr. Hendrik Roch and Nils Sass, I joined the project soon afterwards in order to improve my analysis tools and set up the final stage of a Bayesian inference. By now, the tool is used by multiple researchers and is under active development. Try it out yourself!
During my Master's Thesis, I developed in an exploratorive study a method to speed up the integration of cross sections using Machine Learning techniques based on normalizing flows. This is done by performing importance sampling, which samples evalution points of integrals more often where the integrand has higher values. This greatly improves the accuracy of the result. Using artificial intelligence, normalizing flows can iterativly learn the values of the integrand in a multidimensional space and adjust the sampling accordingly.
In order to perform as many of the calculations as possible on the GPU, I implemented also a flat phase space sampler in PyTorch, which can be directly integrated into the cross section calculation pipeline.
Together with Dr. Nicolas Deutschmann, we developed on this basis the extensive python module ZüNIS, which is one of the first ready-to-use, well documented tools to boost cross section calculation using normalizing flows, aimed to be not only used by machine learning experts, but by the general physics audience. The goal is to provide a flexible library to integrate black-box functions with a level of automation comparable to the VEGAS Library, while using state-of-the-art artificial intelligence methods that go around the limitations of existing tools.
SMASH is hadronic transport code written in C++ for the simulation of heavy-ion collisions at low and intermediate energies, developed in the group of Prof. Hannah Elfner. It constitutes an effective solution of the relativistic Boltzmann equation with binary interactions. Most interactions proceed via resonance excitation and decay at lower energies or string excitation and fragmentation at higher energies.
We aim at including software development best pratices in the production of scientific software. This includes SMASH being completly open source, stringent issue-tracking, consistent versioning, thorough documentation and high test coverage. As a part of the SMASH development team, I am taking part in working for both quality of physics and software.
My main focus lies however in the development of the SMASH hybrid approach. It extends the applicability to high energy heavy ion collisions by interfacing external hydrodynamic approaches for the hot and dense state of the nuclear matter. Whereas the physics is contained in the modules which form part of the hybrid approach, the code of the hybrid approach itself manages and coordinates the interfaces, ensuring that all modules communicate correctly and execute in a stable way. This is especially challenging due to the fact that different degrees of freedom realised during the evolution lead to different descriptions of the state of the simulation. Additionally, the execution at high energies is very long and costly. Due to this, the execution should be optimised for high performance computing on the cluster.
Due to this, I am currently responsible for the efforts to revamp the hybrid approach. The logic is rewritten in bash in an aim to build a complete hybrid manager, allowing flexible execution, exchange of modules and automatic generation and managing of cluster jobs. Additionally, thorough testing will increase maintainablity and ensure that future changes in the modules will not break the software. This is essential, as the high fluctuations of members of research groups mean often a loss of expertise. Due to this, excellent tests and documentation are fundamental for long-living software.