def build_mpi_call_str(task_specs,common_options,format_opts=None,runner='mpiexec'):
    """Summary
    
    Args:
        task_specs (list): List of strings, each containing an MPI task description, eg
                           e.g: ['-n {nrunners} python3 awrams.module.example {pickle_file}']
        common_options (list): List of MPI options that are expanded to for all tasks
        format_opts (dict, optional): Dictionary for formatting options within task_specs
        runner (str, optional): Name of MPI executable
    
    Returns:
        str: Full runnable MPI call string
    """
    if format_opts is None:
        format_opts = {}
    call_str = runner + ' '
    for t_str in task_specs:
        call_str = call_str + ''.join([o + ' ' for o in common_options]) + t_str + ' : '
    return call_str.format(**format_opts)