Beispiel #1
0
    def test_watermap_rng_stabilty(self):
        seed = 12345
        numpy.random.seed(seed)

        size = Size(16, 8)

        ocean = numpy.fromfunction(lambda y, x: y == x,
                                   (size.height, size.width))

        percipitation = numpy.ones((size.height, size.width))

        elevation = numpy.fromfunction(lambda y, x: y * x,
                                       (size.height, size.width))

        t = numpy.zeros(5)

        w = World("watermap", size, seed, GenerationParameters(0, 1.0, 0))
        w.ocean = ocean
        w.precipitation = (percipitation, t)
        w.elevation = (elevation, t)

        d = numpy.random.randint(0, 100)
        self.assertEqual(d, 98)

        data, t = WatermapSimulation._watermap(w, 200)

        self.assertAlmostEqual(data[4, 4], 0.0)
        self.assertAlmostEqual(data[3, 5], 4.20750776)

        d = numpy.random.randint(0, 100)
        self.assertEqual(d, 59)
    def test_watermap_rng_stabilty(self):
        seed=12345
        numpy.random.seed(seed)

        size = Size(16,8)

        ocean = numpy.fromfunction(lambda y, x: y==x, (size.height, size.width))

        percipitation = numpy.ones((size.height, size.width))

        elevation = numpy.fromfunction(lambda y, x: y*x, (size.height, size.width))

        t = numpy.zeros(5)

        w = World("watermap",  size, seed, GenerationParameters(0, 1.0, 0))
        w.ocean = ocean
        w.precipitation = (percipitation, t)
        w.elevation = (elevation, t)

        d = numpy.random.randint(0,100)
        self.assertEqual(d, 98)

        data, t = WatermapSimulation._watermap(w, 200)

        self.assertAlmostEqual(data[4,4], 0.0)
        self.assertAlmostEqual(data[3,5], 4.20750776)

        d = numpy.random.randint(0,100)
        self.assertEqual(d, 59)
def load_world_to_hdf5(filename):
    f = h5py.File(filename, libver='latest', mode='r')

    w = World(f['general/name'].value,
              Size(f['general/width'].value, f['general/height'].value),
              f['generation_params/seed'].value,
              GenerationParameters(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.elevation = (e, e_th)

    # Plates
    w.plates = numpy.array(f['plates'])

    # Ocean
    w.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.biome = biome

    if 'humidity' in f.keys():
        data, quantiles = _from_hdf5_matrix_with_quantiles(f['humidity'])
        w.humidity = (data, quantiles)

    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.permeability = (p, p_th)

    if 'watermap' in f.keys():
        data = numpy.array(f['watermap/data'])
        thresholds = {}
        thresholds['creek'] = f['watermap/thresholds/creek'].value
        thresholds['river'] =  f['watermap/thresholds/river'].value
        thresholds['main river'] = f['watermap/thresholds/mainriver'].value
        w.watermap = (data, thresholds)

    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.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.temperature = (t, t_th)

    if 'icecap' in f.keys():
        w.icecap = numpy.array(f['icecap'])

    if 'lake_map' in f.keys():
        w.lakemap = numpy.array(f['lake_map'])

    if 'river_map' in f.keys():
        w.rivermap = numpy.array(f['river_map'])

    f.close()

    return w
Beispiel #4
0
def load_world_to_hdf5(filename):
    f = h5py.File(filename, libver='latest', mode='r')

    w = World(
        f['general/name'].value,
        Size(f['general/width'].value, f['general/height'].value),
        f['generation_params/seed'].value,
        GenerationParameters(
            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.elevation = (e, e_th)

    # Plates
    w.plates = numpy.array(f['plates'])

    # Ocean
    w.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.biome = biome

    if 'humidity' in f.keys():
        data, quantiles = _from_hdf5_matrix_with_quantiles(f['humidity'])
        w.humidity = (data, quantiles)

    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.permeability = (p, p_th)

    if 'watermap' in f.keys():
        data = numpy.array(f['watermap/data'])
        thresholds = {}
        thresholds['creek'] = f['watermap/thresholds/creek'].value
        thresholds['river'] = f['watermap/thresholds/river'].value
        thresholds['main river'] = f['watermap/thresholds/mainriver'].value
        w.watermap = (data, thresholds)

    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.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.temperature = (t, t_th)

    if 'icecap' in f.keys():
        w.icecap = numpy.array(f['icecap'])

    if 'lake_map' in f.keys():
        w.lakemap = numpy.array(f['lake_map'])

    if 'river_map' in f.keys():
        w.rivermap = numpy.array(f['river_map'])

    f.close()

    return w