Skip to main content

Open-source Lagrangian Particle Tracking (LPT) with GUI and CLI

Project description

OpenLPT - Open-source Lagrangian Particle Tracking GUI

GitHub Stars Python Version License

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).

  1. Download the code:

    git clone https://github.com/JHU-NI-LAB/OpenLPT_GUI.git
    cd OpenLPT_GUI
    
  2. 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
      
  3. 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:

  1. Prerequisites:

    • Miniforge or Anaconda
    • C++ Compiler (Visual Studio 2022 for Windows, Clang for macOS/Linux)
  2. 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:

  1. Open OpenLPT GUI.
  2. Load the project configuration from the sample folders.
  3. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openlpt-2.1.2.tar.gz (4.1 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

openlpt-2.1.2-cp313-cp313-win_amd64.whl (4.8 MB view details)

Uploaded CPython 3.13Windows x86-64

openlpt-2.1.2-cp313-cp313-manylinux_2_28_x86_64.whl (5.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

openlpt-2.1.2-cp313-cp313-macosx_15_0_arm64.whl (5.1 MB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

openlpt-2.1.2-cp312-cp312-win_amd64.whl (4.8 MB view details)

Uploaded CPython 3.12Windows x86-64

openlpt-2.1.2-cp312-cp312-manylinux_2_28_x86_64.whl (5.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

openlpt-2.1.2-cp312-cp312-macosx_15_0_arm64.whl (5.1 MB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

openlpt-2.1.2-cp311-cp311-win_amd64.whl (4.8 MB view details)

Uploaded CPython 3.11Windows x86-64

openlpt-2.1.2-cp311-cp311-manylinux_2_28_x86_64.whl (5.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

openlpt-2.1.2-cp311-cp311-macosx_15_0_arm64.whl (5.1 MB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

openlpt-2.1.2-cp310-cp310-win_amd64.whl (4.8 MB view details)

Uploaded CPython 3.10Windows x86-64

openlpt-2.1.2-cp310-cp310-manylinux_2_28_x86_64.whl (5.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

openlpt-2.1.2-cp310-cp310-macosx_15_0_arm64.whl (5.1 MB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

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

Hashes for openlpt-2.1.2.tar.gz
Algorithm Hash digest
SHA256 1f75e6692cc4a72639924ceda8b7109c8400f87c7d43e2c1b5b41df4c138fb9c
MD5 a0183a734760fed21badc05cf0783fa3
BLAKE2b-256 3b3db61b0e7e232cc5873f20ab01740ef482af8d29c45f29a97e7553d7e4003f

See more details on using hashes here.

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

Hashes for openlpt-2.1.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 fac7c215deb2264cbcf4c085f00beafe91f482772e32cfe67a1fbca26a334dd4
MD5 0b7c1ff648af44a289b6eb92613ac136
BLAKE2b-256 c4429258025800ddbfd23429cc4239089ab73a05bad032fd1d3fae35fa2fd1ab

See more details on using hashes here.

File details

Details for the file openlpt-2.1.2-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for openlpt-2.1.2-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 85bc2da2740a51743c6419139ebd3d9811f1eed356f8e9aead03700c945492c4
MD5 5e37bc4e81f776f33aa1133d28881131
BLAKE2b-256 aa34442675bbfc7da6fb119898fc210914163b4eed891086d14a2fb8f03e9102

See more details on using hashes here.

File details

Details for the file openlpt-2.1.2-cp313-cp313-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for openlpt-2.1.2-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 ba5fa7de559cb9315bc30d7d130f81b77d5d3e962a7e8ff7d5fb9061a205f30a
MD5 f96f3b66aa8782dd7258b787ff1b3f70
BLAKE2b-256 986bf38135af052b418972e78095a149e301c854bbb7142a4bbb5640861e03a5

See more details on using hashes here.

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

Hashes for openlpt-2.1.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 2dfefe684b5045db8f5eb5ce748036695b108eb9222fcea8d54cc1e18e4d3c6a
MD5 44fd49c6362da8ec821c76a35848eb5f
BLAKE2b-256 b0b1a33ad6c60d2b7be581abaaeebc92de4b3e86508ffae66838e8306fb80360

See more details on using hashes here.

File details

Details for the file openlpt-2.1.2-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for openlpt-2.1.2-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a5bd636ebe613ca4cf51cb97696a0c227b535caae1fed49dd6977a6b2b46f791
MD5 6431863f07e1021c26a385ced1da76cc
BLAKE2b-256 496e8696a1924a2adc53b8b5bd3693ff608d0237526507b7421a1578ae36de53

See more details on using hashes here.

File details

Details for the file openlpt-2.1.2-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for openlpt-2.1.2-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 b38e0b98a338a3e97a84e454bda1746f971a4ea5cd89f7889fb547bba5454547
MD5 d497815fcb7e174977a6c5496431912d
BLAKE2b-256 d47920e4aaaf2f58eeb4b7f664fa0c50f38dcc33501da94f8ac9436d9986b362

See more details on using hashes here.

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

Hashes for openlpt-2.1.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 85e672170697a95e517db5dda1d6ddaeff9acae4a79c63856d9132880ef15d21
MD5 35e95e89528dacffb82e713a0d01b6a6
BLAKE2b-256 1fb4d3edc768680e3378514f47291d1e71c64af96ba125d4fa72758a833f3819

See more details on using hashes here.

File details

Details for the file openlpt-2.1.2-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for openlpt-2.1.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 47ba0f52b946d8cb95552e8fc6bf4b922686111a55a521a67f65ba8b6ed12d0d
MD5 683a2ca70eb4b79bae6c47d48607d2fc
BLAKE2b-256 80e53125bc6cf8769749ac3fbbef6e77298f0d0f71528dc93958400372b2912d

See more details on using hashes here.

File details

Details for the file openlpt-2.1.2-cp311-cp311-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for openlpt-2.1.2-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 a9040e64c863c8ec8483ffede3b5661e72ccdc1f76c06235321ce33dbed91d82
MD5 c9c9049dd225f2f55ca293f333677635
BLAKE2b-256 580faa78a037e76ff66410c6a2d735815d335521e2c7eea684fffdc2b6e44e91

See more details on using hashes here.

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

Hashes for openlpt-2.1.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 dcae57e43444a127db5dcbd17c717e4a7f09ecbccbf08978c022e1d98cbf372f
MD5 f9f3807cd62025a28b77ed920237c1cb
BLAKE2b-256 1b90e4e68e732829f4320e24b0af4d3dd14583fd1ae366d90dbe9e6040aa4efd

See more details on using hashes here.

File details

Details for the file openlpt-2.1.2-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for openlpt-2.1.2-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2b0cd02f0b78d43410b2e7178665f5be1dd7857e266b30c20756d5abfb09e75e
MD5 052e44fd63d024e8daf8f7d4fe82d25a
BLAKE2b-256 9f9f65a07ae58820fddd09c99750a3f8377da8a2ca26735ceab9a0d50acdce86

See more details on using hashes here.

File details

Details for the file openlpt-2.1.2-cp310-cp310-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for openlpt-2.1.2-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 b4783d8026c9b02c5388eb2e7d05af664295382bbaeeabdb3403a78d9b56350c
MD5 3f4761a12c95e2b1109938a0cef19ba0
BLAKE2b-256 a62241e854677292974eb3e136027c195421e1c0a845d422cea1059dbed46269

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page