TissueImageAnalytics / tiatoolbox

Computational Pathology Toolbox developed by TIA Centre, University of Warwick.
https://warwick.ac.uk/tia
Other
340 stars 71 forks source link

Error importing modules in tiatoolbox.models using Google Colab #765

Closed pbernabeup closed 6 months ago

pbernabeup commented 6 months ago

Description

Importing from tiatoolbox.models threw an error on Google Colab

What I Did

from tiatoolbox.models import IOSegmentorConfig, SemanticSegmentor

OSError                                   Traceback (most recent call last)
<ipython-input-8-da3f1cbb5a44> in <cell line: 1>()
----> 1 from tiatoolbox.models import IOSegmentorConfig, SemanticSegmentor

13 frames
/usr/local/lib/python3.10/dist-packages/tiatoolbox/models/__init__.py in <module>
      1 """Models package for the models implemented in tiatoolbox."""
----> 2 from tiatoolbox.models import architecture, dataset, engine, models_abc
      3 
      4 from .architecture.hovernet import HoVerNet
      5 from .architecture.hovernetplus import HoVerNetPlus

/usr/local/lib/python3.10/dist-packages/tiatoolbox/models/architecture/__init__.py in <module>
      9 
     10 from tiatoolbox import rcParam
---> 11 from tiatoolbox.models.dataset.classification import predefined_preproc_func
     12 from tiatoolbox.utils import download_data
     13 

/usr/local/lib/python3.10/dist-packages/tiatoolbox/models/dataset/__init__.py in <module>
      1 """Contains dataset functionality for use with models in tiatoolbox."""
      2 
----> 3 from tiatoolbox.models.dataset.classification import (
      4     PatchDataset,
      5     WSIPatchDataset,

/usr/local/lib/python3.10/dist-packages/tiatoolbox/models/dataset/classification.py in <module>
     11 from tiatoolbox import logger
     12 from tiatoolbox.models.dataset import dataset_abc
---> 13 from tiatoolbox.tools.patchextraction import PatchExtractor
     14 from tiatoolbox.utils import imread
     15 from tiatoolbox.wsicore.wsimeta import WSIMeta

/usr/local/lib/python3.10/dist-packages/tiatoolbox/tools/__init__.py in <module>
      1 """This package contains various tools for working with WSIs."""
----> 2 from tiatoolbox.tools import (
      3     graph,
      4     patchextraction,
      5     pyramid,

/usr/local/lib/python3.10/dist-packages/tiatoolbox/tools/patchextraction.py in <module>
     10 from tiatoolbox.utils import misc
     11 from tiatoolbox.utils.exceptions import MethodNotSupportedError
---> 12 from tiatoolbox.wsicore import wsireader
     13 
     14 if TYPE_CHECKING:  # pragma: no cover

/usr/local/lib/python3.10/dist-packages/tiatoolbox/wsicore/__init__.py in <module>
      1 """Package to read whole slide images."""
----> 2 from tiatoolbox.wsicore import metadata, wsimeta, wsireader
      3 
      4 from .wsimeta import WSIMeta
      5 from .wsireader import WSIReader

/usr/local/lib/python3.10/dist-packages/tiatoolbox/wsicore/wsireader.py in <module>
     14 
     15 import numpy as np
---> 16 import openslide
     17 import pandas as pd
     18 import tifffile

/usr/local/lib/python3.10/dist-packages/openslide/__init__.py in <module>
     29 from PIL import Image, ImageCms
     30 
---> 31 from openslide import lowlevel
     32 
     33 # For the benefit of library users

/usr/local/lib/python3.10/dist-packages/openslide/lowlevel.py in <module>
     90 
     91 
---> 92 _lib = _load_library()
     93 
     94 

/usr/local/lib/python3.10/dist-packages/openslide/lowlevel.py in _load_library()
     87             return cdll.LoadLibrary(lib)
     88     else:
---> 89         return try_load(['libopenslide.so.1', 'libopenslide.so.0'])
     90 
     91 

/usr/local/lib/python3.10/dist-packages/openslide/lowlevel.py in try_load(names)
     56         for name in names:
     57             try:
---> 58                 return cdll.LoadLibrary(name)
     59             except OSError:
     60                 if name == names[-1]:

/usr/lib/python3.10/ctypes/__init__.py in LoadLibrary(self, name)
    450 
    451     def LoadLibrary(self, name):
--> 452         return self._dlltype(name)
    453 
    454     __class_getitem__ = classmethod(_types.GenericAlias)

/usr/lib/python3.10/ctypes/__init__.py in __init__(self, name, mode, handle, use_errno, use_last_error, winmode)
    372 
    373         if handle is None:
--> 374             self._handle = _dlopen(self._name, mode)
    375         else:
    376             self._handle = handle

OSError: libopenslide.so.0: cannot open shared object file: No such file or directory

I managed to solve the error by installing openslide-tools:

!apt-get install -y openslide-tools

I'm not sure if this is a problem of the library or it's colab's fault

Abdol commented 6 months ago

Thank you @pbernabeup. Yes, you need to install the prerequisites, which includes openslide-tools, before installing the toolbox. More details can be found here.