@@ -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