mne_bids.write_raw_bids

mne_bids.write_raw_bids(raw, bids_path, events_data=None, event_id=None, anonymize=None, overwrite=False, verbose=True)[source]

Save raw data to a BIDS-compliant folder structure.

Warning

  • The original file is simply copied over if the original file format is BIDS-supported for that datatype. Otherwise, this function will convert to a BIDS-supported file format while warning the user. For EEG and iEEG data, conversion will be to BrainVision format; for MEG, conversion will be to FIFF.

  • mne-bids will infer the manufacturer information from the file extension. If your file format is non-standard for the manufacturer, please update the manufacturer field in the sidecars manually.

Parameters
rawinstance of mne.io.Raw

The raw data. It must be an instance of mne.io.Raw. The data should not be loaded from disk, i.e., raw.preload must be False.

bids_pathBIDSPath

The file to write. The mne_bids.BIDSPath instance passed here must have the .root attribute set. If the .datatype attribute is not set, it will be inferred from the recording data type found in raw. Example:

bids_path = BIDSPath(subject='01', session='01', task='testing',
                     acquisition='01', run='01', root='/data/BIDS')

This will write the following files in the correct subfolder root:

sub-01_ses-01_task-testing_acq-01_run-01_meg.fif
sub-01_ses-01_task-testing_acq-01_run-01_meg.json
sub-01_ses-01_task-testing_acq-01_run-01_channels.tsv
sub-01_ses-01_task-testing_acq-01_run-01_coordsystem.json

and the following one if events_data is not None:

sub-01_ses-01_task-testing_acq-01_run-01_events.tsv

and add a line to the following files:

participants.tsv
scans.tsv

Note that the data type is automatically inferred from the raw object, as well as the extension. Data with MEG and other electrophysiology data in the same file will be stored as 'meg'.

events_datapath-like | array | None

If a path, specifies the location of an MNE events file. If an array, the MNE events array (shape: (n_events, 3)). If None, events will be inferred from the the raw object’s mne.Annotations using mne.events_from_annotations.

event_iddict | None

The event ID dictionary used to create a trial_type column in *_events.tsv.

anonymizedict | None

If None (default), no anonymization is performed. If a dictionary, data will be anonymized depending on the dictionary keys: daysback is a required key, keep_his is optional.

daysbackint

Number of days by which to move back the recording date in time. In studies with multiple subjects the relative recording date differences between subjects can be kept by using the same number of daysback for all subject anonymizations. daysback should be great enough to shift the date prior to 1925 to conform with BIDS anonymization rules.

keep_hisbool

If False (default), all subject information next to the recording date will be overwritten as well. If True, keep subject information apart from the recording date.

overwritebool

Whether to overwrite existing files or data in files. Defaults to False.

If True, any existing files with the same BIDS parameters will be overwritten with the exception of the *_participants.tsv and *_scans.tsv files. For these files, parts of pre-existing data that match the current data will be replaced. For *_participants.tsv, specifically, age, sex and hand fields will be overwritten, while any manually added fields in participants.json and participants.tsv by a user will be retained. If False, no existing data will be overwritten or replaced.

verbosebool

If True, this will print a snippet of the sidecar files. Otherwise, no content will be printed.

Returns
bids_pathBIDSPath

The path of the created data file.

Notes

You should ensure that raw.info['subject_info'] and raw.info['meas_date'] are set to proper (not-None) values to allow for the correct computation of each participant’s age when creating *_participants.tsv.

This function will convert existing mne.Annotations from raw.annotations to events. Additionally, any events supplied via events_data will be written too. To avoid writing of annotations, remove them from the raw file via raw.set_annotations(None) before invoking write_raw_bids.

To write events encoded in a STIM channel, you first need to create the events array manually and pass it to this function:

See the documentation of mne.find_events for more information on event extraction from STIM channels.