Esempio n. 1
0
 def test_hdf5_serialize_unserialize(self):
     filename = None
     try:
         w = world_gen("Dummy", 32, 16, 1, step=Step.get_by_name("full"))
         f = tempfile.NamedTemporaryFile(delete=False)
         f.close()
         filename = f.name
         serialized = save_world_to_hdf5(w, filename)
         unserialized = load_world_to_hdf5(filename)
         self.assertEqual(Set(w.layers.keys()),
                          Set(unserialized.layers.keys()))
         self.assertEqual(w.layers['humidity'].quantiles,
                          unserialized.layers['humidity'].quantiles)
         for l in w.layers.keys():
             self.assertEqual(w.layers[l], unserialized.layers[l],
                              "Comparing %s" % l)
         self.assertTrue(_equal(w.ocean_level, unserialized.ocean_level))
         self.assertEquals(w.seed, unserialized.seed)
         self.assertEquals(w.n_plates, unserialized.n_plates)
         self.assertEquals(w.step, unserialized.step)
         self.assertEqual(sorted(dir(w)), sorted(dir(unserialized)))
         #self.assertEqual(w, unserialized)
     finally:
         if filename:
             os.remove(filename)
Esempio n. 2
0
def generate_world(world_name, width, height, seed, num_plates, output_dir,
                   step, ocean_level, temps, humids, world_format='protobuf',
                   gamma_curve=1.25, curve_offset=.2, fade_borders=True,
                   verbose=True, black_and_white=False):
    w = world_gen(world_name, width, height, seed, temps, humids, num_plates, ocean_level,
                  step, gamma_curve=gamma_curve, curve_offset=curve_offset,
                  fade_borders=fade_borders, verbose=verbose)

    print('')  # empty line
    print('Producing ouput:')
    sys.stdout.flush()

    # Save data
    filename = "%s/%s.world" % (output_dir, world_name)
    if world_format == 'protobuf':
        with open(filename, "wb") as f:
            f.write(w.protobuf_serialize())
    elif world_format == 'hdf5':
        save_world_to_hdf5(w, filename)
    else:
        print("Unknown format '%s', not saving " % world_format)
    print("* world data saved in '%s'" % filename)
    sys.stdout.flush()

    # Generate images
    filename = '%s/%s_ocean.png' % (output_dir, world_name)
    draw_ocean_on_file(w.layers['ocean'].data, filename)
    print("* ocean image generated in '%s'" % filename)

    if step.include_precipitations:
        filename = '%s/%s_precipitation.png' % (output_dir, world_name)
        draw_precipitation_on_file(w, filename, black_and_white)
        print("* precipitation image generated in '%s'" % filename)
        filename = '%s/%s_temperature.png' % (output_dir, world_name)
        draw_temperature_levels_on_file(w, filename, black_and_white)
        print("* temperature image generated in '%s'" % filename)

    if step.include_biome:
        filename = '%s/%s_biome.png' % (output_dir, world_name)
        draw_biome_on_file(w, filename)
        print("* biome image generated in '%s'" % filename)

    filename = '%s/%s_elevation.png' % (output_dir, world_name)
    sea_level = w.sea_level()
    draw_simple_elevation_on_file(w, filename, sea_level=sea_level)
    print("* elevation image generated in '%s'" % filename)
    return w
Esempio n. 3
0
 def test_hdf5_serialize_unserialize(self):
     filename = None
     try:
         w = world_gen("Dummy", 32, 16, 1, step=Step.get_by_name("full"))
         f = tempfile.NamedTemporaryFile(delete=False)
         f.close()
         filename = f.name
         serialized = save_world_to_hdf5(w, filename)
         unserialized = load_world_to_hdf5(filename)
         self.assertTrue(
             _equal(w.elevation['data'], unserialized.elevation['data']))
         self.assertEqual(w.elevation['thresholds'],
                          unserialized.elevation['thresholds'])
         self.assertTrue(_equal(w.plates, unserialized.plates))
         self.assertTrue(_equal(w.ocean, unserialized.ocean))
         self.assertTrue(_equal(w.biome, unserialized.biome))
         self.assertTrue(
             _equal(w.humidity['quantiles'],
                    unserialized.humidity['quantiles']))
         self.assertTrue(
             _equal(w.humidity['data'], unserialized.humidity['data']))
         self.assertTrue(_equal(w.humidity, unserialized.humidity))
         self.assertTrue(_equal(w.irrigation, unserialized.irrigation))
         self.assertTrue(_equal(w.permeability, unserialized.permeability))
         self.assertTrue(_equal(w.watermap, unserialized.watermap))
         self.assertTrue(
             _equal(w.precipitation['thresholds'],
                    unserialized.precipitation['thresholds']))
         self.assertTrue(
             _equal(w.precipitation['data'],
                    unserialized.precipitation['data']))
         self.assertTrue(_equal(w.precipitation,
                                unserialized.precipitation))
         self.assertTrue(_equal(w.temperature, unserialized.temperature))
         self.assertTrue(_equal(w.sea_depth, unserialized.sea_depth))
         self.assertTrue(_equal(w.ocean_level, unserialized.ocean_level))
         self.assertTrue(_equal(w.lake_map, unserialized.lake_map))
         self.assertTrue(_equal(w.river_map, unserialized.river_map))
         self.assertTrue(_equal(w.icecap, unserialized.icecap))
         self.assertEquals(w.seed, unserialized.seed)
         self.assertEquals(w.n_plates, unserialized.n_plates)
         self.assertEquals(w.step, unserialized.step)
         self.assertEqual(sorted(dir(w)), sorted(dir(unserialized)))
         #self.assertEqual(w, unserialized)
     finally:
         if filename:
             os.remove(filename)
