{"name":"cut-detector","display_name":"Cut Detector","visibility":"public","icon":null,"categories":[],"schema_version":"0.3.0","on_activate":null,"on_deactivate":null,"contributions":{"commands":[{"id":"cut-detector.whole_process","title":"Single Video","python_name":"cut_detector._widget:whole_process","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"cut-detector.whole_process_folder","title":"Folder","python_name":"cut_detector._widget:whole_process_folder","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"cut-detector.divisions_matching","title":"Divisions Matching","python_name":"cut_detector._widget:divisions_matching","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"cut-detector.distribution_comparison","title":"Distribution Comparison","python_name":"cut_detector._widget:distribution_comparison","short_title":null,"category":null,"icon":null,"enablement":null}],"readers":null,"writers":null,"widgets":[{"command":"cut-detector.whole_process","display_name":"Single Video","autogenerate":false},{"command":"cut-detector.whole_process_folder","display_name":"Folder","autogenerate":false},{"command":"cut-detector.divisions_matching","display_name":"Divisions Matching","autogenerate":false},{"command":"cut-detector.distribution_comparison","display_name":"Distribution Comparison","autogenerate":false}],"sample_data":null,"themes":null,"menus":{},"submenus":null,"keybindings":null,"configurations":{}},"package_metadata":{"metadata_version":"2.4","name":"cut-detector","version":"1.8.2","dynamic":["license-file"],"platform":null,"supported_platform":null,"summary":"Automatic Cut Detector","description":"# Cut Detector\n\n[![License BSD-3](https://img.shields.io/pypi/l/cut-detector.svg?color=green)](https://github.com/15bonte/cut-detector/raw/main/LICENSE)\n[![PyPI](https://img.shields.io/pypi/v/cut-detector.svg?color=green)](https://pypi.org/project/cut-detector)\n[![Python Version](https://img.shields.io/pypi/pyversions/cut-detector.svg?color=green)](https://python.org)\n[![codecov](https://codecov.io/gh/15bonte/cut-detector/branch/main/graph/badge.svg)](https://codecov.io/gh/15bonte/cut-detector)\n[![napari hub](https://img.shields.io/endpoint?url=https://api.napari-hub.org/shields/cut-detector)](https://napari-hub.org/plugins/cut-detector)\n[![tests](https://github.com/15bonte/cut-detector/workflows/tests/badge.svg)](https://github.com/15bonte/cut-detector/actions)\n\nAutomatic micro-tubule cut detector.\n\nCode associated to the paper \"Cut-Detector: A Tool for Automated Temporal Analysis of Late Cytokinetic Events\" available from [bioRxiv].\n\nhttps://github.com/user-attachments/assets/2af2e1a6-adf9-4d63-a353-e190c4814d83\n\n---\n\nThis [napari] plugin was generated with [Cookiecutter] using [@napari]'s [cookiecutter-napari-plugin] template.\n\n<!--\nDon't miss the full getting started guide to set up your new package:\nhttps://github.com/napari/cookiecutter-napari-plugin#getting-started\n\nand review the napari docs for plugin developers:\nhttps://napari.org/stable/plugins/index.html\n-->\n\n<video width=\"640\" height=\"480\" controls>\n  <source src=\"https://github.com/15bonte/cut-detector-models/blob/main/demo.mp4\" type=\"video/mp4\">\n  Your browser does not support the video tag.\n</video>\n\n## Installation\n\n### Conda environment\n\nIt is highly recommended to create a dedicated conda environment, by following these few steps:\n\n1. Install an [Anaconda] distribution of Python. Note you might need to use an anaconda prompt if you did not add anaconda to the path.\n\n2. 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.\n\n```bash\nconda create --name cut_detector python=3.10 conda=23.10.0\nconda activate cut_detector\n```\n\n### CPU installation\n\nOnce in the dedicated environment, our package can be installed via [pip]:\n\n```bash\npip install cut_detector\n```\n\nAlternatively, you can clone the github repo to access to playground scripts.\n\n```bash\ngit clone https://github.com/15bonte/cut-detector.git\ncd cut-detector\npip install -e .\n```\n\n### GPU installation\n\nWe strongly recommend using a GPU to accelerate segmentation. To install Cut-Detector with GPU support, first follow the CPU installation steps.\n\nNext, to use your NVIDIA GPU, the first step is to download the dedicated driver from [NVIDIA]. We then need to remove the CPU version of `torch`. Note that `numpy` is also removed here to be able to choose its version later with `conda`, which is required for other dependencies. Run the following command:\n\n```bash\npip uninstall torch torchvision numpy\n```\n\nThe GPU version of `torch` to be installed can be found [here](https://pytorch.org/get-started/locally/). 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:\n\n```bash\nconda install pytorch==1.12.1 torchvision==0.13.1 numpy==1.26.4 torchaudio==0.12.1 cudatoolkit=11.6 \"mkl=2023.2.0\" -c pytorch -c conda-forge\n```\n\n## Getting started\n\n### Launching napari\n\nnapari can be launched by just running `napari` in the terminal.\n\n```bash\nconda activate cut_detector\nnapari\n```\n\nOnce open, click on `Plugins` > `Cut Detector` > `Single Video`.\n\nNote that `Folder` is the equivalent of `Single Video`, but it processes all `.tif` files contained in a specific folder rather than a single video file. `Divisions Matching` and `Distribution Comparison` are more specialized features intended for advanced users and developers. Additional details can be found in the [developers] folder.\n\n### Test videos\n\nA demo video containing a single cell division can be downloaded [here](https://github.com/15bonte/cut-detector-models/blob/main/data/videos/example_video.tif). We recommend first running Cut-Detector on this video to verify that the installation and setup are working properly.\n\nFor a more realistic analysis, we provide a representative example of our time-lapse microscopy data (test_data.tif) on [Zenodo]. Running Cut-Detector on this video takes approximately 1 hour on a standard CPU and 8 minutes on a standard GPU.\n\nOnce downloaded, open the video in napari.\n\n### Running Cut Detector\n\nBefore running the analysis, several settings can be modified:\n\n- `img layer`: The napari layer to be analyzed. By default, this corresponds to the currently opened file.\n- `Use default segmentation model?`: Enabled by default. If you want to use your own Cellpose segmentation model, specify it using the `Select file` button on the following line.\n- `Save cell division movies?`: Option to save individual cell division movies as `.tif` files. These files will be saved in the folder selected using the `Choose directory` button.\n- `Directory to save results`: Use the `Choose directory` button to select the directory where the results will be saved as a `.csv` file.\n- `Debug mode`: If enabled, temporary files and folders are not deleted but instead moved to the results folder. For regular use, it is recommended to leave this option disabled.\n- `Display segmentation and tracking`: If enabled, napari layers displaying the segmentation and tracking results will be created. This option can be useful when the results appear unexpected or incorrect.\n- `Pixel size (nm)`: The default value corresponds to the `test_data.tif` video.\n\nFinally, click on the `Run Whole Process (Single Video)` button to run Cut Detector.\n\n## Update\n\nTo update cut-detector to the latest version, open an Anaconda prompt and use the following commands:\n\n```bash\nconda activate cut_detector\npip install cut-detector --upgrade\n```\n\n## Documentation\n\nEach detected cell division is labeled with one of the following categories:\n\n- NORMAL: Division happening as expected, where (at least) 1 micro-tubule cut is detected.\n- 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.\n- 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).\n- 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.\n- 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.\n- TOO_SHORT_CUT: First micro-tubule cut detected before or at 50 minutes. Ignored as this is very unlikely, so it is probably caused by a wrong division detection.\n\nDivision movies start at the maximum between:\n\n- Mother cell start frame\n- 10 frames before the end of metaphase\n\nDivision movies end at the minimum between:\n\n- Last frame of any of the daughter cells\n- Metaphase of any of the daughter cells\n\n## Contributing\n\nContributions are very welcome. Tests can be run with [tox], please ensure\nthe coverage at least stays the same before you submit a pull request.\n\nScripts required to improve any of Cut Detector tasks can be found in the folder [developers].\n\n## License\n\nDistributed under the terms of the [BSD-3] license,\n\"cut-detector\" is free and open source software\n\n## Issues\n\nIf you encounter any problems, please [file an issue] along with a detailed description.\n\n## Citation\n\nIf you found our work useful, please consider citing:\n\n```\n@article{bonte2025cut,\n  title={Cut-Detector: A Tool for Automated Temporal Analysis of Late Cytokinetic Events},\n  author={Bonte, Thomas and Dubois, Lucas and Gagna, Paul and Dibsy, Rayane and Petrovi{\\'c}, An{\\dj}ela and Advedissian, Tamara and Serres, Murielle and Cuvelier, Fr{\\'e}d{\\'e}rique and Crouigneau, Marie and Sassoon, Nathalie and others},\n  journal={bioRxiv},\n  pages={2025--06},\n  year={2025},\n  publisher={Cold Spring Harbor Laboratory}\n}\n```\n\n[napari]: https://github.com/napari/napari\n[Cookiecutter]: https://github.com/audreyr/cookiecutter\n[@napari]: https://github.com/napari\n[MIT]: http://opensource.org/licenses/MIT\n[BSD-3]: http://opensource.org/licenses/BSD-3-Clause\n[GNU GPL v3.0]: http://www.gnu.org/licenses/gpl-3.0.txt\n[GNU LGPL v3.0]: http://www.gnu.org/licenses/lgpl-3.0.txt\n[Apache Software License 2.0]: http://www.apache.org/licenses/LICENSE-2.0\n[Mozilla Public License 2.0]: https://www.mozilla.org/media/MPL/2.0/index.txt\n[cookiecutter-napari-plugin]: https://github.com/napari/cookiecutter-napari-plugin\n[file an issue]: https://github.com/15bonte/cut-detector/issues\n[developers]: https://github.com/15bonte/cut-detector/tree/main/developers\n[napari]: https://github.com/napari/napari\n[tox]: https://tox.readthedocs.io/en/latest/\n[pip]: https://pypi.org/project/pip/\n[PyPI]: https://pypi.org/\n[Anaconda]: https://www.anaconda.com/products/distribution\n[Fiji]: https://imagej.net/software/fiji/\n[NVIDIA]: https://www.nvidia.com/Download/index.aspx?lang=en-us\n[conda]: https://docs.conda.io/en/latest/\n[bioRxiv]: https://www.biorxiv.org/content/10.1101/2025.06.06.658046v1\n[Zenodo]: https://zenodo.org/records/21528406\n","description_content_type":"text/markdown","keywords":null,"home_page":"https://github.com/15bonte/cut-detector","download_url":null,"author":"Thomas Bonte","author_email":"thomas.bonte@mines-paristech.fr","maintainer":null,"maintainer_email":null,"license":"BSD-3-Clause","classifier":["Development Status :: 2 - Pre-Alpha","Framework :: napari","Intended Audience :: Developers","License :: OSI Approved :: BSD License","Operating System :: OS Independent","Programming Language :: Python","Programming Language :: Python :: 3","Programming Language :: Python :: 3 :: Only","Programming Language :: Python :: 3.9","Programming Language :: Python :: 3.10","Topic :: Scientific/Engineering :: Image Processing"],"requires_dist":["cellpose==3.0.9","cnn_framework","magicgui","pydantic==1.10.12","xmltodict","shapely","aicsimageio==4.14.0","fsspec==2023.6.0","charset-normalizer==3.3.0","napari[all]==0.4.18","laptrack==0.16.2","scikit-learn==1.5.0","numba>=0.59.1","scipy<=1.14.1","tensorflow<=2.18.0","munch","plotly","torch==1.12.1","torchvision==0.13.1","torchmetrics==1.2.0","setuptools==80.9.0","tox; extra == \"testing\"","pytest; extra == \"testing\"","pytest-cov; extra == \"testing\"","pytest-qt; extra == \"testing\"","napari; extra == \"testing\"","pyqt5; extra == \"testing\""],"requires_python":">=3.9","requires_external":null,"project_url":["Bug Tracker, https://github.com/15bonte/cut-detector/issues","Documentation, https://github.com/15bonte/cut-detector#README.md","Source Code, https://github.com/15bonte/cut-detector","User Support, https://github.com/15bonte/cut-detector/issues"],"provides_extra":["testing"],"provides_dist":null,"obsoletes_dist":null},"npe1_shim":false}