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)
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))