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

from logging import warning


[docs] def initiate_default_attributes( all_transforms, mapper, transform_id ): """Fill in default values for attributes not explicitly set on a transform. Runs once per transform (subsequent calls are no-ops, tracked via the ``default_attributes_initialized`` flag). For every input trid, sets ``recombine_periods`` (and, if a ``domain`` is already set, ``is_lbc``, ``is_top`` and ``force_loadin``) to their default values when absent, each paired with an ``{attribute}_default`` marker flag. For every output trid, similarly defaults ``recombine_periods``, ``is_lbc`` and ``is_top``, and additionally marks ``all_successors_initialized`` as True when the trid has no successor (or only itself as successor). Args: all_transforms: Namespace holding all registered transform instances, unused directly here but kept for interface consistency with related propagation functions. mapper: Dictionary mapping each transform id to its inputs/outputs/ successors metadata; ``mapper[transform_id]`` is mutated in place. transform_id: Id of the transform whose default attributes are being initialized. """ # Loop over transforms transf_mapper = mapper[transform_id] successors = transf_mapper["successors"] # Skip if already initialized if transf_mapper.get("default_attributes_initialized", False): return for trid in transf_mapper["inputs"]: if not "recombine_periods" in transf_mapper["inputs"][trid]: transf_mapper["inputs"][trid]["recombine_periods"] = True transf_mapper["inputs"][trid]["recombine_periods_default"] = True if "domain" not in transf_mapper["inputs"][trid]: continue if not "is_lbc" in transf_mapper["inputs"][trid]: transf_mapper["inputs"][trid]["is_lbc"] = False transf_mapper["inputs"][trid]["is_lbc_default"] = True if not "is_top" in transf_mapper["inputs"][trid]: transf_mapper["inputs"][trid]["is_top"] = False transf_mapper["inputs"][trid]["is_top_default"] = True if not "force_loadin" in transf_mapper["inputs"][trid]: transf_mapper["inputs"][trid]["force_loadin"] = False transf_mapper["inputs"][trid]["force_loadin_default"] = True for trid in transf_mapper["outputs"]: trid_outputs = transf_mapper["outputs"][trid] if not "recombine_periods" in trid_outputs: trid_outputs["recombine_periods"] = True trid_outputs["recombine_periods_default"] = True # Special treatment for all_successors_initialized if not "all_successors_initialized" in trid_outputs: # If no successor for a given trid, consider initialized if successors[trid] == [] or successors[trid] == [transform_id]: trid_outputs["all_successors_initialized"] = True # Deal with domain attributes if not "domain" in trid_outputs: continue if not "is_lbc" in trid_outputs: trid_outputs["is_lbc"] = False trid_outputs["is_lbc_default"] = True if not "is_top" in trid_outputs: trid_outputs["is_top"] = False trid_outputs["is_top_default"] = True # Keep in memory that default attributes where already initialized transf_mapper["default_attributes_initialized"] = True