跳转到主要内容

一个用于使用openslide和dask懒加载多尺度全切片图像的插件

项目描述

napari-lazy-openslide

License PyPI Python Version tests

一个实验性的插件,用于使用openslide和dask懒加载多尺度全切片tiff图像。


napari插件是用Cookiecutter@naparicookiecutter-napari-plugin模板生成的。

安装

步骤1.) 确保您已安装OpenSlide。下载说明在此

注意:在macOS上通过Homebrew安装最简单: brew install openslide。最新的多平台二进制文件也通过conda提供: conda install -c sdvillal openslide-python

步骤2.) 通过pip安装napari-lazy-openslide

pip install napari-lazy-openslide

使用

Napari插件

$ napari tumor_004.tif

通过pip安装此软件包后,插件应该会被napari识别。该插件尝试读取由openslide识别的、多尺度的图像格式(openslide.OpenSlide.level_count > 1)。

需要注意的是,napari-lazy-openslide是实验性的,并且主要与CAMELYON16CAMELYON17数据集进行了测试,这些数据集可以从此处下载。

Interactive deep zoom of whole-slide image

使用Zarr和Dask与OpenSlideStore

OpenSlideStore类将openslide.OpenSlide对象包装为有效的Zarr存储。底层的openslide图像金字塔被转换为Zarr多尺度扩展,其中金字塔的每一层都是一个独立的3D zarr.Array,形状为(y, x, 4)

import dask.array as da
import zarr

from napari_lazy_openslide import OpenSlideStore

store = OpenSlideStore('tumor_004.tif')
grp = zarr.open(store, mode="r")

# The OpenSlideStore implements the multiscales extension
# https://forum.image.sc/t/multiscale-arrays-v0-1/37930
datasets = grp.attrs["multiscales"][0]["datasets"]

pyramid = [grp.get(d["path"]) for d in datasets]
print(pyramid)
# [
#   <zarr.core.Array '/0' (23705, 29879, 4) uint8 read-only>,
#   <zarr.core.Array '/1' (5926, 7469, 4) uint8 read-only>,
#   <zarr.core.Array '/2' (2963, 3734, 4) uint8 read-only>,
# ]

pyramid = [da.from_zarr(store, component=d["path"]) for d in datasets]
print(pyramid)
# [
#   dask.array<from-zarr, shape=(23705, 29879, 4), dtype=uint8, chunksize=(512, 512, 4), chunktype=numpy.ndarray>,
#   dask.array<from-zarr, shape=(5926, 7469, 4), dtype=uint8, chunksize=(512, 512, 4), chunktype=numpy.ndarray>,
#   dask.array<from-zarr, shape=(2963, 3734, 4), dtype=uint8, chunksize=(512, 512, 4), chunktype=numpy.ndarray>,
# ]

# Now you can use numpy-like indexing with openslide, reading data into memory lazily!
low_res = pyramid[-1][:]
region = pyramid[0][y_start:y_end, x_start:x_end]

贡献

欢迎贡献。可以使用tox运行测试,请确保在提交拉取请求之前,覆盖率至少保持不变。

问题

如果您遇到任何问题,请提交一个问题,并附上详细的描述。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

napari-lazy-openslide-0.3.0.tar.gz (9.4 MB 查看哈希值)

上传时间

构建分布

napari_lazy_openslide-0.3.0-py3-none-any.whl (8.2 kB 查看哈希值)

上传时间 Python 3

支持