def METHOD_NAME(self, input, frame_id=-1):
    self.input_dep = self.reset_dep()
    # execute each operator according to toposort order
    results = input
    for i, op_name in enumerate(self.order[1:]):
        op = self.op_name2op[op_name]
        op.set_frame(frame_id)
        last_ops = self.last_ops_dict[op_name]
        input_keys = op.get_input_keys()
        output_keys = list(results[0].keys())
        input = op.filter_input(results, input_keys)
        last_op_output = op(input)
        if op.type() != 'OUTPUT':
            op.check_output(last_op_output, op_name)
            self.update_res(results, last_op_output, input_keys)
        else:
            results = last_op_output
    return results