-
Notifications
You must be signed in to change notification settings - Fork 86
/
Copy pathtest_wsimeta.py
104 lines (79 loc) · 2.97 KB
/
test_wsimeta.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
"""Test for obtaining whole-slide image metadata."""
from pathlib import Path
import numpy as np
import pytest
from tiatoolbox.wsicore import WSIMeta, wsimeta, wsireader
def test_wsimeta_init_fail() -> None:
"""Test incorrect init for WSIMeta raises TypeError."""
with pytest.raises(TypeError):
wsimeta.WSIMeta(slide_dimensions=(None, None), axes="YXS")
@pytest.mark.filterwarnings("ignore")
def test_wsimeta_validate_fail() -> None:
"""Test failure cases for WSIMeta validation."""
meta = wsimeta.WSIMeta(slide_dimensions=(512, 512), axes="YXS", level_dimensions=[])
assert meta.validate() is False
meta = wsimeta.WSIMeta(
slide_dimensions=(512, 512),
axes="YXS",
level_dimensions=[(512, 512), (256, 256)],
level_count=3,
)
assert meta.validate() is False
meta = wsimeta.WSIMeta(
slide_dimensions=(512, 512),
axes="YXS",
level_downsamples=[1, 2],
)
assert meta.validate() is False
meta = wsimeta.WSIMeta(
slide_dimensions=(512, 512),
axes="YXS",
level_downsamples=[1, 2],
)
assert meta.validate() is False
meta = wsimeta.WSIMeta(slide_dimensions=(512, 512), axes="YXS")
meta.level_dimensions = None
assert meta.validate() is False
meta = wsimeta.WSIMeta(slide_dimensions=(512, 512), axes="YXS")
meta.level_downsamples = None
assert meta.validate() is False
@pytest.mark.filterwarnings("ignore")
def test_wsimeta_validate_invalid_axes() -> None:
"""Test failure cases for WSIMeta validation with invalid axes."""
meta = wsimeta.WSIMeta(slide_dimensions=(512, 512), axes="YXSF")
assert meta.validate() is False
@pytest.mark.filterwarnings("ignore")
def test_wsimeta_validate_pass() -> None:
"""Test WSIMeta validation."""
meta = wsimeta.WSIMeta(slide_dimensions=(512, 512), axes="YXS")
assert meta.validate()
# Test with top-level import
meta = WSIMeta(
slide_dimensions=(512, 512),
axes="YXS",
level_dimensions=[(512, 512), (256, 256)],
level_downsamples=[1, 2],
)
assert meta.validate()
def test_wsimeta_openslidewsireader_ndpi(sample_ndpi: Path) -> None:
"""Test OpenSlide reader metadata for ndpi."""
wsi_obj = wsireader.OpenSlideWSIReader(sample_ndpi)
meta = wsi_obj.info
assert meta.validate()
def test_wsimeta_openslidewsireader_svs(sample_svs: Path) -> None:
"""Test OpenSlide reader metadata for svs."""
wsi_obj = wsireader.OpenSlideWSIReader(sample_svs)
meta = wsi_obj.info
assert meta.validate()
meta.mpp = None
m = meta.as_dict()
assert isinstance(m["mpp"], tuple)
def test_wsimeta_setter(sample_svs: Path) -> None:
"""Test setter for metadata."""
wsi = wsireader.OpenSlideWSIReader(sample_svs)
meta = wsi.info
assert not np.array_equal(meta.mpp, np.array([1, 1]))
meta.mpp = np.array([1, 1])
wsi.info = meta
assert meta.validate()
assert np.array_equal(wsi.info.mpp, np.array([1, 1]))