asterion.inference#

The inference module contains a handy Inference class which wraps numpyro inference methods to facilitate the Bayesian workflow.

Module Contents#

class Inference(model, *, n, nu, nu_err=None, seed=0)[source]#

Perform inference on a given model.

Parameters
  • model (Model) – Model which predicts the asteroseismic mode frequencies.

  • nu (array_like) – Asteroseismic mode frequencies.

  • nu_err (array_like, optional) – Observational uncertainty on the asteroseismic mode frequencies.

  • seed (int) – Seed for pseudo-random number generation.

Example

from asterion import Model, Inference

n = [9, 10, 11, 12, 13]
nu = [111.1, 122.2, 133.3, 144.4, 155.5]
nu_err = 0.01
model = Model(...)  # Construct the model here
infer = Inference(model, n=n, nu=nu, nu_err=nu_err, seed=42)
# Sample from prior predictive
infer.prior_predictive(num_samples=2000)
# Sample from posterior
infer.sample()
# Sample from posterior predictive
infer.posterior_predictive()
# Get data from inference
data = infer.get_data()
# Save data
data.to_netcdf('inference_data.nc')
model#

Model with which to perform inference.

Type

Model

nu#

Observed mode frequencies.

Type

numpy.ndarray

nu_err#

Uncertainty on observed mode frequencies.

Type

numpy.ndarray, optional

samples#

Posterior samples.

Type

dict, optional

weighted_samples#

Posterior weighted samples.

Type

dict, optional

sample_stats#

Posterior sample statistics.

Type

dict, optional

prior_predictive_samples#

Prior predictive samples.

Type

dict, optional

predictive_samples#

Posterior predictive samples.

Type

dict, optional

sample_method#

Posterior sampling method.

Type

str, optional

find_map(self, num_steps=10000, handlers=None, reparam='auto', svi_kwargs={})[source]#

EXPERIMENTAL: find MAP.

Parameters
  • num_steps (int) – [description]. Defaults to 10000.

  • handlers (list, optional) – [description]. Defaults to None.

  • reparam (str, or numpyro.handlers.reparam) – [description]. Defaults to ‘auto’.

  • svi_kwargs (dict) – [description]. Defaults to {}.

get_circ_var_names(self)[source]#

[summary]

Returns

Circular variable names in the model.

Return type

list

get_data(self)[source]#

Get inference data.

Returns

Inference data.

Return type

arviz.InferenceData

get_trace(self, pred=False)[source]#

[summary]

Parameters

pred (bool) – Whether to trace the predictive model or not. Default is False.

Returns

Model trace.

Return type

OrderedDict

init_mcmc(self, model, num_warmup=1000, num_samples=1000, num_chains=1, sampler='NUTS', sampler_kwargs={}, **kwargs)[source]#

Initialises the MCMC sampler.

Parameters
  • model (callable) – [desc]

  • num_warmup (int) – [description]. Defaults to 1000.

  • num_samples (int) – [description]. Defaults to 1000.

  • num_chains (int) – [description]. Defaults to 1.

  • sampler (str, or numpyro.infer.mcmc.MCMCKernel) – Choose one of [‘NUTS’], or pass a numpyro mcmc kernel.

  • sampler_kwargs (dict) – Keyword arguments to pass to the chosen sampler.

  • **kwargs – Keyword arguments to pass to mcmc instance.

init_nested(self, model, num_live_points=50, max_samples=50000, sampler='multi_ellipsoid', **kwargs)[source]#

[summary]

Parameters
  • model (Model) – [description]

  • num_live_points (int) – [description]. Defaults to 50.

  • max_samples (int) – [description]. Defaults to 50000.

  • sampler (str) – [description]. Defaults to “multi_ellipsoid”.

  • **kwargs – Keyword arguments to pass to nested sampler instance.

Returns

[description]

Return type

numpyro.contrib.nested_sampling.NestedSampler

map_predictive(self, **kwargs)[source]#

EXPERIMENTAL: Get predictive from MAP.

Parameters
  • model_args (tuple) – [description]. Defaults to ().

  • model_kwargs (dict) – [description]. Defaults to {}.

Returns

[description]

Return type

xarray.Dataset

posterior_predictive(self, **kwargs)[source]#

[summary]

Parameters

**kwargs – Keyword arguments to pass to Predictive instance.

predictive(self, n, nu=None, nu_err=None, n_pred=None, **kwargs)[source]#

[summary]

Parameters
  • model_args (tuple) – Positional arguments to pass to the model callable.

  • model_kwargs (dict) – Keyword arguments to pass to the model callable.

  • **kwargs – Kwargs to pass to Predictive.

Returns

[description]

Return type

dict

prior_predictive(self, num_samples=1000, **kwargs)[source]#

[summary]

Parameters
  • num_samples (int) – Number of samples to take from the prior.

  • **kwargs – Keyword arguments to pass to Predictive instance.

run_mcmc(self, model, num_warmup=1000, num_samples=1000, num_chains=1, sampler='NUTS', sampler_kwargs={}, extra_fields=(), init_params=None, **kwargs)[source]#

Runs MCMC for a given set of model arguments.

Parameters
  • model (callable) – [desc]

  • num_warmup (int) – [description]. Defaults to 1000.

  • num_samples (int) – [description]. Defaults to 1000.

  • num_chains (int) – [description]. Defaults to 1.

  • sampler (str) – Choose one of [‘NUTS’]

  • sampler_kwargs (dict) – Keyword arguments to pass to the chosen sampler.

  • extra_fields (tuple) – Extra fields to report in sample_stats. Defaults to ().

  • init_params (dict) – Initial parameter values prior to sampling. Defaults to None.

  • **kwargs – Keyword arguments to pass to mcmc instance.

Returns

[description]

Return type

tuple

run_nested(self, model, num_live_points=50, num_samples=1000, max_samples=50000, sampler='multi_ellipsoid', **kwargs)[source]#

[summary]

Parameters
  • model (Model) – [description]

  • num_live_points (int) – [description]. Defaults to 100.

  • num_samples (int) – [description]. Defaults to 1000.

  • max_samples (int) – [description]. Defaults to 100000.

  • sampler (str) – [description]. Defaults to “multi_ellipsoid”.

  • **kwargs – Keyword arguments to pass to nested sampler instance.

sample(self, num_samples=1000, method='nested', handlers=None, reparam='auto', **kwargs)[source]#

[summary]

Parameters
  • num_samples (int) – Number of samples after warmup.

  • method (str) – Sampling method, choose from [‘mcmc’, ‘nested’].

  • handlers (list, optional) – Handlers to apply to the model during inference.

  • reparam (str, or numpyro.infer.reparam.Reparam) – Default is ‘auto’ will automatically reparameterise the model to improve sampling during MCMC.

  • **kwargs – Keyword arguments to pass to the sampling method.