Cut Detector

cut-detector

Automatic Cut Detector

License BSD-3 PyPI Python Version tests codecov napari hub

Automatic micro-tubule cut detector.

https://github.com/user-attachments/assets/89d63336-729c-43c1-8fa3-43a4ec4cfc87


This napari plugin was generated with Cookiecutter using @napari's cookiecutter-napari-plugin template.

Your browser does not support the video tag.

Installation

Conda environment

It is highly recommended to create a dedicated conda environment, by following these few steps:

  1. Install an Anaconda distribution of Python. Note you might need to use an anaconda prompt if you did not add anaconda to the path.

  2. Open an Anaconda prompt as admin to create a new environment using conda. We advice to use python 3.10 and conda 23.10.0, to get conda-libmamba-solver as default solver.

conda create --name cut_detector python=3.10 conda=23.10.0
conda activate cut_detector

Package installation

Once in a dedicated environment, our package can be installed via pip:

pip install cut_detector

Alternatively, you can clone the github repo to access to playground scripts.

git clone https://github.com/15bonte/cut-detector.git
cd cut-detector
pip install -e .

GPU

We highly recommend to use GPU to speed up segmentation. To use your NVIDIA GPU, the first step is to download the dedicated driver from NVIDIA.

Next we need to remove the CPU version of torch:

pip uninstall torch

The GPU version of torch to be installed can be found here. You may choose the CUDA version supported by your GPU, and install it with conda. This package has been developed with the version 11.6, installed with this command:

conda install pytorch==1.12.1 torchvision pytorch-cuda=11.6 -c pytorch -c nvidia

Update

To update cut-detector to the latest version, open an Anaconda prompt and use the following commands:

conda activate cut_detector
pip install cut-detector --upgrade

Definitions

Each detected cell division is labeled with one of the following categories:

  • NORMAL: Division happening as expected, where (at least) 1 micro-tubule cut is detected.
  • NO_MID_BODY_DETECTED: Along the cell division, no mid-body was detected on the MKLP1 channel. This category encompasses different cases: the detection may have failed, the mid-body may not express the fluorescence, or this may not actually be a division.
  • MORE_THAN_TWO_DAUGHTER_TRACKS: Tripolar division. This category encompasses both actual tripolar divisions and wrong identifications of daughter cells (mainly caused by segmentation issues).
  • NEAR_BORDER: Division close to the border of the image, hence ignored as it is likely to be difficult to detect micro-tubule cuts. A division is classified as NEAR_BORDER as soon as the distance between 1 detected mid-body and the border of the image is less than 20px.
  • NO_CUT_DETECTED: Division whose mid-body was detected, but with all micro-tubule bridges classified as "No cut". Likely to be at the end of the video, cells dying before the end of division, or cells going out of frame.
  • TOO_SHORT_CUT: First micro-tubule cut detected before 50 minutes. Ignored as this is very unlikely, so it is probably caused by a wrong division detection.

Contributing

Contributions are very welcome. Tests can be run with tox, please ensure the coverage at least stays the same before you submit a pull request.

License

Distributed under the terms of the BSD-3 license, "cut-detector" is free and open source software

Issues

If you encounter any problems, please file an issue along with a detailed description.

Version:

  • 1.2.0

Last updated:

  • 19 September 2024

First released:

  • 17 October 2023

License:

Supported data:

  • Information not submitted

Plugin type:

GitHub activity:

  • Stars: 1
  • Forks: 1
  • Issues + PRs: 0

Python versions supported:

Operating system:

Requirements:

  • cellpose==3.0.9
  • pyimagej
  • cnn-framework==0.0.16
  • magicgui
  • pydantic==1.10.12
  • xmltodict
  • shapely
  • aicsimageio==4.14.0
  • fsspec==2023.6.0
  • charset-normalizer==3.3.0
  • napari[all]
  • laptrack==0.16.2
  • scikit-learn==1.5.0
  • numba>=0.59.1