From c992df3e490d7b8d84e8fda972325154ddb282a5 Mon Sep 17 00:00:00 2001
From: Nick Bearson <nickb@ssec.wisc.edu>
Date: Fri, 16 Dec 2022 15:13:31 -0600
Subject: [PATCH 01/20] Merge in Nick Bearson's CI Fix

---
 .gitlab-ci.yml | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8be13ac..88505a3 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -15,11 +15,11 @@ stages:
 
 create the Gridded GLM buildbucket:
   stage: buildbucket_build
-  image: docker:19.03.1
+  image: docker:20.10
   tags:
     - docker
   services:
-    - docker:19.03.1-dind
+    - docker:dind
   script:
     - docker login --username $CI_REGISTRY_USER --password $CI_REGISTRY_PASSWORD $CI_REGISTRY
     - docker build -f buildbucket/Dockerfile --tag $BUILDBUCKET_IMAGE:$CI_COMMIT_SHORT_SHA --cache-from $BUILDBUCKET_IMAGE:latest buildbucket/
@@ -27,11 +27,11 @@ create the Gridded GLM buildbucket:
 
 create the Gridded GLM package:
   stage: gridded_glm_build
-  image: docker:19.03.1
+  image: docker:20.10
   tags:
     - docker
   services:
-    - docker:19.03.1-dind
+    - docker:dind
   script:
     - docker login --username $CI_REGISTRY_USER --password $CI_REGISTRY_PASSWORD $CI_REGISTRY
     # Creates the gridded GLM package
@@ -55,11 +55,11 @@ run tests:
 
 push our images with version tags:
   stage: release
-  image: docker:19.03.1
+  image: docker:20.10
   tags:
     - docker
   services:
-    - docker:19.03.1-dind
+    - docker:dind
   rules:
     - if: '$CI_COMMIT_TAG'
   script:
@@ -75,11 +75,11 @@ push our images with version tags:
 
 push our images as latest tags:
   stage: release
-  image: docker:19.03.1
+  image: docker:20.10
   tags:
     - docker
   services:
-    - docker:19.03.1-dind
+    - docker:dind
   script:
     - docker login --username $CI_REGISTRY_USER --password $CI_REGISTRY_PASSWORD $CI_REGISTRY
 # buildbucket
-- 
GitLab


From cc04d47a73216a09105f121a9ef7fc865e709de1 Mon Sep 17 00:00:00 2001
From: Levi Pfantz <lpfantz@wisc.edu>
Date: Wed, 3 Jul 2024 16:03:58 -0500
Subject: [PATCH 02/20] Update docker file to use rocky8

---
 buildbucket/Dockerfile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/buildbucket/Dockerfile b/buildbucket/Dockerfile
index 5861632..5bafdf8 100644
--- a/buildbucket/Dockerfile
+++ b/buildbucket/Dockerfile
@@ -1,6 +1,6 @@
 # To build:
 # docker build -t gitlab.ssec.wisc.edu:5555/cspp_geo/cspp-geo-gridded-glm/buildbucket:r$(date '+%Y%m%d') .
-FROM --platform=linux/amd64 centos:7
+FROM --platform=linux/amd64 rockylinux:8
 
 WORKDIR /work
 
@@ -8,7 +8,7 @@ COPY buildbucket_environment.yaml .
 COPY package.sh .
 
 # Install the `which` command for debugging
-RUN yum -y install which git && yum clean all
+RUN dnf -y install which git findutils && dnf clean all
 
 # Download and install miniforge
 # https://github.com/conda-forge/miniforge#miniforge
-- 
GitLab


From 53cc1e7d1192514086b855dc03034f5271a659a8 Mon Sep 17 00:00:00 2001
From: Levi Pfantz <lpfantz@wisc.edu>
Date: Wed, 3 Jul 2024 16:08:16 -0500
Subject: [PATCH 03/20] add G19 support

---
 .../libexec/gridded_glm/_minute_gridder.py       | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/gridded_glm/libexec/gridded_glm/_minute_gridder.py b/gridded_glm/libexec/gridded_glm/_minute_gridder.py
index 4e9cabd..295d64c 100644
--- a/gridded_glm/libexec/gridded_glm/_minute_gridder.py
+++ b/gridded_glm/libexec/gridded_glm/_minute_gridder.py
@@ -65,6 +65,9 @@ warnings.filterwarnings("ignore")
 import dask
 dask.config.set(num_workers=1)
 
+GOES_SAT_POSITIONS={'G16': 'east', 'G17': 'west', 'G18': 'west', 'G19': 'east',}
+
+
 def create_parser():
     def bounded_float(afloat, inclusive_min, inclusive_max):
         value = float(afloat)
@@ -118,12 +121,11 @@ def get_resolution(args):
 
 # if provided "auto" position, we determine the sensor from the filename
 def get_goes_position(filenames):
-    if all("_G16_" in f for f in filenames):
-        return "east"
-    if all("_G17_" in f for f in filenames):
-        return "west"
-    if all("_G18_" in f for f in filenames):
-        return "west"
+
+#Check that all files are the same sat
+    for key, value in GOES_SAT_POSITIONS.items():
+        if all(f"_{key}_" in f for f in filenames):
+            return value
 
     # 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?")
@@ -484,4 +486,4 @@ def main():
         return 0
 
 if __name__ == '__main__':
-    sys.exit(main())
\ No newline at end of file
+    sys.exit(main())
-- 
GitLab


From 22f818ba5832e01202882ea71204e1ce2194262d Mon Sep 17 00:00:00 2001
From: Levi Pfantz <lpfantz@wisc.edu>
Date: Wed, 3 Jul 2024 21:09:31 +0000
Subject: [PATCH 04/20] Update docker file to use rocky8

(cherry picked from commit cc04d47a73216a09105f121a9ef7fc865e709de1)

Co-authored-by: Levi Pfantz <lpfantz@wisc.edu>
---
 buildbucket/Dockerfile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/buildbucket/Dockerfile b/buildbucket/Dockerfile
index 5861632..5bafdf8 100644
--- a/buildbucket/Dockerfile
+++ b/buildbucket/Dockerfile
@@ -1,6 +1,6 @@
 # To build:
 # docker build -t gitlab.ssec.wisc.edu:5555/cspp_geo/cspp-geo-gridded-glm/buildbucket:r$(date '+%Y%m%d') .
-FROM --platform=linux/amd64 centos:7
+FROM --platform=linux/amd64 rockylinux:8
 
 WORKDIR /work
 
@@ -8,7 +8,7 @@ COPY buildbucket_environment.yaml .
 COPY package.sh .
 
 # Install the `which` command for debugging
-RUN yum -y install which git && yum clean all
+RUN dnf -y install which git findutils && dnf clean all
 
 # Download and install miniforge
 # https://github.com/conda-forge/miniforge#miniforge
-- 
GitLab


From 31f255b037e1f527da67590fb07b072e9d3d2a05 Mon Sep 17 00:00:00 2001
From: Levi Pfantz <lpfantz@wisc.edu>
Date: Thu, 11 Jul 2024 12:09:31 -0500
Subject: [PATCH 05/20] Update lmatools version for compatability with latest
 numpy

---
 buildbucket/buildbucket_environment.yaml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/buildbucket/buildbucket_environment.yaml b/buildbucket/buildbucket_environment.yaml
index 9b98a3b..79992b1 100644
--- a/buildbucket/buildbucket_environment.yaml
+++ b/buildbucket/buildbucket_environment.yaml
@@ -25,7 +25,7 @@ dependencies:
   - shapely
   - pyorbital
   - pip:
