-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathmmv-hitl4trk.json
95 lines (95 loc) · 11.9 KB
/
mmv-hitl4trk.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
{
"name": "mmv_hitl4trk",
"display_name": "Human in the Loop Cell Tracking Tool",
"visibility": "public",
"icon": "",
"categories": [],
"schema_version": "0.1.0",
"on_activate": null,
"on_deactivate": null,
"contributions": {
"commands": [
{
"id": "mmv_hitl4trk.make_qwidget",
"title": "Make tracking widget",
"python_name": "mmv_hitl4trk._widget:MMVHITL4TRK",
"short_title": null,
"category": null,
"icon": null,
"enablement": null
}
],
"readers": null,
"writers": null,
"widgets": [
{
"command": "mmv_hitl4trk.make_qwidget",
"display_name": "MMV_HITL4TRK",
"autogenerate": false
}
],
"sample_data": null,
"themes": null,
"menus": {},
"submenus": null,
"keybindings": null,
"configuration": []
},
"package_metadata": {
"metadata_version": "2.1",
"name": "mmv_hitl4trk",
"version": "1.0.0",
"dynamic": null,
"platform": null,
"supported_platform": null,
"summary": "A simple plugin to use with napari",
"description": "**We are actively working on the documentation**\n\n# mmv-HITL4TRK\n\n[![License](https://img.shields.io/pypi/l/mmv_hitl4trk.svg?color=green)](https://github.com/MMV-Lab/mmv_hitl4trk/raw/main/LICENSE)\n[![PyPI](https://img.shields.io/pypi/v/mmv_hitl4trk.svg?color=green)](https://pypi.org/project/mmv_hitl4trk)\n[![Python Version](https://img.shields.io/pypi/pyversions/mmv_hitl4trk.svg?color=green)](https://python.org)\n[![tests](https://github.com/MMV-Lab/mmv_hitl4trk/workflows/tests/badge.svg)](https://github.com/MMV-Lab/mmv_hitl4trk/actions)\n[![codecov](https://codecov.io/gh/MMV-Lab/mmv_hitl4trk/branch/main/graph/badge.svg)](https://codecov.io/gh/MMV-Lab/mmv_hitl4trk)\n[![napari hub](https://img.shields.io/endpoint?url=https://api.napari-hub.org/shields/mmv_hitl4trk)](https://napari-hub.org/plugins/mmv_hitl4trk)\n\nA plugin to use with napari to segment and track cells via HumanInTheLoop(HITL)-approach.\n\n----------------------------------\n\nThis [napari] plugin was generated with [Cookiecutter] using [@napari]'s [cookiecutter-napari-plugin] template.\n\n## Usage\nLoad a zarr-file consisting of Image, Label and Tracks layer.\n\n## Installation\n\nYou can install `mmv_hitl4trk` via [pip]:\n\n pip install mmv_hitl4trk\n\n\nBy default, CPU is used for segmentation computing. We have tried to optimize the CPU computing time, but still recommend GPU computing. For more detailed instructions on how to install GPU support look [here](https://github.com/MouseLand/cellpose#gpu-version-cuda-on-windows-or-linux).\n\n<!-- \n\nTo install latest development version :\n\n pip install git+https://github.com/MMV-Lab/mmv_hitl4trk.git -->\n\n\n## Documentation\nThis plugin was developed to analyze 2D cell migration. It includes the function of segmenting 2D videos using [Cellpose](https://github.com/MouseLand/cellpose) (both CPU and GPU implemented) and then tracking them using different automatic tracking algorithms, depending on the use case. For both segmentation and tracking, we have implemented user-friendly options for manual curation after automatic processing. In conjunction with napari's inherent functionalities, our plugin provides the capability to automatically track data and subsequently process the tracks in three different ways based on the reliability of the automated results. Firstly, any potentially existing incorrect tracks can be rectified in a user-friendly manner, thereby maximizing the evaluation of available information. Secondly, unreliable tracks can be selectively deleted, and thirdly, individual tracks can be manually or semi-automatically created for particularly challenging data, ensuring reliable results. In essence, our tool aims to offer a valuable supplement to the existing fully automated tracking tools and a user-friendly means to analyze videos where fully automated tracking has been previously challenging.\n\nCommon metrics such as speed, cell size, velocity, etc... can then be extracted, plotted and exported from the tracks obtained in this way. Furthermore, the plugin incorporates a functionality to assess the automatic tracking outcomes using a [quality score](https://doi.org/10.1371/journal.pone.0144959). Since automated tracking may not be consistently 100% accurate, presenting a quality measure alongside scientific discoveries becomes essential. This supplementary metric offers researchers valuable insights into the dependability of the produced tracking results, fostering informed data interpretation and decision-making in the analysis of cell migration.\n\nMore detailed information and instructions on each topic can be found in the following sections.\n\n### Get started\n\nTo load raw data, you can simply drag & drop them into napari. Ensure that the 'Image' combobox on the right displays the correct layer afterward. To load custom segmentations, you can do equivalent.\n\nThe \"save as\" button can be used to save the existing layers (raw, segmentation, tracks) in a single .zarr file, which can be loaded again later using the \"load\" button. The \"save\" button overwrites the loaded .zarr file.\n\nThe computation mode is used to set how many of the available CPU cores (40% or 80%) are to be used for computing the CPU segmentation and tracking and therefore has a direct impact on performance.\n\n\n### Segmentation\n\nFor segmentation, we use the state of the art instance segmentation method Cellpose. We provide one (/several??) model that we trained and has proven successful for our data ([see more information](https://doi.org/10.1038/s41467-023-43765-3)).\n\n(...)\n\n\n\n#### Automatic instance segmentation\n\n(...)\n\n##### Custom models\n\nThe plugin supports loading custom Cellpose models. To train your own Cellpose model, [this](https://cellpose.readthedocs.io/en/latest/train.html) might be helpful.\n\nIn future versions, we plan to support fine-tuning of Cellpose models within the plugin. \n\n\n#### Manual curation\n\nBe aware that removing a cell cuts the track the cell is on. Resulting tracks shorter than two timesteps will be removed\n\n(...)\n\n### Tracking\n\nThe plugin supports both coordinate-based and overlap-based tracking. Overlap-based tracking requires more computation, but can also be used in particularly complicated data for individual cells.\nIn our experience, coordinate-based tracking has proven itself in cases with reliable segmentation. Overlap-based tracking serves as a useful complement in cases where the segmentation is not of sufficient quality.\n\n(...)\n\n#### Manual curation\n\n(...)\n\n### Analysis\n\nThe plugin supports the calculation of various metrics, which can be divided into two categories: migration-based (such as speed, direction, ...) and cell-based (such as size, eccentricity, ...). Through the use of these metrics, a comprehensive understanding of the available data can be obtained.\n\n(...)\n\n### Evaluation\n\nTo be aware of the accuracy of your automatic tracking and segmentation results, we have implemented an evaluation function based on [this manuscript](https://doi.org/10.1371/journal.pone.0144959). Evaluation is always carried out against the latest results of automatic segmentation and automatic tracking or previously created results loaded via the plugin's own load function. We may implement the option to evaluate external segmentations in the future, but for now you can use save and load as a workaround.\n\nTo evaluate results, at least 2 consecutive frames must first be corrected manually. The plugin saves the previously mentioned automatic or loaded results in the background, so no activation via button or similar is necessary before manual correction.\n\n(...)\n\n\n#### Segmentation evaluation\n\n(...)\n\n#### Tracking evaluation\n\n(...)\n\nfalse positives:\n\tcheck if cell from eval has a match > .4 IoU. If no, check if cell has second highest match >= .2 IoU. If no, then fp\n\t\nfalse negatives:\n\tcheck if cell from gt has a match > .4. If no, then fn.\n\tcheck if matched cell maxIoU is higher than match. If yes, then fn.\n\tcheck if matched cell top 2 maxIoU are equal. If yes, then half fn (this will apply for both cells)\n\t\nsplit cell:\n\tcheck if cell from eval has more than one match, and if second highest match is >= .2 IoU. If yes, then sc\n\t\nadded edge:\n\tcheck if a connection in gt has both cells matched in eval & the matched cells are connected. if no, then ae\n\t\ndeleted edge:\n\tcheck if a connection in eval has both cells matched in gt & the matched cells are connected. if no, then de\n\n\n## Hotkeys\n\nHere's an overview of the hotkeys. All of them can also be found in the corresponding tooltips. \n\n- `E` - Load next free segmentation ID\n- `S` - Overlap-based single cell tracking \n\n## Development plan\n\nWe will continue to develop the plugin and implement new features in the future. Some of our plans in arbitrary order:\n\n- Support of lineages\n- Support training custom Cellpose models within the plugin\n- Model optimization to further optimize segmentation computation\n- Support evaluation of external segmentations\n- ...\n\nIf you have a feature request, please [file an issue].\n\n## Resources\n\nThe following resources may be of interest:\n\n- [Cellpose]()\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\n## License\n\nDistributed under the terms of the [BSD-3] license,\n\"mmv_hitl4trk\" 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\n[file an issue]: https://github.com/MMV-Lab/mmv_hitl4trk/issues\n\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",
"description_content_type": "text/markdown",
"keywords": null,
"home_page": "https://github.com/MMV-Lab/mmv_hitl4trk",
"download_url": null,
"author": "lennart kowitz",
"author_email": "lennart.kowitz@isas.de",
"maintainer": null,
"maintainer_email": null,
"license": "BSD-3-Clause",
"classifier": [
"Development Status :: 3 - Alpha",
"Intended Audience :: Science/Research",
"Framework :: napari",
"Topic :: Scientific/Engineering :: Image Processing",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Operating System :: OS Independent",
"License :: OSI Approved :: BSD License"
],
"requires_dist": [
"numpy",
"npe2",
"napari-plugin-engine >=0.1.4",
"napari",
"zarr",
"cellpose ==2.1.0",
"keyboard",
"matplotlib",
"aicsimageio",
"scipy >=1.11.0"
],
"requires_python": ">=3.7",
"requires_external": null,
"project_url": [
"Bug Tracker, https://github.com/MMV-Lab/mmv_hitl4trk/issues",
"Documentation, https://github.com/MMV-Lab/mmv_hitl4trk#README.md",
"Source Code, https://github.com/MMV-Lab/mmv_hitl4trk",
"User Support, https://github.com/MMV-Lab/mmv_hitl4trk/issues"
],
"provides_extra": null,
"provides_dist": null,
"obsoletes_dist": null
},
"npe1_shim": false
}