Metadata-Version: 2.4
Name: motile-tracker
Version: 4.6.1
Summary: Application for interactive tracking with global optimization
Author-email: Caroline Malin-Mayor <malinmayorc@janelia.hhmi.org>
License: BSD 3-Clause License
Project-URL: Bug Tracker, https://github.com/funkelab/motile_tracker/issues
Project-URL: Documentation, https://funkelab.github.io/motile_tracker/
Classifier: Development Status :: 5 - Production/Stable
Classifier: Framework :: napari
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: End Users/Desktop
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Image Processing
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: napari<1,>=0.6.2
Requires-Dist: funtracks<3,>=1.8.0
Requires-Dist: appdirs<2,>=1
Requires-Dist: numpy<3,>=2
Requires-Dist: magicgui>=0.10.1
Requires-Dist: qtpy<3,>=2.4
Requires-Dist: scikit-image>=0.25
Requires-Dist: motile>=0.3
Requires-Dist: pydantic<3,>=2
Requires-Dist: tifffile[all]>=2025.1.10
Requires-Dist: tqdm<5,>=4
Requires-Dist: dask[array]>=2021.10.0
Requires-Dist: fonticon-fontawesome6<7,>=6
Requires-Dist: pyqtgraph<1,>=0.13
Requires-Dist: napari-orthogonal-views>=0.2.1
Requires-Dist: lxml_html_clean<1,>=0.4
Requires-Dist: zarr<4,>=2.18.7
Provides-Extra: numba
Requires-Dist: numba>=0.62.1; extra == "numba"
Provides-Extra: gurobi
Requires-Dist: gurobipy; extra == "gurobi"
Provides-Extra: gurobi12
Requires-Dist: gurobipy<13,>=12; extra == "gurobi12"
Provides-Extra: gurobi13
Requires-Dist: gurobipy<14,>=13; extra == "gurobi13"
Provides-Extra: all
Requires-Dist: pyqt6<7,>=6.7; extra == "all"
Dynamic: license-file

# Motile Tracker

[![tests](https://github.com/funkelab/motile_tracker/workflows/tests/badge.svg)](https://github.com/funkelab/motile_tracker/actions)
[![codecov](https://codecov.io/gh/funkelab/motile_tracker/branch/main/graph/badge.svg)](https://codecov.io/gh/funkelab/motile_tracker)


An application for interactive tracking with [motile](https://github.com/funkelab/motile).
The full documentation of the plugin can be found [here](https://funkelab.github.io/motile_tracker/).

Motile is a library that makes it easy to solve tracking problems using optimization
by framing the task as an Integer Linear Program (ILP).
See the motile [documentation](https://funkelab.github.io/motile)
for more details on the concepts and method.

----------------------------------

## Installation

Users can download and install an executable application from the github release, or
install from `pypi` in the environment of their choice (e.g. `venv`, `conda`) with the command
`pip install motile-tracker`.
Currently, the motile_tracker requires python >=3.11.

### Recommended extras

For better performance, you can install optional extras:

- **numba**: Speeds up candidate graph construction significantly.
  ```bash
  pip install motile-tracker[numba]
  ```

- **gurobi**: Uses the Gurobi solver instead of the default open-source solver. Gurobi is
  much faster but requires a license (free for academics).
  ```bash
  pip install motile-tracker[gurobi]
  ```

You can install multiple extras at once: `pip install motile-tracker[numba,gurobi]`

### Gurobi license version mismatch

If you have a Gurobi license and encounter an error about license version mismatch,
you may need to install a specific version of `gurobipy` that matches your license.
Use one of the version-specific extras:

```bash
pip install motile-tracker[gurobi12]  # For Gurobi 12.x licenses
pip install motile-tracker[gurobi13]  # For Gurobi 13.x licenses
```

Developers can clone the GitHub repository and then  use `uv` to install and run the code.
See the developer guide in `DEVELOPER.md` for more information.

## Usage

Start napari and call the main widget via Plugins > Motile > Motile Main Widget.
2D+time and 3D+time sample data can be loaded via File > Open Sample > Motile. You can
track objects in napari Labels or Points layers. For details, please read the
[documentation](https://funkelab.github.io/motile_tracker/).

![motile_tracker_quick_demo](https://github.com/user-attachments/assets/07a4a954-3d2d-4d67-8f75-aec11ee14697)

If you are new to using motile-tracker, you can follow this [tutorial](./assets/motile-tracker_tutorial.pdf) to learn the basics.

## Package the application into an executable and create the installer

Tagging any branch will automatically trigger the deploy.yml workflow,
which pushes the tagged version to PyPi and creates a github release; draft release if the tag contains "-dev", pre-release if the tag contains "-rc' or a full release otherwise. In case of a draft or pre release, when the user updates the release notes and promotes it to a published release, github will trigger `make_bundle_app.yml` workflow which will create the Linux, Mac and Windows installer and will upload them as release artifacts to github.

## Issues

If you encounter any problems, please
[file an issue](https://github.com/funkelab/motile_tracker/issues)
along with a detailed description.
