Source code for mne_nirs.channels._roi
# Authors: Robert Luke <mail@robertluke.net>
#
# License: BSD (3-clause)
import numpy as np
from mne.utils import warn
[docs]
def picks_pair_to_idx(raw, sd_pairs, on_missing="error"):
"""
Return a list of picks for specified source detector pairs.
If multiple channel have the same source detector pair,
for example if there are multiple wavelengths or chromaphore, then
all channels matching the requested sources and detectors will be
returned.
Parameters
----------
raw : instance of Raw
The haemoglobin data.
sd_pairs : list of lists
List of source detector pairs. For example, to request the picks for
channels comprising of source 1 detector 4 and source 13
detector 4 you would specify [[1, 4], [13, 4]].
on_missing : str
What to do if one or several requested source detector are not found
in the recording.
Valid keys are 'error' | 'warning' | 'ignore'
Default is 'error'. If on_missing is 'warning' it will proceed but
warn, if 'ignore' it will proceed silently. Note.
If none of the event ids are found in the data, an error will be
automatically generated irrespective of this parameter.
Returns
-------
picks : list of integers
List of picks corresponding to requested source detector pairs.
"""
ch_names = raw.ch_names
picks = list()
for pair in sd_pairs:
pair_name = "S" + str(pair[0]) + "_D" + str(pair[1]) + " "
pair_picks = np.where([pair_name in ch for ch in ch_names])[0]
if len(pair_picks) == 0:
msg = "No matching channels found for source %s " "detector %s" % (
pair[0],
pair[1],
)
if on_missing == "error":
print(pair_picks)
raise ValueError(msg)
elif on_missing == "warning":
warn(msg)
else:
# on_missing == 'ignore':
continue
[picks.append(pick) for pick in pair_picks]
return picks