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