From 8936f983604886ce3659fef4979a5eb154b0e2fe Mon Sep 17 00:00:00 2001
From: Nick Bearson <nickb@ssec.wisc.edu>
Date: Thu, 12 May 2022 08:25:51 -0500
Subject: [PATCH] initial version of input handling where we determine minutes
 of interest and then work our way back to files

---
 gridded_glm/libexec/_minute_gridder.py | 31 +++++++++++++++++++++-----
 1 file changed, 25 insertions(+), 6 deletions(-)

diff --git a/gridded_glm/libexec/_minute_gridder.py b/gridded_glm/libexec/_minute_gridder.py
index 517afbe..ff36565 100644
--- a/gridded_glm/libexec/_minute_gridder.py
+++ b/gridded_glm/libexec/_minute_gridder.py
@@ -118,6 +118,11 @@ def get_goes_position(filenames):
     # we require that all files are from the same sensor and raise an exception if not
     raise ValueError("could not determine GOES position - did you provide a mix of satellites?")
 
+def glm_filename_to_minute(glm_filename):
+    glminfo = parse_glm_filename(os.path.basename(glm_filename))
+    ftime = glminfo[3]
+    ftime = ftime.replace(second = 0, microsecond=0)
+    return ftime
 
 def get_start_end(filenames, start_time=None, end_time=None):
     """Compute start and end time of data based on filenames."""
@@ -342,14 +347,28 @@ if __name__ == '__main__':
     # clean our temporary dir on exit
     atexit.register(shutil.rmtree, tempdir_path)
 
-    # do the gridding
-    gridder, glm_filenames, start_time, end_time, grid_kwargs = grid_setup(args.filenames, args, work_dir=tempdir_path)
-    gridder_return = gridder(glm_filenames, start_time, end_time, **grid_kwargs)
+    minutes = []
+    for f in args.filenames:
+        m = glm_filename_to_minute(f)
+        if m not in minutes:
+            minutes.append(m)
 
     gridded_files = []
-    for subgrid in gridder_return:
-        for gridded_file in subgrid[1]:
-            gridded_files.append(gridded_file)
+    for m in minutes:
+        # grab all input files for this minute
+        minute_files = []
+        for f in args.filenames:
+            if glm_filename_to_minute(f) == m:
+                minute_files.append(f)
+        minute_files = sorted(minute_files)
+
+        # do the gridding
+        gridder, glm_filenames, start_time, end_time, grid_kwargs = grid_setup(minute_files, args, work_dir=tempdir_path)
+        gridder_return = gridder(glm_filenames, start_time, end_time, **grid_kwargs)
+
+        for subgrid in gridder_return:
+            for gridded_file in subgrid[1]:
+                gridded_files.append(gridded_file)
 
     # we need to add attributes here due to an issue where satpy (or its dependencies) are
     # holding the input gridded file open until the process exits
-- 
GitLab