Open-source Lagrangian Particle Tracking (LPT) with GUI and CLI
Project description
OpenLPT - Open-source Lagrangian Particle Tracking GUI
OpenLPT is a powerful, user-friendly open-source software for 3D Lagrangian Particle Tracking (LPT), designed for experimental fluid dynamics and flow visualization. Developed by the Ni Research Lab at Johns Hopkins University (JHU), it provides a comprehensive GUI-based workflow for high-precision particle tracking and reconstruction.
🚀 Key Capabilities
- 3D Particle Tracking: Robust Lagrangian tracking (LPT) and Shake-the-Box (STB) methods.
- Multi-Camera Calibration: Easy-to-use tools for wand and plate calibration (intrinsic & extrinsic parameters).
- Cross-Platform: Full support for Windows, macOS, and Linux.
- Performance: High-performance C++ core with Python Python bindings for flexibility and speed.
Keywords: Lagrangian Particle Tracking (LPT), Shake-the-Box (STB), 3D Flow Visualization, PIV, Particle Reconstruction, Multi-camera Calibration, Experimental Fluid Dynamics, JHU Ni Research Lab.
Quick Start
1. Graphical User Interface (GUI)
# Launch the interactive GUI from any terminal
openlpt-gui
2. Command Line Interface (CLI)
# Run STB tracking directly with a config file
openlpt path/to/config.txt
3. Python API
import openlpt
# Load and run tracking programmatically
openlpt.run('path/to/config.txt')
# Or launch GUI from within a script
openlpt.launch_gui()
Demo
https://github.com/user-attachments/assets/60579007-4f24-4989-8b36-3de2224c9797
Features
- User-friendly interface in python
- Lagrangian particle tracking for multiple objects (point-like particles, spherical particles, etc.)
- Support stereomatching with multiple cameras (at least 2)
- Include multiple test cases for users to test and understand the code
- Better structure for adding new functions
Installation
Method 1: One-Click Installation (Recommended)
We provide automated scripts that set up everything for you (including Conda, environment, and dependencies).
-
Download the code:
git clone https://github.com/JHU-NI-LAB/OpenLPT_GUI.git cd OpenLPT_GUI
-
Run the Installer:
-
Windows: Double-click
install_windows.bat(Or run in terminal:install_windows.bat) -
macOS: Run in terminal:
bash install_mac.command -
Linux: Run in terminal:
bash install_linux.sh
-
-
Launch the GUI: After installation, simply run:
openlpt-gui
Method 2: Manual Installation (Click to expand)
If you prefer to set up the environment manually:
-
Prerequisites:
-
Create Environment and Install:
# Create environment conda create -n OpenLPT python=3.10 conda activate OpenLPT # Build and install the package pip install .
Troubleshooting
| Problem | Solution |
|---|---|
| Windows: Build fails | Install VS Build Tools and Win11 SDK |
macOS: omp.h not found |
See macOS OpenMP Fix section below |
| macOS: Architecture | python -c "import platform; print(platform.machine())" |
| Linux: Permissions | Use chmod +x or sudo |
| All: Stale cache | Delete build/ folder and retry |
| Installation: Build isolation | If compilation fails due to network, try pip install . --no-build-isolation |
macOS OpenMP Fix
If you get fatal error: 'omp.h' file not found:
export CC="$CONDA_PREFIX/bin/clang"
export CXX="$CONDA_PREFIX/bin/clang++"
export CPPFLAGS="-I$CONDA_PREFIX/include"
export LDFLAGS="-L$CONDA_PREFIX/lib -lomp"
pip install -e .
Samples and Tests
Please see the sample format of configuration files, camera files and image files in /test/test_STB or /test/test_STB_Bubble.
To run the sample:
- Open OpenLPT GUI.
- Load the project configuration from the sample folders.
- Click 'Run tracking'.
Citation
If you use OpenLPT in your research, please cite our publications:
- Tan, S., Salibindla, A., Masuk, A.U.M. and Ni, R., 2020. Introducing OpenLPT: new method of removing ghost particles and high-concentration particle shadow tracking. Experiments in Fluids, 61(2), p.47.
- Tan, S., Zhong, S. and Ni, R., 2023. 3D Lagrangian tracking of polydispersed bubbles at high image densities. Experiments in Fluids, 64(4), p.85.
License
This repository contains a mix of original code and MATLAB Coder-generated files under a MathWorks Academic License.
⚠️ Restricted Paths (MATLAB Coder-generated)
The following paths contain code generated by MATLAB Coder and are NOT covered by the general MIT/Open-source license of this repository:
/src/srcObject/BubbleCenterAndSizeByCircle/src/srcObject/BubbleCenterAndSizeByCircle/CircleIdentifier.cpp/src/srcObject/BubbleResize/inc/libObject/BubbleCenterAndSizeByCircle/inc/libObject/CircleIdentifier.h/inc/libObject/BubbleResize
📜 Terms and Conditions
For the paths listed above:
- ACADEMIC INTERNAL OPERATIONS ONLY: Usage is restricted to teaching, academic research, and course requirements.
- NO Commercial Use: Government, commercial, or other organizational use is NOT permitted.
- Header Preservation: Do not modify or remove the "Academic License" header comments in these files.
- No Sublicensing: These files are not sublicensed under this repository's open-source license.
- Redistribution: If you redistribute this repository, you must keep the original Academic License headers in the generated files.
- Modification: If you need to modify the generated code, you must hold a valid MathWorks MATLAB Coder license.
All other files in this repository are original work and are distributed under the MIT License (see LICENSE).
Contact & Contribution
- Issues: Please report bugs or request features via GitHub Issues.
- Contact: For questions, please contact szhong12@jhu.edu or tanshiyong84@gmail.com.
- Organization: Ni Research Lab, Johns Hopkins University.
- Support: If you find this tool helpful, please give us a ⭐ on GitHub!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file openlpt-2.1.2.tar.gz.
File metadata
- Download URL: openlpt-2.1.2.tar.gz
- Upload date:
- Size: 4.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f75e6692cc4a72639924ceda8b7109c8400f87c7d43e2c1b5b41df4c138fb9c
|
|
| MD5 |
a0183a734760fed21badc05cf0783fa3
|
|
| BLAKE2b-256 |
3b3db61b0e7e232cc5873f20ab01740ef482af8d29c45f29a97e7553d7e4003f
|
File details
Details for the file openlpt-2.1.2-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: openlpt-2.1.2-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 4.8 MB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fac7c215deb2264cbcf4c085f00beafe91f482772e32cfe67a1fbca26a334dd4
|
|
| MD5 |
0b7c1ff648af44a289b6eb92613ac136
|
|
| BLAKE2b-256 |
c4429258025800ddbfd23429cc4239089ab73a05bad032fd1d3fae35fa2fd1ab
|
File details
Details for the file openlpt-2.1.2-cp313-cp313-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: openlpt-2.1.2-cp313-cp313-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 5.3 MB
- Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
85bc2da2740a51743c6419139ebd3d9811f1eed356f8e9aead03700c945492c4
|
|
| MD5 |
5e37bc4e81f776f33aa1133d28881131
|
|
| BLAKE2b-256 |
aa34442675bbfc7da6fb119898fc210914163b4eed891086d14a2fb8f03e9102
|
File details
Details for the file openlpt-2.1.2-cp313-cp313-macosx_15_0_arm64.whl.
File metadata
- Download URL: openlpt-2.1.2-cp313-cp313-macosx_15_0_arm64.whl
- Upload date:
- Size: 5.1 MB
- Tags: CPython 3.13, macOS 15.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba5fa7de559cb9315bc30d7d130f81b77d5d3e962a7e8ff7d5fb9061a205f30a
|
|
| MD5 |
f96f3b66aa8782dd7258b787ff1b3f70
|
|
| BLAKE2b-256 |
986bf38135af052b418972e78095a149e301c854bbb7142a4bbb5640861e03a5
|
File details
Details for the file openlpt-2.1.2-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: openlpt-2.1.2-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 4.8 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2dfefe684b5045db8f5eb5ce748036695b108eb9222fcea8d54cc1e18e4d3c6a
|
|
| MD5 |
44fd49c6362da8ec821c76a35848eb5f
|
|
| BLAKE2b-256 |
b0b1a33ad6c60d2b7be581abaaeebc92de4b3e86508ffae66838e8306fb80360
|
File details
Details for the file openlpt-2.1.2-cp312-cp312-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: openlpt-2.1.2-cp312-cp312-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 5.3 MB
- Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a5bd636ebe613ca4cf51cb97696a0c227b535caae1fed49dd6977a6b2b46f791
|
|
| MD5 |
6431863f07e1021c26a385ced1da76cc
|
|
| BLAKE2b-256 |
496e8696a1924a2adc53b8b5bd3693ff608d0237526507b7421a1578ae36de53
|
File details
Details for the file openlpt-2.1.2-cp312-cp312-macosx_15_0_arm64.whl.
File metadata
- Download URL: openlpt-2.1.2-cp312-cp312-macosx_15_0_arm64.whl
- Upload date:
- Size: 5.1 MB
- Tags: CPython 3.12, macOS 15.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b38e0b98a338a3e97a84e454bda1746f971a4ea5cd89f7889fb547bba5454547
|
|
| MD5 |
d497815fcb7e174977a6c5496431912d
|
|
| BLAKE2b-256 |
d47920e4aaaf2f58eeb4b7f664fa0c50f38dcc33501da94f8ac9436d9986b362
|
File details
Details for the file openlpt-2.1.2-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: openlpt-2.1.2-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 4.8 MB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
85e672170697a95e517db5dda1d6ddaeff9acae4a79c63856d9132880ef15d21
|
|
| MD5 |
35e95e89528dacffb82e713a0d01b6a6
|
|
| BLAKE2b-256 |
1fb4d3edc768680e3378514f47291d1e71c64af96ba125d4fa72758a833f3819
|
File details
Details for the file openlpt-2.1.2-cp311-cp311-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: openlpt-2.1.2-cp311-cp311-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 5.3 MB
- Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47ba0f52b946d8cb95552e8fc6bf4b922686111a55a521a67f65ba8b6ed12d0d
|
|
| MD5 |
683a2ca70eb4b79bae6c47d48607d2fc
|
|
| BLAKE2b-256 |
80e53125bc6cf8769749ac3fbbef6e77298f0d0f71528dc93958400372b2912d
|
File details
Details for the file openlpt-2.1.2-cp311-cp311-macosx_15_0_arm64.whl.
File metadata
- Download URL: openlpt-2.1.2-cp311-cp311-macosx_15_0_arm64.whl
- Upload date:
- Size: 5.1 MB
- Tags: CPython 3.11, macOS 15.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a9040e64c863c8ec8483ffede3b5661e72ccdc1f76c06235321ce33dbed91d82
|
|
| MD5 |
c9c9049dd225f2f55ca293f333677635
|
|
| BLAKE2b-256 |
580faa78a037e76ff66410c6a2d735815d335521e2c7eea684fffdc2b6e44e91
|
File details
Details for the file openlpt-2.1.2-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: openlpt-2.1.2-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 4.8 MB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dcae57e43444a127db5dcbd17c717e4a7f09ecbccbf08978c022e1d98cbf372f
|
|
| MD5 |
f9f3807cd62025a28b77ed920237c1cb
|
|
| BLAKE2b-256 |
1b90e4e68e732829f4320e24b0af4d3dd14583fd1ae366d90dbe9e6040aa4efd
|
File details
Details for the file openlpt-2.1.2-cp310-cp310-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: openlpt-2.1.2-cp310-cp310-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 5.3 MB
- Tags: CPython 3.10, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b0cd02f0b78d43410b2e7178665f5be1dd7857e266b30c20756d5abfb09e75e
|
|
| MD5 |
052e44fd63d024e8daf8f7d4fe82d25a
|
|
| BLAKE2b-256 |
9f9f65a07ae58820fddd09c99750a3f8377da8a2ca26735ceab9a0d50acdce86
|
File details
Details for the file openlpt-2.1.2-cp310-cp310-macosx_15_0_arm64.whl.
File metadata
- Download URL: openlpt-2.1.2-cp310-cp310-macosx_15_0_arm64.whl
- Upload date:
- Size: 5.1 MB
- Tags: CPython 3.10, macOS 15.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b4783d8026c9b02c5388eb2e7d05af664295382bbaeeabdb3403a78d9b56350c
|
|
| MD5 |
3f4761a12c95e2b1109938a0cef19ba0
|
|
| BLAKE2b-256 |
a62241e854677292974eb3e136027c195421e1c0a845d422cea1059dbed46269
|