82 lines
2.3 KiB
Python
82 lines
2.3 KiB
Python
# 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
|