Source code for pycif.plugins.obsoperators.standard.transforms.utils.default_subsimus

import numpy as np
from itertools import groupby
import datetime
import pandas as pd


[docs] def default_subsimus(all_transforms, mapper): """Initialize sub-simulations for each transform for which sub-simulations are not already defined. By default, the sub-simulations of a given transform are deduced from the shape of the "input_dates" of each component/tracer in the outputs. """ # Loop over every transform for transform in all_transforms.attributes: transf = getattr(all_transforms, transform) transf_mapper = mapper[transform] # If sub-simulations already initialized, do nothing if "subsimus" in transf_mapper: continue # Makes sure that all objects are datetime objects # To do so, turns them into pd.Timestamps then back to datetime output_subsimus = set([ pd.Timestamp(d).to_pydatetime() for trid in transf_mapper["outputs"] for d in list(transf_mapper["outputs"][trid].get( "input_dates", {}).keys()) ]) transf_mapper["subsimus"] = { ddi: { "inputs": { trid_out: {ddi: []} for trid_out in transf_mapper["inputs"] if ddi in transf_mapper["inputs"][trid_out].get( "input_dates", {}) }, "outputs": { trid_out: {ddi: []} for trid_out in transf_mapper["outputs"] if ddi in transf_mapper["outputs"][trid_out].get( "input_dates", {}) } } for ddi in output_subsimus }