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

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 

6 

7 

8def test_image_name(): 

9 openslide_server = OpenSlideServer(multi_resolution_uint8_3channels.get_path()) 

10 

11 name = openslide_server.metadata.name 

12 

13 assert name == multi_resolution_uint8_3channels.get_name() 

14 

15 openslide_server.close() 

16 

17 

18def test_image_shapes(): 

19 openslide_server = OpenSlideServer(multi_resolution_uint8_3channels.get_path()) 

20 

21 shapes = openslide_server.metadata.shapes 

22 

23 # only the full resolution can be detected 

24 assert shapes[0] == multi_resolution_uint8_3channels.get_shapes()[0] 

25 

26 openslide_server.close() 

27 

28 

29 

30def test_is_rgb(): 

31 openslide_server = OpenSlideServer(multi_resolution_uint8_3channels.get_path()) 

32 

33 is_rgb = openslide_server.metadata.is_rgb 

34 

35 assert is_rgb 

36 

37 openslide_server.close() 

38 

39 

40def test_image_dtype(): 

41 openslide_server = OpenSlideServer(multi_resolution_uint8_3channels.get_path()) 

42 

43 dtype = openslide_server.metadata.dtype 

44 

45 assert dtype == multi_resolution_uint8_3channels.get_dtype() 

46 

47 openslide_server.close() 

48 

49 

50def test_number_of_channels_when_alpha_stripped(): 

51 openslide_server = OpenSlideServer(multi_resolution_uint8_3channels.get_path()) 

52 

53 n_channels = openslide_server.metadata.n_channels 

54 

55 assert n_channels == 3 

56 

57 openslide_server.close() 

58 

59 

60def test_number_of_channels_when_alpha_not_stripped(): 

61 openslide_server = OpenSlideServer(multi_resolution_uint8_3channels.get_path(), strip_alpha=False) 

62 

63 n_channels = openslide_server.metadata.n_channels 

64 

65 assert n_channels == 4 

66 

67 openslide_server.close() 

68 

69 

70def test_number_of_channels_when_single_channel(): 

71 openslide_server = OpenSlideServer(multi_resolution_uint8_3channels.get_path(), single_channel=True) 

72 

73 n_channels = openslide_server.metadata.n_channels 

74 

75 assert n_channels == 1 

76 

77 openslide_server.close() 

78 

79 

80def test_downsamples(): 

81 openslide_server = OpenSlideServer(multi_resolution_uint8_3channels.get_path()) 

82 

83 downsamples = openslide_server.metadata.downsamples 

84 

85 # only the full resolution can be detected 

86 assert downsamples[0] == multi_resolution_uint8_3channels.get_downsamples()[0] 

87 

88 openslide_server.close() 

89 

90 

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 ) 

103 

104 image = openslide_server.read_region( 

105 downsample, 

106 Region2D(width=openslide_server.metadata.width, height=openslide_server.metadata.height) 

107 ) 

108 

109 np.testing.assert_array_equal(image, expected_pixels) 

110 

111 openslide_server.close()