Source code for pycif.plugins.datastreams.fluxes.GCP_1x1.write
import datetime
import pandas as pd
[docs]
def write(self, name, flx_file, flx, mode="a", metadata=None, **kwargs):
"""Write flux to GCP template files.
Args:
self (Fluxes): the Fluxes plugin
flx_file (str): the file where to write fluxes
flx (xarray.Dataset): fluxes data to write
"""
ds = flx.squeeze("lev").to_dataset(name='fch4')
# Add longitudes and latitudes
domain = metadata["domain"]
ds = ds.assign({
"longitude": (["longitude"], domain.zlon[0]),
"latitude": (["latitude"], domain.zlat[:, 0])
})
# -- Write variable attributes
ds['fch4'].attrs['units'] = 'kgCH4/m2/s'
# -- Write dataset attributes
ds.attrs['Time period'] = f"{pd.to_datetime([flx.time.min().values]).strftime('%Y-%m-%d')[0]} to {pd.to_datetime([flx.time.max().values]).strftime('%Y-%m-%d')[0]}"
if hasattr(self, "contact_person"):
ds.attrs['Contact'] = f"{self.contact_person} ({self.contact_mail})"
ds.attrs['created'] = datetime.datetime.now().strftime(
f'by {self.contact_person} on %B %d, %Y')
if hasattr(self, "References"):
ds.attrs['References'] = self.References
if hasattr(self, "dump_longname"):
ds.attrs['Title'] = self.dump_longname
ds['fch4'].attrs['title'] = \
f'Total CH4 flux from {self.dump_longname}'
ds.to_netcdf(flx_file)