-
Notifications
You must be signed in to change notification settings - Fork 7
/
fish-scan.json
175 lines (175 loc) · 12.4 KB
/
fish-scan.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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
{
"name": "fish-scan",
"display_name": "Fish Scan",
"visibility": "public",
"icon": "",
"categories": [
"Image Processing",
"Segmentation",
"Measurement"
],
"schema_version": "0.2.1",
"on_activate": null,
"on_deactivate": null,
"contributions": {
"commands": [
{
"id": "fish-scan.get_reader",
"title": "Open data with Fish Scan",
"python_name": "fish_scan._reader:napari_get_reader",
"short_title": null,
"category": null,
"icon": null,
"enablement": null
},
{
"id": "fish-scan.write_multiple",
"title": "Save multi-layer data with Fish Scan",
"python_name": "fish_scan._writer:write_multiple",
"short_title": null,
"category": null,
"icon": null,
"enablement": null
},
{
"id": "fish-scan.write_single_image",
"title": "Save image data with Fish Scan",
"python_name": "fish_scan._writer:write_single_image",
"short_title": null,
"category": null,
"icon": null,
"enablement": null
},
{
"id": "fish-scan.make_sample_data",
"title": "Load sample data from Fish Scan",
"python_name": "fish_scan._sample_data:make_sample_data",
"short_title": null,
"category": null,
"icon": null,
"enablement": null
},
{
"id": "fish-scan.analysis",
"title": "Analyse the image",
"python_name": "fish_scan:FishAnalysis",
"short_title": null,
"category": null,
"icon": null,
"enablement": null
}
],
"readers": [
{
"command": "fish-scan.get_reader",
"filename_patterns": [
"*.npy"
],
"accepts_directories": false
}
],
"writers": [
{
"command": "fish-scan.write_multiple",
"layer_types": [
"image*",
"labels*"
],
"filename_extensions": [],
"display_name": ""
},
{
"command": "fish-scan.write_single_image",
"layer_types": [
"image"
],
"filename_extensions": [
".npy"
],
"display_name": ""
}
],
"widgets": [
{
"command": "fish-scan.analysis",
"display_name": "FishAnalysis",
"autogenerate": false
}
],
"sample_data": [
{
"command": "fish-scan.make_sample_data",
"key": "unique_id.1",
"display_name": "Fish Scan"
}
],
"themes": null,
"menus": {},
"submenus": null,
"keybindings": null,
"configuration": []
},
"package_metadata": {
"metadata_version": "2.1",
"name": "fish-scan",
"version": "1.1.0",
"dynamic": null,
"platform": null,
"supported_platform": null,
"summary": "Plugin to enhance fish detection and analysis for underwater research",
"description": "# fish-scan\n\n[![License BSD-3](https://img.shields.io/pypi/l/fish-scan.svg?color=green)](https://github.com/ariannaravera/fish-scan/raw/main/LICENSE)\n[![PyPI](https://img.shields.io/pypi/v/fish-scan.svg?color=green)](https://pypi.org/project/fish-scan)\n[![Python Version](https://img.shields.io/pypi/pyversions/fish-scan.svg?color=green)](https://python.org)\n[![tests](https://github.com/ariannaravera/fish-scan/workflows/tests/badge.svg)](https://github.com/ariannaravera/fish-scan/actions)\n[![codecov](https://codecov.io/gh/ariannaravera/fish-scan/branch/main/graph/badge.svg)](https://codecov.io/gh/ariannaravera/fish-scan)\n[![napari hub](https://img.shields.io/endpoint?url=https://api.napari-hub.org/shields/fish-scan)](https://napari-hub.org/plugins/fish-scan)\n\nPlugin to enhance fish detection and analysis for underwater research\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## Installation\n\nYou can install `fish-scan` via [pip]:\n\n pip install fish-scan\n\n\n\nTo install latest development version :\n\n pip install git+https://github.com/ariannaravera/fish-scan.git\n\n\n## Tutorial\n\n### 1. Color correction\n\nWith this tool you can correct colors in your image.\n\n1.\tOpen your image in napari by grabbing and dropping it or opening from the menu\n2.\tClick on \u201cSelect the area\u201d to select a rectagular area of the color you wanna correct\n3.\tDraw the rectangle in the area in which you have that color, eg. white area, as in the example below\n4.\tSelect the color name in the dropdown box, eg. in this case white\n5.\tClick on \u201cCorrect color\u201d\n6.\tIf you\u2019re satisfied of the correction made, it is IMPORTANT to select as input \u201cImage\u201d(first box) the name of the new generated image (usually, \u201cCurrect_corrected_...)*\n7.\tCuntinue your colors corrections re-starting from step 2\n\n#### Nomenclature:\n- you MUSH have your original image with its original name (in this case \u201cGroup2_FishID_25April\u2026\u201d)\n- then, once you start correcting the image, the new generated images will be called as \u201cCurrent_corrected_*original-name*\u201d\n- if you perform the correction more times, your previous corrected image will be named \u201cPrevious_corrected_*original-name*\u201d and the new generated always \u201cCurrent_corrected_*original-name*\u201d.\n\nThis allows you to keep as \u201cprevious\u201d the result that you already liked and approved, while the \u201ccurrent\u201d you can play and experiment new corrections. \nBe aware that if you select as input image of the correction \u201cprevious\u201d this means that you didn\u2019t like the \u201ccurrent\u201d one and it will be overwrite (while the \u201cprevious\u201d remain the same), otherwise if you liked the \u201ccurrent\u201d and you use it as input image of the new correction, then the \u201ccurrent\u201d will become \u201cprevious\u201d and the new result \u201ccurrent\u201d.\nAt anytime if you want you can re-start from the original image by selecting it as input image (original image is NEVER changed).\n\u2003\n### 2. Set Scale\nWith this tool you can automatically measure your fish if a scale is in the image.\n\n1.\tClick on \u201cSelect 1 cm\u201d and draw a line on the scale represeting 1cm, as in this example:\n \n2.\tClick on \u201cSet scale\u201d and your fish will be automaticall measure in your final analysis with this scale\n\u2003\n### 3. Segmentation & Analysis\nWith this tool you can segment your fish.\n\nSteps:\n1.\tSelect the \u201cImage\u201d you want to analyse (be aware of the nomenclature*)\n2.\tClick \u201cSelect fish area\u201d button\n3.\tStart drawing your mask with the brush (yellow arrow below). I suggest to start drwaing the fish contours and then with the paint bucket (red arrow below) fill the inside. Adjust it with the eraser (orange arrow below) if needed\n \n4.\tSelect the output folder you want the results saved in by clicking \u201cBrowse\u201d\n5.\tFinally, click on \u201cAnalyse the fish\u201d to generate your analysis\n\nHere is an example of the results you obtain from it:\n\u2022\ttwo graphs per image,\no\tone representing the percentage of the 3 dominant color you want to study (black, white and orange) \n \no\tone with the composition of the real RGB values found in the image (the ones that are categorized in the 3 main classes you have in graph 1)\n \n\n\u2022\tone csv file in which there are the number of black, white and orange pixels, their percentages (same values of graph 1), the length of the fish in pixels (always provided) and the length converted in cm (if a scale was provided).\no\tIf in the output folder chosen there were already a previously created csv we will append to that the new info, otherwise a new csv is created.\n \n\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\"fish-scan\" 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/ariannaravera/fish-scan/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/ariannaravera/fish-scan",
"download_url": null,
"author": "Arianna Ravera",
"author_email": "[email protected]",
"maintainer": null,
"maintainer_email": null,
"license": "\nCopyright (c) 2024, Arianna Ravera\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n",
"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",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Scientific/Engineering :: Image Processing"
],
"requires_dist": [
"numpy",
"magicgui",
"qtpy",
"scikit-image",
"opencv-python",
"matplotlib",
"scikit-learn",
"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/ariannaravera/fish-scan/issues",
"Documentation, https://github.com/ariannaravera/fish-scan#README.md",
"Source Code, https://github.com/ariannaravera/fish-scan",
"User Support, https://github.com/ariannaravera/fish-scan/issues"
],
"provides_extra": [
"testing"
],
"provides_dist": null,
"obsoletes_dist": null
},
"npe1_shim": false
}