Skip to main content

Large-scale multi-hypotheses cell tracking

Project description

ULTRACK

tests codecov PyPI version Downloads Downloads Python version Licence: BSD-3 Contributors GitHub stars GitHub forks

Large-scale cell tracking under segmentation uncertainty.

Overview

Ultrack is a versatile and scalable cell tracking method designed to address the challenges of tracking cells across 2D, 3D, and multichannel timelapse recordings, especially in complex and crowded tissues where segmentation is often ambiguous. By evaluating multiple candidate segmentations and employing temporal consistency, Ultrack ensures robust performance under segmentation uncertainty. Ultrack's methodology is explained here.

https://github.com/royerlab/ultrack/assets/21022743/10aace9c-0e0e-4310-a103-f846683cfc77

Zebrafish imaged using DaXi whole embryo tracking.

Features

  • Versatile Cell Tracking: Supports 2D, 3D, and multichannel datasets.
  • Robust Under Segmentation Uncertainty: Evaluates multiple candidate segmentations.
  • High Performance: Scales from small in vitro datasets to terabyte-scale developmental time-lapses.
  • Integration: Compatible with FiJi, napari, and high-performance clusters via SLURM.

Installation

Install or update conda.

To avoid conflicts between different packages, we recommend using conda to create an isolated environment:

conda create --name tracking -c conda-forge python=3.10 pyqt
conda activate tracking
pip install git+https://github.com/royerlab/ultrack

Usage

ATTENTION: every time you need to run this software you'll have to activate this environment

conda activate tracking

Here is a basic example to get you started:

import napari
from ultrack import MainConfig, Tracker

# __main__ is recommended to avoid multi-processing errors
if __name__ == "__main__":
      # Load your data
      foreground = ...
      contours = ...

      # Create config
      config = MainConfig()

      # Run tracking
      tracker = Tracker(config)
      tracker.track(foreground=foreground, edges=contours)

      # Visualize results in napari
      tracks, graph = tracker.to_napari()
      napari.view_tracks(tracks[["track_id", "t", "z", "y", "x"]], graph=graph)
      napari.run()

More usage examples can be found here, including their environment files and installation instructions.

Documentation

Comprehensive documentation is available here.

These additional developer documentation are available:

Gurobi Setup

Install Gurobi using Conda

In your existing Conda environment, install Gurobi with the following command:

conda install -c gurobi gurobi

Obtain and Activate an Academic License

  1. Register at Gurobi's website with your academic email.
  2. Navigate to the Gurobi's named academic license page
  3. Follow the instructions to get your license key.
  4. Activate your license, In your Conda environment, run:
grbgetkey YOUR_LICENSE_KEY
  1. Replace YOUR_LICENSE_KEY with the key you received. Follow the prompts to complete activation.

Verify Installation

Verify Gurobi's installation by running:

ultrack check_gurobi

Depending on the operating system, the gurobi library might be missing and you need to install it from here.

Who is using Ultrack?

Here is a list of projects and papers that are and have used ultrack:

  • DaXi Project: Ultrack was used for tracking zebrafish embryos using high-resolution light-sheet microscopy as part of the DaXi project, demonstrating its capability to handle large-scale datasets efficiently. See paper here.
  • Zebrahub.org project: Ultrack is employed in projects hosted on ZebraHub.org to track and analyze zebrafish embryonic development. See preprint here.
  • Single-cell transcriptional dynamics in a living vertebrate: Ultrack was used for segmenting and tracking nuclei in light-sheet microscopy datasets of developing zebrafish embryos. See preprint here.

Contributing

We welcome contributions from the community! To get started, please read our contributing guidelines. Then, report issues and submit pull requests on GitHub.

License

This project is licensed under the BSD-3 License - see the LICENSE file for details.

Citing

If you use ultrack in your research, please cite the following paper:

@misc{bragantini2023ucmtracking,
      title={Large-Scale Multi-Hypotheses Cell Tracking Using Ultrametric Contours Maps},
      author={Jordão Bragantini and Merlin Lange and Loïc Royer},
      year={2023},
      eprint={2308.04526},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

Include citations for auxiliary methods (e.g., Cellpose, napari) depending on your usage.

Acknowledgements

We acknowledge the contributions of the community and specific individuals. Detailed acknowledgments can be found in our documentation.

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

ultrack-0.5.0.tar.gz (169.6 kB view details)

Uploaded Source

Built Distribution

ultrack-0.5.0-py3-none-any.whl (228.6 kB view details)

Uploaded Python 3

File details

Details for the file ultrack-0.5.0.tar.gz.

File metadata

  • Download URL: ultrack-0.5.0.tar.gz
  • Upload date:
  • Size: 169.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for ultrack-0.5.0.tar.gz
Algorithm Hash digest
SHA256 9d6db6f2ad7565971d140c06f298a89270d266e05d8ca5f555f3f9d99700fe68
MD5 b87ba289bdbfe8d464341e3e5ceeaefb
BLAKE2b-256 f0a4b25f6785a96ff8c3c391d8f961b41a7b6d48dfed6ef85e3aed4956a151b7

See more details on using hashes here.

File details

Details for the file ultrack-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: ultrack-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 228.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for ultrack-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e9447043ec71fe7ffd22909be697f524cc1bd5e728947e3331df6c3f28dcaaa0
MD5 9070353cb5b8999df1c3134e1dee6c82
BLAKE2b-256 98590d349013c40d987a0aa5839c36f458708984d110b343460edf5ab5f3824e

See more details on using hashes here.

Supported by

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