Source code for pycif.plugins.datastreams.backgrounds.carboscope_bg.read
import xarray as xr
import numpy as np
from netCDF4 import Dataset
import datetime
import os
import pandas as pd
from logging import debug
from .....utils.datastores.empty import init_empty
[docs]
def read(
self,
name,
varnames,
dates,
files,
interpol_flx=False,
tracer=None,
model=None,
**kwargs
):
"""Get fluxes from pre-computed fluxes and load them into a pyCIF
variables
Args:
self: the fluxes Plugin
name: the name of the component
tracdir, tracfile: flux directory and file format
dates: list of dates to extract
interpol_flx (bool): if True, interpolates fluxes at time t from
values of surrounding available files
"""
trcr_bc = []
out_dates = []
ref_file = ""
ds_all = [init_empty()]
for ff in files:
debug(f"Reading file {ff} for Carboscope background")
data = pd.read_csv(
ff, header=None, sep=r"\s+", usecols=[1, 2, 3, 4, 5, 6, 12]
)
data["date"] = pd.to_datetime(
data[[1, 2, 3, 4]].astype(str).agg('/'.join, axis=1),
format="%Y/%m/%d/%H")
mask = ((min(np.array(dates)[:, 0]) <= data["date"])
& (data["date"] <= max(np.array(dates)[:, 0])))
data = data.loc[mask]
# Deal with station name if needed
station = os.path.basename(ff)[2:5]
if hasattr(self, "station_name_dict"):
station = self.dict_station_name.get(
station.upper(), station).upper()
ds = init_empty()
ds[("metadata", "date")] = data["date"]
ds[("metadata", "station")] = station
ds[("metadata", "network")] = "Carboscope"
ds[("metadata", "parameter")] = name
ds[("metadata", "duration")] = 1
ds[("maindata", "obserror")] = 0
ds[("maindata", "spec")] = \
data[12] * getattr(tracer, "numscale", 1)
ds_all.append(ds)
ds_all = pd.concat(ds_all, axis=0)
return ds_all