Both apps · Tutorial 00
Installation & setup
Both Turbulence Realm-Tracker and Turbulence Realm SINDy ship as platform-specific installers that bundle every dependency — no Python installation is required. This tutorial covers the Windows setup installer and the Linux .deb / .run installers for both apps.
Disclaimer of Liability: This software is provided "AS IS" without warranty of any kind. The author shall not be liable for any damages arising from the use of this software. By installing, you acknowledge and accept the no-liability terms. The full disclaimer is displayed during installation.
Windows — setup installer (recommended)
Both apps use an Inno Setup installer wizard with a no-liability disclaimer on the license page.
- Download the setup installer:
- Tracker:
TurbulenceRealmTracker-3.0.0-setup.exe (78 MB) from the download page
- SINDy:
TurbulenceRealmSINDy-2.2.0-Setup.exe (120 MB) from the download page
- Double-click the downloaded
.exe to launch the installer.
- Read and accept the no-liability disclaimer on the license page.
- Choose the install location (defaults to
Program Files).
- Select Start Menu shortcuts and an optional desktop icon.
- Click Install — the app is ready to use from the Start Menu.
Uninstall: Add/Remove Programs (Settings → Apps) → Turbulence Realm-Tracker / Turbulence Realm SINDy → Uninstall.
Linux — .deb package (Debian/Ubuntu)
The .deb package installs to /opt, creates an XDG Applications menu entry (Science category) with icon, adds a PATH symlink, and includes clean uninstall scripts.
// Tracker
sudo dpkg -i turbulencerealmtracker_3.0.0_amd64.deb
sudo apt-get install -f // fix any missing dependencies
// SINDy
sudo dpkg -i TurbulenceRealmSINDy-2.2.0-amd64.deb
Launch from Applications → Science → Turbulence Realm-Tracker (or SINDy), or run TurbulenceRealmTracker / TurbulenceRealmSINDy in a terminal.
Uninstall: sudo dpkg -r turbulencerealmtracker (or turbulencerealm-sindy).
Linux — .run self-extracting installer (any distro)
The .run installer works on any Linux distribution. It displays the no-liability disclaimer in the terminal, installs to /opt (or $HOME/.local for non-root), creates a menu entry, and offers a desktop shortcut.
// Tracker
chmod +x TurbulenceRealmTracker-3.0.0-linux-installer.run
sudo ./TurbulenceRealmTracker-3.0.0-linux-installer.run
// SINDy
chmod +x TurbulenceRealmSINDy-2.2.0-Linux-Installer.run
./TurbulenceRealmSINDy-2.2.0-Linux-Installer.run
Read and accept the no-liability disclaimer (type y). Launch from the Applications menu or run the app command in a terminal.
Uninstall:
- Tracker:
sudo /opt/TurbulenceRealmTracker/uninstall.sh
- SINDy:
/opt/TurbulenceRealmSINDy/install.sh --uninstall
System requirements
- Windows: Windows 10/11 (x64)
- Linux: Ubuntu 20.04+ / Debian 11+ / Fedora 33+ (x64) with X11, OpenGL, fontconfig, libGL, libEGL, and libglib2.0
- Tracker: 4 GB RAM (8 GB recommended), 500 MB disk
- SINDy: 8 GB RAM (16 GB recommended for ML), 1 GB disk, optional NVIDIA GPU with CUDA for ML training
- A display (the GUI requires a desktop environment)
Verifying the installation
After installation, launch either app. You should see the Turbulence Realm gold/cream UI with the brand logo. If you get missing library errors on Linux, install them:
// Debian/Ubuntu
sudo apt install libegl1 libgl1 libglib2.0-0
// Fedora
sudo dnf install libglvnd-egl mesa-libGL glib2
Once the app launches, continue to Tutorial 01 — Your first tracking run or Tutorial 05 — From video to equation.
Tracker · Tutorial 01
Your first tracking run
This tutorial walks through the basic workflow end to end — from loading a video to exporting your first velocity dataset.
1. Load a video
File → Open Video… (Ctrl+O) or the Load Video button. Supported formats: MP4, AVI, MOV, MPEG, MKV.
2. Calibrate
- Enter the real-world distance in Calibration Distance (m).
- Click Calibrate.
- Click and drag on the frame to draw a line spanning that distance.
- The scale (m/px) is computed and shown in the status bar.
Tip: for higher accuracy use Tools → Multi-point Calibration and draw several reference lines. The error margin tells you how consistent they are.
3. Select bubbles
Click Select Bubbles (Ctrl+B) and drag rectangles around each bubble. Use Tools → Auto-detect Bubbles to let the app propose ROIs you can accept or refine.
4. Track
Click Start Tracking (Ctrl+T). Tracking runs on a background thread; the UI stays responsive. Live velocity/displacement plots and metrics update as frames are processed.
5. Review & export
- Pick a bubble from the dropdown to view its plots.
- Analyze shows summary statistics.
- Save Data (Ctrl+S) exports CSV + JSON.
File → Export Plots… saves high-resolution PNGs.
Session → Save Session persists the whole run for later re-analysis.
6. Auto-save & recovery
Progress is auto-saved to ~/.tr_track/.tr_track_autosave/. If the app crashes, restart and choose File → Recover Auto-saved Progress….
Tracker · Tutorial 02
Multi-point & grid calibration
Multi-point calibration
Draw several calibration lines of known length. The app combines them into a robust scale (median of per-point scales) and reports an error margin (coefficient of variation). A margin below 5% is considered reliable.
Grid / checkerboard calibration
For camera distortion correction, print a standard checkerboard pattern and hold it in the camera's field of view. Use Tools → Grid Calibration, enter the square size, and the app will:
- Detect the inner corners with
cv2.findChessboardCorners.
- Derive the scale from the average corner spacing.
- Report the per-corner variation as an accuracy indicator.
Note: full intrinsic + distortion estimation requires multiple views. The current build records the grid geometry; multi-view solve is on the roadmap.
Calibration history
Every calibration is recorded per video. Use Tools → Calibration History to reuse or compare previous calibrations for the same footage.
Presets
Tools → Calibration Presets offers common reference distances (1 mm capillary, 10 cm tank, 50 cm flume, 1 m basin) so you don't have to type the number each time.
Tracker · Tutorial 03
Advanced analysis & data science
Turn raw tracks into publishable insight with the analysis and data-science tools.
Statistics & smoothing
Analysis → Statistics Summary shows average and maximum speed, final displacement, and per-bubble sizing. Advanced Analysis runs the full pipeline: Savitzky-Golay smoothing (configurable window), acceleration computation, comparative cross-correlation between bubble pairs, bootstrap confidence intervals, and Welch's t-test for significance.
Statistical report
Analysis → Statistical Report generates a comprehensive Markdown report with descriptive statistics, per-bubble summaries, and comparative tables — ready to drop into a paper.
FFT analysis
Analysis → FFT Analysis computes the Fast Fourier Transform of each bubble's velocity signal, reporting the dominant frequency (Hz) and its magnitude. Useful for detecting oscillation patterns.
Bubble classification & prediction
- Bubble Classification classifies each bubble's motion pattern (e.g. "rising", "oscillating", "turbulent") based on statistical features, with a confidence score.
- Trajectory Prediction predicts the future trajectory using linear extrapolation. Configure the prediction horizon (number of frames) and review the predicted final position.
Visualization export
File → Visualization Export produces 3D trajectories, movement heatmaps, contact-sheet time-lapses, and time-lapse videos for every bubble.
SINDy · Tutorial 05
From video to equation
The core SINDy workflow: extract a velocity field with optical flow, fit a sparse dynamics model, and read off the discovered governing equation.
1. Open a video & select ROI
Click Browse… in the Video Source card or use File → Open Video (Ctrl+O). Then click Select ROI & Calibrate: draw a rectangle over the region of interest, draw a calibration line of known physical length, enter the real-world length in meters, and click OK. The calibration readout updates to show meters-per-pixel.
2. Configure optical flow
Choose a backend and options in the Optical Flow card:
- Backend:
farneback (default, robust), lucas_kanade (sparse, fast), tvl1 (needs opencv-contrib), raft / pwcnet (deep learning, needs torch).
- Smoothing:
none, ema, or moving to reduce flicker between frames.
- Multi-scale pyramid for large motions; Gaussian / NLM denoise for cleaner flow.
3. Configure SINDy
- Library:
polynomial, fourier, combined (poly × Fourier), custom, trig.
- Degree: polynomial degree (1–5).
- Optimizer:
stlsq (default), sr3, frols, constrained_sr3.
- Threshold: sparsity threshold (0.001–1.0). Higher = sparser model.
- Divergence-free: enforce incompressibility (∇·u = 0).
4. Run the pipeline
Click the buttons in order:
- ① Process Optical Flow — extracts the velocity field. A live HSV + quiver preview appears with progress and ETA.
- ② Run SINDy Modeling — fits the sparse dynamics model. Use Equation to view the discovered equation, Cross-validate for k-fold CV, or Compare to try multiple libraries.
- ③ Run SINDy Prediction — reconstructs the predicted velocity field.
5. Read the equation
After modeling, the Equation view shows the discovered sparse coefficients as a human-readable system of ODEs — the governing equation of your flow, learned directly from video.
SINDy · Tutorial 06
ML models & visualization
Train a physics-informed model
On the ML Models page select a model, adjust hyperparameters in the parameter panel, and click Train. Training logs appear in the in-app log widget. Trained models can be exported to TorchScript / ONNX.
- PINN — Physics-Informed Neural Network with Navier-Stokes residuals.
- Autoencoder-SINDy — compressed latent-space SINDy.
- FNO — Fourier Neural Operator for flow prediction.
- DeepONet — Deep Operator Network.
- ConvLSTM — recurrent convolutional model for temporal sequences.
- VAE / beta-VAE — variational autoencoder for flow generation.
- GAN — Generative Adversarial Network for flow synthesis.
- Ensemble — SINDy ensemble with uncertainty quantification.
- Granger causality — causal analysis between flow variables.
Visualize the results
On the Visualization page, after running the pipeline:
- Quiver plot — side-by-side actual vs SINDy-predicted velocity arrows.
- Contour / streamlines — velocity magnitude contours or streamline plots.
- Vorticity / strain — color-mapped vorticity and strain-rate fields.
- Animated heatmap — play through frames as an animated velocity heatmap.
- Custom colormap — choose from matplotlib colormaps.
- Data table — tabular view of the velocity data.
Export with provenance
Export to CSV, HDF5, NetCDF, Parquet, or JSON metadata — each export embeds full provenance (git commit, package versions, config, seed, input SHA-256) so every result is reproducible. File → Export can also produce a PDF report and an MP4 quiver animation (FFmpeg required).
Reproducible mode seeds numpy, random, and torch with deterministic algorithms so two runs on the same input produce identical output.