def select(self, valid, id='', no_empty_label=True): """ Remove the rois for which valid==0 and update the hierarchy accordingly Note that auto=True automatically """ SubDomains.select(self, valid, id, True, no_empty_label ) if np.sum(valid)==0: self.parents = np.array([]) else: self.parents = Forest(len(self.parents), self.parents).subforest( valid.astype(np.bool)).parents.astype(np.int)
def representative_feature(self, fid, method='mean'): """ Compute an ROI-level feature given the discrete features Parameters ---------- fid(string) the discrete feature under consideration method='average' the assessment method Returns ------- the computed roi-feature is returned """ if method not in['min','max','mean','cumulated_mean', 'median', 'weighted mean']: raise ValueError, 'unknown method' if method=='cumulated_mean': data = self.features[fid] d0 = data[0] if np.size(d0) == np.shape(d0)[0]: np.reshape(d0, (np.size(d0),1)) fdim = d0.shape[1] ldata = np.zeros((self.k, fdim)) for k in range(self.k): dk = self.make_forest().get_descendents(k) card = np.sum(self.get_size()[dk]) for ch in dk: ldata[k] += np.sum(data[ch],0) ldata[k]/=card self.set_roi_feature(fid, ldata) else: ldata = SubDomains.representative_feature(self, fid, method) return ldata
def copy(self, id=''): """ returns a copy of self. self.domain is not copied. """ cp = make_hroi_from_subdomain(SubDomains.copy(self, id), self.parents.copy()) return cp
def __init__(self, domain, label, parents, id='' ): """ Building the HierarchicalROI """ self.parents = np.ravel(parents).astype(np.int) SubDomains.__init__(self, domain, label, id)