From bd93d8dc49253c1372061235a59954bb2922b118 Mon Sep 17 00:00:00 2001 From: malmans2 Date: Thu, 15 Apr 2021 15:51:23 +0100 Subject: [PATCH 1/4] allow reusing frames --- cf_tools/accessor.py | 71 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 55 insertions(+), 16 deletions(-) diff --git a/cf_tools/accessor.py b/cf_tools/accessor.py index 8b49eca..0328982 100644 --- a/cf_tools/accessor.py +++ b/cf_tools/accessor.py @@ -430,6 +430,8 @@ def make_movie( self, func: Callable, uri: Union[str, Path, BinaryIO], + reuse_frames: bool = False, + frames_dir: Optional[str] = None, mimwrite_kwargs: Optional[Dict[str, Any]] = None, savefig_kwargs: Optional[Dict[str, Any]] = None, **kwargs, @@ -443,24 +445,31 @@ def make_movie( A function returning a figure. The first argument must be a Dataset or a DataArray, corresponding to a single frame (i.e., a block). uri: str, Path, BinaryIO - The resource to write the movie to, - e.g. a filename, pathlib.Path or file object. + The resource to write the movie to, + e.g. a filename, pathlib.Path or file object. + reuse_frames: bool + Whether to reuse existing frames. If True, frames are retained. + frames_dir: str, optional + If reuse_frames=True, defines the directory where to store the frames. mimwrite_kwargs: dict, optional A dictionary with arguments passed on to ``imageio.mimwrite``. savefig_kwargs: dict, optional A dictionary with arguments passed on to ``matplotlib.pyplot.savefig``. **kwargs: optional Additional arguments passed on to ``func`` - Raises ------ ValueError If conflicting kwargs are used. """ + # pylint: disable=R0913, R0914 # Check kwargs + frames_dir = frames_dir or "" + if reuse_frames and not frames_dir: + raise ValueError("`frames_dir` must be specified when reuse_frames=True") mimwrite_kwargs, savefig_kwargs = ( - kwargs if kwargs else {} for kwargs in (mimwrite_kwargs, savefig_kwargs) + kwargs or {} for kwargs in (mimwrite_kwargs, savefig_kwargs) ) conflicts = {"uri", "ims"} & set(mimwrite_kwargs) if conflicts: @@ -481,7 +490,12 @@ def make_movie( obj = obj.cf.chunk(chunks) # Create tmp directory - with tempfile.TemporaryDirectory() as tmpdirname: + with tempfile.TemporaryDirectory() as tmp_dir: + + if reuse_frames: + os.makedirs(frames_dir, exist_ok=True) + else: + frames_dir = tmp_dir # Create a DataArray with framenames time_name = obj.cf.axes["T"][0] @@ -505,27 +519,52 @@ def _save_frame(block): fig = func(block, **kwargs) index = np.argmin(np.abs(time_dim - block[time_name].values).values) savefig_kwargs["fname"] = os.path.join( - tmpdirname, "frame_" + str(index).zfill(len(str(time_size))) + frames_dir, "frame_" + str(index).zfill(len(str(time_size))) ) - fig.savefig(**savefig_kwargs) + try: + fig.savefig(**savefig_kwargs) + except: # noqa: E722 + # Delete frame if there's an error + if os.path.exists(savefig_kwargs["fname"]): + os.remove(savefig_kwargs["fname"]) + raise plt.close(fig) - return template.isel({time_name: [index]}) + return template.sel({time_name: [index]}) + + def _list_frames(): + return [ + basename + for basename in sorted(os.listdir(frames_dir)) + if basename.startswith("frame_") + ] + + # Find existing frames + existing_indexes = [ + int(os.path.splitext(basename)[0].split("_")[-1]) + for basename in _list_frames() + ] + if existing_indexes: + obj, template = ( + ds.drop_isel({time_name: existing_indexes}) + for ds in (obj, template) + ) # Create frames using dask - with ProgressBar(): - print("Creating frames", end=": ") - obj.map_blocks(_save_frame, template=template).compute() - print("done.") + if obj.sizes[time_name] or not existing_indexes: + with ProgressBar(): + print(f"Creating frames in {frames_dir}") + obj.map_blocks(_save_frame, template=template).compute() + else: + print(f"All frames already exist in {frames_dir}") # Create movie - print("Creating movie", end=": ") + print(f"Creating movie: {uri}") mimwrite_kwargs["ims"] = [ - imread(os.path.join(tmpdirname, basename)) - for basename in sorted(os.listdir(tmpdirname)) + imread(os.path.join(frames_dir, basename)) + for basename in _list_frames() ] mimwrite(**mimwrite_kwargs) - print("done.") def _extract_transect( From a1a147f972dbc9c7603326938e6c4a30352a5756 Mon Sep 17 00:00:00 2001 From: malmans2 Date: Thu, 15 Apr 2021 16:20:44 +0100 Subject: [PATCH 2/4] add tests --- cf_tools/tests/test_nemo.py | 15 +++++++++++++++ frames/frame_0.png | Bin 0 -> 25736 bytes frames/frame_1.png | Bin 0 -> 25731 bytes 3 files changed, 15 insertions(+) create mode 100644 frames/frame_0.png create mode 100644 frames/frame_1.png diff --git a/cf_tools/tests/test_nemo.py b/cf_tools/tests/test_nemo.py index a26d85d..4230824 100644 --- a/cf_tools/tests/test_nemo.py +++ b/cf_tools/tests/test_nemo.py @@ -4,6 +4,7 @@ # pylint: disable=C0116 import os +from glob import glob from tempfile import TemporaryDirectory import matplotlib.pyplot as plt @@ -340,6 +341,20 @@ def func(da): da.nemo_tools.make_movie(func, uri) assert os.path.exists(uri) + # Reuse frames + with TemporaryDirectory() as tmpdirname: + uri = os.path.join(tmpdirname, "movie.gif") + frames_dir = os.path.join(tmpdirname, "frames") + da.nemo_tools.make_movie(func, uri, reuse_frames=True, frames_dir=frames_dir) + assert os.path.exists(uri) and os.path.exists(frames_dir) + + frames = glob(os.path.join(frames_dir, "*")) + time0 = [os.path.getmtime(frame) for frame in frames] + os.remove(frames[0]) + da.nemo_tools.make_movie(func, uri, reuse_frames=True, frames_dir=frames_dir) + time1 = [os.path.getmtime(frame) for frame in frames] + assert time0[0] != time1[0] and time0[1:] == time1[1:] + def test_density(): diff --git a/frames/frame_0.png b/frames/frame_0.png new file mode 100644 index 0000000000000000000000000000000000000000..c3c417d727cb20f3a939968268fe6f39208a5aef GIT binary patch literal 25736 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 literal 0 HcmV?d00001 diff --git a/frames/frame_1.png b/frames/frame_1.png new file mode 100644 index 0000000000000000000000000000000000000000..4460b399506da6d11a04302c02c91e967a0535b4 GIT binary patch literal 25731 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 Date: Thu, 15 Apr 2021 16:21:24 +0100 Subject: [PATCH 3/4] add tests --- frames/frame_0.png | Bin 25736 -> 0 bytes frames/frame_1.png | Bin 25731 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 frames/frame_0.png delete mode 100644 frames/frame_1.png diff --git a/frames/frame_0.png b/frames/frame_0.png deleted file mode 100644 index c3c417d727cb20f3a939968268fe6f39208a5aef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25736 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 diff --git a/frames/frame_1.png b/frames/frame_1.png deleted file mode 100644 index 4460b399506da6d11a04302c02c91e967a0535b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25731 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 Date: Thu, 15 Apr 2021 16:39:44 +0100 Subject: [PATCH 4/4] print abs paths --- cf_tools/accessor.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/cf_tools/accessor.py b/cf_tools/accessor.py index 0328982..9b9bc14 100644 --- a/cf_tools/accessor.py +++ b/cf_tools/accessor.py @@ -553,13 +553,15 @@ def _list_frames(): # Create frames using dask if obj.sizes[time_name] or not existing_indexes: with ProgressBar(): - print(f"Creating frames in {frames_dir}") + print(f"Creating frames in {os.path.abspath(frames_dir)}") obj.map_blocks(_save_frame, template=template).compute() else: - print(f"All frames already exist in {frames_dir}") + print(f"All frames already exist in {os.path.abspath(frames_dir)}") # Create movie - print(f"Creating movie: {uri}") + print( + "Creating movie" + os.path.abspath(uri) if isinstance(uri, str) else "" + ) mimwrite_kwargs["ims"] = [ imread(os.path.join(frames_dir, basename)) for basename in _list_frames()