def generate_world(w, step): if isinstance(step, str): step = Step.get_by_name(step) if not step.include_precipitations: return w # Prepare sufficient seeds for the different steps of the generation rng = numpy.random.RandomState(w.seed) # create a fresh RNG in case the global RNG is compromised (i.e. has been queried an indefinite amount of times before generate_world() was called) sub_seeds = rng.randint(0, numpy.iinfo(numpy.int32).max, size=100) # choose lowest common denominator (32 bit Windows numpy cannot handle a larger value) seed_dict = { 'PrecipitationSimulation': sub_seeds[ 0], # after 0.19.0 do not ever switch out the seeds here to maximize seed-compatibility 'ErosionSimulation': sub_seeds[ 1], 'WatermapSimulation': sub_seeds[ 2], 'IrrigationSimulation': sub_seeds[ 3], 'TemperatureSimulation': sub_seeds[ 4], 'HumiditySimulation': sub_seeds[ 5], 'PermeabilitySimulation': sub_seeds[ 6], 'BiomeSimulation': sub_seeds[ 7], 'IcecapSimulation': sub_seeds[ 8], '': sub_seeds[99] } TemperatureSimulation().execute(w, seed_dict['TemperatureSimulation']) # Precipitation with thresholds PrecipitationSimulation().execute(w, seed_dict['PrecipitationSimulation']) if not step.include_erosion: return w ErosionSimulation().execute(w, seed_dict['ErosionSimulation']) # seed not currently used if get_verbose(): print("...erosion calculated") WatermapSimulation().execute(w, seed_dict['WatermapSimulation']) # seed not currently used # FIXME: create setters IrrigationSimulation().execute(w, seed_dict['IrrigationSimulation']) # seed not currently used HumiditySimulation().execute(w, seed_dict['HumiditySimulation']) # seed not currently used PermeabilitySimulation().execute(w, seed_dict['PermeabilitySimulation']) cm, biome_cm = BiomeSimulation().execute(w, seed_dict['BiomeSimulation']) # seed not currently used for cl in cm.keys(): count = cm[cl] if get_verbose(): print("%s = %i" % (str(cl), count)) if get_verbose(): print('') # empty line print('Biome obtained:') for cl in biome_cm.keys(): count = biome_cm[cl] if get_verbose(): print(" %30s = %7i" % (str(cl), count)) IcecapSimulation().execute(w, seed_dict['IcecapSimulation']) # makes use of temperature-map return w
def world(self): world = World(self.name, self.width, self.height, self.seed, self.n_plates, self.ocean_level, Step.get_by_name("plates")) hm = platec.get_heightmap(self.p) pm = platec.get_platesmap(self.p) world.set_elevation(array_to_matrix(hm, self.width, self.height), None) world.set_plates(array_to_matrix(pm, self.width, self.height)) return world
def generate_world(w, step): if isinstance(step, str): step = Step.get_by_name(step) seed = w.seed if not step.include_precipitations: return w # Precipitation with thresholds PrecipitationSimulation().execute(w, seed) if not step.include_erosion: return w ErosionSimulation().execute(w, seed) if get_verbose(): print("...erosion calculated") WatermapSimulation().execute(w, seed) # FIXME: create setters IrrigationSimulation().execute(w, seed) TemperatureSimulation().execute(w, seed) HumiditySimulation().execute(w, seed) PermeabilitySimulation().execute(w, seed) cm, biome_cm = BiomeSimulation().execute(w, seed) for cl in cm.keys(): count = cm[cl] if get_verbose(): print("%s = %i" % (str(cl), count)) if get_verbose(): print('') # empty line print('Biome obtained:') for cl in biome_cm.keys(): count = biome_cm[cl] if get_verbose(): print(" %30s = %7i" % (str(cl), count)) return w
def generate_world(w, step): if isinstance(step, str): step = Step.get_by_name(step) seed = w.seed if not step.include_precipitations: return w # Precipitation with thresholds PrecipitationSimulation().execute(w, seed) if not step.include_erosion: return w ErosionSimulation().execute(w, seed) if get_verbose(): print("...erosion calculated") WatermapSimulation().execute(w, seed) # FIXME: create setters IrrigationSimulation().execute(w, seed) HumiditySimulation().execute(w, seed) TemperatureSimulation().execute(w, seed) PermeabilitySimulation().execute(w, seed) cm, biome_cm = BiomeSimulation().execute(w, seed) for cl in cm.keys(): count = cm[cl] if get_verbose(): print("%s = %i" % (str(cl), count)) if get_verbose(): print('') # empty line print('Biome obtained:') for cl in biome_cm.keys(): count = biome_cm[cl] if get_verbose(): print(" %30s = %7i" % (str(cl), count)) return w
def load_world_to_hdf5(filename): f = h5py.File(filename, libver='latest', mode='r') w = World(f['general/name'].value, f['general/width'].value, f['general/height'].value, f['generation_params/seed'].value, f['generation_params/n_plates'].value, f['generation_params/ocean_level'].value, Step.get_by_name(f['generation_params/step'].value)) # Elevation e = numpy.array(f['elevation/data']) e_th = [('sea', f['elevation/thresholds/sea'].value), ('plain', f['elevation/thresholds/plain'].value), ('hill', f['elevation/thresholds/hill'].value), ('mountain', None)] w.set_elevation(e, e_th) # Plates w.set_plates(numpy.array(f['plates'])) # Ocean w.set_ocean(numpy.array(f['ocean'])) w.sea_depth = numpy.array(f['sea_depth']) # Biome if 'biome' in f.keys(): biome_data = [] for y in range(w.height): row = [] for x in range(w.width): value = f['biome'][y, x] row.append(biome_index_to_name(value)) biome_data.append(row) biome = numpy.array(biome_data, dtype=object) w.set_biome(biome) # Humidity # FIXME: use setters if 'humidity' in f.keys(): w.humidity = _from_hdf5_matrix_with_quantiles(f['humidity']) w.humidity['data'] = numpy.array(w.humidity['data']) # numpy conversion if 'irrigation' in f.keys(): w.irrigation = numpy.array(f['irrigation']) if 'permeability' in f.keys(): p = numpy.array(f['permeability/data']) p_th = [ ('low', f['permeability/thresholds/low'].value), ('med', f['permeability/thresholds/med'].value), ('hig', None) ] w.set_permeability(p, p_th) if 'watermap' in f.keys(): w.watermap = dict() w.watermap['data'] = numpy.array(f['watermap/data']) w.watermap['thresholds'] = {} w.watermap['thresholds']['creek'] = f['watermap/thresholds/creek'].value w.watermap['thresholds']['river'] = f['watermap/thresholds/river'].value w.watermap['thresholds']['main river'] = f['watermap/thresholds/mainriver'].value if 'precipitation' in f.keys(): p = numpy.array(f['precipitation/data']) p_th = [ ('low', f['precipitation/thresholds/low'].value), ('med', f['precipitation/thresholds/med'].value), ('hig', None) ] w.set_precipitation(p, p_th) if 'temperature' in f.keys(): t = numpy.array(f['temperature/data']) t_th = [ ('polar', f['temperature/thresholds/polar'].value), ('alpine', f['temperature/thresholds/alpine'].value), ('boreal', f['temperature/thresholds/boreal'].value), ('cool', f['temperature/thresholds/cool'].value), ('warm', f['temperature/thresholds/warm'].value), ('subtropical', f['temperature/thresholds/subtropical'].value), ('tropical', None) ] w.set_temperature(t, t_th) if 'icecap' in f.keys(): w.icecap = numpy.array(f['icecap']) if 'lake_map' in f.keys(): m = numpy.array(f['lake_map']) w.set_lakemap(m) if 'river_map' in f.keys(): m = numpy.array(f['river_map']) w.set_rivermap(m) f.close() return w
def generate_world(w, step): if isinstance(step, str): step = Step.get_by_name(step) if not step.include_precipitations: return w # Prepare sufficient seeds for the different steps of the generation rng = numpy.random.RandomState( w.seed ) # create a fresh RNG in case the global RNG is compromised (i.e. has been queried an indefinite amount of times before generate_world() was called) sub_seeds = rng.randint(0, 4294967295, size=100) # sys.maxsize didn't quite work seed_dict = { 'PrecipitationSimulation': sub_seeds[ 0], # after 0.19.0 do not ever switch out the seeds here to maximize seed-compatibility 'ErosionSimulation': sub_seeds[1], 'WatermapSimulation': sub_seeds[2], 'IrrigationSimulation': sub_seeds[3], 'TemperatureSimulation': sub_seeds[4], 'HumiditySimulation': sub_seeds[5], 'PermeabilitySimulation': sub_seeds[6], 'BiomeSimulation': sub_seeds[7], '': sub_seeds[99] } TemperatureSimulation().execute(w, seed_dict['TemperatureSimulation']) # Precipitation with thresholds PrecipitationSimulation().execute(w, seed_dict['PrecipitationSimulation']) if not step.include_erosion: return w ErosionSimulation().execute( w, seed_dict['ErosionSimulation']) # seed not currently used if get_verbose(): print("...erosion calculated") WatermapSimulation().execute( w, seed_dict['WatermapSimulation']) # seed not currently used # FIXME: create setters IrrigationSimulation().execute( w, seed_dict['IrrigationSimulation']) # seed not currently used HumiditySimulation().execute( w, seed_dict['HumiditySimulation']) # seed not currently used PermeabilitySimulation().execute(w, seed_dict['PermeabilitySimulation']) cm, biome_cm = BiomeSimulation().execute( w, seed_dict['BiomeSimulation']) # seed not currently used for cl in cm.keys(): count = cm[cl] if get_verbose(): print("%s = %i" % (str(cl), count)) if get_verbose(): print('') # empty line print('Biome obtained:') for cl in biome_cm.keys(): count = biome_cm[cl] if get_verbose(): print(" %30s = %7i" % (str(cl), count)) return w