Fit and compare complex models reliably and rapidly with advanced nested sampling techniques for Bayesian inference.
Modular step sampling algorithms for efficient exploration of parameter spaces within nested sampling. UltraNest provides various sampling techniques that can be customized based on the problem geometry and likelihood structure.
Foundation classes for implementing custom step sampling algorithms.
class StepSampler:
"""Base class for all step samplers."""
class MHSampler(StepSampler):
"""Metropolis-Hastings sampler for general parameter space exploration."""
class SliceSampler(StepSampler):
"""Slice sampler providing robust sampling for complex geometries."""Pre-configured sampler factory functions combining sampling algorithms with direction generators for common use cases.
def CubeMHSampler(*args, **kwargs):
"""Metropolis-Hastings sampler with cube-oriented direction generation."""
def RegionMHSampler(*args, **kwargs):
"""Metropolis-Hastings sampler with region-oriented directions."""
def CubeSliceSampler(*args, **kwargs):
"""Slice sampler using axis-aligned directions."""
def RegionSliceSampler(*args, **kwargs):
"""Slice sampler with region-adaptive directions."""
def BallSliceSampler(*args, **kwargs):
"""Slice sampler constrained to ball geometry."""
def RegionBallSliceSampler(*args, **kwargs):
"""Slice sampler combining region and ball constraints."""Functions for generating sampling directions based on different geometric strategies.
def generate_random_direction(ui, region, scale=1):
"""
Generate random direction for sampling moves.
Parameters:
- ui: Current point in unit cube
- region: Current constraining region
- scale (float): Direction scaling factor
Returns:
array: Random direction vector
"""
def generate_cube_oriented_direction(ui, region, scale=1):
"""
Generate axis-aligned direction for cube-oriented sampling.
Parameters:
- ui: Current point in unit cube
- region: Current constraining region
- scale (float): Direction scaling factor
Returns:
array: Axis-aligned direction vector
"""
def generate_region_oriented_direction(ui, region, scale=1):
"""
Generate direction oriented towards region structure.
Parameters:
- ui: Current point in unit cube
- region: Current constraining region
- scale (float): Direction scaling factor
Returns:
array: Region-oriented direction vector
"""
def generate_region_random_direction(ui, region, scale=1):
"""
Generate random direction within region constraints.
Parameters:
- ui: Current point in unit cube
- region: Current constraining region
- scale (float): Direction scaling factor
Returns:
array: Random region-constrained direction
"""
def generate_mixture_random_direction(ui, region, scale=1):
"""
Generate direction using mixture of strategies.
Parameters:
- ui: Current point in unit cube
- region: Current constraining region
- scale (float): Direction scaling factor
Returns:
array: Mixed strategy direction vector
"""Classes for systematic direction generation with adaptive behavior.
class SequentialDirectionGenerator:
"""Generate directions in sequential patterns."""
class SequentialRegionDirectionGenerator:
"""Generate region-based sequential directions."""
class OrthogonalDirectionGenerator:
"""Generate orthogonal direction sets."""
class SpeedVariableGenerator:
"""Adaptive speed control for direction generation."""Advanced samplers that work with multiple points simultaneously for improved efficiency.
class PopulationRandomWalkSampler:
"""Population-based random walk sampler."""
class PopulationSliceSampler:
"""Population-based slice sampler."""
class PopulationSimpleSliceSampler:
"""Simplified population slice sampler."""Direction generation functions optimized for population-based sampling.
def generate_cube_oriented_direction_scaled(*args, **kwargs):
"""Generate scaled cube-oriented directions for populations."""
def generate_random_direction(*args, **kwargs):
"""Generate random directions for population sampling."""
def generate_region_oriented_direction(*args, **kwargs):
"""Generate region-oriented directions for populations."""
def generate_region_random_direction(*args, **kwargs):
"""Generate region-random directions for populations."""High-performance sampling using Hamiltonian dynamics for smooth likelihood surfaces.
class DynamicHMCSampler:
"""Dynamic Hamiltonian Monte Carlo sampler for smooth posteriors."""
class FlattenedProblem:
"""Flattened problem formulation for HMC sampling."""Adaptive Hamiltonian Monte Carlo that automatically tunes step sizes and trajectory lengths.
class ClockedNUTSSampler:
"""No-U-Turn sampler with clock-based termination."""
class ClockedBisectSampler:
"""Bisection sampler with clock-based timing."""
class ClockedStepSampler:
"""Clock-based step sampler for precise control."""Specialized samplers for trajectory-based exploration.
class SingleJumper:
"""Single-jump trajectory sampler."""
class DirectJumper:
"""Direct trajectory jumping."""
class IntervalJumper:
"""Interval-based trajectory sampling."""Samplers that use path-based exploration strategies.
class SamplingPathSliceSampler(StepSampler):
"""Path-based slice sampling algorithm."""
class SamplingPathStepSampler(StepSampler):
"""Path-based step sampling algorithm."""from ultranest import ReactiveNestedSampler
from ultranest.stepsampler import RegionSliceSampler
# Create sampler with custom step sampler
sampler = ReactiveNestedSampler(
param_names=['x', 'y', 'z'],
loglike=loglike,
transform=prior_transform
)
# Configure step sampler (done automatically by ReactiveNestedSampler)
# Manual configuration would be:
# step_sampler = RegionSliceSampler()
# sampler.stepsampler = step_samplerfrom ultranest.popstepsampler import PopulationSliceSampler
# Population sampling is typically configured automatically
# based on problem dimensionality and structurefrom ultranest.dyhmc import DynamicHMCSampler
# HMC sampling is automatically selected for smooth,
# differentiable likelihood functions when beneficialThe ReactiveNestedSampler automatically selects and adapts step sampling strategies based on the problem characteristics, making manual configuration unnecessary for most applications.
Install with Tessl CLI
npx tessl i tessl/pypi-ultranest