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.1.tar.gz (202.7 kB 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.1-cp313-cp313-win_amd64.whl (962.4 kB view details)

Uploaded CPython 3.13Windows x86-64

openlpt-2.1.1-cp313-cp313-manylinux_2_28_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

openlpt-2.1.1-cp313-cp313-macosx_15_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

openlpt-2.1.1-cp312-cp312-win_amd64.whl (962.6 kB view details)

Uploaded CPython 3.12Windows x86-64

openlpt-2.1.1-cp312-cp312-manylinux_2_28_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

openlpt-2.1.1-cp312-cp312-macosx_15_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

openlpt-2.1.1-cp311-cp311-win_amd64.whl (958.4 kB view details)

Uploaded CPython 3.11Windows x86-64

openlpt-2.1.1-cp311-cp311-manylinux_2_28_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

openlpt-2.1.1-cp311-cp311-macosx_15_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

openlpt-2.1.1-cp310-cp310-win_amd64.whl (958.0 kB view details)

Uploaded CPython 3.10Windows x86-64

openlpt-2.1.1-cp310-cp310-manylinux_2_28_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

openlpt-2.1.1-cp310-cp310-macosx_15_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

File details

Details for the file openlpt-2.1.1.tar.gz.

File metadata

  • Download URL: openlpt-2.1.1.tar.gz
  • Upload date:
  • Size: 202.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for openlpt-2.1.1.tar.gz
Algorithm Hash digest
SHA256 c424b1f80019915e78f025a24fbac5152b24eb598d118aba9b2d7e0a78d6b638
MD5 42457ade8759b45675987d322d2a1840
BLAKE2b-256 8d92dc864a261873c7fd1664a5adbe130fb4b8c09f0c60f455d04e3658d743f8

See more details on using hashes here.

File details

Details for the file openlpt-2.1.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: openlpt-2.1.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 962.4 kB
  • 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.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1cf43bb3b8326ac2559be25b8c602d3c8f5020dc54cd2925641073759538f66a
MD5 8368071822caa9b8a22b5f9d2fefaa15
BLAKE2b-256 d6783c1a6dd28543f6285547fd95f99dd98abb16819083ed7ef13d4046a53de3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for openlpt-2.1.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0f3acde29245e31a56fdd74ac1a2fe36a389debd0580922f86bf09432f4158f3
MD5 f4634e073c05aa1250e1678e7c53a9d4
BLAKE2b-256 0137d412221b66e0c09b2b75020b8bd0def1c2a0c3a1966f36369f320cd27411

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for openlpt-2.1.1-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 f0bd6552ae82bb386e09fcfcb0dce0e57d9c340d930bb441e3a6cea00cc228c4
MD5 9b845a49371ca0e20e60b9bf5180ef7a
BLAKE2b-256 5b7bd418ad7c379477035bedb34d66d20fa1642fdb32a44620efc374618b49fe

See more details on using hashes here.

File details

Details for the file openlpt-2.1.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: openlpt-2.1.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 962.6 kB
  • 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.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 046d7a0447cb889bbc795db7c061f87c3329218e9121008c714e3173043d88da
MD5 817b39321e713f1cb9aab3e91ff61bbf
BLAKE2b-256 2e4ca5d0ffbbdf61fab1bb08738a3249363e3818c7bc91bcadffcfd73a1f4455

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for openlpt-2.1.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7c14532669d718e6bf4a58c051690aa224764bda8650cfe5af944cf665655577
MD5 6b177aae113ec58671bdd85d2204b034
BLAKE2b-256 d99d2981087aa20977750acbfd4d9a85117e7433e7732f2e9dbd54e779e7aaa6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for openlpt-2.1.1-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 f945521bbb5b7029819e3616f2e621ec0f2db47ab151f8a10bf30c55b2727a89
MD5 75ffd222c7ff3ed7aa8cb73fc2a89fc6
BLAKE2b-256 f2cd4b59da2717dbd50d2996a8a6b130556fb10466c2fb61b9bad72d18e29598

See more details on using hashes here.

File details

Details for the file openlpt-2.1.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: openlpt-2.1.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 958.4 kB
  • 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.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b8d1f3885713f8f1b8fe9c2b5d6ff5671fb512dcab4bdf4e148be0061f74c42d
MD5 52ece1e515e991bd12b65eaece8147d6
BLAKE2b-256 05cf7799efbf787157167e4ae0a293ea29751dfcc11c0822b5f84d3f2081bdc6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for openlpt-2.1.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f90a770c853532d1d19e022c9a73baf702e9fac2951ba55d23a61ae85f786633
MD5 aed47cc882bcb887ab1f56b14ea6ee6c
BLAKE2b-256 54c83f2cbe7bb1669dc084101ac6720023843e228a819a0de18b9ff1f2c1b957

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for openlpt-2.1.1-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 b7781c162506b1e9a1c251bc2013171bd490f09ce4a40350e73f1f61ee433af6
MD5 3f3d08f5fef633cc7c75ee8cfad5f7e5
BLAKE2b-256 eecf927a06123f674de951f5118dcbea1dae6e4159a62aee4b286c7578db969b

See more details on using hashes here.

File details

Details for the file openlpt-2.1.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: openlpt-2.1.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 958.0 kB
  • 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.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 954db82cbec579e13935c3f61cf04d84ead31e11e95edd64dd091a3e4fe33fe1
MD5 f059197d36c94aebc43afa684d7a3952
BLAKE2b-256 551a56c1e47c31685503c3f51a92326729e317279d44207879ea3e573b5df489

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for openlpt-2.1.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e37ed8e849ed9cf6c5ab1d603462f5160e461b763148f44e68a66e7546b92682
MD5 a3084c35092aee4b44ed029d1e27fdee
BLAKE2b-256 a6311d62ad62dde49f34e6423f89cb23a572369860e58712c553ab836ab9ed5d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for openlpt-2.1.1-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 60f6620a93ed776076cdb308e2668b30e5bf2cb090e55dfe9ec037f43861548d
MD5 b6339138ab983221fd0dd6f5fc736039
BLAKE2b-256 0a6f28dfb9276a91cab0d69ee9ed2b4fd33da8e9cf6987de75992648729c57a9

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