mne_bids.update_sidecar_json#

mne_bids.update_sidecar_json(bids_path, entries, verbose=None)[source]#

Update sidecar files using a dictionary or JSON file.

Will update metadata fields inside the path defined by bids_path.fpath according to the entries. If a field does not exist in the corresponding sidecar file, then that field will be created according to the entries. If a field does exist in the corresponding sidecar file, then that field will be updated according to the entries.

For example, if InstitutionName is not defined in the sidecar json file, then trying to update InstitutionName to Martinos Center will update the sidecar json file to have InstitutionName as Martinos Center.

Parameters:
bids_pathBIDSPath

The set of paths to update. The mne_bids.BIDSPath instance passed here must have the .root attribute set. The .datatype attribute may be set. If .datatype is not set and only one data type (e.g., only EEG or MEG data) is present in the dataset, it will be selected automatically. This must uniquely identify an existing file path, else an error will be raised.

entriesdict | str | pathlib.Path

A dictionary, or JSON file that defines the sidecar fields and corresponding values to be updated to.

verbosebool | str | int | None

Control verbosity of the logging output. If None, use the default verbosity level. See the logging documentation and mne.verbose() for details. Should only be passed as a keyword argument.

Raises:
RuntimeError

If the specified bids_path.fpath cannot be found in the dataset.

RuntimeError

If the bids_path.fpath does not have .json extension.

Notes

This function can only update JSON files.

Sidecar JSON files include files such as *_ieeg.json, *_coordsystem.json, *_scans.json, etc.

You should double check that your update dictionary is correct for the corresponding sidecar JSON file because it will perform a dictionary update of the sidecar fields according to the passed in dictionary overwriting any information that was previously there.

Examples

Update a sidecar JSON file

>>> from pathlib import Path
>>> root = Path('./mne_bids/tests/data/tiny_bids').absolute()
>>> bids_path = BIDSPath(subject='01', task='rest', session='eeg',
...                      suffix='eeg', extension='.json', datatype='eeg',
...                      root=root)
>>> entries = {'PowerLineFrequency': 60}
>>> update_sidecar_json(bids_path, entries, verbose=False)

Examples using mne_bids.update_sidecar_json#

Updating BIDS datasets

Updating BIDS datasets