def __init__(self, uri=None, modality=None): super(Annotation, self).__init__() self._uri = uri self.modality = modality # sorted dictionary # keys: annotated segments # values: {track: label} dictionary self._tracks = SortedDict(key_type=(float, float), updator=TimelineUpdator) # dictionary # key: label # value: timeline self._labels = {} self._labelNeedsUpdate = {} # timeline meant to store all annotated segments self._timeline = Timeline(uri=uri) self._timelineNeedsUpdate = True
def copy(self): # create new empty annotation copied = self.__class__(uri=self.uri, modality=self.modality) # deep copy internal track dictionary _tracks = [(key, dict(value)) for (key, value) in self._tracks.items()] copied._tracks = SortedDict(items=_tracks, key_type=(float, float), updator=TimelineUpdator) # deep copy internal label timelines _labels = {key: timeline.copy() for (key, timeline) in self._labels.iteritems()} copied._labels = _labels # deep copy need-update indicator copied._labelNeedsUpdate = dict(self._labelNeedsUpdate) copied._timelineNeedsUpdate = self._timelineNeedsUpdate return copied