def METHOD_NAME(path):
    """
    Read an regression input file at `path` on disk.
    """
    global observables, setups, initialSpecies, casetitle, tol
    full_path = os.path.abspath(os.path.expandvars(path))
    try:
        f = open(full_path)
    except IOError:
        logging.error('The input file "{0}" could not be opened.'.format(full_path))
        logging.info('Check that the file exists and that you have read access.')
        raise
    logging.info('Reading input file "{0}"...'.format(full_path))
    logging.info(f.read())
    f.seek(0)  # return to beginning of file
    global_context = {'__builtins__': None}
    local_context = {
        '__builtins__': None,
        'True': True,
        'False': False,
        'observable': observable,
        'SMILES': SMILES,
        'species': species,
        'adjacencyList': adjacencyList,
        'reactorSetups': reactorSetups,
        'options': options,
    }
    try:
        exec(f.read(), global_context, local_context)
    except (NameError, TypeError, SyntaxError) as e:
        logging.error('The input file "{0}" was invalid:'.format(full_path))
        logging.exception(e)
        raise
    finally:
        f.close()
    # convert keys of the initial mole fraction dictionaries from labels into Species objects.
    imfs = setups[3]
    new_imfs = []
    for imf in imfs:
        new_dict = convert(imf, initialSpecies)
        new_imfs.append(new_dict)
    setups[3] = new_imfs
    return casetitle, observables, setups, tol