Skip to content

Commit

Permalink
update tests to new input files
Browse files Browse the repository at this point in the history
  • Loading branch information
Remi-Gau committed Nov 28, 2023
1 parent d063d1f commit 8fd0a08
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 43 deletions.
17 changes: 4 additions & 13 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,11 @@ def data_dir() -> Path:
return Path(__file__).parent / "data"


def asc_test_files(input_dir: Path = data_dir()) -> list[Path]:
files = input_dir.glob("**/*.asc")
tmp = [
f
for f in files
if (not str(f).endswith("events.asc") and not str(f).endswith("samples.asc"))
]
def asc_test_files(input_dir: Path = data_dir(), suffix: str = '*') -> list[Path]:
files = input_dir.glob(f"**/{suffix}.asc")
tmp = list(files)
if not tmp:
warn(
f"No .asc file found in: {input_dir}."
"Found the following .asc,"
"but they either end with 'events' or 'samples':"
f"{list(files)}"
)
warn(f"No .asc file found in: {input_dir}.")
return tmp


Expand Down
2 changes: 0 additions & 2 deletions tests/test_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,6 @@ def test_edf_cli(use_relative_path, metadata_file, output_dir, eyelink_test_data
"input_file", edf_test_files(input_dir=data_dir() / "osf" / "eyelink")
)
def test_all_edf_files(input_file):
if "decision" in str(input_file):
pytest.xfail("Dataset decision is known to fail for now.")
command = [
"eye2bids",
"--input_file",
Expand Down
42 changes: 15 additions & 27 deletions tests/test_edf2bids.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ def test_number_columns_1eye_tsv(eyelink_test_data_dir):
output_dir=output_dir,
)

