1
|
|
|
import torchio as tio |
2
|
|
|
from ...utils import TorchioTestCase |
3
|
|
|
|
4
|
|
|
|
5
|
|
|
class TestMask(TorchioTestCase): |
6
|
|
|
"""Tests for :class:`tio.Mask` class.""" |
7
|
|
|
|
8
|
|
|
def test_single_mask(self): |
9
|
|
|
negated_mask = self.sample_subject.label.data.logical_not() |
10
|
|
|
masked_voxel_indices = negated_mask.nonzero(as_tuple=True) |
11
|
|
|
transform = tio.Mask(masking_method='label') |
12
|
|
|
transformed = transform(self.sample_subject) |
13
|
|
|
assert (transformed.t1.data[masked_voxel_indices] == 0).all() |
14
|
|
|
|
15
|
|
|
def test_single_mask_nonzero_background(self): |
16
|
|
|
background_value = 314159 |
17
|
|
|
negated_mask = self.sample_subject.label.data.logical_not() |
18
|
|
|
masked_voxel_indices = negated_mask.nonzero(as_tuple=True) |
19
|
|
|
|
20
|
|
|
transform = tio.Mask(masking_method='label', |
21
|
|
|
outside_value=background_value) |
22
|
|
|
transformed = transform(self.sample_subject) |
23
|
|
|
|
24
|
|
|
assert (transformed.t1.data[masked_voxel_indices] |
25
|
|
|
== background_value).all() |
26
|
|
|
|
27
|
|
|
def test_mask_specified_label(self): |
28
|
|
|
mask_label = [1] |
29
|
|
|
negated_mask = self.sample_subject.label.data.logical_not() |
30
|
|
|
masked_voxel_indices = negated_mask.nonzero(as_tuple=True) |
31
|
|
|
|
32
|
|
|
transform = tio.Mask(masking_method='label', labels=mask_label) |
33
|
|
|
transformed = transform(self.sample_subject) |
34
|
|
|
|
35
|
|
|
assert (transformed.t1.data[masked_voxel_indices] == 0).all() |
36
|
|
|
|
37
|
|
|
def test_mask_example(self): |
38
|
|
|
subject = tio.datasets.Colin27() |
39
|
|
|
negated_mask = subject.brain.data.logical_not() |
40
|
|
|
masked_voxel_indices = negated_mask.nonzero(as_tuple=True) |
41
|
|
|
|
42
|
|
|
transform = tio.Mask(masking_method='brain') |
43
|
|
|
transformed = transform(subject) |
44
|
|
|
|
45
|
|
|
assert (transformed.t1.data[masked_voxel_indices] == 0).all() |
46
|
|
|
|