zeus icon indicating copy to clipboard operation
zeus copied to clipboard

[ENH] support for named parameters

Open tmcclintock opened this issue 3 years ago • 1 comments

In emcee I added a PR for having named parameters (proposal, and the PR). This allows for dict-like access to the parameters rather than positional references. Example:

x = np.random.randn(100)  # 100 samples ~ N(0, 1)

def lnpdf(self, params: Dict[str, float]) -> np.float64:
    # A gaussian PDF with named parameters
    mean = params["mean"]
    var = params["var"]
    if var <= 0:
        return -np.inf
    return (
        -0.5 * ((mean - self.x) ** 2 / var + np.log(2 * np.pi * var)).sum()
    )

The main benefit is this allows one to build hierarchical models without having to remember "oh the first parameter for the N-th submodel is at position XYZ" (a common source of bugs).

Since zeus has the same API, I'd be happy to add it here too.

tmcclintock avatar Jun 23 '21 18:06 tmcclintock

That looks great! Really useful feature. Please go ahead submitting a PR.

minaskar avatar Jun 23 '21 19:06 minaskar