Skip to content

Commit f4e0a03

Browse files
committed
actually enable BDF writing
1 parent 3977590 commit f4e0a03

File tree

1 file changed

+22
-27
lines changed

1 file changed

+22
-27
lines changed

mne_bids/write.py

Lines changed: 22 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1280,23 +1280,7 @@ def _write_raw_brainvision(raw, bids_fname, events, overwrite):
12801280
)
12811281

12821282

1283-
def _write_raw_bdf(raw, bids_fname, overwrite):
1284-
"""Store data as BDF.
1285-
1286-
Parameters
1287-
----------
1288-
raw : mne.io.Raw
1289-
Raw data to save.
1290-
bids_fname : str
1291-
The output filename.
1292-
overwrite : bool
1293-
Whether to overwrite an existing file or not.
1294-
"""
1295-
assert str(bids_fname).endswith(".bdf")
1296-
raw.export(bids_fname, overwrite=overwrite)
1297-
1298-
1299-
def _write_raw_edf(raw, bids_fname, overwrite):
1283+
def _write_raw_edf_bdf(raw, bids_fname, overwrite):
13001284
"""Store data as EDF.
13011285
13021286
Parameters
@@ -1308,7 +1292,7 @@ def _write_raw_edf(raw, bids_fname, overwrite):
13081292
overwrite : bool
13091293
Whether to overwrite an existing file or not.
13101294
"""
1311-
assert str(bids_fname).endswith(".edf")
1295+
assert bids_fname.suffix in (".edf", ".bdf")
13121296
raw.export(bids_fname, overwrite=overwrite)
13131297

13141298

@@ -1657,14 +1641,14 @@ def write_raw_bids(
16571641
``source`` column of ``scans.tsv``. By default, this information
16581642
is not stored.
16591643
1660-
format : 'auto' | 'BrainVision' | 'EDF' | 'FIF' | 'EEGLAB'
1644+
format : 'auto' | 'BrainVision' | 'BDF' | 'EDF' | 'FIF' | 'EEGLAB'
16611645
Controls the file format of the data after BIDS conversion. If
16621646
``'auto'``, MNE-BIDS will attempt to convert the input data to BIDS
16631647
without a change of the original file format. A conversion to a
16641648
different file format will then only take place if the original file
16651649
format lacks some necessary features.
16661650
Conversion may be forced to BrainVision, EDF, or EEGLAB for (i)EEG,
1667-
and to FIF for MEG data.
1651+
to BDF or EDF for EMG, and to FIF for MEG data.
16681652
symlink : bool
16691653
Instead of copying the source files, only create symbolic links to
16701654
preserve storage space. This is only allowed when not anonymizing the
@@ -1905,6 +1889,8 @@ def write_raw_bids(
19051889
else:
19061890
if format == "BrainVision":
19071891
ext = ".vhdr"
1892+
elif format == "BDF":
1893+
ext = ".bdf"
19081894
elif format == "EDF":
19091895
ext = ".edf"
19101896
elif format == "EEGLAB":
@@ -1914,7 +1900,7 @@ def write_raw_bids(
19141900
else:
19151901
msg = (
19161902
'For preloaded data, you must set the "format" parameter '
1917-
"to one of: BrainVision, EDF, EEGLAB, or FIF"
1903+
"to one of: BrainVision, BDF, EDF, EEGLAB, or FIF"
19181904
)
19191905
if format != "auto": # the default was changed
19201906
msg += f', but got: "{format}"'
@@ -2108,6 +2094,12 @@ def write_raw_bids(
21082094
warn("Converting data files to BrainVision format for anonymization")
21092095
convert = True
21102096
bids_path.update(extension=".vhdr")
2097+
elif bids_path.datatype == "emg":
2098+
if ext not in [".edf", ".bdf", ".EDF", ".BDF"]:
2099+
warn("Converting data files to BDF format for anonymization")
2100+
convert = True
2101+
bids_path.update(extension=".bdf")
2102+
21112103
# Read in Raw object and extract metadata from Raw object if needed
21122104
orient = ORIENTATION.get(ext, "n/a")
21132105
unit = EXT_TO_UNIT_MAP.get(ext, "n/a")
@@ -2263,9 +2255,12 @@ def write_raw_bids(
22632255
if format == "BrainVision" and bids_path.datatype in ["ieeg", "eeg"]:
22642256
convert = True
22652257
bids_path.update(extension=".vhdr")
2266-
elif format == "EDF" and bids_path.datatype in ["ieeg", "eeg"]:
2258+
elif format == "EDF" and bids_path.datatype in ["ieeg", "eeg", "emg"]:
22672259
convert = True
22682260
bids_path.update(extension=".edf")
2261+
elif format == "BDF" and bids_path.datatype in ["emg"]:
2262+
convert = True
2263+
bids_path.update(extension=".bdf")
22692264
elif format == "EEGLAB" and bids_path.datatype in ["ieeg", "eeg"]:
22702265
convert = True
22712266
bids_path.update(extension=".set")
@@ -2326,20 +2321,20 @@ def write_raw_bids(
23262321
else bids_path.fpath
23272322
),
23282323
)
2324+
elif bids_path.datatype in ["emg"] and format == "BDF":
2325+
bids_path.update(extension=".bdf")
2326+
_write_raw_edf_bdf(raw, bids_path.fpath, overwrite=overwrite)
23292327
elif bids_path.datatype in ["eeg", "emg", "ieeg"] and format == "EDF":
23302328
warn("Converting data files to EDF format")
23312329
bids_path.update(extension=".edf")
2332-
_write_raw_edf(raw, bids_path.fpath, overwrite=overwrite)
2333-
elif bids_path.datatype in ["emg"] and format == "BDF":
2334-
bids_path.update(extension=".bdf")
2335-
_write_raw_bdf(raw, bids_path.fpath, overwrite=overwrite)
2330+
_write_raw_edf_bdf(raw, bids_path.fpath, overwrite=overwrite)
23362331
elif bids_path.datatype in ["eeg", "ieeg"] and format == "EEGLAB":
23372332
warn("Converting data files to EEGLAB format")
23382333
_write_raw_eeglab(raw, bids_path.fpath, overwrite=overwrite)
23392334
elif bids_path.datatype in ["emg"]:
23402335
bids_path.update(extension=".bdf")
23412336
warn("Converting data files to BDF format")
2342-
_write_raw_edf(raw, bids_path.fpath, overwrite=overwrite)
2337+
_write_raw_edf_bdf(raw, bids_path.fpath, overwrite=overwrite)
23432338
else:
23442339
warn("Converting data files to BrainVision format")
23452340
bids_path.update(suffix=bids_path.datatype, extension=".vhdr")

0 commit comments

Comments
 (0)