-    - git+https://github.com/deeplycloudy/lmatools.git@1501be30c32b948a3ecd56adf1dfb2fc57316346
+    - git+https://github.com/deeplycloudy/lmatools.git@392eff5f15735be7b7f5ccc20d2835a617000117
     - git+https://github.com/deeplycloudy/stormdrain.git@3620621267215bf84b1f5199b4f395b430f309fc
     - git+https://github.com/nbearson/glmtools.git@c61202aaaabd91b96cb98b5af7c59f05486cf4c6
-    - git+https://github.com/pytroll/satpy.git@v0.36.0
\ No newline at end of file
+    - git+https://github.com/pytroll/satpy.git@v0.36.0
-- 
GitLab


From 76f6bcc89837f278b271d89f62e0f044a672f947 Mon Sep 17 00:00:00 2001
From: Levi Pfantz <lpfantz@wisc.edu>
Date: Thu, 11 Jul 2024 15:08:48 -0500
Subject: [PATCH 06/20] Add goes19 simulated test case / data

---
 ...0000000_e20240040000200_c20240040000219.nc |  3 +
 ...0000200_e20240040000400_c20240040000416.nc |  3 +
 ...0000400_e20240040001000_c20240040001016.nc |  3 +
 tests/test_functionality.py                   | 78 ++++++++++++++-----
 4 files changed, 66 insertions(+), 21 deletions(-)
 create mode 100644 tests/test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000000_e20240040000200_c20240040000219.nc
 create mode 100644 tests/test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000200_e20240040000400_c20240040000416.nc
 create mode 100644 tests/test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000400_e20240040001000_c20240040001016.nc

diff --git a/tests/test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000000_e20240040000200_c20240040000219.nc b/tests/test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000000_e20240040000200_c20240040000219.nc
new file mode 100644
index 0000000..b1ae425
--- /dev/null
+++ b/tests/test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000000_e20240040000200_c20240040000219.nc
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c19d812a13cf7112fe47dfaa95c528c6398ca735b2fcbadd771ebd10193464eb
+size 345916
diff --git a/tests/test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000200_e20240040000400_c20240040000416.nc b/tests/test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000200_e20240040000400_c20240040000416.nc
new file mode 100644
index 0000000..432795b
--- /dev/null
+++ b/tests/test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000200_e20240040000400_c20240040000416.nc
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4ac544e1dc2325c11b8a11098a0604a3903887b585b6ce9a22989e8f91aebe71
+size 315196
diff --git a/tests/test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000400_e20240040001000_c20240040001016.nc b/tests/test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000400_e20240040001000_c20240040001016.nc
new file mode 100644
index 0000000..e528bf4
--- /dev/null
+++ b/tests/test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000400_e20240040001000_c20240040001016.nc
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e917d350318a0f8e9e780c1ec906a4ec025505ada5c7d6d0f6bfe5f435b17128
+size 384828
diff --git a/tests/test_functionality.py b/tests/test_functionality.py
index ece6033..6e20663 100644
--- a/tests/test_functionality.py
+++ b/tests/test_functionality.py
@@ -131,9 +131,9 @@ def test_g17():
     assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G17_T23_20220920192200.nc', 1))
 
 def test_g18():
-    inputs = [os.path.join(TESTDIR, "test-inputs/OR_GLM-L2-LCFA_G18_s20222210000000_e20222210000200_c20222210000225.nc"),
-              os.path.join(TESTDIR, "test-inputs/OR_GLM-L2-LCFA_G18_s20222210000200_e20222210000400_c20222210000424.nc"),
-              os.path.join(TESTDIR, "test-inputs/OR_GLM-L2-LCFA_G18_s20222210000400_e20222210001000_c20222210001027.nc")]
+    inputs = [os.path.join(TESTDIR, "test-inputs/OR_GLM-L2-LCFA_G18_s20223141900000_e20223141900200_c20223141900209.nc"),
+              os.path.join(TESTDIR, "test-inputs/OR_GLM-L2-LCFA_G18_s20223141900200_e20223141900400_c20223141900415.nc"),
+              os.path.join(TESTDIR, "test-inputs/OR_GLM-L2-LCFA_G18_s20223141900400_e20223141901000_c20223141901015.nc")]
     for i in inputs:
         if not os.path.exists(i):
             warnings.warn(UserWarning("GOES-18 test files are not available in this environment. GOES-18 functionality has not been tested."))
@@ -148,22 +148,58 @@ def test_g18():
                                         ])
     assert completed_process.returncode == 0
     assert(check_fileglob("CG_GLM-L2-GLMF-M3_G18_*.nc", 1))
