From f844c050a2bdcad467d7e36f846254e8ed8724b0 Mon Sep 17 00:00:00 2001 From: Adrien Corenflos Date: Mon, 23 Feb 2026 18:30:14 +0000 Subject: [PATCH 1/8] Refactoring resamplings to allow for more flexibility in the outputs. --- cuthbert/smc/backward_sampler.py | 11 ++- cuthbert/smc/marginal_particle_filter.py | 23 ++--- cuthbert/smc/particle_filter.py | 25 ++---- cuthbertlib/resampling/README.md | 8 +- cuthbertlib/resampling/__init__.py | 3 +- cuthbertlib/resampling/adaptive.py | 64 +++++++++++++ cuthbertlib/resampling/killing.py | 35 +++++--- cuthbertlib/resampling/multinomial.py | 26 ++++-- cuthbertlib/resampling/protocols.py | 90 ++++++++++--------- cuthbertlib/resampling/systematic.py | 30 +++++-- cuthbertlib/resampling/utils.py | 8 +- cuthbertlib/smc/smoothing/mcmc.py | 5 +- docs/examples/online_stoch_vol.md | 7 +- pyproject.toml | 9 +- tests/cuthbert/smc/test_backward_sampler.py | 10 +-- tests/cuthbert/smc/test_particle_filters.py | 13 +-- .../resampling/test_resamplings.py | 17 +++- tests/cuthbertlib/resampling/utils.py | 18 +++- 18 files changed, 269 insertions(+), 133 deletions(-) create mode 100644 cuthbertlib/resampling/adaptive.py diff --git a/cuthbert/smc/backward_sampler.py b/cuthbert/smc/backward_sampler.py index a8e4da3d..9913404b 100644 --- a/cuthbert/smc/backward_sampler.py +++ b/cuthbert/smc/backward_sampler.py @@ -108,14 +108,19 @@ def convert_filter_to_smoother_state( dummy_model_inputs = dummy_tree_like(model_inputs) key, resampling_key = random.split(key) - indices = resampling(resampling_key, filter_state.log_weights, n_smoother_particles) + indices, log_weights, particles = resampling( + resampling_key, + filter_state.log_weights, + filter_state.particles, + n_smoother_particles, + ) return ParticleSmootherState( key=cast(KeyArray, key), - particles=jax.tree.map(lambda z: z[indices], filter_state.particles), + particles=particles, ancestor_indices=filter_state.ancestor_indices[indices], model_inputs=dummy_model_inputs, - log_weights=-jnp.log(n_smoother_particles) * jnp.ones(n_smoother_particles), + log_weights=log_weights, ) diff --git a/cuthbert/smc/marginal_particle_filter.py b/cuthbert/smc/marginal_particle_filter.py index 840f304d..afdfbb93 100644 --- a/cuthbert/smc/marginal_particle_filter.py +++ b/cuthbert/smc/marginal_particle_filter.py @@ -14,8 +14,7 @@ from cuthbert.smc.types import InitSample, LogPotential, PropagateSample from cuthbert.utils import dummy_tree_like from cuthbertlib.resampling import Resampling -from cuthbertlib.smc.ess import log_ess -from cuthbertlib.types import ArrayTree, ArrayTreeLike, KeyArray, ScalarArray +from cuthbertlib.types import Array, ArrayTree, ArrayTreeLike, KeyArray, ScalarArray class MarginalParticleFilterState(NamedTuple): @@ -35,7 +34,6 @@ def build_filter( log_potential: LogPotential, n_filter_particles: int, resampling_fn: Resampling, - ess_threshold: float, ) -> Filter: r"""Builds a marginal particle filter object. @@ -45,9 +43,9 @@ def build_filter( log_potential: Function to compute the log potential $\log G_t(x_{t-1}, x_t)$. n_filter_particles: Number of particles for the filter. resampling_fn: Resampling algorithm to use (e.g., systematic, multinomial). - ess_threshold: Fraction of particle count specifying when to resample. - Resampling is triggered when the - effective sample size (ESS) < ess_threshold * n_filter_particles. + The resampling function may be decorated with adaptive behaviour + (using cuthbertlib.resampling.adaptive.adaptive_resampling_decorator) + before being passed to the filter. Returns: Filter object for the particle filter. @@ -66,7 +64,6 @@ def build_filter( propagate_sample=propagate_sample, log_potential=log_potential, resampling_fn=resampling_fn, - ess_threshold=ess_threshold, ), associative=False, ) @@ -161,7 +158,6 @@ def filter_combine( propagate_sample: PropagateSample, log_potential: LogPotential, resampling_fn: Resampling, - ess_threshold: float, ) -> MarginalParticleFilterState: """Combine previous filter state with the state prepared for the current step. @@ -175,8 +171,6 @@ def filter_combine( propagate_sample: Function to sample from the Markov kernel M_t(x_t | x_{t-1}). log_potential: Function to compute the log potential log G_t(x_{t-1}, x_t). resampling_fn: Resampling algorithm to use (e.g., systematic, multinomial). - ess_threshold: Fraction of particle count specifying when to resample. - Resampling is triggered when the effective sample size (ESS) < ess_threshold * N. Returns: The filtered state at the current time step. @@ -188,13 +182,10 @@ def filter_combine( prev_log_weights = state_1.log_weights - jax.nn.logsumexp( state_1.log_weights ) # Ensure normalized - ancestor_indices, log_weights = jax.lax.cond( - log_ess(state_1.log_weights) < jnp.log(ess_threshold * N), - lambda: (resampling_fn(keys[0], state_1.log_weights, N), jnp.zeros(N)), - lambda: (jnp.arange(N), state_1.log_weights), - ) - ancestors = tree.map(lambda x: x[ancestor_indices], state_1.particles) + ancestor_indices, log_weights, ancestors = resampling_fn( + keys[0], state_1.log_weights, state_1.particles, N + ) # Propagate next_particles = jax.vmap(propagate_sample, (0, 0, None))( keys[1:], ancestors, state_2.model_inputs diff --git a/cuthbert/smc/particle_filter.py b/cuthbert/smc/particle_filter.py index 07776d7b..d445af44 100644 --- a/cuthbert/smc/particle_filter.py +++ b/cuthbert/smc/particle_filter.py @@ -8,14 +8,13 @@ import jax import jax.numpy as jnp -from jax import Array, random, tree +from jax import random, tree from cuthbert.inference import Filter from cuthbert.smc.types import InitSample, LogPotential, PropagateSample from cuthbert.utils import dummy_tree_like from cuthbertlib.resampling import Resampling -from cuthbertlib.smc.ess import log_ess -from cuthbertlib.types import ArrayTree, ArrayTreeLike, KeyArray, ScalarArray +from cuthbertlib.types import Array, ArrayTree, ArrayTreeLike, KeyArray, ScalarArray class ParticleFilterState(NamedTuple): @@ -40,7 +39,6 @@ def build_filter( log_potential: LogPotential, n_filter_particles: int, resampling_fn: Resampling, - ess_threshold: float, ) -> Filter: r"""Builds a particle filter object. @@ -50,9 +48,9 @@ def build_filter( log_potential: Function to compute the log potential $\log G_t(x_{t-1}, x_t)$. n_filter_particles: Number of particles for the filter. resampling_fn: Resampling algorithm to use (e.g., systematic, multinomial). - ess_threshold: Fraction of particle count specifying when to resample. - Resampling is triggered when the - effective sample size (ESS) < ess_threshold * n_filter_particles. + The resampling function may be decorated with adaptive behaviour + (using cuthbertlib.resampling.adaptive.adaptive_resampling_decorator) + before being passed to the filter. Returns: Filter object for the particle filter. @@ -73,7 +71,6 @@ def build_filter( propagate_sample=propagate_sample, log_potential=log_potential, resampling_fn=resampling_fn, - ess_threshold=ess_threshold, ), associative=False, ) @@ -170,7 +167,6 @@ def filter_combine( propagate_sample: PropagateSample, log_potential: LogPotential, resampling_fn: Resampling, - ess_threshold: float, ) -> ParticleFilterState: """Combine previous filter state with the state prepared for the current step. @@ -183,8 +179,6 @@ def filter_combine( propagate_sample: Function to sample from the Markov kernel M_t(x_t | x_{t-1}). log_potential: Function to compute the log potential log G_t(x_{t-1}, x_t). resampling_fn: Resampling algorithm to use (e.g., systematic, multinomial). - ess_threshold: Fraction of particle count specifying when to resample. - Resampling is triggered when the effective sample size (ESS) < ess_threshold * N. Returns: The filtered state at the current time step. @@ -192,13 +186,10 @@ def filter_combine( N = state_1.log_weights.shape[0] keys = random.split(state_1.key, N + 1) - # Resample - ancestor_indices, log_weights = jax.lax.cond( - log_ess(state_1.log_weights) < jnp.log(ess_threshold * N), - lambda: (resampling_fn(keys[0], state_1.log_weights, N), jnp.zeros(N)), - lambda: (jnp.arange(N), state_1.log_weights), + # Resample - resampling_fn is expected to handle adaptivity if desired + ancestor_indices, log_weights, ancestors = resampling_fn( + keys[0], state_1.log_weights, state_1.particles, N ) - ancestors = tree.map(lambda x: x[ancestor_indices], state_1.particles) # Propagate next_particles = jax.vmap(propagate_sample, (0, 0, None))( diff --git a/cuthbertlib/resampling/README.md b/cuthbertlib/resampling/README.md index b49d8d28..c253c836 100644 --- a/cuthbertlib/resampling/README.md +++ b/cuthbertlib/resampling/README.md @@ -11,16 +11,14 @@ sampling_key, resampling_key = jax.random.split(jax.random.key(0)) particles = jax.random.normal(sampling_key, (100, 2)) logits = jax.vmap(lambda x: jnp.where(jnp.all(x > 0), 0, -jnp.inf))(particles) -resampled_indices = resampling.multinomial.resampling(resampling_key, logits, 100) -resampled_particles = particles[resampled_indices] +resampled_indices, _, resampled_particles = resampling.multinomial.resampling(resampling_key, logits, particles, 100) ``` Or for conditional resampling: ```python # Here we resample but keep particle at index 0 fixed -conditional_resampled_indices = resampling.multinomial.conditional_resampling( - resampling_key, logits, 100, pivot_in=0, pivot_out=0 +conditional_resampled_indices, _, conditional_resampled_particles = resampling.multinomial.conditional_resampling( + resampling_key, logits, particles, 100, pivot_in=0, pivot_out=0 ) -conditional_resampled_particles = particles[conditional_resampled_indices] ``` diff --git a/cuthbertlib/resampling/__init__.py b/cuthbertlib/resampling/__init__.py index bafa097e..b23d83a5 100644 --- a/cuthbertlib/resampling/__init__.py +++ b/cuthbertlib/resampling/__init__.py @@ -1,3 +1,4 @@ -from cuthbertlib.resampling import killing, multinomial, systematic +from cuthbertlib.resampling import adaptive, killing, multinomial, systematic +from cuthbertlib.resampling.adaptive import ess_decorator from cuthbertlib.resampling.protocols import ConditionalResampling, Resampling from cuthbertlib.resampling.utils import inverse_cdf diff --git a/cuthbertlib/resampling/adaptive.py b/cuthbertlib/resampling/adaptive.py new file mode 100644 index 00000000..78e2b744 --- /dev/null +++ b/cuthbertlib/resampling/adaptive.py @@ -0,0 +1,64 @@ +"""Adaptive resampling decorator. + +Provides a decorator to turn any Resampling function into an adaptive resampling +function which performs resampling only when the effective sample size (ESS) +falls below a threshold. +""" + +from functools import wraps + +import jax +import jax.numpy as jnp + +from cuthbertlib.resampling.protocols import Resampling +from cuthbertlib.smc.ess import log_ess +from cuthbertlib.types import Array, ArrayLike, ArrayTreeLike + + +def ess_decorator(func: Resampling, threshold: float) -> Resampling: + """Wrap a Resampling function so that it only resamples when ESS < threshold. + + The returned function is jitted and has `n` as a static argument. The + original resampler's docstring is appended to this wrapper's docstring so + IDEs and users can see the underlying algorithm documentation. + + Args: + func: A resampling function with signature + (key, logits, positions, n) -> (indices, logits_out, positions_out). + threshold: Fraction of particle count specifying when to resample. + Resampling is triggered when ESS < ess_threshold * n. + + Returns: + A Resampling function implementing adaptive resampling. + """ + # Build a descriptive docstring that includes the wrapped function doc + wrapped_doc = func.__doc__ or "" + doc = f""" + Adaptive resampling decorator (threshold={threshold}). + + This wrapper will call the provided resampling function only when the + effective sample size (ESS) is below `ess_threshold * n`. + + Wrapped resampler documentation: + {wrapped_doc} + """ + + @wraps(func) + def _wrapped(key: Array, logits: ArrayLike, positions: ArrayTreeLike, n: int): + logits_arr = jnp.asarray(logits) + + def _do_resample(): + return func(key, logits_arr, positions, n) + + def _no_resample(): + return jnp.arange(n), logits_arr, positions + + return jax.lax.cond( + log_ess(logits_arr) < jnp.log(threshold * n), + _do_resample, + _no_resample, + ) + + # Attach the composed docstring and return a jitted version + _wrapped.__doc__ = doc + return jax.jit(_wrapped, static_argnames=("n",)) diff --git a/cuthbertlib/resampling/killing.py b/cuthbertlib/resampling/killing.py index 11b025ad..8d50956b 100644 --- a/cuthbertlib/resampling/killing.py +++ b/cuthbertlib/resampling/killing.py @@ -1,6 +1,7 @@ """Implements killing resampling.""" from functools import partial +from typing import Tuple from jax import numpy as jnp from jax import random @@ -11,7 +12,14 @@ conditional_resampling_decorator, resampling_decorator, ) -from cuthbertlib.types import Array, ArrayLike, ScalarArrayLike +from cuthbertlib.resampling.utils import apply_resampling_indices +from cuthbertlib.types import ( + Array, + ArrayLike, + ArrayTree, + ArrayTreeLike, + ScalarArrayLike, +) _DESCRIPTION = """ The Killing resampling is a simple resampling mechanism that checks if @@ -28,7 +36,9 @@ @partial(resampling_decorator, name="Killing", desc=_DESCRIPTION) -def resampling(key: Array, logits: ArrayLike, n: int) -> Array: +def resampling( + key: Array, logits: ArrayLike, positions: ArrayTreeLike, n: int +) -> Tuple[Array, Array, ArrayTree]: logits = jnp.asarray(logits) key_1, key_2 = random.split(key) N = logits.shape[0] @@ -43,27 +53,30 @@ def resampling(key: Array, logits: ArrayLike, n: int) -> Array: survived = log_uniforms <= logits - max_logit if_survived = jnp.arange(N) # If the particle survives, it keeps its index - otherwise = multinomial.resampling( - key_2, logits, N + otherwise_idx, _, _ = multinomial.resampling( + key_2, logits, positions, N ) # otherwise, it is replaced by another particle - idx = jnp.where(survived, if_survived, otherwise) - return idx + idx = jnp.where(survived, if_survived, otherwise_idx) + # After resampling, all particles have equal weight + logits_out = jnp.zeros_like(logits) + return idx, logits_out, apply_resampling_indices(positions, idx) @partial(conditional_resampling_decorator, name="Killing", desc=_DESCRIPTION) def conditional_resampling( key: Array, logits: ArrayLike, + positions: ArrayTreeLike, n: int, pivot_in: ScalarArrayLike, pivot_out: ScalarArrayLike, -) -> Array: +) -> Tuple[Array, Array, ArrayTree]: pivot_in = jnp.asarray(pivot_in) pivot_out = jnp.asarray(pivot_out) # Unconditional resampling key_resample, key_shuffle = random.split(key) - idx = resampling(key_resample, logits, n) + idx_uncond, _, _ = resampling(key_resample, logits, positions, n) # Conditional rolling pivot max_logit = jnp.max(logits) @@ -76,9 +89,11 @@ def conditional_resampling( pivot_weights = jnp.exp(pivot_logits - logsumexp(pivot_logits)) pivot = random.choice(key_shuffle, n, p=pivot_weights) - idx = jnp.roll(idx, pivot_in - pivot) + idx = jnp.roll(idx_uncond, pivot_in - pivot) idx = idx.at[pivot_in].set(pivot_out) - return idx + # After resampling, all particles have equal weight + logits_out = jnp.zeros_like(logits) + return idx, logits_out, apply_resampling_indices(positions, idx) def _log1mexp(x: ArrayLike) -> Array: diff --git a/cuthbertlib/resampling/multinomial.py b/cuthbertlib/resampling/multinomial.py index 26080c26..a23dc54b 100644 --- a/cuthbertlib/resampling/multinomial.py +++ b/cuthbertlib/resampling/multinomial.py @@ -1,6 +1,7 @@ """Implements multinomial resampling.""" from functools import partial +from typing import Tuple import jax from jax import numpy as jnp @@ -10,8 +11,14 @@ conditional_resampling_decorator, resampling_decorator, ) -from cuthbertlib.resampling.utils import inverse_cdf -from cuthbertlib.types import Array, ArrayLike, ScalarArrayLike +from cuthbertlib.resampling.utils import apply_resampling_indices, inverse_cdf +from cuthbertlib.types import ( + Array, + ArrayLike, + ArrayTree, + ArrayTreeLike, + ScalarArrayLike, +) _DESCRIPTION = """ This has higher variance than other resampling schemes as it samples from @@ -21,7 +28,9 @@ @partial(resampling_decorator, name="Multinomial", desc=_DESCRIPTION) -def resampling(key: Array, logits: ArrayLike, n: int) -> Array: +def resampling( + key: Array, logits: ArrayLike, positions: ArrayTreeLike, n: int +) -> Tuple[Array, Array, ArrayTree]: # In practice we don't have to sort the generated uniforms, but searchsorted # works faster and is more stable if both inputs are sorted, so we use the # _sorted_uniforms from N. Chopin, but still use searchsorted instead of his @@ -32,23 +41,26 @@ def resampling(key: Array, logits: ArrayLike, n: int) -> Array: key_uniforms, key_shuffle = random.split(key) sorted_uniforms = _sorted_uniforms(key_uniforms, n) idx = inverse_cdf(sorted_uniforms, logits) - return random.permutation(key_shuffle, idx) + idx = random.permutation(key_shuffle, idx) + logits_out = jnp.zeros_like(sorted_uniforms) + return idx, logits_out, apply_resampling_indices(positions, idx) @partial(conditional_resampling_decorator, name="Multinomial", desc=_DESCRIPTION) def conditional_resampling( key: Array, logits: ArrayLike, + positions: ArrayTreeLike, n: int, pivot_in: ScalarArrayLike, pivot_out: ScalarArrayLike, -) -> Array: +) -> Tuple[Array, Array, ArrayTree]: pivot_in = jnp.asarray(pivot_in) pivot_out = jnp.asarray(pivot_out) - idx = resampling(key, logits, n) + idx, logits_out, _ = resampling(key, logits, positions, n) idx = idx.at[pivot_in].set(pivot_out) - return idx + return idx, logits_out, apply_resampling_indices(positions, idx) @partial(jax.jit, static_argnames=("n",)) diff --git a/cuthbertlib/resampling/protocols.py b/cuthbertlib/resampling/protocols.py index 85cd3901..493489f7 100644 --- a/cuthbertlib/resampling/protocols.py +++ b/cuthbertlib/resampling/protocols.py @@ -1,26 +1,56 @@ """Shared protocols for resampling algorithms.""" -from typing import Protocol, runtime_checkable +from typing import Protocol, Tuple, runtime_checkable import jax -from cuthbertlib.types import Array, ArrayLike, KeyArray, ScalarArrayLike +from cuthbertlib.types import ( + Array, + ArrayLike, + ArrayTree, + ArrayTreeLike, + KeyArray, + ScalarArrayLike, +) + +_RESAMPLING_DOC = """ +Args: + key: JAX PRNG key. + logits: Logits. + positions: ArrayTreeLike + n: Number of indices to sample. + +Returns: + ancestors: Array of resampling indices. + logits: Array of log-weights after resampling. + positions: ArrayTreeLike of resampled positions. +""" + +_CONDITIONAL_RESAMPLING_DOC = """ +Args: + key: JAX PRNG key. + logits: Log-weights, possibly unnormalized. + positions: ArrayTreeLike + n: Number of indices to sample. + pivot_in: Index of the particle to keep. + pivot_out: Value of the output at index `pivot_in`. + +Returns: + ancestors: Array of size n with indices to use for resampling. + logits: Array of log-weights after resampling. + positions: ArrayTreeLike of resampled positions. +""" @runtime_checkable class Resampling(Protocol): """Protocol for resampling operations.""" - def __call__(self, key: KeyArray, logits: ArrayLike, n: int) -> Array: - """Computes resampling indices according to given logits. - - Args: - key: JAX PRNG key. - logits: Logits. - n: Number of indices to sample. - - Returns: - Array of resampling indices. + def __call__( + self, key: KeyArray, logits: ArrayLike, positions: ArrayTreeLike, n: int + ) -> Tuple[Array, Array, ArrayTree]: + f"""Computes resampling indices according to given logits. + {_RESAMPLING_DOC} """ ... @@ -33,21 +63,13 @@ def __call__( self, key: KeyArray, logits: ArrayLike, + positions: ArrayTreeLike, n: int, pivot_in: ScalarArrayLike, pivot_out: ScalarArrayLike, - ) -> Array: - """Conditional resampling. - - Args: - key: JAX PRNG key. - logits: Log-weights, possibly unnormalized. - n: Number of indices to sample. - pivot_in: Index of the particle to keep. - pivot_out: Value of the output at index `pivot_in`. - - Returns: - Array of size n with indices to use for resampling. + ) -> Tuple[Array, Array, ArrayTree]: + f"""Conditional resampling. + {_CONDITIONAL_RESAMPLING_DOC} """ ... @@ -56,14 +78,7 @@ def resampling_decorator(func: Resampling, name: str, desc: str = "") -> Resampl """Decorate Resampling function with unified docstring.""" doc = f""" {name} resampling. {desc} - - Args: - key: PRNGKey to use in resampling - logits: Log-weights, possibly unnormalized. - n: Number of indices to sample. - - Returns: - Array of size n with indices to use for resampling. + {_RESAMPLING_DOC} """ func.__doc__ = doc @@ -76,16 +91,7 @@ def conditional_resampling_decorator( """Decorate ConditionalResampling function with unified docstring.""" doc = f""" {name} conditional resampling. {desc} - - Args: - key: PRNGKey to use in resampling - logits: Log-weights, possibly unnormalized. - n: Number of indices to sample - pivot_in: Index of the particle to keep - pivot_out: Value of the output at index `pivot_in` - - Returns: - Array of size n with indices to use for resampling. + {_CONDITIONAL_RESAMPLING_DOC} """ func.__doc__ = doc diff --git a/cuthbertlib/resampling/systematic.py b/cuthbertlib/resampling/systematic.py index c01f9025..f1ffd18e 100644 --- a/cuthbertlib/resampling/systematic.py +++ b/cuthbertlib/resampling/systematic.py @@ -1,6 +1,7 @@ """Implements systematic resampling.""" from functools import partial +from typing import Tuple from jax import numpy as jnp from jax import random @@ -11,8 +12,14 @@ conditional_resampling_decorator, resampling_decorator, ) -from cuthbertlib.resampling.utils import inverse_cdf -from cuthbertlib.types import Array, ArrayLike, ScalarArrayLike +from cuthbertlib.resampling.utils import apply_resampling_indices, inverse_cdf +from cuthbertlib.types import ( + Array, + ArrayLike, + ArrayTree, + ArrayTreeLike, + ScalarArrayLike, +) _DESCRIPTION = """ The Systematic resampling is a variance reduction which places marginally @@ -21,19 +28,24 @@ @partial(resampling_decorator, name="Systematic", desc=_DESCRIPTION) -def resampling(key: Array, logits: ArrayLike, n: int) -> Array: +def resampling( + key: Array, logits: ArrayLike, positions: ArrayTreeLike, n: int +) -> Tuple[Array, Array, ArrayTree]: us = (random.uniform(key, ()) + jnp.arange(n)) / n - return inverse_cdf(us, logits) + idx = inverse_cdf(us, logits) + logits_out = jnp.zeros_like(us) + return idx, logits_out, apply_resampling_indices(positions, idx) @partial(conditional_resampling_decorator, name="Systematic", desc=_DESCRIPTION) def conditional_resampling( key: Array, logits: ArrayLike, + positions: ArrayTreeLike, n: int, pivot_in: ScalarArrayLike, pivot_out: ScalarArrayLike, -) -> Array: +) -> Tuple[Array, Array, ArrayTree]: logits = jnp.asarray(logits) pivot_in = jnp.asarray(pivot_in) pivot_out = jnp.asarray(pivot_out) @@ -46,17 +58,17 @@ def conditional_resampling( logits = jnp.roll(logits, -pivot_out) arange = jnp.roll(arange, -pivot_out) - idx = conditional_resampling_0_to_0(key, logits, n) + idx, logits_out = conditional_resampling_0_to_0(key, logits, n) idx = arange[idx] idx = jnp.roll(idx, pivot_in) - return idx + return idx, logits_out, apply_resampling_indices(positions, idx) def conditional_resampling_0_to_0( key: Array, logits: ArrayLike, n: int, -) -> Array: +) -> Tuple[Array, Array]: logits = jnp.asarray(logits) N = logits.shape[0] @@ -81,4 +93,4 @@ def _otherwise(): roll_idx = jnp.floor(n_zero * W).astype(int) idx = select(n_zero == 1, idx, jnp.roll(idx, -zero_loc[roll_idx])) - return jnp.clip(idx, 0, N - 1) + return jnp.clip(idx, 0, N - 1), jnp.zeros_like(linspace) diff --git a/cuthbertlib/resampling/utils.py b/cuthbertlib/resampling/utils.py index 4bfb743a..afbdea40 100644 --- a/cuthbertlib/resampling/utils.py +++ b/cuthbertlib/resampling/utils.py @@ -6,8 +6,9 @@ import numpy as np from jax.lax import platform_dependent from jax.scipy.special import logsumexp +from jax.tree_util import tree_map -from cuthbertlib.types import Array, ArrayLike +from cuthbertlib.types import Array, ArrayLike, ArrayTree, ArrayTreeLike @jax.jit @@ -80,3 +81,8 @@ def _inverse_cdf_numba(su, ws, idx): j += 1 s += ws[j] idx[n] = j + + +def apply_resampling_indices(positions: ArrayTreeLike, idx: Array) -> ArrayTree: + """Apply resampling indices to positions.""" + return tree_map(lambda x: x[idx], positions) diff --git a/cuthbertlib/smc/smoothing/mcmc.py b/cuthbertlib/smc/smoothing/mcmc.py index 219460cb..15d63058 100644 --- a/cuthbertlib/smc/smoothing/mcmc.py +++ b/cuthbertlib/smc/smoothing/mcmc.py @@ -55,8 +55,9 @@ def body(carry, keys_t): idx, x0_res, idx_log_p = carry key_prop, key_acc = keys_t - prop_idx = multinomial.resampling(key_prop, log_weight_x0_all, n_samples) - x0_prop = jax.tree.map(lambda z: z[prop_idx], x0_all) + prop_idx, _, x0_prop = multinomial.resampling( + key_prop, log_weight_x0_all, x0_all, n_samples + ) prop_log_p = jax.vmap(log_density)(x0_prop, x1_all) log_alpha = prop_log_p - idx_log_p diff --git a/docs/examples/online_stoch_vol.md b/docs/examples/online_stoch_vol.md index 69ad605d..5b19c98e 100644 --- a/docs/examples/online_stoch_vol.md +++ b/docs/examples/online_stoch_vol.md @@ -27,7 +27,7 @@ import yfinance as yf from cuthbert import filter from cuthbert.smc import particle_filter -from cuthbertlib.resampling import systematic +from cuthbertlib.resampling import adaptive, systematic ``` We'll use a simple bootstrap particle filter for inference since our model is @@ -194,7 +194,9 @@ on how often to resample before constructing the filter object. ```{.python #online-stoch-vol-particle-filter-setup} n_particles = 1000 -ess_threshold = 0.5 +resampling = adaptive.ess_decorator( + systematic.resampling, 0.5 +) # Resample when ESS drops below 50% pf = particle_filter.build_filter( init_sample=init_sample, @@ -202,7 +204,6 @@ pf = particle_filter.build_filter( log_potential=log_potential, n_filter_particles=n_particles, resampling_fn=systematic.resampling, - ess_threshold=ess_threshold, ) ``` diff --git a/pyproject.toml b/pyproject.toml index dec55ac8..90262b20 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,7 +12,7 @@ override-dependencies = [ [tool.ruff.lint.per-file-ignores] "__init__.py" = ["F401", "F821", "E402", "D104"] "tests/**/*.py" = ["D"] # no docstring checking for tests -"cuthbertlib/resampling/**/*.py" = ["D103"] # resampling uses decorator for docstrings +"cuthbertlib/resampling/**/*.py" = ["D102", "D103"] # resampling uses decorator for docstrings [tool.ruff.lint] select = ["D"] [tool.ruff.lint.pydocstyle] @@ -25,3 +25,10 @@ markers = "examples: Run tangled example scripts as tests" [tool.entangled] version = "2.3.0" ignore_list = ["CONTRIBUTING.md"] + +[dependency-groups] +dev = [ + "chex>=0.1.90", + "pip>=26.0.1", + "pytest>=9.0.2", +] diff --git a/tests/cuthbert/smc/test_backward_sampler.py b/tests/cuthbert/smc/test_backward_sampler.py index cbcbc8b2..226af1f6 100644 --- a/tests/cuthbert/smc/test_backward_sampler.py +++ b/tests/cuthbert/smc/test_backward_sampler.py @@ -11,7 +11,7 @@ from cuthbert.smc.backward_sampler import build_smoother from cuthbert.smc.particle_filter import build_filter from cuthbertlib.kalman.generate import generate_lgssm -from cuthbertlib.resampling import systematic +from cuthbertlib.resampling import ess_decorator, systematic from cuthbertlib.smc.smoothing.exact_sampling import simulate as exact from cuthbertlib.smc.smoothing.mcmc import simulate as mcmc from cuthbertlib.smc.smoothing.tracing import simulate as tracing @@ -45,13 +45,13 @@ def log_potential(state_prev, state, model_inputs: int): n_filter_particles = 5000 resampling_fn = systematic.resampling ess_threshold = 0.7 + adaptive_resampler = ess_decorator(resampling_fn, ess_threshold) filter_obj = build_filter( init_sample, propagate_sample, log_potential, n_filter_particles, - resampling_fn, - ess_threshold, + adaptive_resampler, ) model_inputs = jnp.arange(len(ys) + 1) return filter_obj, model_inputs, log_potential @@ -136,13 +136,13 @@ def log_potential(state_prev, state, model_inputs): n_filter_particles = 1000 resampling_fn = systematic.resampling ess_threshold = 0.7 + adaptive_resampler = ess_decorator(resampling_fn, ess_threshold) filter_obj = build_filter( init_sample, propagate_sample, log_potential, n_filter_particles, - resampling_fn, - ess_threshold, + adaptive_resampler, ) if method == "tracing": diff --git a/tests/cuthbert/smc/test_particle_filters.py b/tests/cuthbert/smc/test_particle_filters.py index 03e68360..f2dda632 100644 --- a/tests/cuthbert/smc/test_particle_filters.py +++ b/tests/cuthbert/smc/test_particle_filters.py @@ -11,7 +11,7 @@ from cuthbert.inference import Filter from cuthbert.smc import marginal_particle_filter, particle_filter from cuthbertlib.kalman.generate import generate_lgssm -from cuthbertlib.resampling import systematic +from cuthbertlib.resampling import ess_decorator, systematic from cuthbertlib.stats.multivariate_normal import logpdf from tests.cuthbert.gaussian.test_kalman import std_kalman_filter @@ -62,6 +62,9 @@ def log_potential(state_prev, state, model_inputs: int): ) ess_threshold = 0.7 + # Decorate the resampling with adaptive behaviour and pass that to the filter + adaptive_systematic = ess_decorator(systematic.resampling, ess_threshold) + inference = Filter( init_prepare=partial( algo.init_prepare, @@ -77,8 +80,7 @@ def log_potential(state_prev, state, model_inputs: int): algo.filter_combine, propagate_sample=propagate_sample, log_potential=log_potential, - resampling_fn=systematic.resampling, - ess_threshold=ess_threshold, + resampling_fn=adaptive_systematic, ), associative=False, ) @@ -158,6 +160,8 @@ def log_potential(state_prev, state, model_inputs): return jnp.zeros(()) ess_threshold = 0.7 + # Decorate the resampler for adaptive resampling behaviour + adaptive_systematic = ess_decorator(systematic.resampling, ess_threshold) if method == "bootstrap": n_filter_particles = 1_000 @@ -183,8 +187,7 @@ def log_potential(state_prev, state, model_inputs): algo.filter_combine, propagate_sample=propagate_sample, log_potential=log_potential, - resampling_fn=systematic.resampling, - ess_threshold=ess_threshold, + resampling_fn=adaptive_systematic, ), associative=False, ) diff --git a/tests/cuthbertlib/resampling/test_resamplings.py b/tests/cuthbertlib/resampling/test_resamplings.py index aa9f1431..73651f4e 100644 --- a/tests/cuthbertlib/resampling/test_resamplings.py +++ b/tests/cuthbertlib/resampling/test_resamplings.py @@ -86,7 +86,12 @@ def test_resampling(self, seed, test_case): method = get_resampling(test_case["method"]) for M, N in MNs: - resampling = self.variant(lambda k_, lw_: method(k_, lw_, M)) + # create dummy positions in the wrapper; accept the positions arg from tester and ignore it + resampling = self.variant( + lambda k_, lw_, positions: method( + k_, lw_, jax.random.normal(jax.random.key(0), (N,)), M + ) + ) log_weights = jax.random.uniform(key_weights, (N,)) resampling_tester(key_test, log_weights, resampling, M, self.K) @@ -102,8 +107,14 @@ def test_conditional_resampling(self, seed, test_case): conditional_method = get_conditional_resampling(test_case["method"]) for M in Ms: conditional_resampling = self.variant( - lambda k_, lw_, pivot_in, pivot_out: conditional_method( - k_, lw_, M, pivot_in, pivot_out + # accept positions arg from tester and ignore it + lambda k_, lw_, positions, pivot_in, pivot_out: conditional_method( + k_, + lw_, + jax.random.normal(jax.random.key(0), (M,)), + M, + pivot_in, + pivot_out, ) ) diff --git a/tests/cuthbertlib/resampling/utils.py b/tests/cuthbertlib/resampling/utils.py index 8f5a265e..b1b060db 100644 --- a/tests/cuthbertlib/resampling/utils.py +++ b/tests/cuthbertlib/resampling/utils.py @@ -7,7 +7,16 @@ def resampling_tester(rng_key, log_weights, resampling, m, k): keys = jax.random.split(rng_key, k) - indices = jax.vmap(resampling, [0, None])(keys, log_weights) + + # create dummy positions matching number of particles + n_particles = log_weights.shape[0] + positions = jax.random.normal(jax.random.key(0), (n_particles,)) + + def call_one(key): + idx, logits_out, _ = resampling(key, log_weights, positions) + return idx + + indices = jax.vmap(call_one)(keys) _check_bincounts(indices, log_weights, m, k) @@ -24,8 +33,11 @@ def do_one(key): p = jnp.exp(log_weights - logsumexp(log_weights)) pivot_out = jax.random.choice(key_resampling, m, shape=(), p=p) - conditional_indices = conditional_resampling( - key_conditional, log_weights, pivot_in, pivot_out + # create dummy positions + positions = jax.random.normal(jax.random.key(0), (m,)) + + conditional_indices, _, _ = conditional_resampling( + key_conditional, log_weights, positions, pivot_in, pivot_out ) return conditional_indices, pivot_out, conditional_indices[pivot_in] From 7a3744dbd00d399142631e9a5eaa289f5f0f368c Mon Sep 17 00:00:00 2001 From: Adrien Corenflos Date: Mon, 23 Feb 2026 18:30:28 +0000 Subject: [PATCH 2/8] run examples --- docs/assets/online_stoch_vol_filter.png | Bin 40021 -> 48775 bytes docs/assets/online_stoch_vol_predict.png | Bin 85559 -> 85907 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/assets/online_stoch_vol_filter.png b/docs/assets/online_stoch_vol_filter.png index 05ffe4e811f234acaadbd1c4a668110a831b7722..ca1023e647bd2c761f9a33dc3edc2e034862fcb1 100644 GIT binary patch literal 48775 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 literal 40021 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 CTCDY(#J+pLxKpP_TrbEWRM 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 From 689bdf0a7c353360e4218a4096d11b4d575cb438 Mon Sep 17 00:00:00 2001 From: Adrien Corenflos Date: Tue, 24 Feb 2026 08:56:11 +0000 Subject: [PATCH 3/8] Validate sampled indices count in adaptive resampling Add assertion to ensure number of sampled indices matches particles. --- cuthbertlib/resampling/adaptive.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cuthbertlib/resampling/adaptive.py b/cuthbertlib/resampling/adaptive.py index 78e2b744..ac78bd40 100644 --- a/cuthbertlib/resampling/adaptive.py +++ b/cuthbertlib/resampling/adaptive.py @@ -46,6 +46,12 @@ def ess_decorator(func: Resampling, threshold: float) -> Resampling: @wraps(func) def _wrapped(key: Array, logits: ArrayLike, positions: ArrayTreeLike, n: int): logits_arr = jnp.asarray(logits) + N = logits.shape[0] + if n != N: + raise AssertionError( + "The number of sampled indices must be equal to the number of " + f"particles for `adaptive` resampling. Got {n} instead of {N}." + ) def _do_resample(): return func(key, logits_arr, positions, n) From 171f4449b4248b6a30440d5be5727358be9ab87c Mon Sep 17 00:00:00 2001 From: Adrien Corenflos Date: Tue, 24 Feb 2026 12:21:10 +0000 Subject: [PATCH 4/8] remove redundant deps --- pyproject.toml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 90262b20..ac4ff6cd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,11 +24,4 @@ markers = "examples: Run tangled example scripts as tests" [tool.entangled] version = "2.3.0" -ignore_list = ["CONTRIBUTING.md"] - -[dependency-groups] -dev = [ - "chex>=0.1.90", - "pip>=26.0.1", - "pytest>=9.0.2", -] +ignore_list = ["CONTRIBUTING.md"] \ No newline at end of file From a07d98057adb4cc76662bb81d3b6151f2626a0a8 Mon Sep 17 00:00:00 2001 From: Sam Duffield Date: Thu, 26 Feb 2026 10:53:36 +0000 Subject: [PATCH 5/8] Fix pyright --- cuthbertlib/resampling/adaptive.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cuthbertlib/resampling/adaptive.py b/cuthbertlib/resampling/adaptive.py index ac78bd40..5b5683a6 100644 --- a/cuthbertlib/resampling/adaptive.py +++ b/cuthbertlib/resampling/adaptive.py @@ -46,7 +46,7 @@ def ess_decorator(func: Resampling, threshold: float) -> Resampling: @wraps(func) def _wrapped(key: Array, logits: ArrayLike, positions: ArrayTreeLike, n: int): logits_arr = jnp.asarray(logits) - N = logits.shape[0] + N = logits_arr.shape[0] if n != N: raise AssertionError( "The number of sampled indices must be equal to the number of " From 7678739b4223f710604eb806196553da10951998 Mon Sep 17 00:00:00 2001 From: Sam Duffield Date: Thu, 26 Feb 2026 10:55:34 +0000 Subject: [PATCH 6/8] Type hint output of _wrapped --- cuthbertlib/resampling/adaptive.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cuthbertlib/resampling/adaptive.py b/cuthbertlib/resampling/adaptive.py index 5b5683a6..3dc1cc75 100644 --- a/cuthbertlib/resampling/adaptive.py +++ b/cuthbertlib/resampling/adaptive.py @@ -12,7 +12,7 @@ from cuthbertlib.resampling.protocols import Resampling from cuthbertlib.smc.ess import log_ess -from cuthbertlib.types import Array, ArrayLike, ArrayTreeLike +from cuthbertlib.types import Array, ArrayLike, ArrayTree, ArrayTreeLike def ess_decorator(func: Resampling, threshold: float) -> Resampling: @@ -44,7 +44,9 @@ def ess_decorator(func: Resampling, threshold: float) -> Resampling: """ @wraps(func) - def _wrapped(key: Array, logits: ArrayLike, positions: ArrayTreeLike, n: int): + def _wrapped( + key: Array, logits: ArrayLike, positions: ArrayTreeLike, n: int + ) -> tuple[Array, Array, ArrayTree]: logits_arr = jnp.asarray(logits) N = logits_arr.shape[0] if n != N: From 8310044fedc4dc2f363513121e22f466f2b6f658 Mon Sep 17 00:00:00 2001 From: Sam Duffield Date: Thu, 26 Feb 2026 11:00:18 +0000 Subject: [PATCH 7/8] Tuple -> tuple --- cuthbertlib/resampling/killing.py | 5 ++--- cuthbertlib/resampling/multinomial.py | 5 ++--- cuthbertlib/resampling/protocols.py | 6 +++--- cuthbertlib/resampling/systematic.py | 7 +++---- 4 files changed, 10 insertions(+), 13 deletions(-) diff --git a/cuthbertlib/resampling/killing.py b/cuthbertlib/resampling/killing.py index 8d50956b..131cd095 100644 --- a/cuthbertlib/resampling/killing.py +++ b/cuthbertlib/resampling/killing.py @@ -1,7 +1,6 @@ """Implements killing resampling.""" from functools import partial -from typing import Tuple from jax import numpy as jnp from jax import random @@ -38,7 +37,7 @@ @partial(resampling_decorator, name="Killing", desc=_DESCRIPTION) def resampling( key: Array, logits: ArrayLike, positions: ArrayTreeLike, n: int -) -> Tuple[Array, Array, ArrayTree]: +) -> tuple[Array, Array, ArrayTree]: logits = jnp.asarray(logits) key_1, key_2 = random.split(key) N = logits.shape[0] @@ -70,7 +69,7 @@ def conditional_resampling( n: int, pivot_in: ScalarArrayLike, pivot_out: ScalarArrayLike, -) -> Tuple[Array, Array, ArrayTree]: +) -> tuple[Array, Array, ArrayTree]: pivot_in = jnp.asarray(pivot_in) pivot_out = jnp.asarray(pivot_out) diff --git a/cuthbertlib/resampling/multinomial.py b/cuthbertlib/resampling/multinomial.py index a23dc54b..dd93a585 100644 --- a/cuthbertlib/resampling/multinomial.py +++ b/cuthbertlib/resampling/multinomial.py @@ -1,7 +1,6 @@ """Implements multinomial resampling.""" from functools import partial -from typing import Tuple import jax from jax import numpy as jnp @@ -30,7 +29,7 @@ @partial(resampling_decorator, name="Multinomial", desc=_DESCRIPTION) def resampling( key: Array, logits: ArrayLike, positions: ArrayTreeLike, n: int -) -> Tuple[Array, Array, ArrayTree]: +) -> tuple[Array, Array, ArrayTree]: # In practice we don't have to sort the generated uniforms, but searchsorted # works faster and is more stable if both inputs are sorted, so we use the # _sorted_uniforms from N. Chopin, but still use searchsorted instead of his @@ -54,7 +53,7 @@ def conditional_resampling( n: int, pivot_in: ScalarArrayLike, pivot_out: ScalarArrayLike, -) -> Tuple[Array, Array, ArrayTree]: +) -> tuple[Array, Array, ArrayTree]: pivot_in = jnp.asarray(pivot_in) pivot_out = jnp.asarray(pivot_out) diff --git a/cuthbertlib/resampling/protocols.py b/cuthbertlib/resampling/protocols.py index 493489f7..68312224 100644 --- a/cuthbertlib/resampling/protocols.py +++ b/cuthbertlib/resampling/protocols.py @@ -1,6 +1,6 @@ """Shared protocols for resampling algorithms.""" -from typing import Protocol, Tuple, runtime_checkable +from typing import Protocol, runtime_checkable import jax @@ -48,7 +48,7 @@ class Resampling(Protocol): def __call__( self, key: KeyArray, logits: ArrayLike, positions: ArrayTreeLike, n: int - ) -> Tuple[Array, Array, ArrayTree]: + ) -> tuple[Array, Array, ArrayTree]: f"""Computes resampling indices according to given logits. {_RESAMPLING_DOC} """ @@ -67,7 +67,7 @@ def __call__( n: int, pivot_in: ScalarArrayLike, pivot_out: ScalarArrayLike, - ) -> Tuple[Array, Array, ArrayTree]: + ) -> tuple[Array, Array, ArrayTree]: f"""Conditional resampling. {_CONDITIONAL_RESAMPLING_DOC} """ diff --git a/cuthbertlib/resampling/systematic.py b/cuthbertlib/resampling/systematic.py index f1ffd18e..7cb1c51b 100644 --- a/cuthbertlib/resampling/systematic.py +++ b/cuthbertlib/resampling/systematic.py @@ -1,7 +1,6 @@ """Implements systematic resampling.""" from functools import partial -from typing import Tuple from jax import numpy as jnp from jax import random @@ -30,7 +29,7 @@ @partial(resampling_decorator, name="Systematic", desc=_DESCRIPTION) def resampling( key: Array, logits: ArrayLike, positions: ArrayTreeLike, n: int -) -> Tuple[Array, Array, ArrayTree]: +) -> tuple[Array, Array, ArrayTree]: us = (random.uniform(key, ()) + jnp.arange(n)) / n idx = inverse_cdf(us, logits) logits_out = jnp.zeros_like(us) @@ -45,7 +44,7 @@ def conditional_resampling( n: int, pivot_in: ScalarArrayLike, pivot_out: ScalarArrayLike, -) -> Tuple[Array, Array, ArrayTree]: +) -> tuple[Array, Array, ArrayTree]: logits = jnp.asarray(logits) pivot_in = jnp.asarray(pivot_in) pivot_out = jnp.asarray(pivot_out) @@ -68,7 +67,7 @@ def conditional_resampling_0_to_0( key: Array, logits: ArrayLike, n: int, -) -> Tuple[Array, Array]: +) -> tuple[Array, Array]: logits = jnp.asarray(logits) N = logits.shape[0] From 309c23591a8d63860dba37d768f4188932585261 Mon Sep 17 00:00:00 2001 From: Sam Duffield Date: Thu, 26 Feb 2026 11:00:29 +0000 Subject: [PATCH 8/8] Mention adaptive in README --- cuthbertlib/resampling/README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/cuthbertlib/resampling/README.md b/cuthbertlib/resampling/README.md index c253c836..b532744c 100644 --- a/cuthbertlib/resampling/README.md +++ b/cuthbertlib/resampling/README.md @@ -22,3 +22,16 @@ conditional_resampled_indices, _, conditional_resampled_particles = resampling.m resampling_key, logits, particles, 100, pivot_in=0, pivot_out=0 ) ``` + +Adaptive resampling (i.e. resampling only when the effective sample size is below a +threshold) is also supported via a decorator: + +```python +adaptive_resampling = resampling.adaptive.ess_decorator( + resampling.multinomial.resampling, + threshold=0.5, +) +adaptive_resampled_indices, _, adaptive_resampled_particles = adaptive_resampling( + resampling_key, logits, particles, 100 +) +``` \ No newline at end of file