From 7c6daef0309f94e7197f42b2b94de2bbbc9b66de Mon Sep 17 00:00:00 2001 From: krishukr Date: Tue, 23 Aug 2022 02:06:56 +0000 Subject: [PATCH] Add a argument to skip GIF generation Signed-off-by: krishukr --- bin/maxfield-plan | 2 ++ maxfield/maxfield.py | 6 +++++- maxfield/results.py | 15 ++++++++++----- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/bin/maxfield-plan b/bin/maxfield-plan index b2b78a0..11513d4 100755 --- a/bin/maxfield-plan +++ b/bin/maxfield-plan @@ -70,6 +70,8 @@ if __name__ == "__main__": parser.add_argument( '--skip_step_plots', action='store_true', help=('Skip generating step-by-step linking plots.')) + parser.add_argument('--skip_step_gif', action='store_true', + help=('Skip generating step-by-step linking GIF.')) parser.add_argument( '-r', '--res_colors', action='store_true', help='Use Resistance color scheme.') diff --git a/maxfield/maxfield.py b/maxfield/maxfield.py index aea899a..3f7f877 100644 --- a/maxfield/maxfield.py +++ b/maxfield/maxfield.py @@ -164,7 +164,7 @@ def maxfield(filename, num_agents=1, num_field_iterations=1000, num_cpus=1, max_route_solutions=1000, max_route_runtime=60, outdir='.', skip_plots=False, skip_step_plots=False, - res_colors=False, google_api_key=None, + skip_step_gif=False, res_colors=False, google_api_key=None, google_api_secret=None, output_csv=False, verbose=False): """ Given a portal list file, determine the optimal linking and @@ -202,6 +202,8 @@ def maxfield(filename, num_agents=1, num_field_iterations=1000, If True, don't generate any figures skip_step_plots :: boolean If True, don't generate link-by-link figures + skip_step_gif :: boolean + If True, don't generate link-by-link GIF res_colors :: boolean If True, use resistance color scheme, otherwise enlightened google_api_key :: string @@ -256,6 +258,8 @@ def maxfield(filename, num_agents=1, num_field_iterations=1000, results.link_map() if not skip_step_plots: results.step_plots() + if not skip_step_gif: + results.step_gif() end_time = time.time() if verbose: print("Total maxfield runtime: {0:.1f} seconds". diff --git a/maxfield/results.py b/maxfield/results.py index 3fee11f..520cde1 100644 --- a/maxfield/results.py +++ b/maxfield/results.py @@ -187,6 +187,8 @@ def __init__(self, plan, outdir='', res_colors=False, format(err)) self.extent = [0, 640, 0, 640] + self.frames = [] + def key_prep(self): """ Save key preparation file to: outdir/key_preparation.txt @@ -577,7 +579,6 @@ def step_plots(self): fig, ax = self.make_portal_fig() drawn_agents = [] agents_last_pos = [] - frames = [] for agent in range(self.plan.num_agents): # # Find agent's first location @@ -604,7 +605,7 @@ def step_plots(self): 'AP: {0:>7d}'.format(num_ap), fontsize=18) fname = os.path.join(outdir, 'frame_00000.png') fig.savefig(fname, dpi=300) - frames.append(fname) + self.frames.append(fname) # # Group assignments by arrival time, and plot each arrival # time actions as a single frame. @@ -676,7 +677,7 @@ def step_plots(self): format(frame)) frame += 1 fig.savefig(fname, dpi=300) - frames.append(fname) + self.frames.append(fname) # # Remove drawn lines # @@ -717,7 +718,7 @@ def step_plots(self): format(frame)) frame += 1 fig.savefig(fname, dpi=300) - frames.append(fname) + self.frames.append(fname) # # Remove red patch, update to color and re-add # @@ -728,12 +729,16 @@ def step_plots(self): plt.close(fig) if self.verbose: print("Frames saved to: {0}/".format(outdir)) + + def step_gif(self): + if self.verbose: + print("Generating plan movie.") # # Generate GIF # fname = os.path.join(self.outdir, 'plan_movie.gif') with imageio.get_writer(fname, mode='I', duration=0.5) as writer: - for frame in frames: + for frame in self.frames: image = imageio.imread(frame) writer.append_data(image) optimize(fname)