initial commit
This commit is contained in:
81
mne/misc.py
Normal file
81
mne/misc.py
Normal file
@@ -0,0 +1,81 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
|
||||
def parse_config(fname):
|
||||
"""Parse a config file (like .ave and .cov files).
|
||||
|
||||
Parameters
|
||||
----------
|
||||
fname : path-like
|
||||
Config file name.
|
||||
|
||||
Returns
|
||||
-------
|
||||
conditions : list of dict
|
||||
Each condition is indexed by the event type.
|
||||
A condition contains as keys::
|
||||
|
||||
tmin, tmax, name, grad_reject, mag_reject,
|
||||
eeg_reject, eog_reject
|
||||
"""
|
||||
reject_params = read_reject_parameters(fname)
|
||||
|
||||
with open(fname) as f:
|
||||
lines = f.readlines()
|
||||
|
||||
cat_ind = [i for i, x in enumerate(lines) if "category {" in x]
|
||||
event_dict = dict()
|
||||
for ind in cat_ind:
|
||||
for k in range(ind + 1, ind + 7):
|
||||
words = lines[k].split()
|
||||
if len(words) >= 2:
|
||||
key = words[0]
|
||||
if key == "event":
|
||||
event = int(words[1])
|
||||
break
|
||||
else:
|
||||
raise ValueError("Could not find event id.")
|
||||
event_dict[event] = dict(**reject_params)
|
||||
for k in range(ind + 1, ind + 7):
|
||||
words = lines[k].split()
|
||||
if len(words) >= 2:
|
||||
key = words[0]
|
||||
if key == "name":
|
||||
name = " ".join(words[1:])
|
||||
if name[0] == '"':
|
||||
name = name[1:]
|
||||
if name[-1] == '"':
|
||||
name = name[:-1]
|
||||
event_dict[event]["name"] = name
|
||||
if key in ["tmin", "tmax", "basemin", "basemax"]:
|
||||
event_dict[event][key] = float(words[1])
|
||||
return event_dict
|
||||
|
||||
|
||||
def read_reject_parameters(fname):
|
||||
"""Read rejection parameters from .cov or .ave config file.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
fname : path-like
|
||||
Filename to read.
|
||||
|
||||
Returns
|
||||
-------
|
||||
params : dict
|
||||
The rejection parameters.
|
||||
"""
|
||||
with open(fname) as f:
|
||||
lines = f.readlines()
|
||||
|
||||
reject_names = ["gradReject", "magReject", "eegReject", "eogReject", "ecgReject"]
|
||||
reject_pynames = ["grad", "mag", "eeg", "eog", "ecg"]
|
||||
reject = dict()
|
||||
for line in lines:
|
||||
words = line.split()
|
||||
if words[0] in reject_names:
|
||||
reject[reject_pynames[reject_names.index(words[0])]] = float(words[1])
|
||||
|
||||
return reject
|
||||
Reference in New Issue
Block a user