def shuffle(self, frame=1):
        columns = range(self.getNumColumns() // frame)
        random.shuffle(columns)
        if frame > 1:
            cc = []
            for x in columns:
                cc += [x * frame + y for y in range(frame)]
            columns = cc
        self.takeColumns(columns)
An observer which sends state change to the proxy.
dataset/ETHPy150Open CGATOxford/cgat/CGAT/Mali.py/Mali.shuffle--crossover with--dataset/ETHPy150Open ContinuumIO/ashiba/enaml/enaml/widgets/flow_area.py/FlowArea._update_proxy