def __new__(mcs, name, bases, dict): def gen_test_array_eq(a, b): def test(self): self.assertTrue(np.array_equal(a, b)) return test config = CAConfig("test/testdescriptions/1dbasic.py") config.num_generations = 20 config.states = 0, 1 config.dimensions = 1 config.nhood_arr = [1, 1, 1] def transfunc(self, grid, neighbourcounts): return grid[0] numgens = 20 sizes = range(numgens * 2, numgens * 2 + 3) for s in sizes: testname = "test_initial_grid_set_{s}".format(s=s) initialgrid = np.array([np.random.randint(0, 2, s)]) config.initial_grid = initialgrid g = Grid1D(config, transfunc) #check that the first lines match if s < g.grid.shape[1]: dict[testname] = gen_test_array_eq(g.grid[0, :s], initialgrid[0]) else: dict[testname] = gen_test_array_eq( g.grid[0], initialgrid[0, :g.grid.shape[1]]) return type.__new__(mcs, name, bases, dict)
def case(self, numgens, wrap): self.config.wrap = wrap g = Grid1D(self.config, self.transfunc) randgrid = np.random.randint(0, 2, g.grid.shape) g.grid[:, :] = randgrid[:, :] g.refresh_wrap() self.assertTrue(self.iswrapcorrect(g, wrap)) #set outer values to 4 which cannot already be in the grid and verify match again g.grid[0, :] = 4 g.grid[-1, :] = 4 g.refresh_wrap() self.assertTrue(self.iswrapcorrect(g, wrap))
def main(): """ Main function that sets up, runs and saves CA""" # get the config object config = setup(sys.argv[1:]) # create the grid grid = Grid1D(config, transition_function) # run the grid and save each timestep to timeline timeline = grid.run() # save timeline and config utils.save(timeline, config.timeline_path) config.save()
def main(): config = setup(sys.argv[1:]) rulebool = utils.int_to_binary(config.rule_num) * True grid = Grid1D(num_generations=config.num_generations, states=config.states, neighbourhood=config.neighbourhood(), transition_func=(transition_function, rulebool), initial_grid=config.initial_grid) timeline = grid.run() utils.save(timeline, config.timeline_path) config.save()
def main(): config = setup(sys.argv[1:]) # Translate rule numer to boolean array: # 30 -> [0,0,0,1,1,1,1,0] -> [F,F,F,T,T,T,T,F] rulebool = utils.int_to_binary(config.rule_num) * True # Create grid object # passing transition function and rulebool as tuple to # keep track of rulebool grid = Grid1D(config, (transition_function, rulebool)) timeline = grid.run() utils.save(timeline, config.timeline_path) config.save()
def test(self): config.num_generations = gens self.assertRaises(ValueError, lambda c=config: Grid1D(config, transfunc))
def test(self): config.num_generations = gens g = Grid1D(config, transfunc) self.assertIsInstance(g, Grid1D)