sequince.steps.mutation.metrics.base#
Metric interfaces and collection lifecycle.
Classes#
Static metric configuration with explicit, fixed-structure pytree state. |
|
Static metric collection with pure operations on MutationStepState. |
Module Contents#
- class sequince.steps.mutation.metrics.base.MutationMetric[source]#
Bases:
ProtocolStatic metric configuration with explicit, fixed-structure pytree state.
updatemust be pure: (old state, transition) -> new state. Never mutate Python attributes or input arrays. Arrays, tuples, dictionaries and registered pytree dataclasses are all valid states. Shapes and dtypes must remain fixed under JIT.acceptedis a per-particle boolean mask.An optional
prepare(state, particles, context)method prepares existing state for the next mutation segment, preserving accumulated measurements. It must return state without mutating its input; absent means no-op.Every update accepts the keyword-only
transitionargument. Metrics needing displacement and kernel auxiliary declareneeds_transition = True; otherwise mutations may omit this work and pass None. The flag is optional and defaults to False. Auxiliary data remains opaque to the collection.- initialize(particles, log_weights, context)[source]#
- Parameters:
particles (sequince.typing.Array)
log_weights (sequince.typing.Array)
context (sequince.steps.context.StepContext)
- Return type:
Any
- update(state, particles, accepted, context, *, transition=None)[source]#
- Parameters:
state (Any)
particles (sequince.typing.Array)
accepted (sequince.typing.Array)
context (sequince.steps.context.StepContext)
transition (sequince.steps.mutation.metrics.state.MutationTransition | None)
- Return type:
Any
- result(state, context)[source]#
- Parameters:
state (Any)
context (sequince.steps.context.StepContext)
- Return type:
Any
- class sequince.steps.mutation.metrics.base.MutationMetrics(metrics=())[source]#
Static metric collection with pure operations on MutationStepState.
Initialize once per block, update once per population transition, and compute results only at the complete block boundary. Preparing the next segment preserves accumulated measurements. The collection holds configuration only; runtime state is always returned explicitly.
- Parameters:
metrics (collections.abc.Sequence[MutationMetric])
- initialize(particles, log_weights, context)[source]#
Initialize metric state and zero acceptance counters for a new block.
- Parameters:
particles (sequince.typing.Array)
log_weights (sequince.typing.Array)
context (sequince.steps.context.StepContext)
- Return type:
- prepare(metric_state, particles, context)[source]#
Prepare existing metric state for the next segment, retaining totals.
- Parameters:
metric_state (sequince.steps.mutation.metrics.state.MutationStepState)
particles (sequince.typing.Array)
context (sequince.steps.context.StepContext)
- Return type:
- update(metric_state, particles, accepted, context, *, transition=None)[source]#
Record one population transition without changing the input state.
- Parameters:
metric_state (sequince.steps.mutation.metrics.state.MutationStepState)
particles (sequince.typing.Array)
accepted (sequince.typing.Array)
context (sequince.steps.context.StepContext)
transition (sequince.steps.mutation.metrics.state.MutationTransition | None)
- Return type:
- result(metric_state, context)[source]#
Collect final results at the outermost block boundary.
- Parameters:
metric_state (sequince.steps.mutation.metrics.state.MutationStepState | None)
context (sequince.steps.context.StepContext)
- Return type:
sequince.steps.mutation.metrics.state.MutationMetricsOutput | None