示例#1
0
def main():
    parser = argparse.ArgumentParser(description='Run Zonation performance benchmarks.')

    parser.add_argument('input_files', metavar='INPUTS', type=str, nargs='?',
                        help='input bat/sh file')
    parser.add_argument('-l', '--load', dest='input_yaml', metavar="YAMLFILE",
                        help='yaml file defining a suite of input files')
    parser.add_argument('-o', '--outputfile', dest='output_file', default='',
                        help='name of the output file')
    parser.add_argument('-w', '--overwrite', dest='overwrite', default=False,
                        help='overwrite existing result file')
    parser.add_argument('-x', '--executable', dest='executable', default='zig3',
                        help='select Zonation executable (must in PATH)')

    args = parser.parse_args()

    if args.input_yaml:
        if args.input_files:
            print('WARNING: Both positional input files and loadable yaml file defined. Using positional input files.')
        else:
            import yaml
            try:
                f = open(args.input_yaml, 'r')
            except IOError:
                print('ERROR: Input YAML file {0} does not exist'.format(args.input_yaml))
                sys.exit(1)
            with f:
                suite = yaml.safe_load(f)
                args.input_files = suite['benchmark_analyses']

    args.input_files = [os.path.join(os.path.abspath(__file__), os.path.abspath(item)) for item in args.input_files]

    cmd_args = read_run(args.input_files, args.executable)

    # Collect output to a dict
    output = {}
    output['sys_info'] = get_system_info()
    output['z_info'] = get_zonation_info()

    for file_path, _cmd_args in cmd_args.iteritems():
        output[file_path] = run_analysis(file_path, _cmd_args)

    # Construct a suitable output name if it doesn't exist
    if args.output_file == '':
        args.output_file = 'results_' + output['sys_info'][1]['Uname'][0].lower() + '_' + \
            output['sys_info'][1]['Uname'][1].replace('.', '') + '.yaml'
        print('WARNING: No output file name provided, using {0}'.format(args.output_file))

        if not args.overwrite and os.path.exists(args.output_file):
            extant = args.output_file
            args.output_file = check_output_name(args.output_file)
            print('WARNING: Output file {0} exists, using {1}'.format(extant, args.output_file))

        write_output(output, args.output_file)
示例#2
0
    pairs = raster_pairs(folder_1, folder_2, suffix='.rank.*', ext='.img')

    all_differences = []

    for pair in pairs:

        if os.path.basename(pair[0]) != os.path.basename(pair[1]):
            print('WARNING: comparing raster datasets with different names')

        print("INFO: Reading in FIRST dataset {0}".format(pair[0]))
        raster_dataset1 = gdal.Open(pair[0], GA_ReadOnly)
        print("INFO: Reading in SECOND dataset {0}".format(pair[1]))
        raster_dataset2 = gdal.Open(pair[1], GA_ReadOnly)

        differences = raster_differences(raster_dataset1, raster_dataset2)
        if differences:
            differences['file1'] = pair[0]
            differences['file2'] = pair[1]

        all_differences.append(differences)

    for diff in all_differences:
        if diff:
            pprint(diff)
        else:
            print("INFO: All values in all pairs seem to be the same")

    output_file = check_output_name('raster_differences.yaml')
    with open(output_file, 'w') as outfile:
            outfile.write(yaml.dump(all_differences, canonical=True))