Пример #1
0
    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
Пример #2
0
    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