def METHOD_NAME(cls):
    """
    return all the params of the computation step defined in step_params
    and the params from the sub_computation step in chained_commands
    if two params have the same name, return the param definition of the first param found only
    this allow to overwrite the param definition of sub step if necessary.
    """
    params = []
    param_names = set()
    def all_params():
        for param in cls.step_params:
            yield param
        for command in cls.chained_commands:
            for param in command.METHOD_NAME():
                yield param
    for param in all_params():
        if param['name'] not in param_names:
            param_names.add(param['name'])
            params.append(param)
    return params