setup preferred-value regularization

    Parameters
    ----------
    pst : pyemu.Pst
        the control file instance
    parbounds : bool
        flag to weight the prior information equations according
        to parameter bound width - approx the KL transform. Default
        is True
    par_groups : list
        parameter groups to build PI equations for.  If None, all
        adjustable parameters are used. Default is None

    reset : bool
        flag to reset the prior_information attribute of the pst
        instance.  Default is True

    Example
    -------
    ``>>>import pyemu``

    ``>>>pst = pyemu.Pst("pest.pst")``

    ``>>>pyemu.helpers.zero_order_tikhonov(pst)``

def zero_order_tikhonov(pst, parbounds=True,par_groups=None,
                        reset=True):
    """setup preferred-value regularization

    Parameters
    ----------
    pst : pyemu.Pst
        the control file instance
    parbounds : bool
        flag to weight the prior information equations according
        to parameter bound width - approx the KL transform. Default
        is True
    par_groups : list
        parameter groups to build PI equations for.  If None, all
        adjustable parameters are used. Default is None

    reset : bool
        flag to reset the prior_information attribute of the pst
        instance.  Default is True

    Example
    -------
    ``>>>import pyemu``

    ``>>>pst = pyemu.Pst("pest.pst")``

    ``>>>pyemu.helpers.zero_order_tikhonov(pst)``

    """

    if par_groups is None:
        par_groups = pst.par_groups

    pilbl, obgnme, weight, equation = [], [], [], []
    for idx, row in pst.parameter_data.iterrows():
        pt = row["partrans"].lower()
        try:
            pt = pt.decode()
        except:
            pass
        if pt not in ["tied", "fixed"] and\
            row["pargp"] in par_groups:
            pilbl.append(row["parnme"])
            weight.append(1.0)
            ogp_name = "regul"+row["pargp"]
            obgnme.append(ogp_name[:12])
            parnme = row["parnme"]
            parval1 = row["parval1"]
            if pt == "log":
                parnme = "log(" + parnme + ")"
                parval1 = np.log10(parval1)
            eq = "1.0 * " + parnme + " ={0:15.6E}".format(parval1)
            equation.append(eq)

    if reset:
        pst.prior_information = pd.DataFrame({"pilbl": pilbl,
                                               "equation": equation,
                                               "obgnme": obgnme,
                                               "weight": weight})
    else:
        pi = pd.DataFrame({"pilbl": pilbl,
                          "equation": equation,
                          "obgnme": obgnme,
                          "weight": weight})
        pst.prior_information = pst.prior_information.append(pi)
    if parbounds:
        regweight_from_parbound(pst)
    if pst.control_data.pestmode == "estimation":
        pst.control_data.pestmode = "regularization"