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

"""This transform aggregates tracers from a given component into a single output
tracer.
This is basically done by summing up tracers.

"""


from .forward import forward
from .adjoint import adjoint

_name = "families"
_fullname = "Tracer families or addition"

input_arguments = {
    "component": {
        "doc": "Component of the input tracers to be aggregated",
        "default": None,
        "accepted": str
    },
    "component_out": {
        "doc": "Component of the output tracer, if different from the input component.",
        "default": None,
        "optional": True,
        "accepted": str
    },
    "parameters_in": {
        "doc": "List of tracers to be aggregated.",
        "default": None,
        "accepted": list
    },
    "parameter_out": {
        "doc": "Name of the output tracer.",
        "default": None,
        "optional": True,
        "accepted": str
    }
}


[docs]def ini_mapper(transform, general_mapper={}, **kwargs): parameters_in = transform.parameters_in parameter_out = transform.parameter_out component = transform.component component_out = getattr(transform, "component_out", component) trid_out = (component_out, parameter_out) loc_outputs = { trid_out: {"force_loadin": True, "force_dump": False, "tracer_from_previous": True} } loc_inputs = { (component, param): {"force_loadin": True, "force_dump": False} for param in parameters_in } mapper = {"inputs": loc_inputs, "outputs": loc_outputs} mapper["outputs2inputs"] = { trid_out: [(component, param) for param in parameters_in] } return mapper