Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 15 additions & 4 deletions tinyDA/link.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import numpy as np

class Link:

"""The Link class holds all relevant information about an MCMC sample, i.e.
Expand Down Expand Up @@ -27,22 +29,31 @@ def __init__(self, parameters, prior, model_output, likelihood, qoi=None):
----------
parameters : numpy.ndarray
The parameters used to generate the sample
prior : float
prior : float or 1-element array-like
The prior log-density
model_output : numpy.ndarray
The model output
likelihood : float
likelihood : float or 1-element array-like
The log-likelihood of the data, given the parameters.
qoi : optional
A Quantity of Interest. Default is None
"""

# internalise parameters.
self.parameters = parameters
self.prior = prior
self.prior = _to_scalar(prior, "prior")
self.model_output = model_output
self.likelihood = likelihood
self.likelihood = _to_scalar(likelihood, "likelihood")
self.qoi = qoi

# compute the (unnormalised) posterior.
self.posterior = self.prior + self.likelihood

def _to_scalar(x, name):
arr = np.asarray(x)
if arr.ndim > 0 and arr.size != 1:
raise ValueError(
f"{name} must be a scalar or length-1 array, got shape {arr.shape}"
)
return arr.item()