Browse Source

added class VolumeFile

Fabian Peter Hammerle 4 years ago
parent
commit
ca343ba6cf
2 changed files with 33 additions and 14 deletions
  1. 12 9
      freesurfer_volume_reader/__init__.py
  2. 21 5
      tests/init_test.py

+ 12 - 9
freesurfer_volume_reader/__init__.py

@@ -36,7 +36,7 @@ def remove_group_names_from_regex(regex_pattern: str) -> str:
     return re.sub(r'\?P<.+?>', '', regex_pattern)
 
 
-class SubfieldVolumeFile(metaclass=abc.ABCMeta):
+class VolumeFile(metaclass=abc.ABCMeta):
 
     FILENAME_REGEX = NotImplemented
 
@@ -45,14 +45,6 @@ class SubfieldVolumeFile(metaclass=abc.ABCMeta):
     def absolute_path(self):
         raise NotImplementedError()
 
-    @abc.abstractmethod
-    def read_volumes_mm3(self) -> typing.Dict[str, float]:
-        raise NotImplementedError()
-
-    @abc.abstractmethod
-    def read_volumes_dataframe(self) -> pandas.DataFrame:
-        raise NotImplementedError()
-
     @classmethod
     def find(cls, root_dir_path: str,
              filename_regex: typing.Optional[typing.Pattern] = None,
@@ -62,3 +54,14 @@ class SubfieldVolumeFile(metaclass=abc.ABCMeta):
         for dirpath, _, filenames in os.walk(root_dir_path):
             for filename in filter(filename_regex.search, filenames):
                 yield cls(path=os.path.join(dirpath, filename))
+
+
+class SubfieldVolumeFile(VolumeFile):
+
+    @abc.abstractmethod
+    def read_volumes_mm3(self) -> typing.Dict[str, float]:
+        raise NotImplementedError()
+
+    @abc.abstractmethod
+    def read_volumes_dataframe(self) -> pandas.DataFrame:
+        raise NotImplementedError()

+ 21 - 5
tests/init_test.py

@@ -1,7 +1,8 @@
 import pytest
 
-from freesurfer_volume_reader import __version__, parse_version_string, \
-                                     remove_group_names_from_regex, SubfieldVolumeFile
+from freesurfer_volume_reader import \
+    __version__, parse_version_string, remove_group_names_from_regex, \
+    VolumeFile, SubfieldVolumeFile
 
 
 def test_module_version():
@@ -37,7 +38,22 @@ def test_remove_group_names_from_regex(source_pattern, expected_pattern):
     assert expected_pattern == remove_group_names_from_regex(regex_pattern=source_pattern)
 
 
-class DummyVolumeFile(SubfieldVolumeFile):
+class DummyVolumeFile(VolumeFile):
+
+    # pylint: disable=useless-super-delegation
+
+    @property
+    def absolute_path(self):
+        return super().absolute_path
+
+
+def test_volume_file_abstractmethod():
+    volume_file = DummyVolumeFile()
+    with pytest.raises(NotImplementedError):
+        assert volume_file.absolute_path
+
+
+class DummySubfieldVolumeFile(SubfieldVolumeFile):
 
     # pylint: disable=useless-super-delegation
 
@@ -52,8 +68,8 @@ class DummyVolumeFile(SubfieldVolumeFile):
         return super().read_volumes_dataframe()
 
 
-def test_volume_file_abstractmethod():
-    volume_file = DummyVolumeFile()
+def test_subfield_volume_file_abstractmethod():
+    volume_file = DummySubfieldVolumeFile()
     with pytest.raises(NotImplementedError):
         assert volume_file.absolute_path
     with pytest.raises(NotImplementedError):