Skip to content

Commit de6177c

Browse files
authored
Update neobaseextractor.py
Avoids using pandas and fixed error with pop use
1 parent 5a485e1 commit de6177c

1 file changed

Lines changed: 16 additions & 15 deletions

File tree

src/spikeinterface/extractors/neoextractors/neobaseextractor.py

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
from math import isclose
66

77
import numpy as np
8-
import pandas as pd
98
import importlib
109

1110
from spikeinterface.core import (
@@ -229,24 +228,26 @@ def __init__(
229228
# need neo 0.10.0
230229
signal_channels = self.neo_reader.header["signal_channels"]
231230
mask = signal_channels["stream_id"] == stream_id
232-
mask_id = np.argwhere(mask).flatten().tolist()
233231

234232
# 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+
239238
# 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+
245245
# 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
250251

251252
signal_channels = signal_channels[mask]
252253

0 commit comments

Comments
 (0)