Source code for icenet.data.processors.osi

import datetime as dt
import os

from icenet.data.cli import process_args, process_date_args
from icenet.data.process import IceNetPreProcessor
from icenet.data.sic.mask import Masks
from icenet.data.processors.utils import sic_interpolate
"""

"""


[docs] class IceNetOSIPreProcessor(IceNetPreProcessor): """ :param missing_dates: """ def __init__(self, *args, missing_dates: object = None, **kwargs): super().__init__(*args, identifier="osisaf", **kwargs) missing_dates_path = os.path.join(self._source_data, "siconca", "missing_days.csv") missing_dates = [] if missing_dates is None else missing_dates assert type(missing_dates) is list with open(missing_dates_path, "r") as fh: missing_dates += [ dt.date(*[int(s) for s in line.strip().split(",")]) for line in fh.readlines() ] self.missing_dates = list(set(missing_dates))
[docs] def pre_normalisation(self, var_name: str, da: object): """ :param var_name: :param da: :return: """ if var_name != "siconca": raise RuntimeError("OSISAF SIC implementation should be dealing " "with siconca, ") else: masks = Masks(north=self.north, south=self.south) return sic_interpolate(da, masks)
[docs] def main(): args = process_args() dates = process_date_args(args) osi = IceNetOSIPreProcessor(args.abs, args.anom, args.name, dates["train"], dates["val"], dates["test"], linear_trends=args.trends, linear_trend_steps=args.trend_lead, north=args.hemisphere == "north", parallel_opens=args.parallel_opens, ref_procdir=args.ref, south=args.hemisphere == "south") osi.init_source_data(lag_days=args.lag,) osi.process()