Source code for stglib.aqd.wvscdf2nc

from ..core import utils
from . import aqdutils, cdf2nc


[docs]def cdf_to_nc(cdf_filename, atmpres=False, writefile=True): """ Load a raw .cdf file and generate a processed .nc file """ # Load raw .cdf data ds = aqdutils.load_cdf(cdf_filename, atmpres=atmpres) # Clip data to in/out water times or via good_ens ds = utils.clip_ds(ds, wvs=True) # Create water_depth variables # ds = utils.create_water_depth(ds) ds = utils.create_nominal_instrument_depth(ds) # Create depth variable depending on orientation ds, T, T_orig = aqdutils.set_orientation(ds, ds["TransMatrix"].values) ds = aqdutils.apply_wave_coord_output(ds, T, T_orig) # Make bin_depth variable ds = aqdutils.make_bin_depth(ds, waves=True) ds = aqdutils.ds_swap_dims(ds) # Rename DataArrays within Dataset for EPIC compliance # and append depth coord to velocities and amplitudes ds = aqdutils.ds_rename(ds, waves=True) # Drop unused variables ds = cdf2nc.ds_drop(ds) # add EPIC and CMG attributes, set _FillValue ds = aqdutils.ds_add_attrs(ds, waves=True) # Add minimum and maximum attributes ds = utils.add_min_max(ds) # Add DELTA_T for EPIC compliance ds = aqdutils.add_delta_t(ds, waves=True) # Add start_time and stop_time attrs ds = utils.add_start_stop_time(ds) # Add history showing file used ds = utils.add_history(ds) ds = utils.add_standard_names(ds) # Cast vars as float32 # for var in ds.variables: # if (var not in ds.coords) and ("time" not in var): # # cast as float32 # ds = utils.set_var_dtype(ds, var) # Ensure no _FillValue is assigned to coordinates ds = utils.ds_coord_no_fillvalue(ds) if writefile: nc_filename = ds.attrs["filename"] + "wvb-cal.nc" ds.to_netcdf(nc_filename, encoding={"time": {"dtype": "i4"}}) utils.check_compliance(nc_filename, conventions=ds.attrs["Conventions"]) print("Done writing netCDF file", nc_filename) return ds