Example #1
0
    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
Example #3
0
    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