Exemplo n.º 1
0
    def test_generated_output_matches_static_output(self):
        """
        Test generated output using the sample GMS, input_4.gms
        versus static output generated using the same file.
        """
        input_file = open('test/input_4.gms', 'r')
        z = parser.GmsReader(input_file).read()
        generated_output = gwlfe.run(z)

        static_output = json.load(open('test/input_4.output', 'r'))

        self.assertEqual(generated_output, static_output)
Exemplo n.º 2
0
def main():
    log = logging.getLogger('gwlfe')
    log.setLevel(logging.DEBUG)

    ch = logging.StreamHandler()
    log.addHandler(ch)

    gms_filename = sys.argv[1]

    fp = open(gms_filename, 'r')
    z = parser.GmsReader(fp).read()
    result = gwlfe.run(z)
    print(json.dumps(result, indent=4))
Exemplo n.º 3
0
    def test_gms_writer(self):
        """
        Test that GmsWriter is able to replicate the sample GMS created
        from MapShed.
        """
        input_file = open('test/input_4.gms', 'r')
        z = parser.GmsReader(input_file).read()

        output = StringIO()
        writer = parser.GmsWriter(output)
        writer.write(z)

        input_file.seek(0)
        output.seek(0)

        self.assertGmsEqual(input_file, output)
Exemplo n.º 4
0
def run_gwlfe(model_input, inputmod_hash):
    """
    Given a model_input resulting from a MapShed run, converts that dictionary
    to an intermediate GMS file representation, which is then parsed by GWLF-E
    to create the final data model z. We run GWLF-E on this final data model
    and return the results.

    This intermediate GMS file representation needs to be created because most
    of GWLF-E logic is written to handle GMS files, and to support dictionaries
    directly we would have to replicate all that logic. Thus, it is easier to
    simply create a GMS file and have it read that.
    """
    output = to_gms_file(model_input)

    reader = parser.GmsReader(output)
    z = reader.read()

    result = gwlfe.run(z)
    result['inputmod_hash'] = inputmod_hash

    return result
Exemplo n.º 5
0
        timing['read_input_file'] = default_timer()

        # Round Areas
        mapshed_areas = [round(a, 1) for a in mapshed_data['Area']]
        mapshed_data['Area'] = mapshed_areas

        # Prepare input GMS
        pre_z = parser.DataModel(mapshed_data)
        output = StringIO()
        writer = parser.GmsWriter(output)
        writer.write(pre_z)
        output.seek(0)
        timing['prepare_input_gms'] = default_timer()

        # Read input GMS
        reader = parser.GmsReader(output)
        z = reader.read()
        timing['read_input_gms'] = default_timer()

        # Run the model
        result = gwlfe.run(z)
        timing['run_gwlfe'] = default_timer()

        # Write to file
        outpath = os.path.abspath(
            os.path.join(__file__, '../output/', filename))

        with open(outpath, 'w') as outfile:
            json.dump(result, outfile)
            timing['write_output_file'] = default_timer()