def mutate(genome): atom_probability = ATOM_MUTATION_RATE / len(genome) op_probability = OP_MUTATION_RATE / len(genome) for i in range(len(genome)): if piclang.is_atom(genome[i]): if random.random() < atom_probability: genome[i] = mutate_atom(genome[i]) else: if random.random() < op_probability: genome[i] = mutate_op(genome[i]) return genome
def create(cls, genome, generation, parents, store=False): fun = piclang.stackparse(genome, normalize=True) if piclang.is_atom(fun): return None image = piclang.render(fun, points=8192) if not image: return None filename = files.blobstore.create(mime_type='image/png') with files.open(filename, 'a') as f: image.save(f, "PNG") files.finalize(filename) blob_key = files.blobstore.get_blob_key(filename) individual = cls(genome=genome, generation=generation, parents=parents, image=blob_key) if store: individual.put() return individual
def create(cls, genome, generation, parents, store=False): fun = piclang.stackparse(genome, normalize=True) if piclang.is_atom(fun): return None image = piclang.render(fun, points=8192) if not image: return None filename = files.blobstore.create(mime_type='image/png') with files.open(filename, 'a') as f: image.save(f, "PNG") files.finalize(filename) blob_key = files.blobstore.get_blob_key(filename) individual = cls( genome=genome, generation=generation, parents=parents, image=blob_key ) if store: individual.put() return individual