expected_events_sidecar = output_dir / f"{input_file.stem}_eyetrack.tsv"
expected_events_sidecar = output_dir / f"{input_file.stem}.tsv"
df = pd.read_csv(expected_events_sidecar, sep="\t")
number_columns = len(df.columns)
assert number_columns == 4
Expand All @@ -139,7 +139,6 @@ def test_number_columns_1eye_tsv(eyelink_test_data_dir):
@pytest.mark.parametrize(
"folder, expected",
[
("decisions", "HV9"),
("emg", "HV9"),
("lt", "HV9"),
("pitracker", "HV9"),
Expand All @@ -151,7 +150,7 @@ def test_number_columns_1eye_tsv(eyelink_test_data_dir):
)
def test_extract_CalibrationType(folder, expected, eyelink_test_data_dir):
input_dir = eyelink_test_data_dir / folder
asc_file = asc_test_files(input_dir=input_dir)[0]
asc_file = asc_test_files(input_dir=input_dir, suffix="*_events")[0]
df_ms_reduced = _load_asc_file_as_reduced_df(asc_file)
assert _extract_CalibrationType(df_ms_reduced) == expected

Expand All @@ -160,7 +159,6 @@ def test_extract_CalibrationType(folder, expected, eyelink_test_data_dir):
@pytest.mark.parametrize(
"folder, expected",
[
("decisions", [1919, 1079]),
("emg", [1919, 1079]),
("lt", [1919, 1079]),
("pitracker", [1919, 1079]),
Expand All @@ -171,15 +169,14 @@ def test_extract_CalibrationType(folder, expected, eyelink_test_data_dir):
)
def test_extract_ScreenResolution(folder, expected, eyelink_test_data_dir):
input_dir = eyelink_test_data_dir / folder
asc_file = asc_test_files(input_dir=input_dir)[0]
asc_file = asc_test_files(input_dir=input_dir, suffix="*_events")[0]
df_ms_reduced = _load_asc_file_as_reduced_df(asc_file)
assert _extract_ScreenResolution(df_ms_reduced) == expected


@pytest.mark.parametrize(
"folder, expected",
[
("decisions", ""),
("emg", ""),
("lt", "pixel"),
("pitracker", ""),
Expand All @@ -191,15 +188,14 @@ def test_extract_ScreenResolution(folder, expected, eyelink_test_data_dir):
)
def test_extract_CalibrationUnit(folder, expected, eyelink_test_data_dir):
input_dir = eyelink_test_data_dir / folder
asc_file = asc_test_files(input_dir=input_dir)[0]
asc_file = asc_test_files(input_dir=input_dir, suffix="*_events")[0]
df_ms_reduced = _load_asc_file_as_reduced_df(asc_file)
assert _extract_CalibrationUnit(df_ms_reduced) == expected


@pytest.mark.parametrize(
"folder, expected",
[
("decisions", []),
("emg", []),
(
"lt",
Expand Down Expand Up @@ -236,8 +232,8 @@ def test_extract_CalibrationUnit(folder, expected, eyelink_test_data_dir):
[960, 540],
[960, 732],
[1126, 444],
[1344, 540],
[576, 540],
[1344, 540],
[768, 873],
[1152, 873],
[768, 207],
Expand All @@ -259,7 +255,7 @@ def test_extract_CalibrationUnit(folder, expected, eyelink_test_data_dir):
[960, 732],
[1126, 444],
[576, 540],
[576, 540],
[1344, 540],
[768, 873],
[1152, 873],
[768, 207],
Expand All @@ -275,15 +271,14 @@ def test_extract_CalibrationUnit(folder, expected, eyelink_test_data_dir):
)
def test_extract_CalibrationPosition(folder, expected, eyelink_test_data_dir):
input_dir = eyelink_test_data_dir / folder
asc_file = asc_test_files(input_dir=input_dir)[0]
asc_file = asc_test_files(input_dir=input_dir, suffix="*_events")[0]
df_ms_reduced = _load_asc_file_as_reduced_df(asc_file)
assert _extract_CalibrationPosition(df_ms_reduced) == expected


@pytest.mark.parametrize(
"folder, expected",
[
("decisions", "P-CR"),
("emg", "P-CR"),
("lt", "P-CR"),
("pitracker", "P-CR"),
Expand All @@ -295,15 +290,14 @@ def test_extract_CalibrationPosition(folder, expected, eyelink_test_data_dir):
)
def test_extract_EyeTrackingMethod(folder, expected, eyelink_test_data_dir):
input_dir = eyelink_test_data_dir / folder
asc_file = asc_test_files(input_dir=input_dir)[0]
asc_file = asc_test_files(input_dir=input_dir, suffix="*_events")[0]
events = _load_asc_file(asc_file)
assert _extract_EyeTrackingMethod(events) == expected


@pytest.mark.parametrize(
"folder, expected",
[
("decisions", 1000),
("emg", 1000),
("lt", 1000),
("pitracker", 1000),
Expand All @@ -315,15 +309,14 @@ def test_extract_EyeTrackingMethod(folder, expected, eyelink_test_data_dir):
)
def test_extract_SamplingFrequency(folder, expected, eyelink_test_data_dir):
input_dir = eyelink_test_data_dir / folder
asc_file = asc_test_files(input_dir=input_dir)[0]
asc_file = asc_test_files(input_dir=input_dir, suffix="*_events")[0]
df_ms_reduced = _load_asc_file_as_reduced_df(asc_file)
assert _extract_SamplingFrequency(df_ms_reduced) == expected


@pytest.mark.parametrize(
"folder, expected",
[
("decisions", "ELLIPSE"),
("emg", "ELLIPSE"),
("lt", "CENTROID"),
("pitracker", "CENTROID"),
Expand All @@ -335,15 +328,14 @@ def test_extract_SamplingFrequency(folder, expected, eyelink_test_data_dir):
)
def test_extract_PupilFitMethod(folder, expected, eyelink_test_data_dir):
input_dir = eyelink_test_data_dir / folder
asc_file = asc_test_files(input_dir=input_dir)[0]
asc_file = asc_test_files(input_dir=input_dir, suffix="*_events")[0]
df_ms_reduced = _load_asc_file_as_reduced_df(asc_file)
assert _extract_PupilFitMethod(df_ms_reduced) == expected


@pytest.mark.parametrize(
"folder, expected",
[
("decisions", "CLG-BBF01"),
("emg", "CLG-BBF01"),
("lt", "CLG-BCC29"),
("pitracker", "CLG-BAF22"),
Expand All @@ -355,15 +347,14 @@ def test_extract_PupilFitMethod(folder, expected, eyelink_test_data_dir):
)
def test_extract_DeviceSerialNumber(folder, expected, eyelink_test_data_dir):
input_dir = eyelink_test_data_dir / folder
asc_file = asc_test_files(input_dir=input_dir)[0]
asc_file = asc_test_files(input_dir=input_dir, suffix="*_events")[0]
events = _load_asc_file(asc_file)
assert _extract_DeviceSerialNumber(events) == expected


@pytest.mark.parametrize(
"folder, expected",
[
("decisions", "Right"),
("emg", "Right"),
("lt", "Left"),
("pitracker", "Right"),
Expand All @@ -375,15 +366,14 @@ def test_extract_DeviceSerialNumber(folder, expected, eyelink_test_data_dir):
)
def test_extract_RecordedEye(folder, expected, eyelink_test_data_dir):
input_dir = eyelink_test_data_dir / folder
asc_file = asc_test_files(input_dir=input_dir)[0]
asc_file = asc_test_files(input_dir=input_dir, suffix="*_events")[0]
df_ms_reduced = _load_asc_file_as_reduced_df(asc_file)
assert _extract_RecordedEye(df_ms_reduced) == expected


@pytest.mark.parametrize(
"folder, expected",
[
("decisions", "EYELINK II CL v5.04 Sep 25 2014"),
("emg", "EYELINK II CL v5.04 Sep 25 2014"),
("lt", "EYELINK II CL v5.15 Jan 24 2018"),
("pitracker", "EYELINK II CL v5.01 Jan 16 2014"),
Expand All @@ -395,15 +385,14 @@ def test_extract_RecordedEye(folder, expected, eyelink_test_data_dir):
)
def test_extract_ManufacturersModelName(folder, expected, eyelink_test_data_dir):
input_dir = eyelink_test_data_dir / folder
asc_file = asc_test_files(input_dir=input_dir)[0]
asc_file = asc_test_files(input_dir=input_dir, suffix="*_events")[0]
events = _load_asc_file(asc_file)
assert _extract_ManufacturersModelName(events) == expected


@pytest.mark.parametrize(
"folder, expected",
[
("decisions", []),
("emg", []),
("lt", [[0.32], [0.37]]),
("pitracker", []),
Expand All @@ -418,15 +407,14 @@ def test_extract_ManufacturersModelName(folder, expected, eyelink_test_data_dir)
)
def test_extract_MaximalCalibrationError(folder, expected, eyelink_test_data_dir):
input_dir = eyelink_test_data_dir / folder
asc_file = asc_test_files(input_dir=input_dir)[0]
asc_file = asc_test_files(input_dir=input_dir, suffix="*_events")[0]
df_ms = _load_asc_file_as_df(asc_file)
assert _extract_MaximalCalibrationError(df_ms) == expected


@pytest.mark.parametrize(
"folder, expected",
[
("decisions", []),
("emg", []),
("lt", [[0.16], [0.18]]),
("pitracker", []),
Expand All @@ -441,6 +429,6 @@ def test_extract_MaximalCalibrationError(folder, expected, eyelink_test_data_dir
)
def test_extract_AverageCalibrationError(folder, expected, eyelink_test_data_dir):
input_dir = eyelink_test_data_dir / folder
asc_file = asc_test_files(input_dir=input_dir)[0]
asc_file = asc_test_files(input_dir=input_dir, suffix="*_events")[0]
df_ms = _load_asc_file_as_df(asc_file)
assert _extract_AverageCalibrationError(df_ms) == expected
5 changes: 4 additions & 1 deletion tools/download_test_data.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
"""Download test data from OSF, unzip and install in the correct location."""
"""Download test data from OSF, unzip and install in the correct location.
If rerun, all previous data is removed and redownloaded.
"""

import shutil
import zipfile
Expand Down

0 comments on commit 8fd0a08

Please sign in to comment.