Browse Source

refactor to fix pylint's unspecified-encoding warnings

Fabian Peter Hammerle 2 years ago
parent
commit
0940b78ce1
2 changed files with 35 additions and 38 deletions
  1. 24 26
      freesurfer_volume_reader/ashs.py
  2. 11 12
      freesurfer_volume_reader/freesurfer.py

+ 24 - 26
freesurfer_volume_reader/ashs.py

@@ -18,7 +18,7 @@ https://sites.google.com/site/hipposubfields/home
 >>>     print(volume_file.read_volume_series())
 """
 
-import os
+import pathlib
 import re
 import typing
 
@@ -32,21 +32,20 @@ class IntracranialVolumeFile(freesurfer_volume_reader.VolumeFile):
     FILENAME_REGEX = re.compile(r"^(?P<s>\w+)_icv.txt$")
 
     def __init__(self, path: str):
-        self._absolute_path = os.path.abspath(path)
-        filename_match = self.FILENAME_REGEX.match(os.path.basename(path))
+        self._absolute_path = pathlib.Path(path).absolute()
+        filename_match = self.FILENAME_REGEX.match(self._absolute_path.name)
         assert filename_match, self._absolute_path
         self.subject = filename_match.groupdict()["s"]
         super().__init__(path=path)
 
     @property
     def absolute_path(self):
-        return self._absolute_path
+        return str(self._absolute_path)
 
     def read_volume_mm3(self) -> float:
-        with open(self.absolute_path, "r") as volume_file:
-            subject, icv = volume_file.read().rstrip().split(" ")
-            assert subject == self.subject, (subject, self.subject)
-            return float(icv)
+        subject, icv = self._absolute_path.read_text().rstrip().split(" ")
+        assert subject == self.subject, (subject, self.subject)
+        return float(icv)
 
     def read_volume_series(self) -> pandas.Series:
         return pandas.Series(
@@ -66,8 +65,8 @@ class HippocampalSubfieldsVolumeFile(freesurfer_volume_reader.SubfieldVolumeFile
     FILENAME_REGEX = re.compile(FILENAME_PATTERN)
 
     def __init__(self, path: str):
-        self._absolute_path = os.path.abspath(path)
-        filename_match = self.FILENAME_REGEX.match(os.path.basename(path))
+        self._absolute_path = pathlib.Path(path).absolute()
+        filename_match = self.FILENAME_REGEX.match(self._absolute_path.name)
         assert filename_match, self._absolute_path
         filename_groups = filename_match.groupdict()
         self.subject = filename_groups["s"]
@@ -77,25 +76,24 @@ class HippocampalSubfieldsVolumeFile(freesurfer_volume_reader.SubfieldVolumeFile
 
     @property
     def absolute_path(self):
-        return self._absolute_path
+        return str(self._absolute_path)
 
     def read_volumes_mm3(self) -> typing.Dict[str, float]:
         subfield_volumes = {}
-        with open(self.absolute_path, "r") as volume_file:
-            for line in volume_file.read().rstrip().split("\n"):
-                # > echo $ASHS_SUBJID $side $SUB $NBODY $VSUB >> $FNBODYVOL
-                # https://github.com/pyushkevich/ashs/blob/515ff7c2f50928adabc4e64bded9a7e76fc750b1/bin/ashs_extractstats_qsub.sh#L94
-                (
-                    subject,
-                    hemisphere,
-                    subfield_name,
-                    slices_number_str,
-                    volume_mm3_str,
-                ) = line.split(" ")
-                assert self.subject == subject
-                assert self.hemisphere == hemisphere
-                assert int(slices_number_str) >= 0
-                subfield_volumes[subfield_name] = float(volume_mm3_str)
+        for line in self._absolute_path.read_text().rstrip().split("\n"):
+            # > echo $ASHS_SUBJID $side $SUB $NBODY $VSUB >> $FNBODYVOL
+            # https://github.com/pyushkevich/ashs/blob/515ff7c2f50928adabc4e64bded9a7e76fc750b1/bin/ashs_extractstats_qsub.sh#L94
+            (
+                subject,
+                hemisphere,
+                subfield_name,
+                slices_number_str,
+                volume_mm3_str,
+            ) = line.split(" ")
+            assert self.subject == subject
+            assert self.hemisphere == hemisphere
+            assert int(slices_number_str) >= 0
+            subfield_volumes[subfield_name] = float(volume_mm3_str)
         return subfield_volumes
 
     def read_volumes_dataframe(self) -> pandas.DataFrame:

+ 11 - 12
freesurfer_volume_reader/freesurfer.py

@@ -11,7 +11,7 @@ https://github.com/freesurfer/freesurfer/tree/release_6_0_0/HippoSF
 >>>     print(volume_file.read_volumes_dataframe())
 """
 
-import os
+import pathlib
 import re
 import typing
 
@@ -32,10 +32,10 @@ class HippocampalSubfieldsVolumeFile(freesurfer_volume_reader.SubfieldVolumeFile
     FILENAME_HEMISPHERE_PREFIX_MAP = {"l": "left", "r": "right"}
 
     def __init__(self, path: str):
-        self._absolute_path = os.path.abspath(path)
-        subject_dir_path = os.path.dirname(os.path.dirname(self._absolute_path))
-        self.subject = os.path.basename(subject_dir_path)
-        filename_match = self.FILENAME_REGEX.match(os.path.basename(path))
+        self._absolute_path = pathlib.Path(path).absolute()
+        subject_dir_path = self._absolute_path.parent.parent
+        self.subject = subject_dir_path.name
+        filename_match = self.FILENAME_REGEX.match(self._absolute_path.name)
         assert filename_match, self._absolute_path
         filename_groups = filename_match.groupdict()
         assert (
@@ -48,16 +48,15 @@ class HippocampalSubfieldsVolumeFile(freesurfer_volume_reader.SubfieldVolumeFile
 
     @property
     def absolute_path(self):
-        return self._absolute_path
+        return str(self._absolute_path)
 
     def read_volumes_mm3(self) -> typing.Dict[str, float]:
         subfield_volumes = {}
-        with open(self.absolute_path, "r") as volume_file:
-            for line in volume_file.read().rstrip().split("\n"):
-                # https://github.com/freesurfer/freesurfer/blob/release_6_0_0/HippoSF/src/segmentSubjectT1T2_autoEstimateAlveusML.m#L8
-                # https://github.com/freesurfer/freesurfer/blob/release_6_0_0/HippoSF/src/segmentSubjectT1T2_autoEstimateAlveusML.m#L1946
-                subfield_name, subfield_volume_mm3_str = line.split(" ")
-                subfield_volumes[subfield_name] = float(subfield_volume_mm3_str)
+        for line in self._absolute_path.read_text().rstrip().split("\n"):
+            # https://github.com/freesurfer/freesurfer/blob/release_6_0_0/HippoSF/src/segmentSubjectT1T2_autoEstimateAlveusML.m#L8
+            # https://github.com/freesurfer/freesurfer/blob/release_6_0_0/HippoSF/src/segmentSubjectT1T2_autoEstimateAlveusML.m#L1946
+            subfield_name, subfield_volume_mm3_str = line.split(" ")
+            subfield_volumes[subfield_name] = float(subfield_volume_mm3_str)
         return subfield_volumes
 
     def read_volumes_dataframe(self) -> pandas.DataFrame: