Skip to content
This repository has been archived by the owner on Sep 2, 2023. It is now read-only.

build(deps-dev): bump pylint from 2.9.6 to 2.10.2 #51

Merged
merged 3 commits into from
Aug 28, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
112 changes: 60 additions & 52 deletions Pipfile.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions freesurfer_volume_reader/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,11 +76,11 @@ def main():
}
volume_frames = []
for source_type in args.source_types:
find_volume_files = lambda dir_path: VOLUME_FILE_FINDERS[source_type].find(
root_dir_path=dir_path, filename_regex=filename_regexs[source_type]
)
finder = VOLUME_FILE_FINDERS[source_type]
for root_dir_path in args.root_dir_paths:
for volume_file in find_volume_files(root_dir_path):
for volume_file in finder.find(
root_dir_path=root_dir_path, filename_regex=filename_regexs[source_type]
):
volume_frame = volume_file.read_volumes_dataframe()
volume_frame["source_type"] = source_type
volume_frame["source_path"] = volume_file.absolute_path
Expand Down
50 changes: 24 additions & 26 deletions freesurfer_volume_reader/ashs.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
>>> print(volume_file.read_volume_series())
"""

import os
import pathlib
import re
import typing

Expand All @@ -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(
Expand All @@ -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"]
Expand All @@ -77,25 +76,24 @@ def __init__(self, path: str):

@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:
Expand Down
23 changes: 11 additions & 12 deletions freesurfer_volume_reader/freesurfer.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
>>> print(volume_file.read_volumes_dataframe())
"""

import os
import pathlib
import re
import typing

Expand All @@ -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 (
Expand All @@ -48,16 +48,15 @@ def __init__(self, path: str):

@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:
Expand Down