Metadata-Version: 2.3
Name: RodTracker
Version: 0.6.6
Summary: GUI to track rod-like particles on multiple cameras
License: GPL-3.0-only
Author: Adrian Niemann
Author-email: adrian.niemann@gmx.de
Requires-Python: >=3.8,<3.13
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Scientific/Engineering :: Physics
Provides-Extra: build
Provides-Extra: dev
Provides-Extra: docs
Provides-Extra: test
Requires-Dist: ParticleDetection (>=0.4.3)
Requires-Dist: Pillow (>=10) ; extra == "dev"
Requires-Dist: PyQt3D (>=5.15.5)
Requires-Dist: PyQt5 (>=5.15.4)
Requires-Dist: PyQt5-stubs (>=5.15) ; extra == "dev"
Requires-Dist: Sphinx (>=7.1,<7.2) ; (python_version < "3.9") and (extra == "dev" or extra == "build" or extra == "docs")
Requires-Dist: Sphinx (>=7.2) ; (python_version >= "3.9") and (extra == "dev" or extra == "build" or extra == "docs")
Requires-Dist: docutils (>=0.18) ; extra == "dev" or extra == "build" or extra == "docs"
Requires-Dist: dunamai (>=1.18.0) ; extra == "dev" or extra == "build" or extra == "docs"
Requires-Dist: flake8 (>=5) ; extra == "dev"
Requires-Dist: importlib-resources (>=6.0,<7.0)
Requires-Dist: matplotlib (>=3.6.2) ; python_version >= "3.9"
Requires-Dist: matplotlib (>=3.6.2,<3.8) ; python_version < "3.9"
Requires-Dist: myst_parser (>=2) ; extra == "dev" or extra == "build" or extra == "docs"
Requires-Dist: numpy (>=1.21,<2) ; python_version >= "3.9"
Requires-Dist: numpy (>=1.21,<=1.25) ; python_version < "3.9"
Requires-Dist: pandas (>=1.2.5,<2.1) ; python_version < "3.9"
Requires-Dist: pandas (>=2.1.1) ; python_version >= "3.9"
Requires-Dist: platformdirs (>=3.2.0)
Requires-Dist: pyinstaller (>=6.0) ; extra == "dev" or extra == "build"
Requires-Dist: pytest (>=7.1.2) ; extra == "dev" or extra == "test"
Requires-Dist: pytest-cov (>=3.0.0) ; extra == "dev" or extra == "test"
Requires-Dist: pytest-qt (>=4.0.0) ; extra == "dev" or extra == "test"
Requires-Dist: qt5-applications (>=5.15) ; extra == "dev"
Requires-Dist: sphinx_rtd_theme (>=1.3) ; extra == "dev" or extra == "build" or extra == "docs"
Project-URL: Documentation, https://particletracking.readthedocs.io/
Project-URL: Repository, https://github.com/ANP-Granular/ParticleTracking
Description-Content-Type: text/markdown

# RodTracker
This package provides a GUI encapsulating the most used functionality of the [ParticleDetection package](https://pypi.org/project/ParticleDetection/). It enables users to carry out the aforementioned tasks, except for training a model. Additionally, it provides the means to manually correct placement and assignment mistakes of the automated processes.

Please refer to the [documentation](https://particletracking.readthedocs.io/en/stable/RodTracker/RodTracker.html) for more detailed information.

## Installation

Refer to the [documentation](https://particletracking.readthedocs.io/en/stable/installation/rodtracker.html) for more details on the installation process.

### Installation as a standalone program

Use the provided executable installer for your operating system provided in the [repository releases](https://github.com/ANP-Granular/ParticleTracking/releases):
- `RodTracker-Setup.exe` - Windows
- `RodTracker-Setup.deb` - Linux
- `RodTracker-Setup.dmg` - macOS

**Note:** There might not always be a version provided for macOS.

### Installation as a python package
**Requirements:**
- Python `>=3.8`
- pip

Install the default version using pip:
```shell
pip install RodTracker
```
Or use one of the options described in the [documentation](https://particletracking.readthedocs.io/en/stable/installation/rodtracker.html#installation-options).
```shell
pip install RodTracker[OPTION]
```

Install it from source by:
1. Cloning the [repository](https://github.com/ANP-Granular/ParticleTracking) containing the RodTracker. Do **NOT** just copy the `RodTracker` folder. This will lead to a missing dependency during the installation.
2. Install it using `pip`.
   ```shell
   YOUR/REPO/PATH/RodTracker$ pip install .
   ```

It is also possible to install it directly from GitHub (requires `Git` to be installed):
```shell
pip install 'git+https://github.com/ANP-Granular/ParticleTracking.git#egg=rodtracker&subdirectory=RodTracker'
```
```shell
pip install 'rodtracker[DOCS] @ git+https://github.com/ANP-Granular/ParticleTracking.git#egg=RodTracker&s
ubdirectory=RodTracker'
```

## Running the RodTracker
Run the **RodTracker** GUI using one of the possibilities:
  - *(Standalone Program)* Run the executable installed by the installer.
  - *(Python Package)* Run `main.py` manually:
    ```shell
    YOUR/REPO/PATH/RodTracker/src/RodTracker$ python main.py
    ```
  - *(Python Package)* Run the GUI script entry point:
    ```shell
    ARBITRARY/PATH$ RodTracker
    ```

![RodTracker - GUI](https://raw.githubusercontent.com/ANP-Granular/ParticleTracking/main/docs/source/images/Startup.png)

## Keyboard shortcuts
| Feature                      |                   Shortcut                   |
|:-----------------------------|:--------------------------------------------:|
| Open images                  |                  `Ctrl + O`                  |
| Save rod position data       |                  `Ctrl + S`                  |
| Switch to next/previous view |                  `Ctrl+Tab`                  |
| Zoom in/out                  |      `+`/`-`  <br /> `Ctrl+Wheel`            |
| Fit image to available space | `F` |
| Show in original size        |                  `Ctrl + R`                  |
| Next/previous image          |                `Right`/`Left`                |
| Undo                         |                  `Ctrl + Z`                  |
| Lengthen/Shorten a rod       |                    `A`/`S`                   |
| Lengthen/Shorten all rods in current view    |    `R`/`T`                   |
| Delete a selected rod | `Del` |
| Toggle automatic rod selection mode | `G` |

