Source code for pycif.plugins.transforms.system.loadfromoutputs.adjoint

from logging import info
import copy
import pandas as pd
import numpy as np
from .....utils.datastores.empty import init_empty


[docs] def adjoint( transform, inout_datastore, controlvect, obsvect, mapper, di, df, mode, runsubdir, workdir, onlyinit=False, do_simu=True, check_transforms=False, **kwargs ): datastore = inout_datastore["outputs"] trids_in = list(mapper["inputs"].keys()) trids_in_ref = list(set( [(trid[0], trid[1].split("__sample#")[0]) for trid in trids_in])) for trid in trids_in_ref: input_type = trid[0] # Batch dump if any trids2dump = [ tr for tr in trids_in if tr[1].split("__sample#")[0] == trid[1] ] # If input parameter is '', # dumps all available parameters of this component if trid[1] == "": trids2dump = [t for t in datastore if t[0] == trid[0]] # Initialize empty datastore if empty data2dump = {} for t in trids2dump: data2dump[t] = {} for di in datastore.get(t, {}): if len(datastore[t][di]) == 0: data2dump[t][di] = init_empty() continue data2dump[t][di] = datastore[t][di] # Store to input datastore inout_datastore["inputs"].update(data2dump) # Dump to model inputs transform.outputs2native_adj( data2dump, input_type, di, df, runsubdir, mode, onlyinit=onlyinit, do_simu=do_simu, check_transforms=check_transforms ) # Hard save input inout_datastore["inputs"] = copy.deepcopy(inout_datastore["inputs"])