Passed
Pull Request — master (#516)
by Fernando
01:31
created

TestUtils.test_add_images_from_batch()   A

Complexity

Conditions 1

Size

Total Lines 5
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 5
dl 0
loc 5
rs 10
c 0
b 0
f 0
cc 1
nop 1
1
import copy
2
import torch
3
import torchio as tio
4
from .utils import TorchioTestCase
5
6
7
class TestUtils(TorchioTestCase):
8
    """Tests for `utils` module."""
9
10
    def test_to_tuple(self):
11
        assert tio.utils.to_tuple(1) == (1,)
12
        assert tio.utils.to_tuple((1,)) == (1,)
13
        assert tio.utils.to_tuple(1, length=3) == (1, 1, 1)
14
        assert tio.utils.to_tuple((1, 2)) == (1, 2)
15
        assert tio.utils.to_tuple((1, 2), length=3) == (1, 2)
16
        assert tio.utils.to_tuple([1, 2], length=3) == (1, 2)
17
18
    def test_get_stem(self):
19
        assert tio.utils.get_stem('/home/image.nii.gz') == 'image'
20
        assert tio.utils.get_stem('/home/image.nii') == 'image'
21
        assert tio.utils.get_stem('/home/image.nrrd') == 'image'
22
23
    def test_guess_type(self):
24
        assert tio.utils.guess_type('None') is None
25
        assert isinstance(tio.utils.guess_type('1'), int)
26
        assert isinstance(tio.utils.guess_type('1.5'), float)
27
        assert isinstance(tio.utils.guess_type('(1, 3, 5)'), tuple)
28
        assert isinstance(tio.utils.guess_type('(1,3,5)'), tuple)
29
        assert isinstance(tio.utils.guess_type('[1,3,5]'), list)
30
        assert isinstance(tio.utils.guess_type('test'), str)
31
32
    def test_apply_transform_to_file(self):
33
        transform = tio.RandomFlip()
34
        tio.utils.apply_transform_to_file(
35
            self.get_image_path('input'),
36
            transform,
37
            self.get_image_path('output'),
38
            verbose=True,
39
        )
40
41
    def test_subjects_from_batch(self):
42
        dataset = tio.SubjectsDataset(4 * [self.sample_subject])
43
        loader = torch.utils.data.DataLoader(dataset, batch_size=4)
44
        batch = tio.utils.get_first_item(loader)
45
        subjects = tio.utils.get_subjects_from_batch(batch)
46
        assert isinstance(subjects[0], tio.Subject)
47
48
    def test_add_images_from_batch(self):
49
        subject = copy.deepcopy(self.sample_subject)
50
        subjects = 4 * [subject]
51
        preds = torch.rand(4, *subject.shape)
52
        tio.utils.add_images_from_batch(subjects, preds)
53
54
    def test_empty_batch(self):
55
        with self.assertRaises(RuntimeError):
56
            tio.utils.get_batch_images_and_size({})
57