Skip to content

Commit b0f51a9

Browse files
authored
Handle R1 contrast not being unique (#204)
1 parent f405135 commit b0f51a9

3 files changed

Lines changed: 14 additions & 1 deletion

File tree

ratapi/utils/convert.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from os import PathLike
66
from pathlib import Path
77

8-
from numpy import array, empty
8+
from numpy import array, empty, ndarray
99
from scipy.io.matlab import MatlabOpaque, loadmat
1010

1111
from ratapi import Project, wrappers
@@ -227,6 +227,12 @@ def fix_invalid_constraints(name: str, constrs: tuple[float, float], value: floa
227227
if isinstance(mat_project["resolNames"], str):
228228
mat_project["resolNames"] = [mat_project["resolNames"]]
229229

230+
if isinstance(mat_project["contrastNames"], (ndarray, list)) and len(
231+
dict.fromkeys(mat_project["contrastNames"])
232+
) != len(mat_project["contrastNames"]):
233+
# contrast names are not unique so create unique ones
234+
mat_project["contrastNames"] = [f"Contrast {i + 1}" for i in range(len(mat_project["contrastNames"]))]
235+
230236
contrasts = ClassList(
231237
[
232238
Contrast(

tests/test_convert.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,13 @@ def test_r1_to_project(file, project, path_type, request):
6969
assert getattr(output_project, class_list) == getattr(expected_project, class_list)
7070

7171

72+
def test_r1_with_non_unique_contrast_names():
73+
"""Test that R1 to Project class conversion returns the expected Project."""
74+
output_project = r1_to_project(pathlib.Path(TEST_DIR_PATH, "nonUniqueContrast.mat"))
75+
assert output_project.contrasts[0].name == "Contrast 1"
76+
assert output_project.contrasts[1].name == "Contrast 2"
77+
78+
7279
@pytest.mark.parametrize(
7380
"project",
7481
[
17.1 KB
Binary file not shown.

0 commit comments

Comments
 (0)