Source code for geoips.plugins.modules.output_formatters.histogram_csv

# # # This source code is subject to the license referenced at
# # # https://github.com/NRLMMD-GEOIPS.

"""Produce histogram from the given dataset with specified bin size."""
import logging
import numpy

LOG = logging.getLogger(__name__)

interface = "output_formatters"
family = "xarray_data"
name = "histogram_csv"


[docs]def call( xarray_obj, product_names, output_fnames, min_val=None, max_val=None, num_bins=501 ): """Produce histogram. Parameters ---------- xarray_obj: xarray Dataset Returns ------- xarray.Dataset Resulting histogram """ import xarray prod_xarray = xarray.Dataset() from geoips.geoips_utils import copy_standard_metadata from geoips.filenames.base_paths import make_dirs from os.path import dirname copy_standard_metadata(xarray_obj, prod_xarray) for product_name in product_names: prod_xarray[product_name] = xarray_obj[product_name] if product_name == "latitude" or product_name == "longitude": continue xda = xarray_obj[product_name] hist = numpy.histogram(xda, numpy.linspace(min_val, max_val, num_bins + 1)) prod_xarray[f"{product_name}_histogram"] = xarray.DataArray( hist[0], dims=("dim_2") ) prod_xarray["bins"] = xarray.DataArray(hist[1], dims=("dim_3")) for ncdf_fname in output_fnames: make_dirs(dirname(ncdf_fname)) with open(ncdf_fname, "w") as fobj: prod = prod_xarray[f"{product_name}_histogram"].to_numpy() fobj.write(",".join([str(val) for val in list(prod)])) LOG.interactive(f"Writing {ncdf_fname}") # from geoips.plugins.modules.output_formatters.netcdf_xarray import ( # write_xarray_netcdf, # ) # for ncdf_fname in output_fnames: # write_xarray_netcdf(prod_xarray, ncdf_fname) return output_fnames