Coverage for tests/images/test_openslide_server.py: 100%
54 statements
« prev ^ index » next coverage.py v7.6.10, created at 2025-01-31 11:24 +0000
« prev ^ index » next coverage.py v7.6.10, created at 2025-01-31 11:24 +0000
1import numpy as np
2from qubalab.images.openslide_server import OpenSlideServer
3from qubalab.images.region_2d import Region2D
4from qubalab.images.metadata.pixel_calibration import PixelCalibration, PixelLength
5from ..res import multi_resolution_uint8_3channels
8def test_image_name():
9 openslide_server = OpenSlideServer(multi_resolution_uint8_3channels.get_path())
11 name = openslide_server.metadata.name
13 assert name == multi_resolution_uint8_3channels.get_name()
15 openslide_server.close()
18def test_image_shapes():
19 openslide_server = OpenSlideServer(multi_resolution_uint8_3channels.get_path())
21 shapes = openslide_server.metadata.shapes
23 # only the full resolution can be detected
24 assert shapes[0] == multi_resolution_uint8_3channels.get_shapes()[0]
26 openslide_server.close()
30def test_is_rgb():
31 openslide_server = OpenSlideServer(multi_resolution_uint8_3channels.get_path())
33 is_rgb = openslide_server.metadata.is_rgb
35 assert is_rgb
37 openslide_server.close()
40def test_image_dtype():
41 openslide_server = OpenSlideServer(multi_resolution_uint8_3channels.get_path())
43 dtype = openslide_server.metadata.dtype
45 assert dtype == multi_resolution_uint8_3channels.get_dtype()
47 openslide_server.close()
50def test_number_of_channels_when_alpha_stripped():
51 openslide_server = OpenSlideServer(multi_resolution_uint8_3channels.get_path())
53 n_channels = openslide_server.metadata.n_channels
55 assert n_channels == 3
57 openslide_server.close()
60def test_number_of_channels_when_alpha_not_stripped():
61 openslide_server = OpenSlideServer(multi_resolution_uint8_3channels.get_path(), strip_alpha=False)
63 n_channels = openslide_server.metadata.n_channels
65 assert n_channels == 4
67 openslide_server.close()
70def test_number_of_channels_when_single_channel():
71 openslide_server = OpenSlideServer(multi_resolution_uint8_3channels.get_path(), single_channel=True)
73 n_channels = openslide_server.metadata.n_channels
75 assert n_channels == 1
77 openslide_server.close()
80def test_downsamples():
81 openslide_server = OpenSlideServer(multi_resolution_uint8_3channels.get_path())
83 downsamples = openslide_server.metadata.downsamples
85 # only the full resolution can be detected
86 assert downsamples[0] == multi_resolution_uint8_3channels.get_downsamples()[0]
88 openslide_server.close()
91def test_read_full_resolution_image():
92 level = 0
93 full_resolution = multi_resolution_uint8_3channels.get_shapes()[level]
94 downsample = multi_resolution_uint8_3channels.get_downsamples()[level]
95 openslide_server = OpenSlideServer(multi_resolution_uint8_3channels.get_path())
96 expected_pixels = np.array(
97 [[[multi_resolution_uint8_3channels.get_pixel_value(downsample, x, y, c)
98 for x in range(full_resolution.x)]
99 for y in range(full_resolution.y)]
100 for c in range(full_resolution.c)],
101 multi_resolution_uint8_3channels.get_dtype()
102 )
104 image = openslide_server.read_region(
105 downsample,
106 Region2D(width=openslide_server.metadata.width, height=openslide_server.metadata.height)
107 )
109 np.testing.assert_array_equal(image, expected_pixels)
111 openslide_server.close()