{"name":"cut-detector","display_name":"Cut Detector","visibility":"public","icon":"","categories":[],"schema_version":"0.2.1","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,"configuration":[]},"package_metadata":{"metadata_version":"2.4","name":"cut-detector","version":"1.6.5","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[![tests](https://github.com/15bonte/cut-detector/workflows/tests/badge.svg)](https://github.com/15bonte/cut-detector/actions)\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\nAutomatic micro-tubule cut detector.\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### Package installation\n\nOnce in a 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\n\nWe 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].\n\nNext we need to remove the CPU version of torch:\n\n```bash\npip uninstall torch\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 pytorch-cuda=11.6 -c pytorch -c nvidia\n```\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## Definitions\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[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","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","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","scipy<=1.14.1","tensorflow<=2.18.0","munch","plotly","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}