Passed
Push — master ( 178654...c7af60 )
by Fernando
01:30
created

torchio.datasets.mni.sheep.Sheep.__init__()   B

Complexity

Conditions 5

Size

Total Lines 23
Code Lines 22

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 22
dl 0
loc 23
rs 8.8853
c 0
b 0
f 0
cc 5
nop 1
1
import shutil
2
import urllib.parse
3
4
from ...data import ScalarImage
5
from ...utils import compress
6
from ...download import download_and_extract_archive
7
from .mni import SubjectMNI
8
9
10
class Sheep(SubjectMNI):
11
12
    def __init__(self):
13
        self.name = 'NIFTI_ovine_05mm'
14
        self.url_dir = urllib.parse.urljoin(self.url_base, 'sheep/')
15
        self.filename = f'{self.name}.zip'
16
        self.url = urllib.parse.urljoin(self.url_dir, self.filename)
17
        t1_nii_path = self.download_root / 'ovine_model_05.nii'
18
        t1_niigz_path = self.download_root / 'ovine_model_05.nii.gz'
19
        if not self.download_root.is_dir():
20
            download_and_extract_archive(
21
                self.url,
22
                download_root=self.download_root,
23
                filename=self.filename,
24
            )
25
            shutil.rmtree(self.download_root / 'masks')
26
            for path in self.download_root.iterdir():
27
                if path == t1_nii_path:
28
                    compress(t1_nii_path, t1_niigz_path)
29
                path.unlink()
30
        try:
31
            subject_dict = {'t1': ScalarImage(t1_niigz_path)}
32
        except FileNotFoundError:  # for backward compatibility
33
            subject_dict = {'t1': ScalarImage(t1_nii_path)}
34
        super().__init__(subject_dict)
35