What was new in previous releases?#

Version 0.15 (2024-06-04)#

👩🏽‍💻 Authors#

The following authors contributed for the first time. Thank you so much! 🤩

The following authors had contributed before. Thank you for sticking around! 🤘

Detailed list of changes#

🚀 Enhancements#

  • Including a description for onset and duration in the events.json file, by Julius Welzel (#1255)

🧐 API and behavior changes#

  • The experimental support for running MNE-BIDS examples from your browser using Binder has been removed, by Stefan Appelhoff (#1202)

  • MNE-BIDS will no longer zero-pad (“zfill”) entity indices passed to BIDSPath. For example, If run=1 is passed to MNE-BIDS, it will no longer be silently auto-converted to run-01, by Alex Rockhill (#1215)

  • MNE-BIDS will no longer warn about missing leading punctuation marks for extensions passed BIDSPath. For example, MNE-BIDS will now silently auto-convert edf to `.edf, by Alex Rockhill (#1215)

  • MNE-BIDS will no longer error during write_raw_bids if there are BAD_ACQ_SKIP annotations in the raw file and no corresponding key in event_id. Instead, it will automatically add the necessary key and assign an unused integer event code to it. By Daniel McCloy (#1258)

🛠 Requirements#

  • MNE-BIDS now requires Python 3.9 or higher.

  • MNE-BIDS now requires MNE-Python 1.6.0 or higher.

  • edfio replaces EDFlib-Python for export to EDF with MNE-Python >= 1.7.0.

  • Installing mne-bids[full] will now also install defusedxml on all platforms.

  • Version requirements for optional dependency packages have been bumped up, see installation instructions.

🪲 Bug fixes#

⚕️ Code health#

  • The configuration of MNE-BIDS has been consolidated from several files (e.g., setup.cfg, setup.py, requirements.txt) and is now specified in a standard pyproject.toml file, by Stefan Appelhoff (#1202)

  • Linting and code formatting is now done entirely using ruff. Previously used tools (e.g., flake8, black) have been fully replaced, by Stefan Appelhoff (#1203)

  • The package build backend has been switched from setuptools to hatchling. This only affects users who build and install MNE-BIDS from source, and should not lead to changed runtime behavior, by Richard Höchenberger (#1204)

  • Display of the version number on the website is now truncated for over-long version strings, by Daniel McCloy (#1206)

  • The long deprecated events_data parameter has been fully removed from write_raw_bids() in favor of events, by Stefan Appelhoff (#1229)

Version 0.14 (2023-11-16)#

👩🏽‍💻 Authors#

The following authors contributed:

Detailed list of changes#

🚀 Enhancements#

🪲 Bug fixes#

Version 0.13 (2023-08-21)#

👩🏽‍💻 Authors#

The following authors contributed for the first time. Thank you so much! 🤩

The following authors had contributed before. Thank you for sticking around! 🤘

Detailed list of changes#

🚀 Enhancements#

🧐 API and behavior changes#

  • When writing events, we now also create an *_events.json file in addition to *_events.tsv. This ensures compatibility with the upcoming release of BIDS 1.9, by Richard Höchenberger (#1132)

  • We silenced warnings about missing events.tsv files when reading empty-room or resting-state data, by Richard Höchenberger (#1133)

  • BTi ‘processed data files’ (pdf) will no longer be renamed to c,rf* by default. Instead, they will be copied over without name changes. When reading BTi data via mne-bids, more informative log and error messages will help choosing the right course of action, by Stefan Appelhoff (#1160)

🛠 Requirements#

  • MNE-BIDS now requires MNE-Python 1.4 or newer.

🪲 Bug fixes#

  • Amending a dataset now works in cases where the newly-written data contains additional participant properties (new columns in participants.tsv) not found in the existing dataset, by Richard Höchenberger (#1113)

  • Fix raw_to_bids CLI tool to properly recognize boolean and numeric values for the line_freq and overwrite parameters, by Stefan Appelhoff (#1125)

  • Fix copyfile_eeglab() to prevent data type conversion leading to an eeg_checkset failure when trying to load the file in EEGLAB, by Laetitia Fesselier (#1126)

  • Improve compatibility with latest MNE-Python, by Eric Larson (#1128)

  • Working with BIDSPath would sometimes inadvertently create new directories, contaminating the BIDS dataset, by Richard Höchenberger (#1139)

  • Fix thrown error if the BIDSVersion defined in dataset_description.json file does not match the MNE-BIDS compliant BIDSVersion, ensuring backwards compatibility across BIDS complient tools, by Ford McDonald (#1147)

  • Copying BTi files without a headshape file will no longer raise an error, the file will simply be copied, and the missing headshape file will be ignored, by Stefan Appelhoff (#1158)

Version 0.12 (2022-12-18)#

This release includes a number of bug fixes as well as several smaller enhancements. Please note some updated requirements, as listed in the details below.

📝 Notable changes#

  • Nothing out of the ordinary, see below.

👩🏽‍💻 Authors#

The following authors contributed for the first time. Thank you so much! 🤩

The following authors had contributed before. Thank you for sticking around! 🤘

Detailed list of changes#

🚀 Enhancements#

🧐 API and behavior changes#

  • nothing new!

🛠 Requirements#

  • MNE-BIDS now requires Python 3.8 or higher, because Python 3.7 is soon reaching its end of life.

  • MNE-BIDS now requires MNE-Python 1.2.0 or higher.

🪲 Bug fixes#

  • When writing data containing mne.Annotations and passing events to write_raw_bids(), previously, annotations whose description did not appear in event_id were silently dropped. We now raise an exception and request users to specify mappings between descriptions and event codes in this case. It is still possible to omit event_id if no events are passed, by Richard Höchenberger (#1084)

  • When working with NIRS data, raise the correct error message when a faulty format argument is passed to write_raw_bids(), by Stefan Appelhoff (#1092)

  • Fixed writing data preloaded from a format that’s not supported by BIDS, by Richard Höchenberger (#1101)

  • Fixed writing data from neuromag system having 122 sensors, by Alexandre Gramfort (#1109)

Version 0.11 (2022-10-08)#

This release includes a number of bug fixes as well as several smaller enhancements. Please note some behavior changes and updated requirements, as listed in the details below.

📝 Notable changes#

  • Support for new channel types is available: temperature and galvanic skin response

  • MNE-BIDS now supports the BIDS “description” entity (desc)

  • It’s now possible to store Curry (CDT) files and EGI files with MNE-BIDS.

👩🏽‍💻 Authors#

The following authors contributed for the first time. Thank you so much! 🤩

The following authors had contributed before. Thank you for sticking around! 🤘

Detailed list of changes#

🚀 Enhancements#

🧐 API and behavior changes#

🛠 Requirements#

  • MNE-BIDS now requires MNE-Python 1.0 or newer.

  • Writing BrainVision files now requires pybv version 0.7.3, by Stefan Appelhoff (#1011)

🪲 Bug fixes#

Version 0.10 (2022-03-14)#

This release brings experimental fNIRS suppot, improvements in coordinate frame handling, and various enhancements regarding MRI fiducials.

📝 Notable changes#

  • We now have experimental support for fNIRS data (SNIRF format). This is still super fresh, and the respective BIDS enhancement proposal (BEP) has not yet been finalized & accepted into the standard. However, we’re excitied to be able to do this first step towards fNIRS support!

  • Numerous improvements have been added to enhance our support for various coordinate frames, including those that are not yet supported by MNE-BIDS. These changes are mostly relevant to iEEG users. Please see the detailed list of changes below.

  • We have added support for storing and reading multiple anatomical landmarks (“fiducials”) for the same participant. This makes it possible, for example, to store different sets of landmarks for each recording session.

  • It’s now possible to store Neuroscan (CNT) files with MNE-BIDS.

👩🏽‍💻 Authors#

The following authors contributed for the first time. Thank you so much! 🤩

The following authors had contributed before. Thank you for sticking around! 🤘

Detailed list of changes#

🚀 Enhancements#

🧐 API and behavior changes#

🛠 Requirements#

  • MNE-BIDS now requires Jinja2 to work with MNE-Python 0.24.

🪲 Bug fixes#

Version 0.9 (2021-11-23)#

This release brings compatibility with MNE-Python 0.24 and some new convenience functions and speedups of existing code to help you be more productive! 👩🏽‍💻 And, of course, plenty of bug fixes. 🐞

Notable changes#

Authors#

People who contributed to this release (in alphabetical order):

Detailed list of changes#

Enhancements#

API and behavior changes#

Requirements#

  • MNE-BIDS now requires MNE-Python 0.24 or newer.

  • Writing BrainVision files now requires pybv version 0.6, by Stefan Appelhoff (#880)

Bug fixes#

Version 0.8 (2021-07-15)#

This release brings numerous improvements and fixes based on feedback from our users, including those working with very large datasets. MNE-BIDS now handles previously-overlooked edge cases, offers a much more efficient way to store data on macOS and Linux (using symbolic links), and lays the groundwork for supporting BIDS derivatives, i.e., storing modified data.

Notable changes#

  • You can now write preloaded and potentially modified data with mne_bids.write_raw_bids() by passing allow_preload=True. This is a first step towards supporting derivative files.

  • mne_bids.BIDSPath() now has property getters and setters for all BIDS entities. What this means is that you can now do things like bids_path.subject = '01' instead of bids_path.update(subject='01').

  • We now support Deep Brain Stimulation (DBS) data.

  • The way we handle anatomical landmarks was greatly revamped to ensure we’re always using the correct coordinate systems. A new function, mne_bids.get_anat_landmarks(), helps with extracting fiducial points from anatomical scans.

  • When creating a BIDS dataset from FIFF files on macOS and Linux, MNE-BIDS can now optionally generate symbolic links to the original files instead of copies. Simply pass symlink=True to mne_bids.write_raw_bids(). This can massively reduce the storage space requirements.

Authors#

Detailed list of changes#

Enhancements#

  • The fields “DigitizedLandmarks” and “DigitizedHeadPoints” in the json sidecar of Neuromag data are now set to true or false depending on whether any landmarks (NAS, RPA, LPA) or extra points are found in raw.info['dig'], by Eduard Ort (#772)

  • Updated the “Read BIDS datasets” example to use data from OpenNeuro, by Alex Rockhill (#753)

  • mne_bids.get_head_mri_trans() is now more lenient when looking for the fiducial points (LPA, RPA, and nasion) in the MRI JSON sidecar file, and accepts a larger variety of landmark names (upper- and lowercase letters; 'nasion' instead of only 'NAS'), by Richard Höchenberger (#769)

  • mne_bids.get_head_mri_trans() gained a new keyword argument t1_bids_path, allowing for the MR scan to be stored in a different session or even in a different BIDS dataset than the electrophysiological recording, by Richard Höchenberger (#771)

  • Add writing simultaneous EEG-iEEG recordings via mne_bids.write_raw_bids(). The desired output datatype must be specified in the mne_bids.BIDSPath object, by Richard Köhler (#774)

  • mne_bids.write_raw_bids() gained a new keyword argument symlink, which allows to create symbolic links to the original data files instead of copying them over. Currently works for FIFF files on macOS and Linux, by Richard Höchenberger (#778)

  • mne_bids.BIDSPath now has property getter and setter methods for all BIDS entities, i.e., you can now do things like bids_path.subject = 'foo' and don’t have to resort to bids_path.update(). This also ensures you’ll get proper completion suggestions from your favorite Python IDE, by Richard Höchenberger (#786)

  • mne_bids.write_raw_bids() now stores information about continuous head localization measurements (e.g., Elekta/Neuromag cHPI) in the MEG sidecar file, by Richard Höchenberger (#794)

  • mne_bids.write_raw_bids() gained a new parameter empty_room that allows to specify an associated empty-room recording when writing an MEG data file. This information will be stored in the AssociatedEmptyRoom field of the MEG JSON sidecar file, by Richard Höchenberger (#795)

  • Added support for the new channel type 'dbs' (Deep Brain Stimulation), which was introduced in MNE-Python 0.23, by Richard Köhler (#800)

  • mne_bids.read_raw_bids() now warns in many situations when it encounters a mismatch between the channels in *_channels.tsv and the raw data, by Richard Höchenberger (#823)

  • MNE BIDS now accepts .mrk head digitization files used in the KIT/Yokogawa/Ricoh MEG system, by Jean-Rémi King and Stefan Appelhoff (#842)

API and behavior changes#

  • Writing datasets via write_raw_bids(), will now never overwrite dataset_description.json file, by Adam Li (#765)

  • When writing BIDS datasets, MNE-BIDS now tags them as BIDS 1.6.0 (we previously tagged them as BIDS 1.4.0), by Richard Höchenberger (#782)

  • mne_bids.read_raw_bids() now passes allow_maxshield=True to the MNE-Python reader function by default when reading FIFF files. Previously, extra_params=dict(allow_maxshield=True) had to be passed explicitly, by Richard Höchenberger (#787)

  • The raw_to_bids command has lost its --allow_maxshield parameter. If writing a FIFF file, we will now always assume that writing data before applying a Maxwell filter is fine, by Richard Höchenberger (#787)

  • mne_bids.BIDSPath.find_empty_room() now first looks for an AssociatedEmptyRoom field in the MEG JSON sidecar file to retrieve the empty-room recording; only if this information is missing, it will proceed to try and find the best-matching empty-room recording based on measurement date (i.e., fall back to the previous behavior), by Richard Höchenberger (#795)

  • If mne_bids.read_raw_bids() encounters raw data with the STI 014 stimulus channel and this channel is not explicitly listed in *_channels.tsv, it is now automatically removed upon reading, by Richard Höchenberger (#823)

  • mne_bids.get_anat_landmarks() was added to clarify and simplify the process of generating landmarks that now need to be passed to mne_bids.write_anat(); this deprecates the arguments raw, trans and t1w of mne_bids.write_anat(), by Alex Rockhill and Alexandre Gramfort (#827)

  • write_raw_bids() now accepts preloaded raws as input with some caveats if the new parameter allow_preload is explicitly set to True. This enables some preliminary support for items such as uncommon file formats, generated data, and processed derivatives, by Sin Kim (#819)

  • MNE-BIDS now writes all TSV data files with a newline character at the end of the file, complying with UNIX/POSIX standards, by Stefan Appelhoff (#831)

Requirements#

  • For downloading OpenNeuro datasets, openneuro-py is now required to run the examples and build the documentation, by Alex Rockhill (#753)

  • MNE-BIDS now depends on setuptools. This package is normally installed by your Python distribution automatically, so we don’t expect any users to be affected by this change, by Richard Höchenberger (#794)

  • MNE-BIDS now requires Python 3.7 or higher, because Python 3.6 is soon reaching its end of life.

Bug fixes#

Version 0.7 (2021-03-22)#

This release brings numerous enhancements and bug fixes that enhance reading and writing BIDS data, and improve compatibility with the latest BIDS specifications.

Notable changes#

  • Channel names in *_channels.tsv and *_electrodes.tsv files now always take precedence over the names stored in the raw files.

  • When reading data where the same trial type refers to different trigger values, we will now automatically create hierarchical event names in the form of trial_type/value1, trial_type/value2` etc.

  • mne_bids.write_raw_bids() now allows users to specify a format conversion via the new format parameter.

  • Various improvements to data reading and mne_bids.BIDSPath make working with real-life data easier.

  • Many bug fixes in mne_bids.write_raw_bids() and in the MNE-BIDS Inspector.

Authors#

Detailed list of changes#

Enhancements#

API and behavior changes#

Requirements#

  • For writing BrainVision files, pybv version 0.5 is now required to allow writing of non-voltage channels, by Adam Li (#670)

Bug fixes#

Version 0.6 🎄 (2020-12-16)#

These are challenging days for many of us, and to make your lives ever so slightly easier, we’ve been working hard to deliver this early Christmas present 🎁 And even if you do not celebrate Christmas, we are quite certain you will like what we got for you! So – what are you waiting for? It’s time to unwrap!

Notable changes#

  • The new Inspector, which can be invoked via mne_bids.inspect_dataset(), allows you to interactively explore your raw data, change the bad channels selection, and edit mne.Annotations. It also performs automated detection of flat data segments or channels, to assist you during visual inspection. The capabilities of the inspector will be further expanded in upcoming releases of MNE-BIDS.

  • To further assist you during data inspection, we have added a function to summarize all events present in a dataset, mne_bids.stats.count_events().

  • Sidecar JSON files can now be updated using a template via mne_bids.update_sidecar_json().

  • You can now read and write FLASH MRI images using mne_bids.write_anat(). We also fixed some issues with MRI defacing along the way.

  • Event durations are now preserved upon reading and writing data (we used to set all event durations to zero before).

Authors#

Detailed list of changes#

Enhancements#

API changes#

Requirements#

  • Writing BrainVision data now requires pybv 0.4 or later.

Bug fixes#

Version 0.5 (2020-10-22)#

This is a big release with lots of changes, many of them breaking existing code. But do not fear: migration is easy, and you will love what we have been cooking for you!

Notable changes#

  • We introduce mne_bids.BIDSPath(), a new class for all BIDS file and folder operations. All functions in MNE-BIDS that previously accepted filenames and folder locations (e.g. bids_root) have been updated to work with BIDSPath. Others have been removed. Consequently, you will need to update your existing code, too. See the API changes section for an overview of which functions have changed or have been removed, and follow this introduction and our to learn about the basics of BIDSPath. Don’t worry – it’s going to be a breeze! 🤗

  • MNE-BIDS now requires MNE-Python 0.21.

  • The new function mne_bids.make_report() can help you populate a paragraph of your next paper’s methods section!

  • You can now interactively mark channels as bad using mne_bids.mark_bad_channels.

  • Elekta/Neuromag/MEGIN fine-calibration and crosstalk files can now be stored in your BIDS dataset via mne_bids.write_meg_calibration() and mne_bids.write_meg_crosstalk().

  • When writing a raw file that contains annotations, these will now be converted to and stored as events by mne_bids.write_raw_bids().

Authors#

The following people have contributed to this release of MNE-BIDS:

Detailed list of changes#

Enhancements#

Bug fixes#

API changes#

In the transition to using mne_bids.BIDSPath(), the following functions have been updated:

The following functions have been removed:

Further API changes:

Version 0.4 (2020-04-04)#

Changelog#

Bug#

Authors#

People who contributed to this release (in alphabetical order):

Version 0.3 (2019-12-17)#

Changelog#

Bug#

  • Fixed bug in mne_bids.datasets.fetch_faces_data where downloading multiple subjects was impossible, by Stefan Appelhoff (#262)

  • Fixed bug where read_raw_bids() would throw a ValueError upon encountering strings in the “onset” or “duration” column of events.tsv files, by Stefan Appelhoff (#234)

  • Allow raw data from KIT systems to have two marker files specified, by Matt Sanderson (#173)

API#

  • read_raw_bids() no longer optionally returns events and event_id but returns the raw object with mne.Annotations, whenever an events.tsv file is present, by Stefan Appelhoff (#209)

Authors#

People who contributed to this release (in alphabetical order):

Version 0.2 (2019-04-26)#

Changelog#

Bug#

  • Normalize the length of the branches in mne_bids.print_dir_tree() by the length of the root path, leading to more adequate visual display, by Stefan Appelhoff (#192)

  • Assert a minimum required MNE-version, by Dominik Welke (#166)

  • Add function in mne_bids.utils to copy and rename CTF files mne_bids.utils.copyfile_ctf, by Romain Quentin (#162)

  • Encoding of BrainVision .vhdr/.vmrk files is checked to prevent encoding/decoding errors when modifying, by Dominik Welke (#155)

  • The original units present in the raw data will now correctly be written to channels.tsv files for BrainVision, EEGLAB, and EDF, by Stefan Appelhoff (#125)

  • Fix logic with inferring unknown channel types for CTF data, by Mainak Jas (#129)

  • Fix the file naming for FIF files to only expose the part key-value pair when files are split, by Teon Brooks (#137)

  • Allow files with no stim channel, which could be the case for example in resting state data, by Mainak Jas (#167)

  • Better handling of unicode strings in TSV files, by Mainak Jas (#172)

  • Fix separator in scans.tsv to always be /, by Matt Sanderson (#176)

  • Add seeg to mne_bids.utils._handle_datatype when determining the kind of ieeg data, by Ezequiel Mikulan (#180)

  • Fix problem in copying CTF files on Network File System due to a bug upstream in Python, by Mainak Jas (#174)

  • Fix problem in copying BTi files. Now, a utility function ensures that all the related files such as config and headshape are copied correctly, by Mainak Jas (#135)

  • Fix name of “sample” and “value” columns on events.tsv files, by Ezequiel Mikulan (#185)

  • Update function to copy KIT files to the meg directory, by Matt Sanderson (#187)

API#

Authors#

People who contributed to this release (in alphabetical order):

Version 0.1 (2018-11-05)#

Changelog#

Bug#

  • Correctly handle the case when measurement date is not available, by Mainak Jas (#23)

  • Fix counting of miscellaneous channels, by Matt Sanderson (#49)

  • The source data is now copied over to the new BIDS directory. Previously this was only true for FIF data, by Stefan Appelhoff (#55)

  • Fix ordering of columns in scans.tsv, by Matt Sanderson (#68)

  • Fix bug in how artificial trigger channel STI014 is handled in channels.tsv for KIT systems, by Matt Sanderson (#72)

  • Fix channel types for KIT system in channels.tsv, by Matt Sanderson (#76)

  • Fix the way FIF files are named to satisfy the BIDS part parameters of the filename construction, Teon Brooks (#102)

  • Fix how overwriting of data is handled, by Matt Sanderson (#99)

Authors#

People who contributed to this release (in alphabetical order):