def _deserialize(self, mygroup, slot): num = len(mygroup) if len(self.inslot) < num: self.inslot.resize(num) # Annoyingly, some applets store their groups with names like, img0,img1,img2,..,img9,img10,img11 # which means that sorted() needs a special key to avoid sorting img10 before img2 # We have to find the index and sort according to its numerical value. index_capture = re.compile(r"[^0-9]*(\d*).*") def extract_index(s): return int(index_capture.match(s).groups()[0]) for index, t in enumerate( sorted(list(mygroup.items()), key=lambda k_v1: extract_index(k_v1[0]))): groupName, labelGroup = t assert extract_index( groupName ) == index, "subgroup extraction order should be numerical order!" for blockRoiString, blockDataset in list(labelGroup.items()): blockRoi = convertStringToList(blockRoiString) roiShape = TinyVector(blockRoi[1]) - TinyVector(blockRoi[0]) assert roiShape == blockDataset.shape self.inslot[index][roiToSlice(*blockRoi)] = blockDataset
def deserialize(self, group): if not self.name in group: return opgroup = group[self.name] # Note: We sort by NUMERICAL VALUE here. for i, (group_name, subgroup) in enumerate( sorted(list(opgroup.items()), key=lambda k_v: int(k_v[0]))): assert int( group_name ) == i, "subgroup extraction order should be numerical order!" for roiString, roi_grp in subgroup.items(): logger.debug( 'Loading region features from dataset: "{}"'.format( roi_grp.name)) roi = convertStringToList(roiString) roi = tuple(map(tuple, roi)) assert len(roi) == 2 assert len(roi[0]) == len(roi[1]) region_features = {} for key, val in roi_grp.items(): region_features[key] = {} for featname, featval in val.items(): region_features[key][featname] = featval[...] slicing = roiToSlice(*roi) self.inslot[i][slicing] = numpy.array([region_features]) self.dirty = False
def _deserialize(self, mygroup, slot): num = len(mygroup) if len(self.inslot) < num: self.inslot.resize(num) # Annoyingly, some applets store their groups with names like, img0,img1,img2,..,img9,img10,img11 # which means that sorted() needs a special key to avoid sorting img10 before img2 # We have to find the index and sort according to its numerical value. index_capture = re.compile(r'[^0-9]*(\d*).*') def extract_index(s): return int(index_capture.match(s).groups()[0]) for index, t in enumerate(sorted(list(mygroup.items()), key=lambda k_v1: extract_index(k_v1[0]))): groupName, labelGroup = t assert extract_index(groupName) == index, "subgroup extraction order should be numerical order!" for blockRoiString, blockDataset in list(labelGroup.items()): blockRoi = convertStringToList(blockRoiString) roiShape = TinyVector(blockRoi[1]) - TinyVector(blockRoi[0]) assert roiShape == blockDataset.shape self.inslot[index][roiToSlice( *blockRoi )] = blockDataset