generate a generic pst instance.  This can used to later fill in
    the Pst parts programatically.

    Parameters
    ----------
    par_names : (list)
        parameter names to setup
    obs_names : (list)
        observation names to setup

    Returns
    -------
    new_pst : pyemu.Pst

def generic_pst(par_names=["par1"],obs_names=["obs1"],addreg=False):
    """generate a generic pst instance.  This can used to later fill in
    the Pst parts programatically.

    Parameters
    ----------
    par_names : (list)
        parameter names to setup
    obs_names : (list)
        observation names to setup

    Returns
    -------
    new_pst : pyemu.Pst

    """
    if not isinstance(par_names,list):
        par_names = list(par_names)
    if not isinstance(obs_names,list):
        obs_names = list(obs_names)
    new_pst = pyemu.Pst("pest.pst",load=False)
    pargp_data = populate_dataframe(["pargp"], new_pst.pargp_fieldnames,
                                    new_pst.pargp_defaults, new_pst.pargp_dtype)
    new_pst.parameter_groups = pargp_data

    par_data = populate_dataframe(par_names,new_pst.par_fieldnames,
                                  new_pst.par_defaults,new_pst.par_dtype)
    par_data.loc[:,"parnme"] = par_names
    par_data.index = par_names
    par_data.sort_index(inplace=True)
    new_pst.parameter_data = par_data
    obs_data = populate_dataframe(obs_names,new_pst.obs_fieldnames,
                                  new_pst.obs_defaults,new_pst.obs_dtype)
    obs_data.loc[:,"obsnme"] = obs_names
    obs_data.index = obs_names
    obs_data.sort_index(inplace=True)
    new_pst.observation_data = obs_data

    new_pst.template_files = ["file.tpl"]
    new_pst.input_files = ["file.in"]
    new_pst.instruction_files = ["file.ins"]
    new_pst.output_files = ["file.out"]
    new_pst.model_command = ["model.bat"]

    new_pst.prior_information = new_pst.null_prior

    #new_pst.other_lines = ["* singular value decomposition\n","1\n",
    #                       "{0:d} {1:15.6E}\n".format(new_pst.npar_adj,1.0E-6),
    #                       "1 1 1\n"]
    if addreg:
        new_pst.zero_order_tikhonov()

    return new_pst