Skip to content

Commit cf1c574

Browse files
authored
Merge pull request #8 from BrainLesion/feature/update-for-citation-reminder
- add citation to readme and notebooks
2 parents 06ab769 + 5460451 commit cf1c574

4 files changed

Lines changed: 268 additions & 59 deletions

File tree

panoptica/README.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,20 @@ Ideally the input data already provides matched instances.
4040
In this case module 3 can be used to directly report panoptic metrics without requiring any internal preprocessing.
4141

4242
[Jupyter Notebook Example](https://github.com/BrainLesion/tutorials/tree/main/panoptica/example_spine_matched_instance.ipynb)
43+
44+
## Citation
45+
46+
If you use panoptica in your research, please cite it to support the development!
47+
48+
Kofler, F., Möller, H., Buchner, J. A., de la Rosa, E., Ezhov, I., Rosier, M., Mekki, I., Shit, S., Negwer, M., Al-Maskari, R., Ertürk, A., Vinayahalingam, S., Isensee, F., Pati, S., Rueckert, D., Kirschke, J. S., Ehrlich, S. K., Reinke, A., Menze, B., Wiestler, B., & Piraud, M. (2023). _Panoptica -- instance-wise evaluation of 3D semantic and instance segmentation maps._ [arXiv preprint arXiv:2312.02608](https://arxiv.org/abs/2312.02608).
49+
50+
```
51+
@misc{kofler2023panoptica,
52+
title={Panoptica -- instance-wise evaluation of 3D semantic and instance segmentation maps},
53+
author={Florian Kofler and Hendrik Möller and Josef A. Buchner and Ezequiel de la Rosa and Ivan Ezhov and Marcel Rosier and Isra Mekki and Suprosanna Shit and Moritz Negwer and Rami Al-Maskari and Ali Ertürk and Shankeeth Vinayahalingam and Fabian Isensee and Sarthak Pati and Daniel Rueckert and Jan S. Kirschke and Stefan K. Ehrlich and Annika Reinke and Bjoern Menze and Benedikt Wiestler and Marie Piraud},
54+
year={2023},
55+
eprint={2312.02608},
56+
archivePrefix={arXiv},
57+
primaryClass={cs.CV}
58+
}
59+
```

panoptica/example_spine_matched_instance.ipynb

Lines changed: 95 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -16,29 +16,29 @@
1616
},
1717
{
1818
"cell_type": "code",
19-
"execution_count": null,
19+
"execution_count": 1,
2020
"metadata": {},
2121
"outputs": [
2222
{
2323
"name": "stdout",
2424
"output_type": "stream",
2525
"text": [
26-
"Requirement already satisfied: panoptica in /Users/marcelrosier/opt/anaconda3/envs/brainles/lib/python3.10/site-packages (from -r requirements.txt (line 1)) (0.5.11)\n",
27-
"Requirement already satisfied: auxiliary in /Users/marcelrosier/opt/anaconda3/envs/brainles/lib/python3.10/site-packages (from -r requirements.txt (line 2)) (0.0.35)\n",
26+
"Requirement already satisfied: panoptica in /Users/marcelrosier/opt/anaconda3/envs/brainles/lib/python3.10/site-packages (from -r requirements.txt (line 1)) (0.5.19.post2.dev0+dd3ef62)\n",
27+
"Requirement already satisfied: auxiliary in /Users/marcelrosier/opt/anaconda3/envs/brainles/lib/python3.10/site-packages (from -r requirements.txt (line 2)) (0.0.38)\n",
2828
"Requirement already satisfied: rich in /Users/marcelrosier/opt/anaconda3/envs/brainles/lib/python3.10/site-packages (from -r requirements.txt (line 3)) (13.6.0)\n",
2929
"Requirement already satisfied: numpy in /Users/marcelrosier/opt/anaconda3/envs/brainles/lib/python3.10/site-packages (from -r requirements.txt (line 4)) (1.25.2)\n",
3030
"Requirement already satisfied: connected-components-3d<4.0.0,>=3.12.3 in /Users/marcelrosier/opt/anaconda3/envs/brainles/lib/python3.10/site-packages (from panoptica->-r requirements.txt (line 1)) (3.12.3)\n",
3131
"Requirement already satisfied: scipy<2.0.0,>=1.7.0 in /Users/marcelrosier/opt/anaconda3/envs/brainles/lib/python3.10/site-packages (from panoptica->-r requirements.txt (line 1)) (1.11.3)\n",
32-
"Requirement already satisfied: nibabel>3.0 in /Users/marcelrosier/opt/anaconda3/envs/brainles/lib/python3.10/site-packages (from auxiliary->-r requirements.txt (line 2)) (4.0.2)\n",
33-
"Requirement already satisfied: path<17.0.0,>=16.7.1 in /Users/marcelrosier/opt/anaconda3/envs/brainles/lib/python3.10/site-packages (from auxiliary->-r requirements.txt (line 2)) (16.7.1)\n",
34-
"Requirement already satisfied: pathlib<2.0,>=1.0 in /Users/marcelrosier/opt/anaconda3/envs/brainles/lib/python3.10/site-packages (from auxiliary->-r requirements.txt (line 2)) (1.0.1)\n",
32+
"Requirement already satisfied: nibabel>=3.0 in /Users/marcelrosier/opt/anaconda3/envs/brainles/lib/python3.10/site-packages (from auxiliary->-r requirements.txt (line 2)) (4.0.2)\n",
33+
"Requirement already satisfied: path>=16.7.1 in /Users/marcelrosier/opt/anaconda3/envs/brainles/lib/python3.10/site-packages (from auxiliary->-r requirements.txt (line 2)) (16.7.1)\n",
34+
"Requirement already satisfied: pathlib>=1.0 in /Users/marcelrosier/opt/anaconda3/envs/brainles/lib/python3.10/site-packages (from auxiliary->-r requirements.txt (line 2)) (1.0.1)\n",
3535
"Requirement already satisfied: pillow>=10.0.0 in /Users/marcelrosier/opt/anaconda3/envs/brainles/lib/python3.10/site-packages (from auxiliary->-r requirements.txt (line 2)) (10.0.1)\n",
36-
"Requirement already satisfied: tifffile>2023.8.25 in /Users/marcelrosier/opt/anaconda3/envs/brainles/lib/python3.10/site-packages (from auxiliary->-r requirements.txt (line 2)) (2023.9.26)\n",
36+
"Requirement already satisfied: tifffile>=2023.8.25 in /Users/marcelrosier/opt/anaconda3/envs/brainles/lib/python3.10/site-packages (from auxiliary->-r requirements.txt (line 2)) (2023.9.26)\n",
3737
"Requirement already satisfied: markdown-it-py>=2.2.0 in /Users/marcelrosier/opt/anaconda3/envs/brainles/lib/python3.10/site-packages (from rich->-r requirements.txt (line 3)) (3.0.0)\n",
3838
"Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /Users/marcelrosier/opt/anaconda3/envs/brainles/lib/python3.10/site-packages (from rich->-r requirements.txt (line 3)) (2.16.1)\n",
3939
"Requirement already satisfied: mdurl~=0.1 in /Users/marcelrosier/opt/anaconda3/envs/brainles/lib/python3.10/site-packages (from markdown-it-py>=2.2.0->rich->-r requirements.txt (line 3)) (0.1.2)\n",
40-
"Requirement already satisfied: packaging>=17.0 in /Users/marcelrosier/opt/anaconda3/envs/brainles/lib/python3.10/site-packages (from nibabel>3.0->auxiliary->-r requirements.txt (line 2)) (23.2)\n",
41-
"Requirement already satisfied: setuptools in /Users/marcelrosier/opt/anaconda3/envs/brainles/lib/python3.10/site-packages (from nibabel>3.0->auxiliary->-r requirements.txt (line 2)) (68.2.2)\n"
40+
"Requirement already satisfied: packaging>=17.0 in /Users/marcelrosier/opt/anaconda3/envs/brainles/lib/python3.10/site-packages (from nibabel>=3.0->auxiliary->-r requirements.txt (line 2)) (23.2)\n",
41+
"Requirement already satisfied: setuptools in /Users/marcelrosier/opt/anaconda3/envs/brainles/lib/python3.10/site-packages (from nibabel>=3.0->auxiliary->-r requirements.txt (line 2)) (68.2.2)\n"
4242
]
4343
}
4444
],
@@ -121,11 +121,78 @@
121121
"execution_count": 4,
122122
"metadata": {},
123123
"outputs": [
124+
{
125+
"data": {
126+
"text/html": [
127+
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #00ff00; text-decoration-color: #00ff00\">────────────────────────────────────────── </span>Thank you for using <span style=\"font-weight: bold\">panoptica</span><span style=\"color: #00ff00; text-decoration-color: #00ff00\"> ──────────────────────────────────────────</span>\n",
128+
"</pre>\n"
129+
],
130+
"text/plain": [
131+
"\u001b[92m────────────────────────────────────────── \u001b[0mThank you for using \u001b[1mpanoptica\u001b[0m\u001b[92m ──────────────────────────────────────────\u001b[0m\n"
132+
]
133+
},
134+
"metadata": {},
135+
"output_type": "display_data"
136+
},
137+
{
138+
"data": {
139+
"text/html": [
140+
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"> Please support our development by citing \n",
141+
"</pre>\n"
142+
],
143+
"text/plain": [
144+
" Please support our development by citing \n"
145+
]
146+
},
147+
"metadata": {},
148+
"output_type": "display_data"
149+
},
150+
{
151+
"data": {
152+
"text/html": [
153+
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"> <span style=\"color: #0000ff; text-decoration-color: #0000ff; text-decoration: underline\">https://github.com/BrainLesion/panoptica#citation</span> -- Thank you! \n",
154+
"</pre>\n"
155+
],
156+
"text/plain": [
157+
" \u001b[4;94mhttps://github.com/BrainLesion/panoptica#citation\u001b[0m -- Thank you! \n"
158+
]
159+
},
160+
"metadata": {},
161+
"output_type": "display_data"
162+
},
163+
{
164+
"data": {
165+
"text/html": [
166+
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #00ff00; text-decoration-color: #00ff00\">───────────────────────────────────────────────────────────────────────────────────────────────────────────────────</span>\n",
167+
"</pre>\n"
168+
],
169+
"text/plain": [
170+
"\u001b[92m───────────────────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\n"
171+
]
172+
},
173+
"metadata": {},
174+
"output_type": "display_data"
175+
},
176+
{
177+
"data": {
178+
"text/html": [
179+
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">\n",
180+
"</pre>\n"
181+
],
182+
"text/plain": [
183+
"\n"
184+
]
185+
},
186+
"metadata": {},
187+
"output_type": "display_data"
188+
},
124189
{
125190
"name": "stdout",
126191
"output_type": "stream",
127192
"text": [
128-
"evaluate took 2.727099895477295 seconds to execute.\n"
193+
"Panoptic: Start Evaluation\n",
194+
"-- Got MatchedInstancePair, will evaluate instances\n",
195+
"-- evaluate took 1.9782342910766602 seconds to execute.\n"
129196
]
130197
}
131198
],
@@ -163,11 +230,12 @@
163230
"False Positives (fp): 3\n",
164231
"False Negatives (fn): 3\n",
165232
"Recognition Quality / F1 Score (RQ): 0.8636363636363636\n",
166-
"Segmentation Quality (SQ): 0.8328184295330797 ± 0.1518606400451747\n",
167-
"Panoptic Quality (PQ): 0.7192522800512962\n",
233+
"Segmentation Quality (SQ): 0.8328184295330796 ± 0.15186064004517466\n",
234+
"Panoptic Quality (PQ): 0.719252280051296\n",
168235
"DSC-based Segmentation Quality (DQ_DSC): 0.900292616009954 ± 0.10253566174957332\n",
169236
"DSC-based Panoptic Quality (PQ_DSC): 0.7775254410995057\n",
170-
"Average symmetric surface distance (ASSD): 0.250331887879225 ± 0.07696680402317076\n"
237+
"Average symmetric surface distance (ASSD): 0.250331887879225 ± 0.07696680402317076\n",
238+
"ASSD-based Panoptic Quality (PQ_ASSD): 0.2161957213502398\n"
171239
]
172240
}
173241
],
@@ -184,11 +252,11 @@
184252
{
185253
"data": {
186254
"text/html": [
187-
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">result.<span style=\"color: #808000; text-decoration-color: #808000\">pq</span>=<span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.7192522800512962</span>\n",
255+
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">result.<span style=\"color: #808000; text-decoration-color: #808000\">pq</span>=<span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.719252280051296</span>\n",
188256
"</pre>\n"
189257
],
190258
"text/plain": [
191-
"result.\u001b[33mpq\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.7192522800512962\u001b[0m\n"
259+
"result.\u001b[33mpq\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.719252280051296\u001b[0m\n"
192260
]
193261
},
194262
"metadata": {},
@@ -216,14 +284,15 @@
216284
" <span style=\"color: #008000; text-decoration-color: #008000\">'fp'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">3</span>,\n",
217285
" <span style=\"color: #008000; text-decoration-color: #008000\">'fn'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">3</span>,\n",
218286
" <span style=\"color: #008000; text-decoration-color: #008000\">'rq'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.8636363636363636</span>,\n",
219-
" <span style=\"color: #008000; text-decoration-color: #008000\">'sq'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.8328184295330797</span>,\n",
220-
" <span style=\"color: #008000; text-decoration-color: #008000\">'sq_sd'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.1518606400451747</span>,\n",
221-
" <span style=\"color: #008000; text-decoration-color: #008000\">'pq'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.7192522800512962</span>,\n",
287+
" <span style=\"color: #008000; text-decoration-color: #008000\">'sq'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.8328184295330796</span>,\n",
288+
" <span style=\"color: #008000; text-decoration-color: #008000\">'sq_sd'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.15186064004517466</span>,\n",
289+
" <span style=\"color: #008000; text-decoration-color: #008000\">'pq'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.719252280051296</span>,\n",
222290
" <span style=\"color: #008000; text-decoration-color: #008000\">'sq_dsc'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.900292616009954</span>,\n",
223291
" <span style=\"color: #008000; text-decoration-color: #008000\">'sq_dsc_sd'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.10253566174957332</span>,\n",
224292
" <span style=\"color: #008000; text-decoration-color: #008000\">'pq_dsc'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.7775254410995057</span>,\n",
225-
" <span style=\"color: #008000; text-decoration-color: #008000\">'assd'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.250331887879225</span>,\n",
226-
" <span style=\"color: #008000; text-decoration-color: #008000\">'assd_sd'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.07696680402317076</span>\n",
293+
" <span style=\"color: #008000; text-decoration-color: #008000\">'sq_assd'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.250331887879225</span>,\n",
294+
" <span style=\"color: #008000; text-decoration-color: #008000\">'sq_assd_sd'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.07696680402317076</span>,\n",
295+
" <span style=\"color: #008000; text-decoration-color: #008000\">'pq_assd'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.2161957213502398</span>\n",
227296
"<span style=\"font-weight: bold\">}</span>\n",
228297
"</pre>\n"
229298
],
@@ -236,14 +305,15 @@
236305
" \u001b[32m'fp'\u001b[0m: \u001b[1;36m3\u001b[0m,\n",
237306
" \u001b[32m'fn'\u001b[0m: \u001b[1;36m3\u001b[0m,\n",
238307
" \u001b[32m'rq'\u001b[0m: \u001b[1;36m0.8636363636363636\u001b[0m,\n",
239-
" \u001b[32m'sq'\u001b[0m: \u001b[1;36m0.8328184295330797\u001b[0m,\n",
240-
" \u001b[32m'sq_sd'\u001b[0m: \u001b[1;36m0.1518606400451747\u001b[0m,\n",
241-
" \u001b[32m'pq'\u001b[0m: \u001b[1;36m0.7192522800512962\u001b[0m,\n",
308+
" \u001b[32m'sq'\u001b[0m: \u001b[1;36m0.8328184295330796\u001b[0m,\n",
309+
" \u001b[32m'sq_sd'\u001b[0m: \u001b[1;36m0.15186064004517466\u001b[0m,\n",
310+
" \u001b[32m'pq'\u001b[0m: \u001b[1;36m0.719252280051296\u001b[0m,\n",
242311
" \u001b[32m'sq_dsc'\u001b[0m: \u001b[1;36m0.900292616009954\u001b[0m,\n",
243312
" \u001b[32m'sq_dsc_sd'\u001b[0m: \u001b[1;36m0.10253566174957332\u001b[0m,\n",
244313
" \u001b[32m'pq_dsc'\u001b[0m: \u001b[1;36m0.7775254410995057\u001b[0m,\n",
245-
" \u001b[32m'assd'\u001b[0m: \u001b[1;36m0.250331887879225\u001b[0m,\n",
246-
" \u001b[32m'assd_sd'\u001b[0m: \u001b[1;36m0.07696680402317076\u001b[0m\n",
314+
" \u001b[32m'sq_assd'\u001b[0m: \u001b[1;36m0.250331887879225\u001b[0m,\n",
315+
" \u001b[32m'sq_assd_sd'\u001b[0m: \u001b[1;36m0.07696680402317076\u001b[0m,\n",
316+
" \u001b[32m'pq_assd'\u001b[0m: \u001b[1;36m0.2161957213502398\u001b[0m\n",
247317
"\u001b[1m}\u001b[0m\n"
248318
]
249319
},

0 commit comments

Comments
 (0)