Passed
Pull Request — master (#625)
by
unknown
01:17
created

tests.transforms.preprocessing.test_projection   A

Complexity

Total Complexity 15

Size/Duplication

Total Lines 61
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 15
eloc 47
dl 0
loc 61
rs 10
c 0
b 0
f 0

11 Methods

Rating   Name   Duplication   Size   Complexity  
A TestProjection.test_q_is_invalid() 0 3 2
A TestProjection.test_invalid_axis_name() 0 4 2
A TestProjection.test_default_projection() 0 5 1
A TestProjection.test_full_slabs_only() 0 10 1
A TestProjection.test_projection_type_invalid_input() 0 3 2
A TestProjection.test_q_is_required() 0 3 2
A TestProjection.test_quantile_intensity_projection() 0 3 1
A TestProjection.test_minimum_intensity_projection() 0 3 1
A TestProjection.test_maximum_intensity_projection() 0 3 1
A TestProjection.test_mean_intensity_projection() 0 3 1
A TestProjection.test_median_intensity_projection() 0 3 1
1
import torchio as tio
2
from ...utils import TorchioTestCase
3
4
5
class TestProjection(TorchioTestCase):
6
    """Tests for :class:`tio.Projection` class."""
7
8
    def test_default_projection(self):
9
        transform = tio.Projection('S')
10
        transformed = transform(self.sample_subject)
11
        axis_index = self.sample_subject.t1.axis_name_to_index('S')
12
        self.assertEqual(transformed.t1.shape[axis_index], 1)
13
14
    def test_invalid_axis_name(self):
15
        with self.assertRaises(ValueError):
16
            transform = tio.Projection('123')
17
            transform(self.sample_subject)
18
19
    def test_projection_type_invalid_input(self):
20
        with self.assertRaises(ValueError):
21
            tio.Projection('S', projection_type='bad')
22
23
    def test_q_is_required(self):
24
        with self.assertRaises(ValueError):
25
            tio.Projection('S', projection_type='quantile')
26
27
    def test_q_is_invalid(self):
28
        with self.assertRaises(ValueError):
29
            tio.Projection('S', projection_type='quantile', q=2)
30
31
    def test_full_slabs_only(self):
32
        sub = tio.datasets.Colin27()
33
        transform1 = tio.Projection('S', slab_thickness=100, stride=100)
34
        transform2 = tio.Projection(
35
            'S', slab_thickness=100, stride=100, full_slabs_only=False)
36
        transformed1 = transform1(sub)
37
        transformed2 = transform2(sub)
38
        axis_index = sub.t1.axis_name_to_index('S')
39
        self.assertEqual(transformed1.t1.shape[axis_index], 1)
40
        self.assertEqual(transformed2.t1.shape[axis_index], 2)
41
42
    def test_maximum_intensity_projection(self):
43
        transform = tio.Projection('S', projection_type='max')
44
        transform(self.sample_subject)
45
46
    def test_minimum_intensity_projection(self):
47
        transform = tio.Projection('S', projection_type='min')
48
        transform(self.sample_subject)
49
50
    def test_mean_intensity_projection(self):
51
        transform = tio.Projection('S', projection_type='mean')
52
        transform(self.sample_subject)
53
54
    def test_median_intensity_projection(self):
55
        transform = tio.Projection('S', projection_type='median')
56
        transform(self.sample_subject)
57
58
    def test_quantile_intensity_projection(self):
59
        transform = tio.Projection('S', projection_type='quantile', q=0.75)
60
        transform(self.sample_subject)
61