Source code for pycif.plugins.transforms.system.dump2inputs.forward
from ....models.satwetch4.io.native2inputs import native2inputs as satwet_native2inputs
[docs]
def forward(
transform,
inout_datastore,
controlvect,
obsvect,
mapper,
di,
df,
mode,
runsubdir,
workdir,
do_simu=True,
onlyinit=False,
check_transforms=False,
**kwargs
):
datastore = inout_datastore["inputs"]
trids_in = list(mapper["inputs"].keys())
# Retrieve reference configuration if batch sampling
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]
trids2dump = [
tr for tr in trids_in
if tr[1].split("__sample#")[0] == trid[1]
]
# Create new data to extract
data2dump = {
tr: {"data": datastore.get(tr, {di: {}}),
**mapper["inputs"][tr]}
for tr in trids2dump
}
# If the model does not need to compute a simulation,
# just skip this step
transform.native2inputs(
data2dump, input_type, di, df, runsubdir, mode, onlyinit, do_simu,
check_transforms=check_transforms
)
# Dumping data from the datastore
for t in data2dump:
if t not in datastore:
continue
if "spec" in datastore[t][di]:
del datastore[t][di]["spec"]
if "incr" in datastore[t]:
del datastore[t][di]["incr"]
# Update outputs
for t in trids2dump:
inout_datastore["outputs"][t].update(data2dump[t]["data"])