Открытие пирамидальных изображений с помощью Google Collab: large_image getTileSource не работает с Google Collab (для ndpi недоступен источник листов)

Я использовал все эти команды, чтобы убедиться, что у меня есть все необходимое для загрузки пирамидальных изображений dpi в Google Collab, но пока безуспешно.

!pip install large_image
!apt update && apt install -y openslide-tools
!pip install openslide-python
!pip install libtiff openslide_python pyvips gdal mapnik pyproj glymur -f https://girder.github.io/large_image_wheels

Я получаю следующую ошибку:

---------------------------------------------------------------------------
TileSourceException                       Traceback (most recent call last)
<ipython-input-23-0584be72095d> in <module>()
     27 print(os.listdir(ndpi_dir))
     28 print(target_filename)
---> 29 ts = large_image.getTileSource(target_filename)
     30 
     31 # print(ts.getMetadata())

1 frames
/usr/local/lib/python3.6/dist-packages/large_image/tilesource/__init__.py in getTileSourceFromDict(availableSources, pathOrUri, *args, **kwargs)
     65         if availableSources[sourceName].canRead(sourceObj, *args, **kwargs):
     66             return availableSources[sourceName](sourceObj, *args, **kwargs)
---> 67     raise TileSourceException('No available tilesource for %s' % pathOrUri)
     68 
     69 

TileSourceException: No available c for ndpi_images/Li88TDCLAMP.ndpi

Я убедился, что файл есть, он нормально загружается на других платформах с помощью той же команды, так что это не файл.

Как я могу решить эту проблему?

Благодарность

1 ответ

Оказывается (по крайней мере, сегодня, а может и не тогда, когда был опубликован исходный вопрос), вы можете попросить Google CoLab проксировать порт. Сlarge_image >= 1.23.5, есть несколько удобных функций, которые помогут в этом. Здесь есть образец блокнота: https://github.com/girder/large_image/blob/master/docs/large_image_examples.ipynb .

Основной метод: учитывая локальный файлsample.npdi:

      # The find-links pulls from some non-official pre-built wheels for openslide, etc.
!pip install large_image[all] --find-links https://girder.github.io/large_image_wheels
!pip install ipyleaflet

import large_image

ts = large_image.open('sample.ndpi')

import importlib.util

if importlib.util.find_spec('google.colab'):
    # colab intercepts localhost
    large_image.tilesource.jupyter.IPyLeafletMixin.JUPYTER_PROXY = 'https://localhost'
else:
    # JupyterLab proxies from its own host
    large_image.tilesource.jupyter.IPyLeafletMixin.JUPYTER_PROXY = True

# Look at our tile source; it will be shown as an ipyleaflet map
ts

Внутри есть много работы по получению слоя тайлов в пиксельных координатах в iPyLeaflet (и, по крайней мере, сейчас я только выяснил, как располагать пиксельные координаты снизу вверх (y, x), а не сверху вниз (x,y), чего и следовало ожидать.

Другие вопросы по тегам