Source code for neurokit2.events.events_to_mne
# -*- coding: utf-8 -*-
import numpy as np
[docs]
def events_to_mne(events, event_conditions=None):
"""**Create MNE-compatible events**
Create `MNE <https://mne.tools/stable/index.html>`_ compatible events for integration with
M/EEG.
Parameters
----------
events : list or ndarray or dict
Events onset location. Can also be a dict obtained through :func:`.events_find`.
event_conditions : list
An optional list containing, for each event, for example the trial category, group or
experimental conditions. Defaults to ``None``.
Returns
-------
tuple
MNE-formatted events and the event id, that can be added
via ``raw.add_events(events)``, and a dictionary with event's names.
See Also
--------
events_find
Examples
----------
.. ipython:: python
import neurokit2 as nk
signal = nk.signal_simulate(duration=4)
events = nk.events_find(signal)
events, event_id = nk.events_to_mne(events)
events
event_id
# Conditions
events = nk.events_find(signal, event_conditions=["A", "B", "A", "B"])
events, event_id = nk.events_to_mne(events)
event_id
"""
if isinstance(events, dict):
if "condition" in events.keys():
event_conditions = events["condition"]
events = events["onset"]
event_id = {}
if event_conditions is None:
event_conditions = ["event"] * len(events)
# Sanity check
if len(event_conditions) != len(events):
raise ValueError(
"NeuroKit error: events_to_mne(): 'event_conditions' argument of different length than event onsets."
)
event_names = list(set(event_conditions))
event_index = list(range(len(event_names)))
for i in enumerate(event_names):
event_conditions = [event_index[i[0]] if x == i[1] else x for x in event_conditions]
event_id[i[1]] = event_index[i[0]]
events = np.array([events, [0] * len(events), event_conditions]).T
return events, event_id