<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def setup_mflist_budget_obs(list_filename,flx_filename="flux.dat", vol_filename="vol.dat",start_datetime="1-1'1970",prefix='', save_setup_file=False):
 """ setup observations of budget volume and flux from modflow list file. writes an instruction file and also a _setup_.csv to use when constructing a pest control file Parameters list_filename : str modflow list file flx_filename : str output filename that will contain the budget flux observations. Default is "flux.dat" vol_filename : str) output filename that will contain the budget volume observations. Default is "vol.dat" start_datetime : str an str that can be parsed into a pandas.TimeStamp. used to give budget observations meaningful names prefix : str a prefix to add to the water budget observations. Useful if processing more than one list file as part of the forward run process. Default is ''. save_setup_file : (boolean) a flag to save _setup_<list_filename>.csv file that contains useful control file information Returns ------- df : pandas.DataFrame a dataframe with information for constructing a control file. If INSCHEK fails to run, reutrns None Note ---- This function uses INSCHEK to get observation values; the observation values are the values of the list file list_filename. If INSCHEK fails to run, the obseravtion values are set to 1.0E+10 the instruction files are named <flux_file>.ins and <vol_file>.ins, respectively It is recommended to use the default values for flux_file and vol_file. """




    flx,vol = apply_mflist_budget_obs(list_filename,flx_filename,vol_filename,
                                      start_datetime)
    _write_mflist_ins(flx_filename+".ins",flx,prefix+"flx")
    _write_mflist_ins(vol_filename+".ins",vol, prefix+"vol")

    #run("inschek {0}.ins {0}".format(flx_filename))
    #run("inschek {0}.ins {0}".format(vol_filename))

    try:
        #os.system("inschek {0}.ins {0}".format(flx_filename))
        #os.system("inschek {0}.ins {0}".format(vol_filename))
        run("inschek {0}.ins {0}".format(flx_filename))
        run("inschek {0}.ins {0}".format(vol_filename))

    except:
        print("error running inschek")
        return None
    flx_obf = flx_filename+".obf"
    vol_obf = vol_filename + ".obf"
    if os.path.exists(flx_obf) and os.path.exists(vol_obf):
        df = pd.read_csv(flx_obf,delim_whitespace=True,header=None,names=["obsnme","obsval"])
        df.loc[:,"obgnme"] = df.obsnme.apply(lambda x: x[:-9])
        df2 = pd.read_csv(vol_obf, delim_whitespace=True, header=None, names=["obsnme", "obsval"])
        df2.loc[:, "obgnme"] = df2.obsnme.apply(lambda x: x[:-9])
        df = df.append(df2)
        if save_setup_file:
            df.to_csv("_setup_"+os.path.split(list_filename)[-1]+'.csv',index=False)
        df.index = df.obsnme
        return df