We introduce STELLA (v1.0.1), a modular framework for statiotemporal event-based Lagrangian particle tracking in fluid flows. The framework is implemented as a GUI in python and takes the raw event stream obtained from an event-based camera as input. Once the data is loaded, the processing is done in four steps: Preprocessing, Detection, Tracking, Validation. In preprocessing, a ROI can be set in time and space and the filtered events can be saved. Subsequently, different algorithms for direct processing and image-based detection can be used to identify clustered events associated to individual particles. Based on the clustered events, particle tracks (position, velocity) can be derived by using a Kalman filter, spline fitting or hybrid approaches. Finally, a track quality filter and a neighborhood filter can be applied to reject spurious tracks during validation. In every step, the evaluation results can be saved and loaded in a way that also just single modules of STELLA can be used. For further information, please find our paper here: STELLA.
If you use any of this code, please cite the following publication:
@article{Sachs2026STELLA,
title={STELLA: A modular framework for SpatioTemporal Event-based Lagrangian particLe trAcking},
author={Sachs, Sebastian and Jung, Steffen and Kahl, Max and Willert, Christian and Keuper, Margret and Cierpka, Christian},
pages = {X},
volume = {X},
number = {X},
journal = {Experiments in Fluids},
year={2026}
}Clone GitHub repo:
git clone https://github.com/sesa1504/STELLA.git
cd STELLA
Create a new python environment using python 3.12.x:
conda create -y -n STELLA python=3.12.12 pip
conda activate STELLA
Install dependencies:
pip install --upgrade pip
pip install -r requirements.txt
Hint: STELLA is able to read .raw files. However, to reduce loading time, you can use the standalone code utils/convert_to_npz.py or utils/convert_to_npz_pyebiv.py to convert from .raw or .dat to .npz or .mat.
Under datasets/ you will find synthetic and experimental data as test cases. These datasets are rather small and can be used to try out different functionalities of STELLA.
Larger datasets used as Benchmark and to train artificial neural networks can be found here upon final publication of our paper.
To start the GUI, run python main.py. Changes in the set parameters are confirmed by pressing the enter key. As a small tutorial, the processing of experimental data is exemplified below:
- Preprocessing
- select
datasets/experimental.npzas data file and click onload data - set the accumulation time to 2 ms
- Detection
- in the detection tab, select
pixelwise extensionas detection method - using default settings, click on
Test runto perform the detection on the first frame - by activating
show found cluster centers, the middle points of found clusters are marked in the pseudo-frame
- if the test run is successful, hit
Run detectionto perform the detection for 100 time steps - the progress can be tracked in the status log at the lower right panel
- once detection is finished, statistics are shown on in the left panel und a histogram for cluster duration is given under
Cluster durationin the right panel
- Tracking
- in the tracking tab, select
Kalman filteringas tracking method - using default settings, click on
Test trackingto perform tracking for one event cluster - the found track for the selected cluster is displayed in the right panel
- if successful, click on
Run trackingto perform the tracking for all event clusters - by using the
PrevandNextbuttons, the calculated tracks for other event clusters can be seen - for visualization in an overlay of the pseudo-frame, select the
Pseudo-framepanel on the right, set theTrack window factorto 10, theMax velocityto 0.003 and hitNext >>a few times
- in the
Track durationpanel on the right, a histogram on the track duration is displayed
- Validation
- in the validation tab, select the
Apply track quality filtercheckbox and click onRun validation - for visualization, set the
Track window facotrto 10: valid and invalid tracks are displayed in green and red, respectively
- in the lower left panel, the validated tracks can be saved as .npz or .mat file
- for further post processing, see
plot_results.pyregarding handling of the output data
For further usage and plotting, the particle tracks saved in the validation step can be processed in python. An example data handling if provided in the standalone code plot_results.py.




