From ad67a042f0128f5ec69fd042b273f96afc109fad Mon Sep 17 00:00:00 2001 From: Scott Huberty <52462026+scott-huberty@users.noreply.github.com> Date: Wed, 1 Jan 2025 08:54:08 -0800 Subject: [PATCH] FIX: Use "recording" for recording entity, not "rec" (#1359) * FIX: don't use "rec" for recording entity. Use the full name Fixes #1348 See: https://bids-specification.readthedocs.io/en/stable/modality-specific-files/physiological-recordings.html * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * DOC: update changelog --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Stefan Appelhoff --- doc/whats_new.rst | 1 + mne_bids/config.py | 2 +- mne_bids/path.py | 8 ++++++-- mne_bids/tests/test_path.py | 4 ++-- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/doc/whats_new.rst b/doc/whats_new.rst index 456af0299..d4ad39cb9 100644 --- a/doc/whats_new.rst +++ b/doc/whats_new.rst @@ -48,6 +48,7 @@ Detailed list of changes ^^^^^^^^^^^^ - :func:`mne_bids.read_raw_bids` can optionally return an ``event_id`` dictionary suitable for use with :func:`mne.events_from_annotations`, and if a ``values`` column is present in ``events.tsv`` it will be used as the source of the integer event ID codes, by `Daniel McCloy`_ (:gh:`1349`) +- BIDS dictates that the recording entity should be displayed as "_recording-" in the filename. This PR makes :class:`mne_bids.BIDSPath` correctly display "_recording-" (instead of "_rec-") in BIDSPath.fpath. By `Scott Huberty`_ (:gh:`1348`) - :func:`mne_bids.make_dataset_description` now correctly encodes the dataset description as UTF-8 on disk, by `Scott Huberty`_ (:gh:`1357`) ⚕️ Code health diff --git a/mne_bids/config.py b/mne_bids/config.py index d225f02b7..7b6a38e51 100644 --- a/mne_bids/config.py +++ b/mne_bids/config.py @@ -235,7 +235,7 @@ "run": "run", "proc": "processing", "space": "space", - "rec": "recording", + "recording": "recording", "split": "split", "desc": "description", } diff --git a/mne_bids/path.py b/mne_bids/path.py index 63d6d1259..83c5ebe53 100644 --- a/mne_bids/path.py +++ b/mne_bids/path.py @@ -2088,7 +2088,7 @@ def get_entity_vals( ): continue if ignore_recordings and any( - [f"_rec-{a}_" in filename.stem for a in ignore_recordings] + [f"_recording-{a}_" in filename.stem for a in ignore_recordings] ): continue if ignore_splits and any( @@ -2280,7 +2280,11 @@ def _filter_fnames( r"_proc-(" + "|".join(processing) + ")" if processing else r"(|_proc-([^_]+))" ) space_str = r"_space-(" + "|".join(space) + ")" if space else r"(|_space-([^_]+))" - rec_str = r"_rec-(" + "|".join(recording) + ")" if recording else r"(|_rec-([^_]+))" + rec_str = ( + r"_recording-(" + "|".join(recording) + ")" + if recording + else r"(|_recording-([^_]+))" + ) split_str = r"_split-(" + "|".join(split) + ")" if split else r"(|_split-([^_]+))" desc_str = ( r"_desc-(" + "|".join(description) + ")" if description else r"(|_desc-([^_]+))" diff --git a/mne_bids/tests/test_path.py b/mne_bids/tests/test_path.py index bcf42f682..605050f96 100644 --- a/mne_bids/tests/test_path.py +++ b/mne_bids/tests/test_path.py @@ -857,7 +857,7 @@ def test_make_filenames(): datatype="ieeg", ) expected_str = ( - "sub-one_ses-two_task-three_acq-four_run-1_proc-six_rec-seven_ieeg.json" + "sub-one_ses-two_task-three_acq-four_run-1_proc-six_recording-seven_ieeg.json" ) assert BIDSPath(**prefix_data).basename == expected_str assert ( @@ -896,7 +896,7 @@ def test_make_filenames(): basename = BIDSPath(**prefix_data, check=False) assert ( basename.basename - == "sub-one_ses-two_task-three_acq-four_run-1_proc-six_rec-seven_ieeg.h5" + == "sub-one_ses-two_task-three_acq-four_run-1_proc-six_recording-seven_ieeg.h5" ) # what happens with scans.tsv file