error in ch_names retrieved from 'find_ch_adjacency'

Dear all,

I am looking for insight on an error occurring when using the function ‘find_ch_adjacency’.

I am adapting the example ‘Spatiotemporal permutation F-test on full sensor data’

I want to create an adjacency matrix for gradiometers.
I have the following evoked object:

grad_evoked
Out[64]: <Evoked | '' (average, N=1), 0 – 1 sec, baseline off, 204 ch, ~6.6 MB>

grad_evoked.info
Out[65]: 
<Info | 24 non-empty values
 acq_pars: ACQactiveGround 1 ACQch.BIO001.gain 2000 ACQch.BIO001.highpass ...
 bads: []
 ch_names: MEG0112, MEG0113, MEG0122, MEG0123, MEG0132, MEG0133, MEG0142, ...
 chs: 204 Gradiometers
 custom_ref_applied: False
 description: TRIUX system at Birmingham-3140
 dev_head_t: MEG device -> head transform
 dig: 307 items (3 Cardinal, 5 HPI, 299 Extra)
 events: 1 item (list)
 experimenter: meguser (meguser)
 file_id: 4 items (dict)
 gantry_angle: 68.0
 highpass: 1.0 Hz
 hpi_meas: 1 item (list)
 hpi_results: 1 item (list)
 hpi_subsystem: 3 items (dict)
 line_freq: 50.0
 lowpass: 100.0 Hz
 meas_date: 2020-11-11 11:53:08 UTC
 meas_id: 4 items (dict)
 nchan: 204
 proc_history: 1 item (list)
 proj_id: 1 item (ndarray)
 proj_name: anapesuita
 projs: []
 sfreq: 200.0 Hz
 subject_info: 6 items (dict)

Following the mne example, I created the adjacency matrix :

adjacency, ch_names = find_ch_adjacency(grad_evoked.info, ch_type='grad')

print(type(adjacency))
Reading adjacency matrix for neuromag306planar.
<class 'scipy.sparse.csr.csr_matrix'>
print(ch_names)

Output from spyder call 'get_cwd':
['MEG 0113', 'MEG 0112', 'MEG 0122', 'MEG 0123', 'MEG 0132', 'MEG 0133', 'MEG 0143', 'MEG 0142', 'MEG 0213', 'MEG 0212', 'MEG 0222', 'MEG 0223', 'MEG 0232', 'MEG 0233', 'MEG 0243', 'MEG 0242', 'MEG 0313', 'MEG 0312', 'MEG 0322', 'MEG 0323', 'MEG 0333', 'MEG 0332', 'MEG 0343', 'MEG 0342', 'MEG 0413', 'MEG 0412', 'MEG 0422', 'MEG 0423', 'MEG 0432', 'MEG 0433', 'MEG 0443', 'MEG 0442', 'MEG 0513', 'MEG 0512', 'MEG 0523', 'MEG 0522', 'MEG 0532', 'MEG 0533', 'MEG 0542', 'MEG 0543', 'MEG 0613', 'MEG 0612', 'MEG 0622', 'MEG 0623', 'MEG 0633', 'MEG 0632', 'MEG 0642', 'MEG 0643', 'MEG 0713', 'MEG 0712', 'MEG 0723', 'MEG 0722', 'MEG 0733', 'MEG 0732', 'MEG 0743', 'MEG 0742', 'MEG 0813', 'MEG 0812', 'MEG 0822', 'MEG 0823', 'MEG 0913', 'MEG 0912', 'MEG 0923', 'MEG 0922', 'MEG 0932', 'MEG 0933', 'MEG 0942', 'MEG 0943', 'MEG 1013', 'MEG 1012', 'MEG 1023', 'MEG 1022', 'MEG 1032', 'MEG 1033', 'MEG 1043', 'MEG 1042', 'MEG 1112', 'MEG 1113', 'MEG 1123', 'MEG 1122', 'MEG 1133', 'MEG 1132', 'MEG 1142', 'MEG 1143', 'MEG 1213', 'MEG 1212', 'MEG 1223', 'MEG 1222', 'MEG 1232', 'MEG 1233', 'MEG 1243', 'MEG 1242', 'MEG 1312', 'MEG 1313', 'MEG 1323', 'MEG 1322', 'MEG 1333', 'MEG 1332', 'MEG 1342', 'MEG 1343', 'MEG 1412', 'MEG 1413', 'MEG 1423', 'MEG 1422', 'MEG 1433', 'MEG 1432', 'MEG 1442', 'MEG 1443', 'MEG 1512', 'MEG 1513', 'MEG 1522', 'MEG 1523', 'MEG 1533', 'MEG 1532', 'MEG 1543', 'MEG 1542', 'MEG 1613', 'MEG 1612', 'MEG 1622', 'MEG 1623', 'MEG 1632', 'MEG 1633', 'MEG 1643', 'MEG 1642', 'MEG 1713', 'MEG 1712', 'MEG 1722', 'MEG 1723', 'MEG 1732', 'MEG 1733', 'MEG 1743', 'MEG 1742', 'MEG 1813', 'MEG 1812', 'MEG 1822', 'MEG 1823', 'MEG 1832', 'MEG 1833', 'MEG 1843', 'MEG 1842', 'MEG 1912', 'MEG 1913', 'MEG 1923', 'MEG 1922', 'MEG 1932', 'MEG 1933', 'MEG 1943', 'MEG 1942', 'MEG 2013', 'MEG 2012', 'MEG 2023', 'MEG 2022', 'MEG 2032', 'MEG 2033', 'MEG 2042', 'MEG 2043', 'MEG 2113', 'MEG 2112', 'MEG 2122', 'MEG 2123', 'MEG 2133', 'MEG 2132', 'MEG 2143', 'MEG 2142', 'MEG 2212', 'MEG 2213', 'MEG 2223', 'MEG 2222', 'MEG 2233', 'MEG 2232', 'MEG 2242', 'MEG 2243', 'MEG 2312', 'MEG 2313', 'MEG 2323', 'MEG 2322', 'MEG 2332', 'MEG 2333', 'MEG 2343', 'MEG 2342', 'MEG 2412', 'MEG 2413', 'MEG 2423', 'MEG 2422', 'MEG 2433', 'MEG 2432', 'MEG 2442', 'MEG 2443', 'MEG 2512', 'MEG 2513', 'MEG 2522', 'MEG 2523', 'MEG 2533', 'MEG 2532', 'MEG 2543', 'MEG 2542', 'MEG 2612', 'MEG 2613', 'MEG 2623', 'MEG 2622', 'MEG 2633', 'MEG 2632', 'MEG 2642', 'MEG 2643']

