Source code for pycif.plugins.obsoperators.standard.transforms.utils.propagate_parameters
import copy
[docs]
def propagate_parameters(all_transforms, mapper):
parameters2propagate = {
"force_loadin": False,
"loadin_perturb_full_vertical": True,
"surface_level": 0
}
# Propagates backwards to precursors
for transform in all_transforms.attributes[::-1]:
transf = getattr(all_transforms, transform)
transf_mapper = mapper[transform]
# Propagate outputs to inputs
for trid in transf_mapper["inputs"]:
if trid in transf_mapper["outputs"]:
for p2prop, default_val in parameters2propagate.items():
parameter_out = \
transf_mapper["outputs"][trid].get(p2prop, default_val)
if parameter_out != default_val:
transf_mapper["inputs"][trid][p2prop] = parameter_out
# Loop over precursors to propagate info to them
precursors = transf_mapper["precursors"]
for trid in precursors:
for p2prop, default_val in parameters2propagate.items():
parameter_ref = \
transf_mapper["inputs"][trid].get(p2prop, default_val)
for tr in precursors[trid]:
if parameter_ref != default_val:
mapper[tr]["outputs"][trid][p2prop] = \
parameter_ref