pypfilt.sampler#

The pypfilt.sampler module provides a Latin hypercube sampler. This sampler ensures that the samples provide a good representation of the real variability, and supports dependent parameters whose distributions depend on other parameters.

class pypfilt.sampler.LatinHypercube#

Draw parameter samples using Latin hypercube sampling.

draw_samples(settings, prng, particles, prior, sampled)#

Return samples from the model prior distribution.

Parameters:
  • settings – A dictionary of sampler-specific settings.

  • prng – The source of randomness for the sampler.

  • particles – The number of particles.

  • prior – The prior distribution table.

  • sampled – Sampled values for specific parameters.

To use this sampler, add the following to your scenario files:

[components]
sampler = "pypfilt.sampler.LatinHypercube"

[sampler]
dependent_distributions_function = "beta_distribution"

[prior]
# Sample alpha uniformly over the interval [5, 10].
alpha = { name = "uniform", args.loc = 5, args.scale = 5}
# Identify beta as a dependent parameter.
beta = { dependent = true }

You then need to define a function that constructs the sampling distribution for each dependent parameter:

def beta_distribution(indep_values, dep_params):
    """Define beta ~ N(alpha + 1, 1)."""
    return {
        'beta': {
            'name': 'norm',
            'args': {'loc': indep_values['alpha'] + 1, 'scale': 1},
        },
    }

Note

See the lhs documentation for examples of how to define distributions for independent and dependent parameters.

Defining a custom sampler#

A custom sampler should derive the following base class:

class pypfilt.sampler.Base#

The base class for parameter samplers.

abstract draw_samples(settings, prng, particles, prior, sampled)#

Return samples from the model prior distribution.

Parameters:
  • settings – A dictionary of sampler-specific settings.

  • prng – The source of randomness for the sampler.

  • particles – The number of particles.

  • prior – The prior distribution table.

  • sampled – Sampled values for specific parameters.