But when attempting to plot the obtained adjacency, I get the following error:

mne.viz.plot_ch_adjacency(grad_evoked.info, adjacency, ch_names)
Traceback (most recent call last):

  Cell In[70], line 1
    mne.viz.plot_ch_adjacency(grad_evoked.info, adjacency, ch_names)

  File ~/anaconda3/envs/mne/lib/python3.9/site-packages/mne/viz/topomap.py:2855 in plot_ch_adjacency
    sel = pick_channels(info.ch_names, ch_names, ordered=True)

  File ~/anaconda3/envs/mne/lib/python3.9/site-packages/mne/io/pick.py:276 in pick_channels
    raise ValueError('Missing channels from ch_names required by '

ValueError: Missing channels from ch_names required by include:
['MEG 0113', 'MEG 0112', 'MEG 0122', 'MEG 0123', 'MEG 0132', 'MEG 0133', 'MEG 0143', 'MEG 0142', 'MEG 0213', 'MEG 0212', 'MEG 0222', 'MEG 0223', 'MEG 0232', 'MEG 0233', 'MEG 0243', 'MEG 0242', 'MEG 0313', 'MEG 0312', 'MEG 0322', 'MEG 0323', 'MEG 0333', 'MEG 0332', 'MEG 0343', 'MEG 0342', 'MEG 0413', 'MEG 0412', 'MEG 0422', 'MEG 0423', 'MEG 0432', 'MEG 0433', 'MEG 0443', 'MEG 0442', 'MEG 0513', 'MEG 0512', 'MEG 0523', 'MEG 0522', 'MEG 0532', 'MEG 0533', 'MEG 0542', 'MEG 0543', 'MEG 0613', 'MEG 0612', 'MEG 0622', 'MEG 0623', 'MEG 0633', 'MEG 0632', 'MEG 0642', 'MEG 0643', 'MEG 0713', 'MEG 0712', 'MEG 0723', 'MEG 0722', 'MEG 0733', 'MEG 0732', 'MEG 0743', 'MEG 0742', 'MEG 0813', 'MEG 0812', 'MEG 0822', 'MEG 0823', 'MEG 0913', 'MEG 0912', 'MEG 0923', 'MEG 0922', 'MEG 0932', 'MEG 0933', 'MEG 0942', 'MEG 0943', 'MEG 1013', 'MEG 1012', 'MEG 1023', 'MEG 1022', 'MEG 1032', 'MEG 1033', 'MEG 1043', 'MEG 1042', 'MEG 1112', 'MEG 1113', 'MEG 1123', 'MEG 1122', 'MEG 1133', 'MEG 1132', 'MEG 1142', 'MEG 1143', 'MEG 1213', 'MEG 1212', 'MEG 1223', 'MEG 1222', 'MEG 1232', 'MEG 1233', 'MEG 1243', 'MEG 1242', 'MEG 1312', 'MEG 1313', 'MEG 1323', 'MEG 1322', 'MEG 1333', 'MEG 1332', 'MEG 1342', 'MEG 1343', 'MEG 1412', 'MEG 1413', 'MEG 1423', 'MEG 1422', 'MEG 1433', 'MEG 1432', 'MEG 1442', 'MEG 1443', 'MEG 1512', 'MEG 1513', 'MEG 1522', 'MEG 1523', 'MEG 1533', 'MEG 1532', 'MEG 1543', 'MEG 1542', 'MEG 1613', 'MEG 1612', 'MEG 1622', 'MEG 1623', 'MEG 1632', 'MEG 1633', 'MEG 1643', 'MEG 1642', 'MEG 1713', 'MEG 1712', 'MEG 1722', 'MEG 1723', 'MEG 1732', 'MEG 1733', 'MEG 1743', 'MEG 1742', 'MEG 1813', 'MEG 1812', 'MEG 1822', 'MEG 1823', 'MEG 1832', 'MEG 1833', 'MEG 1843', 'MEG 1842', 'MEG 1912', 'MEG 1913', 'MEG 1923', 'MEG 1922', 'MEG 1932', 'MEG 1933', 'MEG 1943', 'MEG 1942', 'MEG 2013', 'MEG 2012', 'MEG 2023', 'MEG 2022', 'MEG 2032', 'MEG 2033', 'MEG 2042', 'MEG 2043', 'MEG 2113', 'MEG 2112', 'MEG 2122', 'MEG 2123', 'MEG 2133', 'MEG 2132', 'MEG 2143', 'MEG 2142', 'MEG 2212', 'MEG 2213', 'MEG 2223', 'MEG 2222', 'MEG 2233', 'MEG 2232', 'MEG 2242', 'MEG 2243', 'MEG 2312', 'MEG 2313', 'MEG 2323', 'MEG 2322', 'MEG 2332', 'MEG 2333', 'MEG 2343', 'MEG 2342', 'MEG 2412', 'MEG 2413', 'MEG 2423', 'MEG 2422', 'MEG 2433', 'MEG 2432', 'MEG 2442', 'MEG 2443', 'MEG 2512', 'MEG 2513', 'MEG 2522', 'MEG 2523', 'MEG 2533', 'MEG 2532', 'MEG 2543', 'MEG 2542', 'MEG 2612', 'MEG 2613', 'MEG 2623', 'MEG 2622', 'MEG 2633', 'MEG 2632', 'MEG 2642', 'MEG 2643']

Is this error related to the fact that the channel names retrieved by ‘find_ch_adjacency’ have an extra space compared to the ones retrieved by ‘grad_evoked.info[‘ch_names’]’. For example, ‘MEG 112’ vs ‘MEG0112’

How could I overcome this issue?

Many thanks!

Ana

Platform: Linux-5.4.0-137-generic-x86_64-with-glibc2.31
Python: 3.9.6 | packaged by conda-forge |
mne: 1.3.1

Seems like it, that’s weird!

You could try to remove the white space from ch_names (the list that is returned by find_ch_adjacency):

ch_names = [name.replace(" ", "") for name in ch_names]

or, assuming that ch_names and grad_evoked.info['ch_names'] contain the same channels in the same order, I think you could just pass grad_evoked.info['ch_names'] to mne.viz.plot_ch_adjacency ?

1 Like

Hi Scott,

Thanks for your input.
I removed the white space from ch_names (the list that is returned by find_ch_adjacency) and that seemed to solve the issue.

Cheers!

Ana

def remove_spaces(str_list):
    """
    Removes all spaces from each string element in a list of strings.

    Args:
        str_list (list): A list of strings.

    Returns:
        list: A list of strings with all spaces removed.
    """
    new_list = []
    for s in str_list:
        new_s = s.replace(" ", "")
        new_list.append(new_s)
    return new_list

adjacency, ch_names = find_ch_adjacency(grad_evoked.info, ch_type='grad')
ch_n=remove_spaces(ch_names)    
mne.viz.plot_ch_adjacency(grad_evoked.info, adjacency, ch_n)


1 Like