Source code for pyveg.scripts.generate_pattern

#!/usr/bin/env python

"""
Translation of Matlab code to model patterned vegetation in semi-arid landscapes.
"""

import argparse
from pyveg.src.pattern_generation import PatternGenerator


[docs]def main(): parser = argparse.ArgumentParser(description="Generate vegetation patterns") parser.add_argument("--rainfall", help="rainfall in mm", type=float, default=1.0) parser.add_argument("--input_config", help="input config JSON filename", type=str) parser.add_argument("--input_csv", help="starting pattern CSV filename", type=str) parser.add_argument( "--steps", help="number of time steps to run", type=int, default=1000 ) parser.add_argument( "--transpose", help="rotate image (useful for comparing to matlab", action="store_true", ) parser.add_argument( "--make_binary", help="threshold the plant_biomass member", action="store_true" ) parser.add_argument("--output_png", help="output png filename", type=str) parser.add_argument("--output_csv", help="output csv filename", type=str) parser.add_argument("--output_matlab", help="output .m filename", type=str) parser.add_argument( "--plot_result", help="display the evolved pattern", action="store_true" ) args = parser.parse_args() print("-" * 45) print("Starting pattern generator...") print("-" * 45) pg = PatternGenerator() pg.set_rainfall(args.rainfall) if args.input_config: pg.load_config(args.input_config) pg.initial_conditions() if args.input_csv: pg.set_starting_pattern_from_file(args.input_csv) else: pg.set_random_starting_pattern() pg.evolve_pattern(steps=args.steps) if args.make_binary: pg.plant_biomass = pg.make_binary() if args.transpose: pg.plant_biomass = pg.plant_biomass.transpose() if args.plot_result: pg.plot_image() if args.output_csv: pg.save_as_csv(args.output_csv) if args.output_png: pg.save_as_png(args.output_png) if args.output_matlab: pg.save_as_matlab(args.output_matlab) print("Finished generating patterns!\n")
if __name__ == "__main__": main()