def group( self ): '''rearrange data tree for grouping and set group level. Through grouping the data tree is rearranged such that the level at which data will be grouped will be the top (0th) level in the nested dictionary. ''' data_paths = DataTree.getPaths( self.data ) nlevels = len(data_paths) # get number of levels required by renderer try: renderer_nlevels = self.renderer.nlevels except AttributeError: renderer_nlevels = 0 if self.groupby == "none": self.group_level = nlevels - 1 elif self.groupby == "track": # track is first level self.group_level = 1 # add pseudo levels, if there are not enough levels # to group by track if nlevels == renderer_nlevels: d = odict() for x in data_paths[0]: d[x] = odict( ((x, self.data[x]),)) self.data = d elif self.groupby == "slice": # rearrange tracks and slices in data tree if nlevels <= 2 : self.warn( "grouping by slice, but only %i levels in data tree - all are grouped" % nlevels) self.group_level = 0 else: self.data = DataTree.swop( self.data, 0, 1) self.group_level = 1 elif self.groupby == "all": # group everything together self.group_level = 0 else: # neither group by slice or track ("ungrouped") self.group_level = 0 return self.data
def group(self): """rearrange data tree for grouping. and set group level. """ data_paths = DataTree.getPaths(self.data) nlevels = len(data_paths) # get number of levels required by renderer try: renderer_nlevels = self.renderer.nlevels except AttributeError: renderer_nlevels = 0 if self.groupby == "none": self.group_level = renderer_nlevels elif self.groupby == "track": # track is first level self.group_level = 0 # add pseudo levels, if there are not enough levels # to group by track if nlevels == renderer_nlevels: d = odict() for x in data_paths[0]: d[x] = odict(((x, self.data[x]),)) self.data = d elif self.groupby == "slice": # rearrange tracks and slices in data tree if nlevels <= 2: warn("grouping by slice, but only %i levels in data tree - all are grouped" % nlevels) self.group_level = -1 else: self.data = DataTree.swop(self.data, 0, 1) self.group_level = 0 elif self.groupby == "all": # group everthing together self.group_level = -1 else: # neither group by slice or track ("ungrouped") self.group_level = -1