Source code for pycif.plugins.datastreams.fluxes.CarbonMonitor.fetch
import datetime
import glob
import os
import pandas as pd
import numpy as np
from .....utils import path
from logging import debug
[docs]
def fetch(ref_dir, ref_file, input_interval, target_dir,
tracer=None, component=None, **kwargs):
datemin = input_interval[0] - datetime.timedelta(days=input_interval[0].day - 1)
list_period_dates = \
pd.date_range(datemin, input_interval[1],
freq=tracer.file_freq)
list_dates = {}
list_files = {}
monthmax = input_interval[1].month
daymax = input_interval[1].day
hourmax = input_interval[1].hour
for dd in list_period_dates:
file = dd.strftime("{}/{}".format(ref_dir, ref_file))
if dd.month == monthmax:
dim = input_interval[1].day - 1
hid = hourmax
else:
dim = (datetime.date(dd.year, dd.month + 1, 1)
- datetime.date(dd.year, dd.month, 1)).days
hid = 0
file_hours = pd.date_range(
dd, dd + datetime.timedelta(hours=dim * 24 + hid), freq="1H")
list_dates[dd] = [[hh, hh + datetime.timedelta(hours=1)]
for hh in file_hours]
# list_dates[dd] = [[file_hours]]
list_files[dd] = len(file_hours) * [file]
# Fetching
if os.path.isfile(file):
target_file = "{}/{}".format(target_dir, os.path.basename(file))
path.link(file, target_file)
debug(
"Fetched files and dates as follows:\n"
"Dates: {\n" +
"\n".join(["\n".join([" {}:".format(ddi)]
+ [" {}".format(dd)
for dd in list_dates[ddi]])
for ddi in list_dates])
+ "\n}\n\n" +
"Files: {\n" +
"\n".join(["\n".join([" {}:".format(ddi)]
+ [" {}".format(dd)
for dd in list_files[ddi]])
for ddi in list_files])
+ "\n}"
)
return list_files, list_dates