Skip to content

Commit

Permalink
Fix Experiment.seed.generate() arguments (#31)
Browse files Browse the repository at this point in the history
  • Loading branch information
a5kin committed May 14, 2018
1 parent 621993a commit a105f62
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 18 deletions.
4 changes: 1 addition & 3 deletions xentica/core/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -527,9 +527,7 @@ def __init__(self, experiment_class):
self.random = LocalRandom(experiment_class.word)
experiment_class.seed.random = self.random
init_cells = np.zeros((cells_total, ), dtype=self.dtype)
experiment_class.seed.generate(init_cells, self.cells_num,
self.size, self.index_to_coord,
self.pack_state)
experiment_class.seed.generate(init_cells, self)
self.cells_gpu = gpuarray.to_gpu(init_cells)
# bridge
self.bridge = MoireBridge
Expand Down
27 changes: 12 additions & 15 deletions xentica/seeds/patterns.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,7 @@ def __init__(self, vals):
self.vals = ValDict(vals, self)

@abc.abstractmethod
def generate(self, cells, cells_num, field_size,
index_to_coord, pack_state):
def generate(self, cells, bsca):
"""
Generate the entire initial state.
Expand Down Expand Up @@ -156,34 +155,33 @@ def __init__(self, vals, pos=None, size=None):
self.size = np.asarray(size) if size else None
super(BigBang, self).__init__(vals)

def generate(self, cells, cells_num, field_size,
index_to_coord, pack_state):
def generate(self, cells, bsca):
"""
Generate the entire initial state.
See :meth:`RandomPattern.generate` for details.
"""
dims = range(len(field_size))
dims = range(len(bsca.size))
if self.size is None:
rnd_vec = [self.random.std.randint(1, field_size[i]) for i in dims]
rnd_vec = [self.random.std.randint(1, bsca.size[i]) for i in dims]
self.size = np.asarray(rnd_vec)
if self.pos is None:
rnd_vec = [self.random.std.randint(0, field_size[i]) for i in dims]
rnd_vec = [self.random.std.randint(0, bsca.size[i]) for i in dims]
self.pos = np.asarray(rnd_vec)
for i in range(len(self.pos)):
coord, width, side = self.pos[i], self.size[i], field_size[i]
coord, width, side = self.pos[i], self.size[i], bsca.size[i]
if coord + width >= side:
self.pos[i] = side - width
self.pos[i] = max(0, self.pos[i])
for i in range(cells_num):
coord = np.asarray(index_to_coord(i))
for i in range(bsca.cells_num):
coord = np.asarray(bsca.index_to_coord(i))
if all(coord >= self.pos) and all(coord < self.pos + self.size):
state = {}
for name in sorted(self.vals.keys()):
val = self.vals[name]
state[name] = val
cells[i] = pack_state(state)
cells[i] = bsca.pack_state(state)


class PrimordialSoup(RandomPattern):
Expand All @@ -205,17 +203,16 @@ class PrimordialSoup(RandomPattern):
"""

def generate(self, cells, cells_num, field_size,
index_to_coord, pack_state):
def generate(self, cells, bsca):
"""
Generate the entire initial state.
See :meth:`RandomPattern.generate` for details.
"""
for i in range(cells_num):
for i in range(bsca.cells_num):
state = {}
for name in sorted(self.vals.keys()):
val = self.vals[name]
state[name] = val
cells[i] = pack_state(state)
cells[i] = bsca.pack_state(state)

0 comments on commit a105f62

Please sign in to comment.