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