From e96921d6175403de0e88d585e015154f91d49ee2 Mon Sep 17 00:00:00 2001
From: Paolo Veglio <paolo.veglio@ssec.wisc.edu>
Date: Thu, 22 Aug 2024 20:02:18 +0000
Subject: [PATCH] added ancillary data to output in debug mode

---
 mvcm/main.py         | 13 +++++++++
 mvcm/write_output.py | 68 +++++++++++++++++++++++++++++++++++++++-----
 2 files changed, 74 insertions(+), 7 deletions(-)

diff --git a/mvcm/main.py b/mvcm/main.py
index 127107b..a939816 100644
--- a/mvcm/main.py
+++ b/mvcm/main.py
@@ -558,6 +558,7 @@ def main(
         "M15-M16": {"dims": ("x", "y"), "data": viirs_data["M15-M16"].values},
         "Ocean_Day": {"dims": ("x", "y"), "data": viirs_data.Ocean_Day.values},
         "Land_Day": {"dims": ("x", "y"), "data": viirs_data.Land_Day.values},
+        "Land_Night": {"dims": ("x", "y"), "data": viirs_data.Land_Night.values},
         "Land_Day_Desert": {"dims": ("x", "y"), "data": viirs_data.Land_Day_Desert.values},
         "Land_Day_Desert_Coast": {
             "dims": ("x", "y"),
@@ -594,6 +595,18 @@ def main(
     debug_data = {
         "bits": {"dims": ("x", "y", "testbits"), "data": all_bits},
         "bands": {"dims": ("x", "y", "nbands"), "data": all_bands},
+        "ecosystem": {"dims": ("x", "y"), "data": viirs_data.ecosystem.values},
+        "ndvi": {"dims": ("x", "y"), "data": viirs_data.ndvi.values},
+        "sst": {"dims": ("x", "y"), "data": viirs_data.sst.values},
+        "tpw": {"dims": ("x", "y"), "data": viirs_data.geos_tpw.values},
+        "snow_fraction": {"dims": ("x", "y"), "data": viirs_data.geos_snow_fraction.values},
+        "ice_fraction": {"dims": ("x", "y"), "data": viirs_data.geos_ice_fraction.values},
+        "ocean_fraction": {"dims": ("x", "y"), "data": viirs_data.geos_ocean_fraction.values},
+        "land_ice_fraction": {"dims": ("x", "y"), "data": viirs_data.geos_land_ice_fraction.values},
+        "surface_temperature": {
+            "dims": ("x", "y"),
+            "data": viirs_data.geos_surface_temperature.values,
+        },
     }
 
     if debug is True:
diff --git a/mvcm/write_output.py b/mvcm/write_output.py
index b74ddbf..05dab58 100644
--- a/mvcm/write_output.py
+++ b/mvcm/write_output.py
@@ -171,13 +171,51 @@ def save_output(data: xr.Dataset, attrs: dict, fname: str, compression: int, deb
     }
 
     if debug is True:
-        geophysical_data["Bits"] = {
-            "dims": ("number_of_lines", "number_of_pixels", "bits"),
-            "data": data.bits.values,
-        }
-        geophysical_data["Bands"] = {
-            "dims": ("number_of_lines", "number_of_pixels", "nbands"),
-            "data": data.bands.values,
+        debug_data = {
+            "bits": {
+                "dims": ("number_of_lines", "number_of_pixels", "bits"),
+                "data": data.bits.values,
+            },
+            "bands": {
+                "dims": ("number_of_lines", "number_of_pixels", "nbands"),
+                "data": data.bands.values,
+            },
+            "sst": {
+                "dims": ("number_of_lines", "number_of_pixels"),
+                "data": data.sst.values,
+            },
+            "ecosystem": {
+                "dims": ("number_of_lines", "number_of_pixels"),
+                "data": data.ecosystem.values,
+            },
+            "ndvi": {
+                "dims": ("number_of_lines", "number_of_pixels"),
+                "data": data.ndvi.values,
+            },
+            "tpw": {
+                "dims": ("number_of_lines", "number_of_pixels"),
+                "data": data.tpw.values,
+            },
+            "snow_fraction": {
+                "dims": ("number_of_lines", "number_of_pixels"),
+                "data": data.snow_fraction.values,
+            },
+            "ice_fraction": {
+                "dims": ("number_of_lines", "number_of_pixels"),
+                "data": data.ice_fraction.values,
+            },
+            "ocean_fraction": {
+                "dims": ("number_of_lines", "number_of_pixels"),
+                "data": data.ocean_fraction.values,
+            },
+            "land_ice_fraction": {
+                "dims": ("number_of_lines", "number_of_pixels"),
+                "data": data.land_ice_fraction.values,
+            },
+            "surface_temperature": {
+                "dims": ("number_of_lines", "number_of_pixels"),
+                "data": data.surface_temperature.values,
+            },
         }
 
     logger.debug("geophysical_data dictionary created successfully")
@@ -214,6 +252,10 @@ def save_output(data: xr.Dataset, attrs: dict, fname: str, compression: int, deb
     out_scanline = xr.Dataset.from_dict(scan_line_attributes)
     out_geolocation = xr.Dataset.from_dict(geolocation_data)
     out_geophysical = xr.Dataset.from_dict(geophysical_data)
+    out_debug = xr.Dataset()
+    if debug is True:
+        out_debug = xr.Dataset.from_dict(debug_data)
+
     logger.debug("dictionaries correctly converted to xarray datasets")
 
     comp = {"zlib": True, "complevel": compression}
@@ -229,6 +271,13 @@ def save_output(data: xr.Dataset, attrs: dict, fname: str, compression: int, deb
             out_geophysical[var].encoding.update(comp)
     if type(out_geophysical) is xr.DataArray:
         out_geophysical.encoding.update(comp)
+
+    if debug is True:
+        if type(out_debug) is xr.Dataset:
+            for var in list(out_debug.data_vars):
+                out_debug[var].encoding.update(comp)
+        if type(out_debug) is xr.DataArray:
+            out_debug.encoding.update(comp)
     logger.debug("compression level set for all variables")
 
     out_ds = xr.Dataset()
@@ -250,4 +299,9 @@ def save_output(data: xr.Dataset, attrs: dict, fname: str, compression: int, deb
 
     out_geophysical.to_netcdf(fname, mode="a", group="geophysical_data")
     logger.debug("geophysical_data written to netcdf file")
+
+    if debug is True:
+        out_debug.to_netcdf(fname, mode="a", group="debug_data")
+        logger.debug("debug_data written to netcdf file")
+
     logger.info("Output written to netcdf file successfully")
-- 
GitLab