Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
 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))
Ejemplo n.º 3
0
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()
Ejemplo n.º 4
0
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()
Ejemplo n.º 5
0
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()
Ejemplo n.º 6
0
 def test(self):
     config.num_generations = gens
     self.assertRaises(ValueError,
                       lambda c=config: Grid1D(config, transfunc))
Ejemplo n.º 7
0
 def test(self):
     config.num_generations = gens
     g = Grid1D(config, transfunc)
     self.assertIsInstance(g, Grid1D)