Project-MONAI / Project-MONAI/MONAILabel

QuPath Unsupported File Type

Open
#1,799 9 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
891
Forks
269
Avg merge
15h 41m
Merged PRs (30d)
1

Description

I have successfully downloaded Monai Label and QuPath. I had large .svs files and extracted regions of interest as .tif files. When trying out nuclei segmentation on those images, I got the following error:

The version_base parameter is not specified.
Please specify a compatability version level, or None.
Will assume defaults for version 1.1
[2024-12-16 12:58:42,829] [74427] [MainThread] [INFO] (main:175) - +++ Adding Trainer:: segmentation_nuclei => <lib.trainers.segmentation_nuclei.SegmentationNuclei object at 0x177fc7110>
[2024-12-16 12:58:42,830] [74427] [MainThread] [INFO] (main:196) - Active Learning Strategies:: ['wsi_random']
[2024-12-16 12:58:42,830] [74427] [MainThread] [INFO] (monailabel.utils.sessions:51) - Session Path: /Users/waldmanad/.cache/monailabel/sessions
[2024-12-16 12:58:42,830] [74427] [MainThread] [INFO] (monailabel.utils.sessions:52) - Session Expiry (max): 3600
[2024-12-16 12:58:42,830] [74427] [MainThread] [INFO] (monailabel.interfaces.app:469) - App Init - completed
[2024-12-16 12:58:42,830] [timeloop] [INFO] Starting Timeloop..
[2024-12-16 12:58:42,830] [timeloop] [INFO] Starting Timeloop..
[2024-12-16 12:58:42,830] [74427] [MainThread] [INFO] (timeloop:60) - Starting Timeloop..
[2024-12-16 12:58:42,830] [timeloop] [INFO] Registered job <function MONAILabelApp.on_init_complete..run_scheduler at 0x177e68c20>
[2024-12-16 12:58:42,830] [timeloop] [INFO] Registered job <function MONAILabelApp.on_init_complete..run_scheduler at 0x177e68c20>
[2024-12-16 12:58:42,830] [74427] [MainThread] [INFO] (timeloop:42) - Registered job <function MONAILabelApp.on_init_complete..run_scheduler at 0x177e68c20>
[2024-12-16 12:58:42,830] [timeloop] [INFO] Timeloop now started. Jobs will run based on the interval set
[2024-12-16 12:58:42,830] [timeloop] [INFO] Timeloop now started. Jobs will run based on the interval set
[2024-12-16 12:58:42,830] [74427] [MainThread] [INFO] (timeloop:63) - Timeloop now started. Jobs will run based on the interval set
[2024-12-16 12:58:42,830] [74427] [MainThread] [INFO] (uvicorn.error:62) - Application startup complete.
[2024-12-16 12:58:42,831] [74427] [MainThread] [INFO] (uvicorn.error:215) - Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
[2024-12-16 12:58:51,896] [74427] [MainThread] [INFO] (monailabel.endpoints.activelearning:44) - Active Learning Request: {'strategy': 'wsi_random', 'image': '', 'patch_size': [1024, 1024], 'image_size': [0, 0]}
[2024-12-16 12:58:51,897] [74427] [MainThread] [INFO] (monailabel.tasks.activelearning.random:47) - Random: Selected Image: MS073_SC_C_ACST_L_2; Weight: 1734371931
[2024-12-16 12:58:51,900] [74427] [MainThread] [INFO] (monailabel.endpoints.activelearning:60) - Next sample: {'id': 'MS073_SC_C_ACST_L_2', 'weight': 1734371931, 'path': '/Users/waldmanad/datasets/MS073_SC_C_ACST_L_2.tif', 'ts': 1734371662, 'name': 'MS073_SC_C_ACST_L_2.tif'}
[2024-12-16 12:59:11,000] [74427] [MainThread] [INFO] (monailabel.endpoints.wsi_infer:109) - WSI Infer Request: {'model': 'segmentation_nuclei', 'image': 'MS073_SC_C_ACST_L_2', 'output': 'asap', 'level': 0, 'location': [0, 0], 'size': [1433, 1072], 'tile_size': [1024, 1024], 'min_poly_area': 30, 'foreground': [], 'background': [], 'max_workers': 1}
[2024-12-16 12:59:11,005] [74427] [MainThread] [ERROR] (uvicorn.error:408) - Exception in ASGI application
Traceback (most recent call last):
File "/opt/anaconda3/envs/monai/lib/python3.11/site-packages/uvicorn/protocols/http/h11_impl.py", line 403, in run_asgi
result = await app( # type: ignore[func-returns-value]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/anaconda3/envs/monai/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in call
return await self.app(scope, receive, send)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/anaconda3/envs/monai/lib/python3.11/site-packages/fastapi/applications.py", line 1054, in call
await super().call(scope, receive, send)
File "/opt/anaconda3/envs/monai/lib/python3.11/site-packages/starlette/applications.py", line 113, in call
await self.middleware_stack(scope, receive, send)
File "/opt/anaconda3/envs/monai/lib/python3.11/site-packages/starlette/middleware/errors.py", line 187, in call
raise exc
File "/opt/anaconda3/envs/monai/lib/python3.11/site-packages/starlette/middleware/errors.py", line 165, in call
await self.app(scope, receive, _send)
File "/opt/anaconda3/envs/monai/lib/python3.11/site-packages/starlette/middleware/cors.py", line 85, in call
await self.app(scope, receive, send)
File "/opt/anaconda3/envs/monai/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 62, in call
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "/opt/anaconda3/envs/monai/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/opt/anaconda3/envs/monai/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/opt/anaconda3/envs/monai/lib/python3.11/site-packages/starlette/routing.py", line 715, in call
await self.middleware_stack(scope, receive, send)
File "/opt/anaconda3/envs/monai/lib/python3.11/site-packages/starlette/routing.py", line 735, in app
await route.handle(scope, receive, send)
File "/opt/anaconda3/envs/monai/lib/python3.11/site-packages/starlette/routing.py", line 288, in handle
await self.app(scope, receive, send)
File "/opt/anaconda3/envs/monai/lib/python3.11/site-packages/starlette/routing.py", line 76, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "/opt/anaconda3/envs/monai/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/opt/anaconda3/envs/monai/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/opt/anaconda3/envs/monai/lib/python3.11/site-packages/starlette/routing.py", line 73, in app
response = await f(request)
^^^^^^^^^^^^^^^^
File "/opt/anaconda3/envs/monai/lib/python3.11/site-packages/fastapi/routing.py", line 301, in app
raw_response = await run_endpoint_function(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/anaconda3/envs/monai/lib/python3.11/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
return await dependant.call(**values)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/anaconda3/envs/monai/lib/python3.11/site-packages/monailabel/endpoints/wsi_infer.py", line 132, in api_run_wsi_inference
return run_wsi_inference(background_tasks, model, image, session_id, None, wsi, output)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/anaconda3/envs/monai/lib/python3.11/site-packages/monailabel/endpoints/wsi_infer.py", line 111, in run_wsi_inference
result = instance.infer_wsi(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/anaconda3/envs/monai/lib/python3.11/site-packages/monailabel/interfaces/app.py", line 643, in infer_wsi
infer_tasks = create_infer_wsi_tasks(request, image)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/anaconda3/envs/monai/lib/python3.11/site-packages/monailabel/interfaces/utils/wsi.py", line 44, in create_infer_wsi_tasks
with openslide.OpenSlide(image) as slide:
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/anaconda3/envs/monai/lib/python3.11/site-packages/openslide/init.py", line 207, in init
self._osr = lowlevel.open(filename)
^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/anaconda3/envs/monai/lib/python3.11/site-packages/openslide/lowlevel.py", line 258, in _check_open
raise OpenSlideUnsupportedFormatError("Unsupported or missing image file")
openslide.lowlevel.OpenSlideUnsupportedFormatError: Unsupported or missing image file

Can I not perform the segmentation on my .tif images?

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with monailabel/interfaces/utils/wsi.py and the wsi_infer.py call path shown in the traceback, focusing on the OpenSlide.OpenSlide input handling. Reproduce the failure with the reported .tif image and determine whether this TIFF should be accepted; done means the unsupported-or-missing-image failure is resolved or the supported input requirements are made clear.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
machine-learning
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.