Skip to content

Commit

Permalink
TST: Add derivatives test
Browse files Browse the repository at this point in the history
  • Loading branch information
mgxd committed Feb 27, 2024
1 parent 57e79d2 commit 242152c
Showing 1 changed file with 36 additions and 6 deletions.
42 changes: 36 additions & 6 deletions niworkflows/utils/tests/test_bids_skeleton.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import pytest
from bids import BIDSLayout

import json

from ..testing import generate_bids_skeleton


Expand Down Expand Up @@ -107,29 +109,57 @@
"04": "*",
}

bids_dir_deriv = {
"dataset_description": {
"Name": "derivs",
"DatasetType": "derivative",
"BIDSVersion": "1.9.0",
"GeneratedBy": [
{"Name": "Niworkflows"}
]
},
"01": {
"anat": [
{"suffix": "white", "hemi": "L", "extension": ".surf.gii"},
{"suffix": "white", "hemi": "R", "extension": ".surf.gii"},
{"suffix": "xfm", "to": "MNI152NLin2009cAsym", "from": "T1w", "extension": ".h5"}
]
}
}


@pytest.mark.parametrize(
"test_id,json_layout,n_files,n_subjects,n_sessions",
[
('sessions', bids_dir_sessions, 31, 3, 2),
('nosession', bids_dir_session_less, 25, 4, 0),
('derivatives', bids_dir_deriv, 4, 1, 0)
],
)
def test_generate_bids_skeleton(tmp_path, test_id, json_layout, n_files, n_subjects, n_sessions):
root = tmp_path / test_id
generate_bids_skeleton(root, json_layout)
datadesc = root / "dataset_description.json"
assert datadesc.exists()
assert "BIDSVersion" in datadesc.read_text()
desc = json.loads(datadesc.read_text())
assert "BIDSVersion" in desc
if test_id == 'derivatives':
assert desc["DatasetType"] == "derivative"

assert len([x for x in root.glob("**/*") if x.is_file()]) == n_files

# ensure layout is valid
layout = BIDSLayout(root)
layout = BIDSLayout(root, validate=False)
assert len(layout.get_subjects()) == n_subjects
assert len(layout.get_sessions()) == n_sessions

anat = layout.get(suffix="T1w", extension="nii.gz")[0]
bold = layout.get(suffix="bold", extension="nii.gz")[0]
assert anat.get_metadata()
assert bold.get_metadata()
if test_id != 'derivatives':
anat = layout.get(suffix="T1w", extension=".nii.gz")[0]
bold = layout.get(suffix="bold", extension=".nii.gz")[0]
assert anat.get_metadata()
assert bold.get_metadata()
else:
white = layout.get(suffix="white")
assert len(white) == 2
xfm = layout.get(suffix="xfm")[0]
assert xfm

0 comments on commit 242152c

Please sign in to comment.