|
@@ -1,73 +1,96 @@
|
|
|
+
|
|
|
+
|
|
|
import os
|
|
|
import re
|
|
|
|
|
|
import pandas
|
|
|
import pytest
|
|
|
|
|
|
-from freesurfer_volume_reader.ashs import IntracranialVolumeFile, HippocampalSubfieldsVolumeFile
|
|
|
+from freesurfer_volume_reader.ashs import (
|
|
|
+ IntracranialVolumeFile,
|
|
|
+ HippocampalSubfieldsVolumeFile,
|
|
|
+)
|
|
|
|
|
|
from conftest import SUBJECTS_DIR, assert_volume_frames_equal
|
|
|
|
|
|
|
|
|
-@pytest.mark.parametrize(('volume_file_path', 'expected_subject'), [
|
|
|
- ('bert_icv.txt', 'bert'),
|
|
|
- ('final/bert_icv.txt', 'bert'),
|
|
|
- ('ashs/subjects/bert/final/bert_icv.txt', 'bert'),
|
|
|
- ('ashs/subjects/alice/final/long_subject_name_42_icv.txt', 'long_subject_name_42'),
|
|
|
-])
|
|
|
+@pytest.mark.parametrize(
|
|
|
+ ("volume_file_path", "expected_subject"),
|
|
|
+ [
|
|
|
+ ("bert_icv.txt", "bert"),
|
|
|
+ ("final/bert_icv.txt", "bert"),
|
|
|
+ ("ashs/subjects/bert/final/bert_icv.txt", "bert"),
|
|
|
+ (
|
|
|
+ "ashs/subjects/alice/final/long_subject_name_42_icv.txt",
|
|
|
+ "long_subject_name_42",
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+)
|
|
|
def test_intracranial_volume_file_init(volume_file_path, expected_subject):
|
|
|
volume_file = IntracranialVolumeFile(path=volume_file_path)
|
|
|
assert os.path.abspath(volume_file_path) == volume_file.absolute_path
|
|
|
assert expected_subject == volume_file.subject
|
|
|
|
|
|
|
|
|
-@pytest.mark.parametrize('volume_file_path', [
|
|
|
- '_icv.txt',
|
|
|
- 'bert_ICV.txt',
|
|
|
- 'bert_icv.csv',
|
|
|
- 'bert_ICV.txt.zip',
|
|
|
-])
|
|
|
+@pytest.mark.parametrize(
|
|
|
+ "volume_file_path", ["_icv.txt", "bert_ICV.txt", "bert_icv.csv", "bert_ICV.txt.zip"]
|
|
|
+)
|
|
|
def test_intracranial_volume_file_init_invalid_filename(volume_file_path):
|
|
|
with pytest.raises(Exception):
|
|
|
IntracranialVolumeFile(path=volume_file_path)
|
|
|
|
|
|
|
|
|
-@pytest.mark.parametrize(('volume_file_path', 'expected_volume'), [
|
|
|
- (os.path.join(SUBJECTS_DIR, 'bert', 'final', 'bert_icv.txt'), 1234560),
|
|
|
- (os.path.join(SUBJECTS_DIR, 'bert', 'final', 'bert_icv.txt'), 1.23456e06),
|
|
|
- (os.path.join(SUBJECTS_DIR, 'bert', 'final', 'bert_icv.txt'), 1.23456e+06),
|
|
|
- (os.path.join(SUBJECTS_DIR, 'bert', 'final', 'bert_icv.txt'), float('1.23456e+06')),
|
|
|
- (os.path.join(SUBJECTS_DIR, 'alice', 'final', 'alice_icv.txt'), 1543200),
|
|
|
-])
|
|
|
+@pytest.mark.parametrize(
|
|
|
+ ("volume_file_path", "expected_volume"),
|
|
|
+ [
|
|
|
+ (os.path.join(SUBJECTS_DIR, "bert", "final", "bert_icv.txt"), 1234560),
|
|
|
+ (os.path.join(SUBJECTS_DIR, "bert", "final", "bert_icv.txt"), 1.23456e06),
|
|
|
+ (os.path.join(SUBJECTS_DIR, "bert", "final", "bert_icv.txt"), 1.23456e06),
|
|
|
+ (
|
|
|
+ os.path.join(SUBJECTS_DIR, "bert", "final", "bert_icv.txt"),
|
|
|
+ float("1.23456e+06"),
|
|
|
+ ),
|
|
|
+ (os.path.join(SUBJECTS_DIR, "alice", "final", "alice_icv.txt"), 1543200),
|
|
|
+ ],
|
|
|
+)
|
|
|
def test_intracranial_volume_file_read_volume_mm3(volume_file_path, expected_volume):
|
|
|
volume_file = IntracranialVolumeFile(path=volume_file_path)
|
|
|
assert expected_volume == pytest.approx(volume_file.read_volume_mm3())
|
|
|
|
|
|
|
|
|
-@pytest.mark.parametrize('volume_file_path', [
|
|
|
- os.path.join(SUBJECTS_DIR, 'noone', 'final', 'noone_icv.txt'),
|
|
|
-])
|
|
|
+@pytest.mark.parametrize(
|
|
|
+ "volume_file_path", [os.path.join(SUBJECTS_DIR, "noone", "final", "noone_icv.txt")]
|
|
|
+)
|
|
|
def test_intracranial_volume_file_read_volume_mm3_not_found(volume_file_path):
|
|
|
volume_file = IntracranialVolumeFile(path=volume_file_path)
|
|
|
with pytest.raises(FileNotFoundError):
|
|
|
volume_file.read_volume_mm3()
|
|
|
|
|
|
|
|
|
-@pytest.mark.parametrize(('volume_file_path', 'expected_series'), [
|
|
|
- (os.path.join(SUBJECTS_DIR, 'bert', 'final', 'bert_icv.txt'),
|
|
|
- pandas.Series(
|
|
|
- data=[1234560.0],
|
|
|
- name='intercranial_volume_mm^3',
|
|
|
- index=pandas.Index(data=['bert'], name='subject'),
|
|
|
- )),
|
|
|
- (os.path.join(SUBJECTS_DIR, 'alice', 'final', 'alice_icv.txt'),
|
|
|
- pandas.Series(
|
|
|
- data=[1543200.0],
|
|
|
- name='intercranial_volume_mm^3',
|
|
|
- index=pandas.Index(data=['alice'], name='subject'),
|
|
|
- )),
|
|
|
-])
|
|
|
-def test_intracranial_volume_file_read_volume_series_single(volume_file_path, expected_series):
|
|
|
+@pytest.mark.parametrize(
|
|
|
+ ("volume_file_path", "expected_series"),
|
|
|
+ [
|
|
|
+ (
|
|
|
+ os.path.join(SUBJECTS_DIR, "bert", "final", "bert_icv.txt"),
|
|
|
+ pandas.Series(
|
|
|
+ data=[1234560.0],
|
|
|
+ name="intercranial_volume_mm^3",
|
|
|
+ index=pandas.Index(data=["bert"], name="subject"),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ os.path.join(SUBJECTS_DIR, "alice", "final", "alice_icv.txt"),
|
|
|
+ pandas.Series(
|
|
|
+ data=[1543200.0],
|
|
|
+ name="intercranial_volume_mm^3",
|
|
|
+ index=pandas.Index(data=["alice"], name="subject"),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+)
|
|
|
+def test_intracranial_volume_file_read_volume_series_single(
|
|
|
+ volume_file_path, expected_series
|
|
|
+):
|
|
|
volume_file = IntracranialVolumeFile(path=volume_file_path)
|
|
|
pandas.testing.assert_series_equal(
|
|
|
left=expected_series,
|
|
@@ -77,94 +100,144 @@ def test_intracranial_volume_file_read_volume_series_single(volume_file_path, ex
|
|
|
)
|
|
|
|
|
|
|
|
|
-@pytest.mark.parametrize(('volume_file_paths', 'expected_series'), [
|
|
|
- ([os.path.join(SUBJECTS_DIR, 'bert', 'final', 'bert_icv.txt'),
|
|
|
- os.path.join(SUBJECTS_DIR, 'alice', 'final', 'alice_icv.txt')],
|
|
|
- pandas.Series(
|
|
|
- data=[1234560.0, 1543200.0],
|
|
|
- name='intercranial_volume_mm^3',
|
|
|
- index=pandas.Index(data=['bert', 'alice'], name='subject'),
|
|
|
- )),
|
|
|
-])
|
|
|
-def test_intracranial_volume_file_read_volume_series_concat(volume_file_paths, expected_series):
|
|
|
+@pytest.mark.parametrize(
|
|
|
+ ("volume_file_paths", "expected_series"),
|
|
|
+ [
|
|
|
+ (
|
|
|
+ [
|
|
|
+ os.path.join(SUBJECTS_DIR, "bert", "final", "bert_icv.txt"),
|
|
|
+ os.path.join(SUBJECTS_DIR, "alice", "final", "alice_icv.txt"),
|
|
|
+ ],
|
|
|
+ pandas.Series(
|
|
|
+ data=[1234560.0, 1543200.0],
|
|
|
+ name="intercranial_volume_mm^3",
|
|
|
+ index=pandas.Index(data=["bert", "alice"], name="subject"),
|
|
|
+ ),
|
|
|
+ )
|
|
|
+ ],
|
|
|
+)
|
|
|
+def test_intracranial_volume_file_read_volume_series_concat(
|
|
|
+ volume_file_paths, expected_series
|
|
|
+):
|
|
|
volume_series = pandas.concat(
|
|
|
- IntracranialVolumeFile(path=p).read_volume_series()
|
|
|
- for p in volume_file_paths)
|
|
|
+ IntracranialVolumeFile(path=p).read_volume_series() for p in volume_file_paths
|
|
|
+ )
|
|
|
pandas.testing.assert_series_equal(
|
|
|
- left=expected_series,
|
|
|
- right=volume_series,
|
|
|
- check_dtype=True,
|
|
|
- check_names=True,
|
|
|
+ left=expected_series, right=volume_series, check_dtype=True, check_names=True
|
|
|
)
|
|
|
|
|
|
|
|
|
-@pytest.mark.parametrize('volume_file_path', [
|
|
|
- os.path.join(SUBJECTS_DIR, 'bert', 'final', 'BERT_icv.txt'),
|
|
|
-])
|
|
|
+@pytest.mark.parametrize(
|
|
|
+ "volume_file_path", [os.path.join(SUBJECTS_DIR, "bert", "final", "BERT_icv.txt")]
|
|
|
+)
|
|
|
def test_intracranial_volume_file_read_volume_series_not_found(volume_file_path):
|
|
|
volume_file = IntracranialVolumeFile(path=volume_file_path)
|
|
|
with pytest.raises(FileNotFoundError):
|
|
|
volume_file.read_volume_series()
|
|
|
|
|
|
|
|
|
-@pytest.mark.parametrize(('root_dir_path', 'expected_file_paths'), [
|
|
|
- (os.path.join(SUBJECTS_DIR, 'bert'),
|
|
|
- {os.path.join(SUBJECTS_DIR, 'bert', 'final', 'bert_icv.txt')}),
|
|
|
- (os.path.join(SUBJECTS_DIR, 'alice'),
|
|
|
- {os.path.join(SUBJECTS_DIR, 'alice', 'final', 'alice_icv.txt')}),
|
|
|
- (SUBJECTS_DIR,
|
|
|
- {os.path.join(SUBJECTS_DIR, 'alice', 'final', 'alice_icv.txt'),
|
|
|
- os.path.join(SUBJECTS_DIR, 'bert', 'final', 'bert_icv.txt')}),
|
|
|
-])
|
|
|
+@pytest.mark.parametrize(
|
|
|
+ ("root_dir_path", "expected_file_paths"),
|
|
|
+ [
|
|
|
+ (
|
|
|
+ os.path.join(SUBJECTS_DIR, "bert"),
|
|
|
+ {os.path.join(SUBJECTS_DIR, "bert", "final", "bert_icv.txt")},
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ os.path.join(SUBJECTS_DIR, "alice"),
|
|
|
+ {os.path.join(SUBJECTS_DIR, "alice", "final", "alice_icv.txt")},
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ SUBJECTS_DIR,
|
|
|
+ {
|
|
|
+ os.path.join(SUBJECTS_DIR, "alice", "final", "alice_icv.txt"),
|
|
|
+ os.path.join(SUBJECTS_DIR, "bert", "final", "bert_icv.txt"),
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+)
|
|
|
def test_intracranial_volume_file_find(root_dir_path, expected_file_paths):
|
|
|
- volume_files_iterator = IntracranialVolumeFile.find(
|
|
|
- root_dir_path=root_dir_path)
|
|
|
- assert expected_file_paths == set(
|
|
|
- f.absolute_path for f in volume_files_iterator)
|
|
|
-
|
|
|
-
|
|
|
-@pytest.mark.parametrize(('root_dir_path', 'filename_pattern', 'expected_file_paths'), [
|
|
|
- (SUBJECTS_DIR,
|
|
|
- r'^\w{4,6}_icv.txt$',
|
|
|
- {os.path.join(SUBJECTS_DIR, 'alice', 'final', 'alice_icv.txt'),
|
|
|
- os.path.join(SUBJECTS_DIR, 'bert', 'final', 'bert_icv.txt')}),
|
|
|
- (SUBJECTS_DIR,
|
|
|
- r'^\w{5,6}_icv.txt$',
|
|
|
- {os.path.join(SUBJECTS_DIR, 'alice', 'final', 'alice_icv.txt')}),
|
|
|
- (SUBJECTS_DIR,
|
|
|
- r'^\w{7,}_icv.txt$',
|
|
|
- set()),
|
|
|
-])
|
|
|
+ volume_files_iterator = IntracranialVolumeFile.find(root_dir_path=root_dir_path)
|
|
|
+ assert expected_file_paths == set(f.absolute_path for f in volume_files_iterator)
|
|
|
+
|
|
|
+
|
|
|
+@pytest.mark.parametrize(
|
|
|
+ ("root_dir_path", "filename_pattern", "expected_file_paths"),
|
|
|
+ [
|
|
|
+ (
|
|
|
+ SUBJECTS_DIR,
|
|
|
+ r"^\w{4,6}_icv.txt$",
|
|
|
+ {
|
|
|
+ os.path.join(SUBJECTS_DIR, "alice", "final", "alice_icv.txt"),
|
|
|
+ os.path.join(SUBJECTS_DIR, "bert", "final", "bert_icv.txt"),
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ SUBJECTS_DIR,
|
|
|
+ r"^\w{5,6}_icv.txt$",
|
|
|
+ {os.path.join(SUBJECTS_DIR, "alice", "final", "alice_icv.txt")},
|
|
|
+ ),
|
|
|
+ (SUBJECTS_DIR, r"^\w{7,}_icv.txt$", set()),
|
|
|
+ ],
|
|
|
+)
|
|
|
def test_intracranial_volume_file_find_pattern(
|
|
|
- root_dir_path, filename_pattern, expected_file_paths):
|
|
|
+ root_dir_path, filename_pattern, expected_file_paths
|
|
|
+):
|
|
|
volume_files_iterator = IntracranialVolumeFile.find(
|
|
|
- root_dir_path=root_dir_path, filename_regex=re.compile(filename_pattern))
|
|
|
- assert expected_file_paths == set(
|
|
|
- f.absolute_path for f in volume_files_iterator)
|
|
|
-
|
|
|
-
|
|
|
-@pytest.mark.parametrize(('volume_file_path', 'expected_attrs'), [
|
|
|
- ('ashs/final/bert_left_heur_volumes.txt',
|
|
|
- {'subject': 'bert', 'hemisphere': 'left', 'correction': None}),
|
|
|
- ('ashs/final/bert_left_corr_nogray_volumes.txt',
|
|
|
- {'subject': 'bert', 'hemisphere': 'left', 'correction': 'nogray'}),
|
|
|
- ('ashs/final/bert_left_corr_usegray_volumes.txt',
|
|
|
- {'subject': 'bert', 'hemisphere': 'left', 'correction': 'usegray'}),
|
|
|
- ('ashs/final/bert_right_heur_volumes.txt',
|
|
|
- {'subject': 'bert', 'hemisphere': 'right', 'correction': None}),
|
|
|
- ('ashs/final/bert_right_corr_nogray_volumes.txt',
|
|
|
- {'subject': 'bert', 'hemisphere': 'right', 'correction': 'nogray'}),
|
|
|
- ('ashs/final/bert_right_corr_usegray_volumes.txt',
|
|
|
- {'subject': 'bert', 'hemisphere': 'right', 'correction': 'usegray'}),
|
|
|
- ('somewhere/else/bert_right_heur_volumes.txt',
|
|
|
- {'subject': 'bert', 'hemisphere': 'right', 'correction': None}),
|
|
|
- ('somewhere/else/bert_right_corr_nogray_volumes.txt',
|
|
|
- {'subject': 'bert', 'hemisphere': 'right', 'correction': 'nogray'}),
|
|
|
- ('bert_right_heur_volumes.txt',
|
|
|
- {'subject': 'bert', 'hemisphere': 'right', 'correction': None}),
|
|
|
- ('/foo/bar/alice_20190503_right_corr_nogray_volumes.txt',
|
|
|
- {'subject': 'alice_20190503', 'hemisphere': 'right', 'correction': 'nogray'}),
|
|
|
-])
|
|
|
+ root_dir_path=root_dir_path, filename_regex=re.compile(filename_pattern)
|
|
|
+ )
|
|
|
+ assert expected_file_paths == set(f.absolute_path for f in volume_files_iterator)
|
|
|
+
|
|
|
+
|
|
|
+@pytest.mark.parametrize(
|
|
|
+ ("volume_file_path", "expected_attrs"),
|
|
|
+ [
|
|
|
+ (
|
|
|
+ "ashs/final/bert_left_heur_volumes.txt",
|
|
|
+ {"subject": "bert", "hemisphere": "left", "correction": None},
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "ashs/final/bert_left_corr_nogray_volumes.txt",
|
|
|
+ {"subject": "bert", "hemisphere": "left", "correction": "nogray"},
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "ashs/final/bert_left_corr_usegray_volumes.txt",
|
|
|
+ {"subject": "bert", "hemisphere": "left", "correction": "usegray"},
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "ashs/final/bert_right_heur_volumes.txt",
|
|
|
+ {"subject": "bert", "hemisphere": "right", "correction": None},
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "ashs/final/bert_right_corr_nogray_volumes.txt",
|
|
|
+ {"subject": "bert", "hemisphere": "right", "correction": "nogray"},
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "ashs/final/bert_right_corr_usegray_volumes.txt",
|
|
|
+ {"subject": "bert", "hemisphere": "right", "correction": "usegray"},
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "somewhere/else/bert_right_heur_volumes.txt",
|
|
|
+ {"subject": "bert", "hemisphere": "right", "correction": None},
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "somewhere/else/bert_right_corr_nogray_volumes.txt",
|
|
|
+ {"subject": "bert", "hemisphere": "right", "correction": "nogray"},
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "bert_right_heur_volumes.txt",
|
|
|
+ {"subject": "bert", "hemisphere": "right", "correction": None},
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "/foo/bar/alice_20190503_right_corr_nogray_volumes.txt",
|
|
|
+ {
|
|
|
+ "subject": "alice_20190503",
|
|
|
+ "hemisphere": "right",
|
|
|
+ "correction": "nogray",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+)
|
|
|
def test_hippocampal_subfields_volume_file_init(volume_file_path, expected_attrs):
|
|
|
volume_file = HippocampalSubfieldsVolumeFile(path=volume_file_path)
|
|
|
assert os.path.abspath(volume_file_path) == volume_file.absolute_path
|
|
@@ -172,97 +245,196 @@ def test_hippocampal_subfields_volume_file_init(volume_file_path, expected_attrs
|
|
|
assert value == getattr(volume_file, attr)
|
|
|
|
|
|
|
|
|
-@pytest.mark.parametrize('volume_file_path', [
|
|
|
- 'bert_middle_heur_volumes.txt',
|
|
|
- 'bert_right_hear_volumes.txt',
|
|
|
- 'bert_right_heur_volumes.nii',
|
|
|
- 'bert_left_lfseg_corr_usegray.nii.gz',
|
|
|
-])
|
|
|
+@pytest.mark.parametrize(
|
|
|
+ "volume_file_path",
|
|
|
+ [
|
|
|
+ "bert_middle_heur_volumes.txt",
|
|
|
+ "bert_right_hear_volumes.txt",
|
|
|
+ "bert_right_heur_volumes.nii",
|
|
|
+ "bert_left_lfseg_corr_usegray.nii.gz",
|
|
|
+ ],
|
|
|
+)
|
|
|
def test_hippocampal_subfields_volume_file_init_invalid(volume_file_path):
|
|
|
with pytest.raises(Exception):
|
|
|
HippocampalSubfieldsVolumeFile(path=volume_file_path)
|
|
|
|
|
|
|
|
|
-@pytest.mark.parametrize(('volume_file_path', 'expected_volumes'), [
|
|
|
- (os.path.join(SUBJECTS_DIR, 'bert', 'final', 'bert_left_corr_nogray_volumes.txt'),
|
|
|
- {'CA1': 678.901,
|
|
|
- 'CA2+3': 123.456,
|
|
|
- 'DG': 901.234,
|
|
|
- 'ERC': 789.012,
|
|
|
- 'PHC': 2345.876,
|
|
|
- 'PRC': 2345.678,
|
|
|
- 'SUB': 457.789}),
|
|
|
-])
|
|
|
-def test_hippocampal_subfields_volume_file_read_volumes_mm3(volume_file_path, expected_volumes):
|
|
|
+@pytest.mark.parametrize(
|
|
|
+ ("volume_file_path", "expected_volumes"),
|
|
|
+ [
|
|
|
+ (
|
|
|
+ os.path.join(
|
|
|
+ SUBJECTS_DIR, "bert", "final", "bert_left_corr_nogray_volumes.txt"
|
|
|
+ ),
|
|
|
+ {
|
|
|
+ "CA1": 678.901,
|
|
|
+ "CA2+3": 123.456,
|
|
|
+ "DG": 901.234,
|
|
|
+ "ERC": 789.012,
|
|
|
+ "PHC": 2345.876,
|
|
|
+ "PRC": 2345.678,
|
|
|
+ "SUB": 457.789,
|
|
|
+ },
|
|
|
+ )
|
|
|
+ ],
|
|
|
+)
|
|
|
+def test_hippocampal_subfields_volume_file_read_volumes_mm3(
|
|
|
+ volume_file_path, expected_volumes
|
|
|
+):
|
|
|
volume_file = HippocampalSubfieldsVolumeFile(path=volume_file_path)
|
|
|
assert expected_volumes == volume_file.read_volumes_mm3()
|
|
|
|
|
|
|
|
|
def test_hippocampal_subfields_volume_file_read_volumes_mm3_not_found():
|
|
|
volume_file = HippocampalSubfieldsVolumeFile(
|
|
|
- path=os.path.join(SUBJECTS_DIR, 'nobert', 'final', 'bert_left_corr_nogray_volumes.txt'))
|
|
|
+ path=os.path.join(
|
|
|
+ SUBJECTS_DIR, "nobert", "final", "bert_left_corr_nogray_volumes.txt"
|
|
|
+ )
|
|
|
+ )
|
|
|
with pytest.raises(FileNotFoundError):
|
|
|
volume_file.read_volumes_mm3()
|
|
|
|
|
|
|
|
|
-@pytest.mark.parametrize(('volume_file_path', 'expected_dataframe'), [
|
|
|
- (os.path.join(SUBJECTS_DIR, 'alice', 'final', 'alice_left_heur_volumes.txt'),
|
|
|
- pandas.DataFrame({
|
|
|
- 'subfield': ['CA1', 'CA2+3', 'DG', 'ERC', 'PHC', 'PRC', 'SUB'],
|
|
|
- 'volume_mm^3': [679.904, 124.459, 902.237, 789.012, 2346.879, 2346.671, 458.782],
|
|
|
- 'subject': 'alice',
|
|
|
- 'hemisphere': 'left',
|
|
|
- 'correction': None,
|
|
|
- })),
|
|
|
-])
|
|
|
+@pytest.mark.parametrize(
|
|
|
+ ("volume_file_path", "expected_dataframe"),
|
|
|
+ [
|
|
|
+ (
|
|
|
+ os.path.join(SUBJECTS_DIR, "alice", "final", "alice_left_heur_volumes.txt"),
|
|
|
+ pandas.DataFrame(
|
|
|
+ {
|
|
|
+ "subfield": ["CA1", "CA2+3", "DG", "ERC", "PHC", "PRC", "SUB"],
|
|
|
+ "volume_mm^3": [
|
|
|
+ 679.904,
|
|
|
+ 124.459,
|
|
|
+ 902.237,
|
|
|
+ 789.012,
|
|
|
+ 2346.879,
|
|
|
+ 2346.671,
|
|
|
+ 458.782,
|
|
|
+ ],
|
|
|
+ "subject": "alice",
|
|
|
+ "hemisphere": "left",
|
|
|
+ "correction": None,
|
|
|
+ }
|
|
|
+ ),
|
|
|
+ )
|
|
|
+ ],
|
|
|
+)
|
|
|
def test_hippocampal_subfields_volume_file_read_volumes_dataframe(
|
|
|
- volume_file_path: str, expected_dataframe: pandas.DataFrame):
|
|
|
+ volume_file_path: str, expected_dataframe: pandas.DataFrame
|
|
|
+):
|
|
|
volume_file = HippocampalSubfieldsVolumeFile(path=volume_file_path)
|
|
|
- assert_volume_frames_equal(left=expected_dataframe,
|
|
|
- right=volume_file.read_volumes_dataframe())
|
|
|
+ assert_volume_frames_equal(
|
|
|
+ left=expected_dataframe, right=volume_file.read_volumes_dataframe()
|
|
|
+ )
|
|
|
|
|
|
|
|
|
def test_hippocampal_subfields_volume_file_read_volumes_dataframe_not_found():
|
|
|
volume_file = HippocampalSubfieldsVolumeFile(
|
|
|
- path=os.path.join(SUBJECTS_DIR, 'nobert', 'final', 'bert_left_corr_nogray_volumes.txt'))
|
|
|
+ path=os.path.join(
|
|
|
+ SUBJECTS_DIR, "nobert", "final", "bert_left_corr_nogray_volumes.txt"
|
|
|
+ )
|
|
|
+ )
|
|
|
with pytest.raises(FileNotFoundError):
|
|
|
volume_file.read_volumes_dataframe()
|
|
|
|
|
|
|
|
|
-@pytest.mark.parametrize(('root_dir_path', 'expected_file_paths'), [
|
|
|
- (os.path.join(SUBJECTS_DIR, 'alice'),
|
|
|
- {os.path.join(SUBJECTS_DIR, 'alice', 'final', 'alice_left_heur_volumes.txt'),
|
|
|
- os.path.join(SUBJECTS_DIR, 'alice', 'final', 'alice_left_corr_nogray_volumes.txt')}),
|
|
|
- (os.path.join(SUBJECTS_DIR, 'bert'),
|
|
|
- {os.path.join(SUBJECTS_DIR, 'bert', 'final', 'bert_left_corr_nogray_volumes.txt'),
|
|
|
- os.path.join(SUBJECTS_DIR, 'bert', 'final', 'bert_left_corr_usegray_volumes.txt'),
|
|
|
- os.path.join(SUBJECTS_DIR, 'bert', 'final', 'bert_left_heur_volumes.txt'),
|
|
|
- os.path.join(SUBJECTS_DIR, 'bert', 'final', 'bert_right_corr_nogray_volumes.txt')}),
|
|
|
- (SUBJECTS_DIR,
|
|
|
- {os.path.join(SUBJECTS_DIR, 'alice', 'final', 'alice_left_heur_volumes.txt'),
|
|
|
- os.path.join(SUBJECTS_DIR, 'alice', 'final', 'alice_left_corr_nogray_volumes.txt'),
|
|
|
- os.path.join(SUBJECTS_DIR, 'bert', 'final', 'bert_left_corr_nogray_volumes.txt'),
|
|
|
- os.path.join(SUBJECTS_DIR, 'bert', 'final', 'bert_left_corr_usegray_volumes.txt'),
|
|
|
- os.path.join(SUBJECTS_DIR, 'bert', 'final', 'bert_left_heur_volumes.txt'),
|
|
|
- os.path.join(SUBJECTS_DIR, 'bert', 'final', 'bert_right_corr_nogray_volumes.txt')}),
|
|
|
-])
|
|
|
+@pytest.mark.parametrize(
|
|
|
+ ("root_dir_path", "expected_file_paths"),
|
|
|
+ [
|
|
|
+ (
|
|
|
+ os.path.join(SUBJECTS_DIR, "alice"),
|
|
|
+ {
|
|
|
+ os.path.join(
|
|
|
+ SUBJECTS_DIR, "alice", "final", "alice_left_heur_volumes.txt"
|
|
|
+ ),
|
|
|
+ os.path.join(
|
|
|
+ SUBJECTS_DIR, "alice", "final", "alice_left_corr_nogray_volumes.txt"
|
|
|
+ ),
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ os.path.join(SUBJECTS_DIR, "bert"),
|
|
|
+ {
|
|
|
+ os.path.join(
|
|
|
+ SUBJECTS_DIR, "bert", "final", "bert_left_corr_nogray_volumes.txt"
|
|
|
+ ),
|
|
|
+ os.path.join(
|
|
|
+ SUBJECTS_DIR, "bert", "final", "bert_left_corr_usegray_volumes.txt"
|
|
|
+ ),
|
|
|
+ os.path.join(
|
|
|
+ SUBJECTS_DIR, "bert", "final", "bert_left_heur_volumes.txt"
|
|
|
+ ),
|
|
|
+ os.path.join(
|
|
|
+ SUBJECTS_DIR, "bert", "final", "bert_right_corr_nogray_volumes.txt"
|
|
|
+ ),
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ SUBJECTS_DIR,
|
|
|
+ {
|
|
|
+ os.path.join(
|
|
|
+ SUBJECTS_DIR, "alice", "final", "alice_left_heur_volumes.txt"
|
|
|
+ ),
|
|
|
+ os.path.join(
|
|
|
+ SUBJECTS_DIR, "alice", "final", "alice_left_corr_nogray_volumes.txt"
|
|
|
+ ),
|
|
|
+ os.path.join(
|
|
|
+ SUBJECTS_DIR, "bert", "final", "bert_left_corr_nogray_volumes.txt"
|
|
|
+ ),
|
|
|
+ os.path.join(
|
|
|
+ SUBJECTS_DIR, "bert", "final", "bert_left_corr_usegray_volumes.txt"
|
|
|
+ ),
|
|
|
+ os.path.join(
|
|
|
+ SUBJECTS_DIR, "bert", "final", "bert_left_heur_volumes.txt"
|
|
|
+ ),
|
|
|
+ os.path.join(
|
|
|
+ SUBJECTS_DIR, "bert", "final", "bert_right_corr_nogray_volumes.txt"
|
|
|
+ ),
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+)
|
|
|
def test_hippocampal_subfields_volume_file_find(root_dir_path, expected_file_paths):
|
|
|
- volume_files_iterator = HippocampalSubfieldsVolumeFile.find(root_dir_path=root_dir_path)
|
|
|
+ volume_files_iterator = HippocampalSubfieldsVolumeFile.find(
|
|
|
+ root_dir_path=root_dir_path
|
|
|
+ )
|
|
|
assert expected_file_paths == set(f.absolute_path for f in volume_files_iterator)
|
|
|
|
|
|
|
|
|
-@pytest.mark.parametrize(('root_dir_path', 'filename_pattern', 'expected_file_paths'), [
|
|
|
- (SUBJECTS_DIR,
|
|
|
- r'^bert_right_',
|
|
|
- {os.path.join(SUBJECTS_DIR, 'bert', 'final', 'bert_right_corr_nogray_volumes.txt')}),
|
|
|
- (SUBJECTS_DIR,
|
|
|
- r'_nogray_volumes.txt$',
|
|
|
- {os.path.join(SUBJECTS_DIR, 'alice', 'final', 'alice_left_corr_nogray_volumes.txt'),
|
|
|
- os.path.join(SUBJECTS_DIR, 'bert', 'final', 'bert_left_corr_nogray_volumes.txt'),
|
|
|
- os.path.join(SUBJECTS_DIR, 'bert', 'final', 'bert_right_corr_nogray_volumes.txt')}),
|
|
|
-])
|
|
|
-def test_hippocampal_subfields_volume_file_find_pattern(root_dir_path, filename_pattern,
|
|
|
- expected_file_paths):
|
|
|
+@pytest.mark.parametrize(
|
|
|
+ ("root_dir_path", "filename_pattern", "expected_file_paths"),
|
|
|
+ [
|
|
|
+ (
|
|
|
+ SUBJECTS_DIR,
|
|
|
+ r"^bert_right_",
|
|
|
+ {
|
|
|
+ os.path.join(
|
|
|
+ SUBJECTS_DIR, "bert", "final", "bert_right_corr_nogray_volumes.txt"
|
|
|
+ )
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ SUBJECTS_DIR,
|
|
|
+ r"_nogray_volumes.txt$",
|
|
|
+ {
|
|
|
+ os.path.join(
|
|
|
+ SUBJECTS_DIR, "alice", "final", "alice_left_corr_nogray_volumes.txt"
|
|
|
+ ),
|
|
|
+ os.path.join(
|
|
|
+ SUBJECTS_DIR, "bert", "final", "bert_left_corr_nogray_volumes.txt"
|
|
|
+ ),
|
|
|
+ os.path.join(
|
|
|
+ SUBJECTS_DIR, "bert", "final", "bert_right_corr_nogray_volumes.txt"
|
|
|
+ ),
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+)
|
|
|
+def test_hippocampal_subfields_volume_file_find_pattern(
|
|
|
+ root_dir_path, filename_pattern, expected_file_paths
|
|
|
+):
|
|
|
volume_files_iterator = HippocampalSubfieldsVolumeFile.find(
|
|
|
- root_dir_path=root_dir_path, filename_regex=re.compile(filename_pattern))
|
|
|
+ root_dir_path=root_dir_path, filename_regex=re.compile(filename_pattern)
|
|
|
+ )
|
|
|
assert expected_file_paths == set(f.absolute_path for f in volume_files_iterator)
|