|
5 | 5 | from math import isclose |
6 | 6 |
|
7 | 7 | import numpy as np |
8 | | -import pandas as pd |
9 | 8 | import importlib |
10 | 9 |
|
11 | 10 | from spikeinterface.core import ( |
@@ -229,24 +228,26 @@ def __init__( |
229 | 228 | # need neo 0.10.0 |
230 | 229 | signal_channels = self.neo_reader.header["signal_channels"] |
231 | 230 | mask = signal_channels["stream_id"] == stream_id |
232 | | - mask_id = np.argwhere(mask).flatten().tolist() |
233 | 231 |
|
234 | 232 | # remove all duplicate channel-to-electrode assignments |
235 | | - dupid = np.where(pd.DataFrame(signal_channels[mask]["name"]).duplicated(keep="first")) |
236 | | - for i in dupid[0]: |
237 | | - mask[mask_id.pop(i)] = False |
238 | | - |
| 233 | + mask_id = np.argwhere(mask).flatten() |
| 234 | + [u,u_i,u_v,u_c] = np.unique(signal_channels[mask]['name'], return_index=True, return_inverse=True, return_counts=True) |
| 235 | + for i in u_v[u_i[u_c>1]]: |
| 236 | + mask[mask_id[np.argwhere(signal_channels[mask]['name'] == u[i])[1:].flatten()]] = False |
| 237 | + |
239 | 238 | # remove all duplicate channel assigments corresponding to different electrodes (channel is a mix of mulitple electrode signals) |
240 | | - signal_channels_chan, _ = map(list, zip(*(x.split(" ") for x in signal_channels[mask]["name"]))) |
241 | | - dupid = np.where(pd.DataFrame(signal_channels_chan).duplicated(keep=False)) |
242 | | - for i in dupid[0]: |
243 | | - mask[mask_id.pop(i)] = False |
244 | | - |
| 239 | + mask_id = np.argwhere(mask).flatten() |
| 240 | + signal_channels_chan,_ = map(list, zip(*(x.split(' ') for x in signal_channels[mask]['name']))) |
| 241 | + [u,u_i,u_v,u_c] = np.unique(signal_channels_chan, return_index=True, return_inverse=True, return_counts=True) |
| 242 | + for i in u_v[u_i[u_c>1]]: |
| 243 | + mask[mask_id[np.argwhere(signal_channels_chan == u[i])[:].flatten()]] = False |
| 244 | + |
245 | 245 | # remove subsequent duplicated electrodes (single electrode saved to multiple channels) |
246 | | - _, signal_channels_elec = map(list, zip(*(x.split(" ") for x in signal_channels[mask]["name"]))) |
247 | | - dupid = np.where(pd.DataFrame(signal_channels_elec).duplicated(keep="first")) |
248 | | - for i in dupid[0]: |
249 | | - mask[mask_id.pop(i)] = False |
| 246 | + mask_id = np.argwhere(mask).flatten() |
| 247 | + _,signal_channels_elec = map(list, zip(*(x.split(' ') for x in signal_channels[mask]['name']))) |
| 248 | + [u,u_i,u_v,u_c] = np.unique(signal_channels_elec, return_index=True, return_inverse=True, return_counts=True) |
| 249 | + for i in u_v[u_i[u_c>1]]: |
| 250 | + mask[mask_id[np.argwhere(signal_channels_elec == u[i])[1:].flatten()]] = False |
250 | 251 |
|
251 | 252 | signal_channels = signal_channels[mask] |
252 | 253 |
|
|
0 commit comments