-    assert(check_fileglob("CSPP_OR_GLM-L2-GLMF-M3_G18_T*.nc", 15))
-
-    assert(check_fileglob("CG_GLM-L2-GLMF-M3_G18_s20222210000000_e20222210001000_c*.nc", 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G18_T04_20220809000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G18_T30_20220809000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G18_T18_20220809000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G18_T29_20220809000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G18_T49_20220809000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G18_T16_20220809000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G18_T27_20220809000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G18_T23_20220809000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G18_T17_20220809000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G18_T20_20220809000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G18_T08_20220809000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G18_T11_20220809000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G18_T21_20220809000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G18_T24_20220809000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G18_T10_20220809000100.nc', 1))
+    assert(check_fileglob("CSPP_OR_GLM-L2-GLMF-M3_G18_T*.nc", 10))
+
+    assert(check_fileglob("CG_GLM-L2-GLMF-M3_G18_s20223141900000_e20223141901000_c*.nc", 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G18_T11_20221110190100.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G18_T18_20221110190100.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G18_T19_20221110190100.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G18_T24_20221110190100.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G18_T26_20221110190100.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G18_T30_20221110190100.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G18_T37_20221110190100.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G18_T45_20221110190100.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G18_T49_20221110190100.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G18_T52_20221110190100.nc', 1))
+
+def test_g19_sim():
+    inputs = [os.path.join(TESTDIR, "test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000000_e20240040000200_c20240040000219.nc"),
+              os.path.join(TESTDIR, "test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000400_e20240040001000_c20240040001016.nc"),
+              os.path.join(TESTDIR, "test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000200_e20240040000400_c20240040000416.nc")]
+    for i in inputs:
+        if not os.path.exists(i):
+            warnings.warn(UserWarning("GOES-19 sim test files are not available in this environment. GOES-19 functionality has not been tested."))
+            return
+
+    completed_process = subprocess.run(['python',
+                                        MINUTE_GRIDDER,
+                                        "--create-tiles",
+                                        inputs[0],
+                                        inputs[1],
+                                        inputs[2],
+                                        ])
+    assert completed_process.returncode == 0
+    assert(check_fileglob("CG_GLM-L2-GLMF-M3_G19_*.nc", 1))
+    assert(check_fileglob("CSPP_OR_GLM-L2-GLMF-M3_G19_T*.nc", 18))
+
+    assert(check_fileglob("CG_GLM-L2-GLMF-M3_G19_s20240040000000_e20240040001000_c*.nc", 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T10_20240104000100.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T11_20240104000100.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T14_20240104000100.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T17_20240104000100.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T27_20240104000100.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T30_20240104000100.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T33_20240104000100.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T34_20240104000100.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T35_20240104000100.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T38_20240104000100.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T39_20240104000100.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T40_20240104000100.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T41_20240104000100.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T46_20240104000100.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T47_20240104000100.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T52_20240104000100.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T53_20240104000100.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T58_20240104000100.nc', 1))
+
 
-- 
GitLab


From 51fa9839e5fda18547e7c3fa870dfed98a2c40b9 Mon Sep 17 00:00:00 2001
From: Levi Pfantz <lpfantz@wisc.edu>
Date: Thu, 11 Jul 2024 15:10:05 -0500
Subject: [PATCH 07/20] Add goes18 data for future testing

---
 tests/test-inputs/.gitignore                                   | 2 --
 ...LCFA_G18_s20223141900000_e20223141900200_c20223141900209.nc | 3 +++
 ...LCFA_G18_s20223141900200_e20223141900400_c20223141900415.nc | 3 +++
 ...LCFA_G18_s20223141900400_e20223141901000_c20223141901015.nc | 3 +++
 4 files changed, 9 insertions(+), 2 deletions(-)
 delete mode 100644 tests/test-inputs/.gitignore
 create mode 100644 tests/test-inputs/OR_GLM-L2-LCFA_G18_s20223141900000_e20223141900200_c20223141900209.nc
 create mode 100644 tests/test-inputs/OR_GLM-L2-LCFA_G18_s20223141900200_e20223141900400_c20223141900415.nc
 create mode 100644 tests/test-inputs/OR_GLM-L2-LCFA_G18_s20223141900400_e20223141901000_c20223141901015.nc

diff --git a/tests/test-inputs/.gitignore b/tests/test-inputs/.gitignore
deleted file mode 100644
index 0bee393..0000000
--- a/tests/test-inputs/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-# ignore all G18 test files until G18 data can be made public
-OR_GLM-L2-LCFA_G18*
diff --git a/tests/test-inputs/OR_GLM-L2-LCFA_G18_s20223141900000_e20223141900200_c20223141900209.nc b/tests/test-inputs/OR_GLM-L2-LCFA_G18_s20223141900000_e20223141900200_c20223141900209.nc
new file mode 100644
index 0000000..dda450e
--- /dev/null
+++ b/tests/test-inputs/OR_GLM-L2-LCFA_G18_s20223141900000_e20223141900200_c20223141900209.nc
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9567ad519143956a5b55250d5c99b28ade9825be057e51b62586ef8fc3bacef9
+size 156288
diff --git a/tests/test-inputs/OR_GLM-L2-LCFA_G18_s20223141900200_e20223141900400_c20223141900415.nc b/tests/test-inputs/OR_GLM-L2-LCFA_G18_s20223141900200_e20223141900400_c20223141900415.nc
new file mode 100644
index 0000000..0e6e9e9
--- /dev/null
+++ b/tests/test-inputs/OR_GLM-L2-LCFA_G18_s20223141900200_e20223141900400_c20223141900415.nc
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:71926b1555ec071d230fe9c6083a92535abe00387480155357af0e1e95dc5ba8
+size 152468
diff --git a/tests/test-inputs/OR_GLM-L2-LCFA_G18_s20223141900400_e20223141901000_c20223141901015.nc b/tests/test-inputs/OR_GLM-L2-LCFA_G18_s20223141900400_e20223141901000_c20223141901015.nc
new file mode 100644
index 0000000..335c88a
--- /dev/null
+++ b/tests/test-inputs/OR_GLM-L2-LCFA_G18_s20223141900400_e20223141901000_c20223141901015.nc
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2da2fbe749fc94dbc793d311ec7795d7106119b1f29b3cb336e9683976a875d3
+size 156288
-- 
GitLab


From 93fd7a2112b78f8401296b78d42b5e84915e0cb8 Mon Sep 17 00:00:00 2001
From: Levi Pfantz <lpfantz@wisc.edu>
Date: Fri, 13 Dec 2024 22:46:19 +0000
Subject: [PATCH 08/20] Add xz to docker image

---
 buildbucket/Dockerfile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/buildbucket/Dockerfile b/buildbucket/Dockerfile
index 5bafdf8..f483811 100644
--- a/buildbucket/Dockerfile
+++ b/buildbucket/Dockerfile
@@ -8,7 +8,7 @@ COPY buildbucket_environment.yaml .
 COPY package.sh .
 
 # Install the `which` command for debugging
-RUN dnf -y install which git findutils && dnf clean all
+RUN dnf -y install which git findutils xz && dnf clean all
 
 # Download and install miniforge
 # https://github.com/conda-forge/miniforge#miniforge
-- 
GitLab


From 32615ae921c855f9dd9228a2b3cd507f2049055f Mon Sep 17 00:00:00 2001
From: Graeme Martin <graeme.martin@ssec.wisc.edu>
Date: Mon, 23 Dec 2024 20:57:26 +0000
Subject: [PATCH 09/20] Updated README for v1.1 release

---
 gridded_glm/PACKAGE_README.md | 63 +++++++++++++++++++++++++++--------
 1 file changed, 49 insertions(+), 14 deletions(-)

diff --git a/gridded_glm/PACKAGE_README.md b/gridded_glm/PACKAGE_README.md
index 983b19e..e991e4f 100644
--- a/gridded_glm/PACKAGE_README.md
+++ b/gridded_glm/PACKAGE_README.md
@@ -1,6 +1,26 @@
-# CSPP Geo Gridded GLM v1.0
+# CSPP Geo Gridded GLM v1.1
 
-CSPP Geo Gridded GLM software processes GOES-16 and GOES-17 Geostationary Lightning Mapper (GLM) Level 2+ LCFA products in mission standard format, generating a new set of products which have been gridded to the Advanced Baseline Imager (ABI) 2-km resolution, and are aggregated at one-minute intervals. Spatial extent information that is not readily available in the GLM L2+ data is recovered and used to create the gridded products.
+January 2025
+
+**Copyright (C) 2020-2025 Space Science and Engineering Center (SSEC), University 
+of Wisconsin-Madison.**
+
+University of Wisconsin-Madison
+Space Science and Engineering Center
+1225 West Dayton Street
+Madison, WI  53706
+
+CSPP Geo Software Lead: Levi Pfantz
+CSPP Geo Product Manager: Scott Lindstrom
+
+Contact: csppgeo.issues@ssec.wisc.edu
+Gridded GLM Documentation: https://cimss.ssec.wisc.edu/csppgeo/gridded-glm.html
+CSPP Geo Home Page: http://cimss.ssec.wisc.edu/csppgeo/
+
+
+## OVERVIEW
+
+CSPP Geo Gridded GLM software processes GOES-16, -17, -18 and -19 Geostationary Lightning Mapper (GLM) Level 2+ LCFA products in mission standard format, generating a new set of products which have been gridded to the Advanced Baseline Imager (ABI) 2-km resolution, and are aggregated at one-minute intervals. Spatial extent information that is not readily available in the GLM L2+ data is recovered and used to create the gridded products.
 
 The new gridded products are:
 
@@ -17,7 +37,7 @@ Questions and comments can be directed to <csppgeo.issues@ssec.wisc.edu>.
 
 ## ATTRIBUTION
 
-The software package is built on the open source glmtools software developed by Dr. Eric Bruning (Texas Tech University). Ongoing development of operational Gridded GLM products and related research is led by Dr. Scott Rudlosky (NOAA/NESDIS/STAR).
+The software package is built on the open source glmtools software developed by Dr. Eric Bruning (Texas Tech University). Development of operational Gridded GLM products and related research is led by Dr. Scott Rudlosky (NOAA/NESDIS/STAR).
 
 This release builds on two years of effort to refine the glmtools package in pre-operational demonstrations, and many of the contributors to that effort are coauthors on the paper that describes the GLM imagery creation approach in detail.
 
@@ -26,17 +46,32 @@ Bruning, E. C., Tillier, C. E., Edgington, S. F., Rudlosky, S. D., Zajic, J. K.,
 The developers wish to thank Lee Byerle and Joe Zajic, NWS TOWR-S team, for their assistance with tile development and AWIPS compatibility.
 
 
-## COPYRIGHT / LICENSE / DISCLAIMER
-
-Portions of the source code in this software package are: 
+## COPYRIGHT / LICENSE
 
-Copyright (C) 2020-2022 Space Science and Engineering Center (SSEC), University of Wisconsin-Madison.
+Portions of the source code in this software package are copyrighted by the 
+University of Wisconsin Regents. This package includes original software
+developed by the University of Wisconsin (UW), as well as third-party software 
+libraries. UW software is licensed under the GNU General Public License Version 3. 
+Other binary executable files and third-party source code are copyrighted and 
+licensed by their respective organizations, and are distributed consistent with 
+their licensing terms. For more information, refer to LICENSE and LICENSE.md files 
+distributed with the software package.
 
-Original UW/SSEC source code, scripts and automation included as part of this package are distributed under the GNU General Public License agreement version 3. 
 
-Binary executable files and third-party source code included as part of this software package are copyrighted and licensed by their respective organizations, and distributed consistent with their licensing terms.
+## DISCLAIMER
 
-The University of Wisconsin-Madison Space Science and Engineering Center (SSEC) makes no warranty of any kind with regard to the CSPP software or any accompanying documentation, including but not limited to the implied warranties of merchantability and fitness for a particular purpose. SSEC does not indemnify any infringement of copyright, patent, or trademark through the use or modification of this software. All risk of use is assumed by the user. Users agree not to hold SSEC, the University of Wisconsin-Madison, or any of its employees or assigns liable for any consequences resulting from the use of the CSPP software.
+The University of Wisconsin-Madison Space Science and Engineering Center 
+(SSEC) makes no warranty of any kind with regard to the CSPP Geo software or 
+any accompanying documentation, including but not limited to the implied 
+warranties of merchantability and fitness for a particular purpose. SSEC does
+not indemnify any infringement of copyright, patent, or trademark through the
+use or modification of this software.
+    
+There is no expressed or implied warranty made to anyone as to the suitability
+of this software for any purpose. All risk of use is assumed by the user. 
+Users agree not to hold SSEC, the University of Wisconsin-Madison, or any of
+its employees or assigns liable for any consequences resulting from the use of
+the CSPP Geo software.
 
 
 ## INSTALLATION
@@ -44,8 +79,8 @@ The University of Wisconsin-Madison Space Science and Engineering Center (SSEC)
 To install, extract the tarball and optionally add the bin directory to your PATH.
 
 ```
-tar xf cspp-geo-gridded-glm-1.0.tar.xz
-export PATH=$PATH:$PWD/cspp-geo-gridded-glm-1.0/bin
+tar xf cspp-geo-gridded-glm-1.1.0.tar.xz
+export PATH=$PATH:$PWD/cspp-geo-gridded-glm-1.1/bin
 ```
 
 A test data tarball can be downloaded from the same location as the software. Reference output is included. Refer to the EXAMPLES section below to run the test case.​
@@ -79,11 +114,11 @@ Create a single one-minute gridded product file by specifying three input 20-sec
 
 Create a single one-minute gridded product file by specifying only one of the three input 20-second GLM L2+ files ("realtime" mode)
 
-`cspp-geo-gglm.sh -1 /data/GLM-L2/2019299/17/OR_GLM-L2-LCFA_G16_s20192991759400_e20192991800000_c20192991800031.nc`
+`cspp-geo-gglm.sh -r /data/GLM-L2/2019299/17/OR_GLM-L2-LCFA_G16_s20192991759400_e20192991800000_c20192991800031.nc`
 
 Create a gridded product file and tiles
 
-`cspp-geo-gglm.sh -1 -t /data/GLM-L2/2019299/17/OR_GLM-L2-LCFA_G16_s20192991759400_e20192991800000_c20192991800031.nc`
+`cspp-geo-gglm.sh -r -t /data/GLM-L2/2019299/17/OR_GLM-L2-LCFA_G16_s20192991759400_e20192991800000_c20192991800031.nc`
 
 
 ## CAVEATS
-- 
GitLab


From 1f3be20dcdde5440e90c983a4acc0bf0a993bebf Mon Sep 17 00:00:00 2001
From: Levi Pfantz <lpfantz@oolong.ssec.wisc.edu>
Date: Mon, 23 Dec 2024 21:19:00 +0000
Subject: [PATCH 10/20] Swap out simulated goes19 data for prelim goes19 data
 and add __version__.py

---
 buildbucket/README.md                                     | 2 +-
 gridded_glm/libexec/gridded_glm/__version__.py            | 3 +++
 ...G19_s20243230309000_e20243230309200_c20243230309216.nc | 3 +++
 ...G19_s20243230309200_e20243230309400_c20243230309415.nc | 3 +++
 ...G19_s20243230309400_e20243230310000_c20243230310015.nc | 3 +++
 ...G19_s20240040000000_e20240040000200_c20240040000219.nc | 3 ---
 ...G19_s20240040000200_e20240040000400_c20240040000416.nc | 3 ---
 ...G19_s20240040000400_e20240040001000_c20240040001016.nc | 3 ---
 tests/test_functionality.py                               | 8 ++++----
 9 files changed, 17 insertions(+), 14 deletions(-)
 create mode 100644 gridded_glm/libexec/gridded_glm/__version__.py
 create mode 100644 tests/test-inputs/goes19-prelim/OR_GLM-L2-LCFA_G19_s20243230309000_e20243230309200_c20243230309216.nc
 create mode 100644 tests/test-inputs/goes19-prelim/OR_GLM-L2-LCFA_G19_s20243230309200_e20243230309400_c20243230309415.nc
 create mode 100644 tests/test-inputs/goes19-prelim/OR_GLM-L2-LCFA_G19_s20243230309400_e20243230310000_c20243230310015.nc
 delete mode 100644 tests/test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000000_e20240040000200_c20240040000219.nc
 delete mode 100644 tests/test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000200_e20240040000400_c20240040000416.nc
 delete mode 100644 tests/test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000400_e20240040001000_c20240040001016.nc

diff --git a/buildbucket/README.md b/buildbucket/README.md
index c5ebc01..759aa0f 100644
--- a/buildbucket/README.md
+++ b/buildbucket/README.md
@@ -26,7 +26,7 @@ docker push gitlab.ssec.wisc.edu:5555/cspp_geo/cspp-geo-gridded-glm/buildbucket:
 To create the Gridded GLM package with the version number 1.0.0 in your current directory:
 
 ```bash
-docker run --rm -v "${PWD}":/dock gitlab.ssec.wisc.edu:5555/cspp_geo/cspp-geo-gridded-glm/buildbucket:latest ./package.sh 1.0.0
+docker run --rm -v "${PWD}":/dock --env GGLM_REF=develop gitlab.ssec.wisc.edu:5555/cspp_geo/cspp-geo-gridded-glm/buildbucket:latest ./package.sh 1.0.0
 ```
 
 If some things need to be customized you can specify various environment
diff --git a/gridded_glm/libexec/gridded_glm/__version__.py b/gridded_glm/libexec/gridded_glm/__version__.py
new file mode 100644
index 0000000..0761f1b
--- /dev/null
+++ b/gridded_glm/libexec/gridded_glm/__version__.py
@@ -0,0 +1,3 @@
+# __version__.py
+
+__version__ = "1.1.0"
diff --git a/tests/test-inputs/goes19-prelim/OR_GLM-L2-LCFA_G19_s20243230309000_e20243230309200_c20243230309216.nc b/tests/test-inputs/goes19-prelim/OR_GLM-L2-LCFA_G19_s20243230309000_e20243230309200_c20243230309216.nc
new file mode 100644
index 0000000..0614b0e
--- /dev/null
+++ b/tests/test-inputs/goes19-prelim/OR_GLM-L2-LCFA_G19_s20243230309000_e20243230309200_c20243230309216.nc
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bc421fa5a34e6b0829e06d66c43ca40de4e4c3f37677b6af23feee1eaf23e307
+size 161474
diff --git a/tests/test-inputs/goes19-prelim/OR_GLM-L2-LCFA_G19_s20243230309200_e20243230309400_c20243230309415.nc b/tests/test-inputs/goes19-prelim/OR_GLM-L2-LCFA_G19_s20243230309200_e20243230309400_c20243230309415.nc
new file mode 100644
index 0000000..d1919a5
--- /dev/null
+++ b/tests/test-inputs/goes19-prelim/OR_GLM-L2-LCFA_G19_s20243230309200_e20243230309400_c20243230309415.nc
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:78df20aaed7f0cf232fb550abe1487328c6759d0fb0e385d70269bc99d78da2b
+size 155906
diff --git a/tests/test-inputs/goes19-prelim/OR_GLM-L2-LCFA_G19_s20243230309400_e20243230310000_c20243230310015.nc b/tests/test-inputs/goes19-prelim/OR_GLM-L2-LCFA_G19_s20243230309400_e20243230310000_c20243230310015.nc
new file mode 100644
index 0000000..cf40dab
--- /dev/null
+++ b/tests/test-inputs/goes19-prelim/OR_GLM-L2-LCFA_G19_s20243230309400_e20243230310000_c20243230310015.nc
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9c305be00c7582c8a5f0d43bb11a62d04fdf7a58a4ce72440d53b4e7bc3dffa8
+size 156571
diff --git a/tests/test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000000_e20240040000200_c20240040000219.nc b/tests/test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000000_e20240040000200_c20240040000219.nc
deleted file mode 100644
index b1ae425..0000000
--- a/tests/test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000000_e20240040000200_c20240040000219.nc
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c19d812a13cf7112fe47dfaa95c528c6398ca735b2fcbadd771ebd10193464eb
-size 345916
diff --git a/tests/test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000200_e20240040000400_c20240040000416.nc b/tests/test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000200_e20240040000400_c20240040000416.nc
deleted file mode 100644
index 432795b..0000000
--- a/tests/test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000200_e20240040000400_c20240040000416.nc
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4ac544e1dc2325c11b8a11098a0604a3903887b585b6ce9a22989e8f91aebe71
-size 315196
diff --git a/tests/test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000400_e20240040001000_c20240040001016.nc b/tests/test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000400_e20240040001000_c20240040001016.nc
deleted file mode 100644
index e528bf4..0000000
--- a/tests/test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000400_e20240040001000_c20240040001016.nc
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e917d350318a0f8e9e780c1ec906a4ec025505ada5c7d6d0f6bfe5f435b17128
-size 384828
diff --git a/tests/test_functionality.py b/tests/test_functionality.py
index 6e20663..240125c 100644
--- a/tests/test_functionality.py
+++ b/tests/test_functionality.py
@@ -163,12 +163,12 @@ def test_g18():
     assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G18_T52_20221110190100.nc', 1))
 
 def test_g19_sim():
-    inputs = [os.path.join(TESTDIR, "test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000000_e20240040000200_c20240040000219.nc"),
-              os.path.join(TESTDIR, "test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000400_e20240040001000_c20240040001016.nc"),
-              os.path.join(TESTDIR, "test-inputs/goes19_sim/OR_GLM-L2-LCFA_G19_s20240040000200_e20240040000400_c20240040000416.nc")]
+    inputs = [os.path.join(TESTDIR, "test-inputs/goes19-prelim/OR_GLM-L2-LCFA_G19_s20243230309000_e20243230309200_c20243230309216.nc"),
+              os.path.join(TESTDIR, "test-inputs/goes19-prelim/OR_GLM-L2-LCFA_G19_s20243230309200_e20243230309400_c20243230309415.nc"),
+              os.path.join(TESTDIR, "test-inputs/goes19-prelim/OR_GLM-L2-LCFA_G19_s20243230309400_e20243230310000_c20243230310015.nc")]
     for i in inputs:
         if not os.path.exists(i):
-            warnings.warn(UserWarning("GOES-19 sim test files are not available in this environment. GOES-19 functionality has not been tested."))
+            warnings.warn(UserWarning("GOES-19 prelim test files are not available in this environment. GOES-19 functionality has not been tested."))
             return
 
     completed_process = subprocess.run(['python',
-- 
GitLab


From 0a1964ecd2aa60abbf577a2c6ea193a89cd686d6 Mon Sep 17 00:00:00 2001
From: Levi Pfantz <lpfantz@oolong.ssec.wisc.edu>
Date: Mon, 23 Dec 2024 21:28:12 +0000
Subject: [PATCH 11/20] Add in plumbing so that --version actually works

---
 gridded_glm/libexec/gridded_glm/_minute_gridder.py | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/gridded_glm/libexec/gridded_glm/_minute_gridder.py b/gridded_glm/libexec/gridded_glm/_minute_gridder.py
index 295d64c..aaa5226 100644
--- a/gridded_glm/libexec/gridded_glm/_minute_gridder.py
+++ b/gridded_glm/libexec/gridded_glm/_minute_gridder.py
@@ -55,6 +55,7 @@ from glmtools.grid.make_grids import grid_GLM_flashes
 from glmtools.io.glm import parse_glm_filename
 from lmatools.grid.fixed import get_GOESR_grid, get_GOESR_coordsys
 from statistics import create_statistics_file
+from __version__ import __version__
 
 import logging
 log = logging.getLogger(__name__)
@@ -82,6 +83,7 @@ def create_parser():
     parser = argparse.ArgumentParser(prog=prog,
                                      description=parse_desc, 
                                      formatter_class=argparse.RawTextHelpFormatter) # RawTextHelpFormatter preserves our newlines in the example usage message
+    parser.add_argument('--version', action='version', version=__version__, help="show program's version identifier and exit")
     parser.add_argument('-v', '--verbose', dest='verbosity', action="count", default=0,
                         help="each occurrence increases verbosity 1 level through ERROR-WARNING-INFO-DEBUG\n"
                              "(default: ERROR)")
-- 
GitLab


From 353bfd4f6d531f12af30a802a124acb7b00fe0da Mon Sep 17 00:00:00 2001
From: Levi Pfantz <lpfantz@oolong.ssec.wisc.edu>
Date: Mon, 30 Dec 2024 21:04:59 +0000
Subject: [PATCH 12/20] Fix versioning (hopefully for the last time) and switch
 from MambaForge (deprecated) to MiniForge

---
 buildbucket/Dockerfile                         |  4 ++--
 buildbucket/package.sh                         | 14 ++++++++++++--
 gridded_glm/libexec/gridded_glm/__version__.py |  3 ---
 3 files changed, 14 insertions(+), 7 deletions(-)
 delete mode 100644 gridded_glm/libexec/gridded_glm/__version__.py

diff --git a/buildbucket/Dockerfile b/buildbucket/Dockerfile
index f483811..4c1ed0f 100644
--- a/buildbucket/Dockerfile
+++ b/buildbucket/Dockerfile
@@ -12,8 +12,8 @@ RUN dnf -y install which git findutils xz && dnf clean all
 
 # Download and install miniforge
 # https://github.com/conda-forge/miniforge#miniforge
-RUN curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-$(uname)-$(uname -m).sh" && \
-    /bin/bash Mambaforge-$(uname)-$(uname -m).sh -b -p $HOME/miniforge && \
+RUN curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh" && \
+    /bin/bash Miniforge3-$(uname)-$(uname -m).sh -b -p $HOME/miniforge && \
     ln -s $HOME/miniforge/etc/profile.d/conda.sh /etc/profile.d/conda.sh && \
     echo ". $HOME/miniforge/etc/profile.d/conda.sh" >> ~/.bashrc && \
     echo "conda activate base" >> ~/.bashrc
diff --git a/buildbucket/package.sh b/buildbucket/package.sh
index 829e5ff..2b7bd54 100755
--- a/buildbucket/package.sh
+++ b/buildbucket/package.sh
@@ -18,12 +18,18 @@
 
 if [ $# -eq 1 ]; then
     version=$1
+    unzipped_dir_version=$version
+elif [ $# -eq 2 ]; then
+    version=$1
+    unzipped_dir_version=$2
 else
-    echo "Usage: package.sh vX.Y.Z"
+    echo "Usage: package.sh vX.Y.Z (optionally) vA.B"
+    echo "X.Y.Z is the full package version while vA.B is what the directory will use for a version name when untarred."
     exit 1
 fi
 
 pkg_name=cspp-geo-gridded-glm-${version}
+major_minor_pkg_name=cspp-geo-gridded-glm-${unzipped_dir_version}
 DIST=${DIST:-"/dock"}
 GGLM_REPOS=${GGLM_REPOS:-"https://gitlab.ssec.wisc.edu/cspp_geo/cspp-geo-gridded-glm.git"}
 GGLM_REF=${GGLM_REF:-"master"}
@@ -77,6 +83,9 @@ cp $GGLM_DIR/PACKAGE_README.md ./README.md
 cp $GGLM_DIR/PACKAGE_LICENSE ./LICENSE
 cp $GGLM_DIR/bin/* ./bin/
 cp -r $GGLM_DIR/libexec/* ./libexec/
+echo "# __version__.py" > ./libexec/gridded_glm/__version__.py
+echo ""  >> ./libexec/gridded_glm/__version__.py
+echo "__version__ = \"$version\"" >> ./libexec/gridded_glm/__version__.py
 # Untar the tarball so we can put things where we want
 tar -xz -C ./libexec/python_runtime -f ../${conda_tb}
 # write a conda environment.yml to the python_runtime/ folder so that we can more easily audit what's included in our runtime between builds
@@ -99,6 +108,7 @@ if [ $MINIFY_TARBALL -ne 0 ]; then
 fi
 
 # Create tarball of package directory
-XZ_DEFAULTS="--threads=$(nproc)" tar -Jc --owner 0 --group 0 -f ${pkg_name}.tar.xz ${pkg_name}
+mv $pkg_name $major_minor_pkg_name
+XZ_DEFAULTS="--threads=$(nproc)" tar -Jc --owner 0 --group 0 -f ${pkg_name}.tar.xz ${major_minor_pkg_name}
 mv ${pkg_name}.tar.xz ${DIST}/
 make_dockerfile
diff --git a/gridded_glm/libexec/gridded_glm/__version__.py b/gridded_glm/libexec/gridded_glm/__version__.py
deleted file mode 100644
index 0761f1b..0000000
--- a/gridded_glm/libexec/gridded_glm/__version__.py
+++ /dev/null
@@ -1,3 +0,0 @@
-# __version__.py
-
-__version__ = "1.1.0"
-- 
GitLab


From a491e0f2f2922893aeecccf4f6f96e803aa824a8 Mon Sep 17 00:00:00 2001
From: Levi Pfantz <lpfantz@wisc.edu>
Date: Thu, 2 Jan 2025 22:50:35 +0000
Subject: [PATCH 13/20] Include Eric B.'s Commit to fix issue 55

---
 buildbucket/buildbucket_environment.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/buildbucket/buildbucket_environment.yaml b/buildbucket/buildbucket_environment.yaml
index 79992b1..2052a3c 100644
--- a/buildbucket/buildbucket_environment.yaml
+++ b/buildbucket/buildbucket_environment.yaml
@@ -27,5 +27,5 @@ dependencies:
   - pip:
     - git+https://github.com/deeplycloudy/lmatools.git@392eff5f15735be7b7f5ccc20d2835a617000117
     - git+https://github.com/deeplycloudy/stormdrain.git@3620621267215bf84b1f5199b4f395b430f309fc
-    - git+https://github.com/nbearson/glmtools.git@c61202aaaabd91b96cb98b5af7c59f05486cf4c6
+    - git+https://github.com/levidpc/glmtools.git@cafb6f8da0e72d5cad3fd2d7bb54ff790251d8832
     - git+https://github.com/pytroll/satpy.git@v0.36.0
-- 
GitLab


From b230096dc5bfcfdd889f8235b805905b4b0993fa Mon Sep 17 00:00:00 2001
From: Levi Pfantz <lpfantz@wisc.edu>
Date: Thu, 2 Jan 2025 22:56:28 +0000
Subject: [PATCH 14/20] Fix CI

---
 .gitlab-ci.yml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 88505a3..c761d8d 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -15,7 +15,7 @@ stages:
 
 create the Gridded GLM buildbucket:
   stage: buildbucket_build
-  image: docker:20.10
+  image: docker:27.4.1
   tags:
     - docker
   services:
@@ -27,7 +27,7 @@ create the Gridded GLM buildbucket:
 
 create the Gridded GLM package:
   stage: gridded_glm_build
-  image: docker:20.10
+  image: docker:27.4.1
   tags:
     - docker
   services:
@@ -55,7 +55,7 @@ run tests:
 
 push our images with version tags:
   stage: release
-  image: docker:20.10
+  image: docker:27.4.1
   tags:
     - docker
   services:
-- 
GitLab


From fb392923f9edd45df65cd2e42675ab48979cdcd1 Mon Sep 17 00:00:00 2001
From: Levi Pfantz <lpfantz@wisc.edu>
Date: Thu, 2 Jan 2025 23:13:44 +0000
Subject: [PATCH 15/20] Fix commit Hash

---
 buildbucket/buildbucket_environment.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/buildbucket/buildbucket_environment.yaml b/buildbucket/buildbucket_environment.yaml
index 2052a3c..ce045c1 100644
--- a/buildbucket/buildbucket_environment.yaml
+++ b/buildbucket/buildbucket_environment.yaml
@@ -27,5 +27,5 @@ dependencies:
   - pip:
     - git+https://github.com/deeplycloudy/lmatools.git@392eff5f15735be7b7f5ccc20d2835a617000117
     - git+https://github.com/deeplycloudy/stormdrain.git@3620621267215bf84b1f5199b4f395b430f309fc
-    - git+https://github.com/levidpc/glmtools.git@cafb6f8da0e72d5cad3fd2d7bb54ff790251d8832
+    - git+https://github.com/levidpc/glmtools.git@afb6f8da0e72d5cad3fd2d7bb54ff790251d8832
     - git+https://github.com/pytroll/satpy.git@v0.36.0
-- 
GitLab


From db52055d11e8d49011e51f0ad147df40f5beb6a0 Mon Sep 17 00:00:00 2001
From: Levi Pfantz <lpfantz@grb3.ssec.wisc.edu>
Date: Fri, 3 Jan 2025 19:57:31 +0000
Subject: [PATCH 16/20] Fix G19 testcase, add issue 55 test case, add Readme

---
 tests/README.md                               | 10 +++++
 ...1456000_e20243121456200_c20243121456209.nc |  3 ++
 ...1456200_e20243121456400_c20243121456410.nc |  3 ++
 ...1456400_e20243121457000_c20243121457009.nc |  3 ++
 tests/test_functionality.py                   | 41 +++++++++----------
 tests/test_regressions.py                     | 11 +++++
 6 files changed, 50 insertions(+), 21 deletions(-)
 create mode 100644 tests/README.md
 create mode 100644 tests/test-inputs/issue-55-input/OR_GLM-L2-LCFA_G18_s20243121456000_e20243121456200_c20243121456209.nc
 create mode 100644 tests/test-inputs/issue-55-input/OR_GLM-L2-LCFA_G18_s20243121456200_e20243121456400_c20243121456410.nc
 create mode 100644 tests/test-inputs/issue-55-input/OR_GLM-L2-LCFA_G18_s20243121456400_e20243121457000_c20243121457009.nc

diff --git a/tests/README.md b/tests/README.md
new file mode 100644
index 0000000..2d222e9
--- /dev/null
+++ b/tests/README.md
@@ -0,0 +1,10 @@
+# Testing
+
+Testing this is a little complicated.
+
+1. Build and extract a build from the hash you want to test
+2. Clone the repo at the same hash (makle sure you get git lfs files)
+3. Overwrite the repo's `gridded_glm/libexec/gridded_glm` directory with the build's `libexec/gridded_glm` directory
+4. Inside the build call `source libexec/env.sh`
+5. Run `pip isntall pytest -y`
+6. Navigate to the repo's `tests` directory and run `pytest`
\ No newline at end of file
diff --git a/tests/test-inputs/issue-55-input/OR_GLM-L2-LCFA_G18_s20243121456000_e20243121456200_c20243121456209.nc b/tests/test-inputs/issue-55-input/OR_GLM-L2-LCFA_G18_s20243121456000_e20243121456200_c20243121456209.nc
new file mode 100644
index 0000000..3f7b68f
--- /dev/null
+++ b/tests/test-inputs/issue-55-input/OR_GLM-L2-LCFA_G18_s20243121456000_e20243121456200_c20243121456209.nc
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d1037be6c9c10b4c9f46a2657ee3c39ba1f5a29dbe863f88cb22bfd91f98362a
+size 68540
diff --git a/tests/test-inputs/issue-55-input/OR_GLM-L2-LCFA_G18_s20243121456200_e20243121456400_c20243121456410.nc b/tests/test-inputs/issue-55-input/OR_GLM-L2-LCFA_G18_s20243121456200_e20243121456400_c20243121456410.nc
new file mode 100644
index 0000000..f4321fe
--- /dev/null
+++ b/tests/test-inputs/issue-55-input/OR_GLM-L2-LCFA_G18_s20243121456200_e20243121456400_c20243121456410.nc
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4ed9eefb12904e72a30c4d80443b6287130c4c26c3efd87aacb1d620cf37cb85
+size 137324
diff --git a/tests/test-inputs/issue-55-input/OR_GLM-L2-LCFA_G18_s20243121456400_e20243121457000_c20243121457009.nc b/tests/test-inputs/issue-55-input/OR_GLM-L2-LCFA_G18_s20243121456400_e20243121457000_c20243121457009.nc
new file mode 100644
index 0000000..f8d8629
--- /dev/null
+++ b/tests/test-inputs/issue-55-input/OR_GLM-L2-LCFA_G18_s20243121456400_e20243121457000_c20243121457009.nc
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3ac1e2454b0f22f9ef19a3c38e4d9b03371388cf4ac612ef27b3337b6f614646
+size 137324
diff --git a/tests/test_functionality.py b/tests/test_functionality.py
index 240125c..3fad9f4 100644
--- a/tests/test_functionality.py
+++ b/tests/test_functionality.py
@@ -180,26 +180,25 @@ def test_g19_sim():
                                         ])
     assert completed_process.returncode == 0
     assert(check_fileglob("CG_GLM-L2-GLMF-M3_G19_*.nc", 1))
-    assert(check_fileglob("CSPP_OR_GLM-L2-GLMF-M3_G19_T*.nc", 18))
-
-    assert(check_fileglob("CG_GLM-L2-GLMF-M3_G19_s20240040000000_e20240040001000_c*.nc", 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T10_20240104000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T11_20240104000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T14_20240104000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T17_20240104000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T27_20240104000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T30_20240104000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T33_20240104000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T34_20240104000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T35_20240104000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T38_20240104000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T39_20240104000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T40_20240104000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T41_20240104000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T46_20240104000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T47_20240104000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T52_20240104000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T53_20240104000100.nc', 1))
-    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T58_20240104000100.nc', 1))
+    assert(check_fileglob("CSPP_OR_GLM-L2-GLMF-M3_G19_T*.nc", 15))
+
+    assert(check_fileglob("CG_GLM-L2-GLMF-M3_G19_s20243230309000_e20243230310000_c*.nc", 1))
+    assert(check_fileglob("CSPP_OR_GLM-L2-GLMF-M3_G19_statistics_e20241118031000.nc", 1))
+    
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T15_20241118031000.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T17_20241118031000.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T21_20241118031000.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T22_20241118031000.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T23_20241118031000.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T28_20241118031000.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T29_20241118031000.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T34_20241118031000.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T35_20241118031000.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T36_20241118031000.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T40_20241118031000.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T41_20241118031000.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T47_20241118031000.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T48_20241118031000.nc', 1))
+    assert(check_fileglob('CSPP_OR_GLM-L2-GLMF-M3_G19_T53_20241118031000.nc', 1))
 
 
diff --git a/tests/test_regressions.py b/tests/test_regressions.py
index 14c0725..e1f554f 100644
--- a/tests/test_regressions.py
+++ b/tests/test_regressions.py
@@ -267,3 +267,14 @@ def test_issue38_no_valid_data():
     assert(ds.variables['total_energy'][:].all() is np.ma.masked)
     assert(ds.variables['total_energy'][:].all() is np.ma.masked)
     assert((ds.variables['DQF'][:] == 0).all())
+    
+# Check still succeeds when there is no lighting to be gridded
+def test_issue58_no_lightning():
+    completed_process = subprocess.run(['python',
+                                        MINUTE_GRIDDER,
+                                        os.path.join(TESTDIR, "test-inputs/issue-55-input/OR_GLM-L2-LCFA_G18_s20243121456000_e20243121456200_c20243121456209.nc"),
+                                        os.path.join(TESTDIR, "test-inputs/issue-55-input/OR_GLM-L2-LCFA_G18_s20243121456400_e20243121457000_c20243121457009.nc"),
+                                        os.path.join(TESTDIR, "test-inputs/issue-55-input/OR_GLM-L2-LCFA_G18_s20243121456200_e20243121456400_c20243121456410.nc"),
+                                        ])
+    assert completed_process.returncode == 0
+    assert(check_fileglob("CG_GLM-L2-GLMF-M3_G18_s20243121456000_e20243121457000_c*.nc", 1))
-- 
GitLab


From c843713e4f79c569485c47560dbd77bf443a7cc6 Mon Sep 17 00:00:00 2001
From: Levi Pfantz <lpfantz@wisc.edu>
Date: Wed, 8 Jan 2025 14:42:16 -0600
Subject: [PATCH 17/20] Update to take orbital_slot position from input files

---
 .../libexec/gridded_glm/_minute_gridder.py    | 23 +++++++++++--------
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/gridded_glm/libexec/gridded_glm/_minute_gridder.py b/gridded_glm/libexec/gridded_glm/_minute_gridder.py
index aaa5226..38879f1 100644
--- a/gridded_glm/libexec/gridded_glm/_minute_gridder.py
+++ b/gridded_glm/libexec/gridded_glm/_minute_gridder.py
@@ -66,7 +66,7 @@ warnings.filterwarnings("ignore")
 import dask
 dask.config.set(num_workers=1)
 
-GOES_SAT_POSITIONS={'G16': 'east', 'G17': 'west', 'G18': 'west', 'G19': 'east',}
+GOES_SUPPORTED_SATS=['G16', 'G17', 'G18', 'G19']
 
 
 def create_parser():
@@ -121,16 +121,19 @@ def get_resolution(args):
     return resln
 
 
-# if provided "auto" position, we determine the sensor from the filename
-def get_goes_position(filenames):
+def get_goes_position(files):
+  
+    position=""
+#Check that all files are the same position
+    for file in files:
+        new_position = Dataset(file, 'r').getncattr('orbital_slot')
+        if not position:
+            position=new_position
+        if not new_position == position:
+            raise ValueError("Input files contain a mix of positions. Check them and try again.")
+    position=position.split('-')[1]  
+    return position.lower()
 
-#Check that all files are the same sat
-    for key, value in GOES_SAT_POSITIONS.items():
-        if all(f"_{key}_" in f for f in filenames):
-            return value
-
-    # 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))
-- 
GitLab


From e21347b4494ee3cd7ad78bf9d4c528896751e806 Mon Sep 17 00:00:00 2001
From: Levi Pfantz <lpfantz@wisc.edu>
Date: Wed, 8 Jan 2025 21:05:26 +0000
Subject: [PATCH 18/20] Update to allow using data with GOES-Test as orbital
 slot

---
 gridded_glm/libexec/gridded_glm/_minute_gridder.py | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/gridded_glm/libexec/gridded_glm/_minute_gridder.py b/gridded_glm/libexec/gridded_glm/_minute_gridder.py
index 38879f1..d47e6bc 100644
--- a/gridded_glm/libexec/gridded_glm/_minute_gridder.py
+++ b/gridded_glm/libexec/gridded_glm/_minute_gridder.py
@@ -372,6 +372,8 @@ def grid_minute(minute, args):
             sector_id = "GOES_EAST"
         elif sector == "west":
             sector_id = "GOES_WEST"
+        elif sector == "test":
+            sector_id = "GOES_TEST"
         else:
             raise RuntimeError("could not determine sector_id")
 
-- 
GitLab


From 70b4768b7652b81f44db5590442318168c790eeb Mon Sep 17 00:00:00 2001
From: Levi Pfantz <lpfantz@wisc.edu>
Date: Thu, 9 Jan 2025 11:37:00 -0600
Subject: [PATCH 19/20] Fix error / help messages

---
 gridded_glm/libexec/gridded_glm/_minute_gridder.py | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/gridded_glm/libexec/gridded_glm/_minute_gridder.py b/gridded_glm/libexec/gridded_glm/_minute_gridder.py
index d47e6bc..0cbeca4 100644
--- a/gridded_glm/libexec/gridded_glm/_minute_gridder.py
+++ b/gridded_glm/libexec/gridded_glm/_minute_gridder.py
@@ -88,8 +88,7 @@ def create_parser():
                         help="each occurrence increases verbosity 1 level through ERROR-WARNING-INFO-DEBUG\n"
                              "(default: ERROR)")
     parser.add_argument('-l', '--log', dest="log_fn", default=None,
-                        help="specify a log filename.\n"
-                             "(default: print to screen).")
+                        help="Redirect screen output to the specified log file. (default: off).")
     parser.add_argument('-o', '--output-dir', metavar='OUTPUT_DIR',
                         default=os.getcwd(), help="output directory (default: use current directory)")
     parser.add_argument('--goes-sector', default="full", choices=['full', 'conus', 'meso', 'meso1', 'meso2'],
@@ -103,9 +102,7 @@ def create_parser():
     parser.add_argument('--ctr-lon', metavar='LONGITUDE',
                         type=partial(bounded_float, inclusive_min=-180, inclusive_max=180), help='center longitude (required for meso)')
     parser.add_argument('-r', "--realtime", default=False, action='store_true',
-                        help="enable 'realtime' mode, where we expect only one input file,\n"
-                        "find the surrounding trio, and automatically determine if a full minute\n"
-                        "of data is available (default: off)")
+                        help="Enable 'realtime' mode, where we expect onlyone input file and find\nother needed files if available. Can be called on each arriving\ninput file, but will only produce output for the 40s file, and\nonly if all 3 files for that minute are available. (default: off)")
     parser.add_argument('--system-environment-prefix', default="CG",
                         help="set the system environment prefix for the output grids (default: CG)")
     parser.add_argument('--system-environment-prefix-tiles', default="CSPP_OR",
@@ -450,14 +447,14 @@ def main():
         globstring = "{}_{}_{}_s{}*".format(glminfo[0], glminfo[1], glminfo[2], glminfo[3].strftime("%Y%j%H%M"))
         fileglob = glob(os.path.join(os.path.dirname(args.filenames[0]), globstring))
         if len(fileglob) != 3:
-            log.error("There are not yet three GLM files from this minute. This may be expected. Exiting.")
+            log.info("There are not yet three GLM files from this minute. This may be expected. Exiting.")
             # we expect people using realtime mode to run this on every file, so a return code of 0 is expected on a file before the end of the minute
             return 0
 
         # this allows a user to use realtime mode to process a large directory of GLM without
         # creating the same output file multiple times
         if sorted(fileglob)[-1] != args.filenames[0]:
-            log.error("This is not the last file from this minute. Exiting.")
+            log.info("This is not the last file from this minute. Exiting.")
             return 0
 
         args.filenames = fileglob
-- 
GitLab


From 61c6ba03da01f6f9f4e89c27bb139a76267bf4d0 Mon Sep 17 00:00:00 2001
From: Levi Pfantz <lpfantz@wisc.edu>
Date: Thu, 9 Jan 2025 15:39:31 -0600
Subject: [PATCH 20/20] Update copyright notices

---
 gridded_glm/bin/cspp-geo-gglm.sh                   | 2 +-
 gridded_glm/libexec/env.sh                         | 2 +-
 gridded_glm/libexec/gridded_glm/_minute_gridder.py | 2 +-
 gridded_glm/libexec/gridded_glm/statistics.py      | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/gridded_glm/bin/cspp-geo-gglm.sh b/gridded_glm/bin/cspp-geo-gglm.sh
index 7320b71..69e8d5a 100755
--- a/gridded_glm/bin/cspp-geo-gglm.sh
+++ b/gridded_glm/bin/cspp-geo-gglm.sh
@@ -1,6 +1,6 @@
 #!/usr/bin/env bash
 # encoding: utf-8
-# Copyright (C) 2019-2021 Space Science and Engineering Center (SSEC),
+# Copyright (C) 2019-2025 Space Science and Engineering Center (SSEC),
 #  University of Wisconsin-Madison.
 #
 #     This program is free software: you can redistribute it and/or modify
diff --git a/gridded_glm/libexec/env.sh b/gridded_glm/libexec/env.sh
index 6ee195b..755f761 100644
--- a/gridded_glm/libexec/env.sh
+++ b/gridded_glm/libexec/env.sh
@@ -1,6 +1,6 @@
 #!/usr/bin/env bash
 # encoding: utf-8
-# Copyright (C) 2019 Space Science and Engineering Center (SSEC),
+# Copyright (C) 2019-2025 Space Science and Engineering Center (SSEC),
 #  University of Wisconsin-Madison.
 #
 #     This program is free software: you can redistribute it and/or modify
diff --git a/gridded_glm/libexec/gridded_glm/_minute_gridder.py b/gridded_glm/libexec/gridded_glm/_minute_gridder.py
index 0cbeca4..b8e23dd 100644
--- a/gridded_glm/libexec/gridded_glm/_minute_gridder.py
+++ b/gridded_glm/libexec/gridded_glm/_minute_gridder.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 """
-Copyright (C) 2020-2021 Space Science and Engineering Center (SSEC), University of Wisconsin-Madison.
+Copyright (C) 2020-2025 Space Science and Engineering Center (SSEC), University of Wisconsin-Madison.
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
diff --git a/gridded_glm/libexec/gridded_glm/statistics.py b/gridded_glm/libexec/gridded_glm/statistics.py
index 2deea5d..12128d5 100644
--- a/gridded_glm/libexec/gridded_glm/statistics.py
+++ b/gridded_glm/libexec/gridded_glm/statistics.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 """
-Copyright (C) 2022 Space Science and Engineering Center (SSEC), University of Wisconsin-Madison.
+Copyright (C) 2022-2025 Space Science and Engineering Center (SSEC), University of Wisconsin-Madison.
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
-- 
GitLab