def reduce_to_leaves(self, id=''): """ create a new set of rois which are only the leaves of self """ isleaf = Forest(self.k, self.parents).isleaf() label = self.label.copy() label[isleaf[self.label]==0] = -1 k = np.sum(isleaf.astype(np.int)) if self.k==0: return HierarchicalROI(self.domain, label, np.array([]), id) parents = np.arange(k) nroi = HierarchicalROI(self.domain, label, parents, id) # now copy the features fids = self.features.keys() for fid in fids: df = [self.features[fid][k] for k in range(self.k) if isleaf[k]] nroi.set_feature(fid, df) return nroi