def execute_step(self, step):
        """
        Execute the named step. Also control the multiplicity of input and output entities

        :param step: step to prepare input for
        :param kwargs: input to be prepared
        :return: dict of output by entity type
        """
        inputs = self.get_inputs(step.ins)
        outputs = defaultdict(list)
        for output in step.run(inputs):
            for k, v in output.items():
                outputs[k].extend(v)
        for output in step.finalise():
            for k, v in output.items():
                outputs[k].extend(v)
        self.unresolved_steps.remove(step)
        return outputs
Execute the named step. Also control the multiplicity of input and output entities

        :param step: step to prepare input for
        :param kwargs: input to be prepared
        :return: dict of output by entity type