Esempio n. 4
0
 def test_hdf5_serialize_unserialize(self):
     filename = None
     try:
         w = world_gen("Dummy", 32, 16, 1, step=Step.get_by_name("full"))
         f = tempfile.NamedTemporaryFile(delete=False)
         f.close()
         filename = f.name
         serialized = save_world_to_hdf5(w, filename)
         unserialized = load_world_to_hdf5(filename)
         self.assertEqual(set(w.layers.keys()), set(unserialized.layers.keys()))
         self.assertEqual(w.layers['humidity'].quantiles, unserialized.layers['humidity'].quantiles)
         for l in w.layers.keys():
             self.assertEqual(w.layers[l], unserialized.layers[l], "Comparing %s" % l)
         self.assertTrue(_equal(w.ocean_level,       unserialized.ocean_level))
         self.assertEquals(w.seed,                   unserialized.seed)
         self.assertEquals(w.n_plates,               unserialized.n_plates)
         self.assertEquals(w.step,                   unserialized.step)
         self.assertEqual(sorted(dir(w)),            sorted(dir(unserialized)))
         #self.assertEqual(w, unserialized)
     finally:
         if filename:
             os.remove(filename)
 def test_hdf5_serialize_unserialize(self):
     filename = None
     try:
         w = world_gen("Dummy", 32, 16, 1, step=Step.get_by_name("full"))
         f = tempfile.NamedTemporaryFile(delete=False)
         f.close()
         filename = f.name
         serialized = save_world_to_hdf5(w, filename)
         unserialized = load_world_to_hdf5(filename)
         self.assertTrue(_equal(w.elevation['data'], unserialized.elevation['data']))
         self.assertEqual(w.elevation['thresholds'], unserialized.elevation['thresholds'])
         self.assertTrue(_equal(w.ocean,             unserialized.ocean))
         self.assertTrue(_equal(w.biome,             unserialized.biome))
         self.assertTrue(_equal(w.humidity['quantiles'], unserialized.humidity['quantiles']))
         self.assertTrue(_equal(w.humidity['data'],  unserialized.humidity['data']))
         self.assertTrue(_equal(w.humidity,          unserialized.humidity))
         self.assertTrue(_equal(w.irrigation,        unserialized.irrigation))
         self.assertTrue(_equal(w.permeability,      unserialized.permeability))
         self.assertTrue(_equal(w.watermap,          unserialized.watermap))
         self.assertTrue(_equal(w.precipitation['thresholds'], unserialized.precipitation['thresholds']))
         self.assertTrue(_equal(w.precipitation['data'], unserialized.precipitation['data']))
         self.assertTrue(_equal(w.precipitation,     unserialized.precipitation))
         self.assertTrue(_equal(w.temperature,       unserialized.temperature))
         self.assertTrue(_equal(w.sea_depth,         unserialized.sea_depth))
         self.assertTrue(_equal(w.ocean_level,       unserialized.ocean_level))
         self.assertTrue(_equal(w.lake_map,          unserialized.lake_map))
         self.assertTrue(_equal(w.river_map,         unserialized.river_map))
         self.assertTrue(_equal(w.icecap,            unserialized.icecap))
         self.assertEquals(w.seed,                   unserialized.seed)
         self.assertEquals(w.n_plates,               unserialized.n_plates)
         self.assertEquals(w.step,                   unserialized.step)
         self.assertEqual(sorted(dir(w)),            sorted(dir(unserialized)))
         #self.assertEqual(w, unserialized)
     finally:
         if filename:
             os.remove(filename)
Esempio n. 6
0
def generate_world(world_name,
                   width,
                   height,
                   seed,
                   num_plates,
                   output_dir,
                   step,
                   ocean_level,
                   temps,
                   humids,
                   world_format='protobuf',
                   gamma_curve=1.25,
                   curve_offset=.2,
                   fade_borders=True,
                   verbose=True,
                   black_and_white=False):
    w = world_gen(world_name,
                  width,
                  height,
                  seed,
                  temps,
                  humids,
                  num_plates,
                  ocean_level,
                  step,
                  gamma_curve=gamma_curve,
                  curve_offset=curve_offset,
                  fade_borders=fade_borders,
                  verbose=verbose)

    print('')  # empty line
    print('Producing ouput:')
    sys.stdout.flush()

    # Save data
    filename = "%s/%s.world" % (output_dir, world_name)
    if world_format == 'protobuf':
        with open(filename, "wb") as f:
            f.write(w.protobuf_serialize())
    elif world_format == 'hdf5':
        save_world_to_hdf5(w, filename)
    else:
        print("Unknown format '%s', not saving " % world_format)
    print("* world data saved in '%s'" % filename)
    sys.stdout.flush()

    # Generate images
    filename = '%s/%s_ocean.png' % (output_dir, world_name)
    draw_ocean_on_file(w.layers['ocean'].data, filename)
    print("* ocean image generated in '%s'" % filename)

    if step.include_precipitations:
        filename = '%s/%s_precipitation.png' % (output_dir, world_name)
        draw_precipitation_on_file(w, filename, black_and_white)
        print("* precipitation image generated in '%s'" % filename)
        filename = '%s/%s_temperature.png' % (output_dir, world_name)
        draw_temperature_levels_on_file(w, filename, black_and_white)
        print("* temperature image generated in '%s'" % filename)

    if step.include_biome:
        filename = '%s/%s_biome.png' % (output_dir, world_name)
        draw_biome_on_file(w, filename)
        print("* biome image generated in '%s'" % filename)

    filename = '%s/%s_elevation.png' % (output_dir, world_name)
    sea_level = w.sea_level()
    draw_simple_elevation_on_file(w, filename, sea_level=sea_level)
    print("* elevation image generated in '%s'" % filename)
    return w