@@ -211,21 +211,6 @@ def _parse_header(self):
211211 props = group .metadata .inherited_properties ()
212212 seg_ann .update (self ._filter_properties (props , "segment" ))
213213
214- # TODO handle annotation at stream level
215- '''
216- sig_idx = 0
217- groupdas = NixIO._group_signals(grp.data_arrays)
218- for nix_name, signals in groupdas.items():
219- da = signals[0]
220- if da.type == 'neo.analogsignal' and seg_ann['signals']:
221- # collect and group DataArrays
222- sig_ann = seg_ann['signals'][sig_idx]
223- sig_chan_ann = self.raw_annotations['signal_channels'][sig_idx]
224- props = da.metadata.inherited_properties()
225- sig_ann.update(self._filter_properties(props, 'analogsignal'))
226- sig_chan_ann.update(self._filter_properties(props, 'analogsignal'))
227- sig_idx += 1
228- '''
229214 sp_idx = 0
230215 ev_idx = 0
231216 for mt in group .multi_tags :
@@ -251,18 +236,21 @@ def _parse_header(self):
251236 if da .type != "neo.analogsignal" :
252237 continue
253238 anasig_id = da .name .split ('.' )[- 2 ]
239+ # skip already annotated signals
254240 if anasig_id in annotated_anasigs :
255241 continue
256242 annotated_anasigs .append (anasig_id )
257243
258- array_anno_props = []
259- for prop in da .metadata .props :
260- if prop .type == 'ARRAYANNOTATION' :
261- array_anno_props .append (prop )
262-
263- props_dict = self ._filter_properties (array_anno_props ,
264- "analogsignal" )
244+ # collect annotation properties
245+ props = [p for p in da .metadata .props
246+ if p .type != 'ARRAYANNOTATION' ]
247+ props_dict = self ._filter_properties (props , "analogsignal" )
248+ sig_ann [stream_id ].update (props_dict )
265249
250+ # collect array annotation properties
251+ props = [p for p in da .metadata .props
252+ if p .type == 'ARRAYANNOTATION' ]
253+ props_dict = self ._filter_properties (props , "analogsignal" )
266254 sig_ann [stream_id ]['__array_annotations__' ].update (
267255 props_dict )
268256
0 commit comments