Source code for pycif.plugins.datastreams.fields.chimere_icbc.fetch
import datetime
import os
import numpy as np
import pandas as pd
from .....utils import path
[docs]
def fetch(ref_dir, ref_file, input_interval, target_dir, tracer=None, component=None):
# Two cases: initial conditions or LBC
if getattr(component, "orig_name", "") == "inicond":
datei = input_interval[0]
filei = datei.strftime("{}/{}".format(ref_dir, ref_file))
list_files = {datei: [filei]}
list_dates = {datei: [[datei, datei]]}
# Fetching
target_file = "{}/{}".format(target_dir, os.path.basename(filei))
path.link(filei, target_file)
else:
list_period_dates = pd.date_range(
input_interval[0], input_interval[1], freq=tracer.file_freq
)
list_dates = {}
list_files = {}
for dd in list_period_dates:
file = dd.strftime("{}/{}".format(ref_dir, ref_file))
if os.path.isfile(file):
file_hours = pd.date_range(
dd, dd + pd.to_timedelta(tracer.file_freq), freq="1h"
)
list_dates[dd] = [
[hh, hh + datetime.timedelta(hours=1)] for hh in file_hours
]
list_files[dd] = len(file_hours) * [file]
# Fetching
target_file = "{}/{}".format(target_dir, os.path.basename(file))
path.link(file, target_file)
return list_files, list_dates