qens.sampling

MCMC over a registered forward model.

qens.sampling.run_mcmc(data_bins, sigma_res, p_map, model='anisotropic_rotor', cfg=None, verbose=True, **extras)[source]

Run MCMC over a registered forward model.

Parameters:
  • data_bins (list) – From :func:’qens.fitting.build_data_bins’.

  • sigma_res (float | array | list[array]) – Resolution: scalar Gaussian σ in meV, single measured kernel, or one kernel per Q-bin.

  • p_map (array) – MAP starting point (from :func:’qens.fitting.find_map’).

  • model (str) – Registered forward-model name.

  • cfg (Config)

  • verbose (bool)

  • extras – Forwarded to the model’s ‘’predict’’ callable.

Return type:

ndarray

Returns:

samples (ndarray of shape ‘’(n_kept, n_dim)’’)

qens.sampling.summarise(arr, label='', verbose=True)[source]

Median and 95% credible interval for a single parameter chain.

Return type:

tuple[float, float, float]

Parameters:
qens.sampling.summarise_samples(samples, model='anisotropic_rotor', derived=None, verbose=True)[source]

Per-parameter median + 95% CI for a registered model.

Parameters:
  • samples (ndarray, shape (n, n_dim))

  • model (str) – Registered model name (used to look up parameter names).

  • derived (dict, optional) – ‘’{label: callable(samples) -> 1-D array}’’ — extra derived quantities to summarise (e.g. ‘’D_s / D_t’’ for anisotropic).

  • verbose (bool)

Return type:

dict[str, tuple[float, float, float]]

Returns:

dict[label, (median, lo95, hi95)]

qens.sampling.gelman_rubin(chains)[source]

Gelman-Rubin :math:’hat R’ for a list of 1-D chains.

‘’< 1.01’’ is well-converged; ‘’> 1.1’’ indicates problems.

Return type:

float

Parameters:

chains (list[ndarray])