SBU-BMI / wsinfer

🔥 🚀 Blazingly fast pipeline for patch-based classification in whole slide images
https://wsinfer.readthedocs.io
Apache License 2.0
56 stars 9 forks source link

add mpp calculation in openslide using tiff resolution tags #165

Closed kaczmarj closed 1 year ago

kaczmarj commented 1 year ago

this will be useful to bypass tifffile / tiffslide on images that raise an error (traceback below). i am not sure why this error is being raised...

Traceback (most recent call last):
  File "/home/jkaczmar/mambaforge/envs/wsinfer/lib/python3.10/site-packages/wsinfer/patchlib/__init__.py", line 357, in segment_and_patch_directory_of_slides
    segment_and_patch_one_slide(
  File "/home/jkaczmar/mambaforge/envs/wsinfer/lib/python3.10/site-packages/wsinfer/patchlib/__init__.py", line 106, in segment_and_patch_one_slide
    mpp = get_avg_mpp(slide_path)
  File "/home/jkaczmar/mambaforge/envs/wsinfer/lib/python3.10/site-packages/wsinfer/wsi.py", line 217, in get_avg_mpp
    mppx, mppy = _get_mpp_tiffslide(slide_path)
  File "/home/jkaczmar/mambaforge/envs/wsinfer/lib/python3.10/site-packages/wsinfer/wsi.py", line 145, in _get_mpp_tiffslide
    tiffslide.PROPERTY_NAME_MPP_X in slide.properties
  File "/home/jkaczmar/mambaforge/envs/wsinfer/lib/python3.10/functools.py", line 981, in __get__
    val = self.func(instance)
  File "/home/jkaczmar/mambaforge/envs/wsinfer/lib/python3.10/site-packages/tiffslide/tiffslide.py", line 233, in properties
    return _PropertyParser(self._tifffile).parse()
  File "/home/jkaczmar/mambaforge/envs/wsinfer/lib/python3.10/site-packages/tiffslide/tiffslide.py", line 750, in parse
    return getattr(self, f"parse_{fmt}")()  # type: ignore
  File "/home/jkaczmar/mambaforge/envs/wsinfer/lib/python3.10/site-packages/tiffslide/tiffslide.py", line 836, in parse_generic_tiff
    series0 = self._tf.series[0]
  File "/home/jkaczmar/mambaforge/envs/wsinfer/lib/python3.10/functools.py", line 981, in __get__
    val = self.func(instance)
  File "/home/jkaczmar/mambaforge/envs/wsinfer/lib/python3.10/site-packages/tifffile/tifffile.py", line 4444, in series
    series = getattr(self, '_series_' + kind)()
  File "/home/jkaczmar/mambaforge/envs/wsinfer/lib/python3.10/site-packages/tifffile/tifffile.py", line 4814, in _series_imagej
    page_list = pages[:]
  File "/home/jkaczmar/mambaforge/envs/wsinfer/lib/python3.10/site-packages/tifffile/tifffile.py", line 7613, in __getitem__
    return [getitem(i) for i in range(*key.indices(len(pages)))]
  File "/home/jkaczmar/mambaforge/envs/wsinfer/lib/python3.10/site-packages/tifffile/tifffile.py", line 7613, in <listcomp>
    return [getitem(i) for i in range(*key.indices(len(pages)))]
  File "/home/jkaczmar/mambaforge/envs/wsinfer/lib/python3.10/site-packages/tifffile/tifffile.py", line 7579, in _getitem
    page = tiffpage(self.parent, index=pageindex, keyframe=self._keyframe)
  File "/home/jkaczmar/mambaforge/envs/wsinfer/lib/python3.10/site-packages/tifffile/tifffile.py", line 10247, in __init__
    raise RuntimeError('incompatible keyframe')
RuntimeError: incompatible keyframe