Source code for pycif.plugins.transforms.basic.families.adjoint

import copy


[docs] def adjoint( transform, inout_datastore, controlvect, obsvect, mapper, di, df, mode, runsubdir, workdir, onlyinit=False, **kwargs ): trid_out = list(mapper["outputs"].keys())[0] xmod = inout_datastore["outputs"] # If sparse data, different treatment if mapper["outputs"][trid_out].get("sparse_data", False): for trid in mapper["inputs"]: inout_datastore["inputs"][trid][di] = \ copy.deepcopy(xmod[trid_out][di]) inout_datastore["inputs"][trid][di].loc[ :, ("metadata", "parameter") ] = trid[1].lower() return if onlyinit: return for trid in mapper["inputs"]: inout_datastore["inputs"][trid][di] = \ {k: xmod[trid_out][k] for k in xmod[trid_out]} if not onlyinit: inout_datastore["inputs"][trid][di]["adj_out"] = \ copy.deepcopy(xmod[trid_out][di]["adj_out"])