Skip to content

Commit 32d2685

Browse files
committed
change channel id to native-channel-name in intan
use channel ids for accessing memmaps
1 parent 620a2a8 commit 32d2685

File tree

1 file changed

+17
-13
lines changed

1 file changed

+17
-13
lines changed

neo/rawio/intanrawio.py

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ def _parse_header(self):
8585
# signals
8686
signal_channels = []
8787
for c, chan_info in enumerate(self._ordered_channels):
88-
name = chan_info["native_channel_name"]
89-
chan_id = str(c) # the chan_id have no meaning in intan
88+
name = chan_info["custom_channel_name"]
89+
chan_id = chan_info["native_channel_name"]
9090
if chan_info["signal_type"] == 20:
9191
# exception for temperature
9292
sig_dtype = "int16"
@@ -146,9 +146,9 @@ def _get_signal_size(self, block_index, seg_index, stream_index):
146146
stream_id = self.header["signal_streams"][stream_index]["id"]
147147
mask = self.header["signal_channels"]["stream_id"] == stream_id
148148
signal_channels = self.header["signal_channels"][mask]
149-
channel_names = signal_channels["name"]
150-
chan_name0 = channel_names[0]
151-
size = self._raw_data[chan_name0].size
149+
channel_ids = signal_channels["id"]
150+
channel_id_0 = channel_ids[0]
151+
size = self._raw_data[channel_id_0].size
152152
return size
153153

154154
def _get_signal_t_start(self, block_index, seg_index, stream_index):
@@ -166,9 +166,9 @@ def _get_analogsignal_chunk(self, block_index, seg_index, i_start, i_stop, strea
166166
signal_channels = self.header["signal_channels"][mask]
167167
if channel_indexes is None:
168168
channel_indexes = slice(None)
169-
channel_names = signal_channels["name"][channel_indexes]
169+
channel_ids = signal_channels["id"][channel_indexes]
170170

171-
shape = self._raw_data[channel_names[0]].shape
171+
shape = self._raw_data[channel_ids[0]].shape
172172

173173
# some channel (temperature) have 1D field so shape 1D
174174
# because 1 sample per block
@@ -181,13 +181,14 @@ def _get_analogsignal_chunk(self, block_index, seg_index, i_start, i_stop, strea
181181
sl0 = i_start % block_size
182182
sl1 = sl0 + (i_stop - i_start)
183183

184-
sigs_chunk = np.zeros((i_stop - i_start, len(channel_names)), dtype="uint16")
185-
for i, chan_name in enumerate(channel_names):
186-
data_chan = self._raw_data[chan_name]
184+
sigs_chunk = np.zeros((i_stop - i_start, len(channel_ids)), dtype="uint16")
185+
for channel_index, channel_id in enumerate(channel_ids):
186+
# Memmap fields are the channel_ids for unique channels
187+
data_chan = self._raw_data[channel_id]
187188
if len(shape) == 1:
188-
sigs_chunk[:, i] = data_chan[i_start:i_stop]
189+
sigs_chunk[:, channel_index] = data_chan[i_start:i_stop]
189190
else:
190-
sigs_chunk[:, i] = data_chan[block_start:block_stop].flatten()[sl0:sl1]
191+
sigs_chunk[:, channel_index] = data_chan[block_start:block_stop].flatten()[sl0:sl1]
191192

192193
return sigs_chunk
193194

@@ -448,7 +449,10 @@ def read_rhd(filename):
448449

449450
global_info = read_variable_header(f, rhd_global_header_base)
450451

451-
version = V("{major_version}.{minor_version}".format(**global_info))
452+
# This is a package.version object that allows lexicographic comparison
453+
major_version = global_info["major_version"]
454+
minor_version = global_info["minor_version"]
455+
version = V(f"{major_version}.{minor_version}")
452456

453457
# the header size depends on the version :-(
454458
header = list(rhd_global_header_part1) # make a copy

0 commit comments

Comments
 (0)