pub struct TraceScoringHandler {
pub trace: Trace,
}Expand description
A genuine [fugue::Handler] that scores a fixed trace of choices.
This is the evolutionary counterpart of Fugue’s own
[fugue::runtime::interpreters::ScoreGivenTrace]: it starts from an existing
[Trace] (typically genome.to_trace()), never samples fresh values, and
accumulates log-weights with the correct bookkeeping:
on_sample_*looks the value up in the base trace and adds itsdist.log_prob(value)tolog_prior,on_observe_*addsdist.log_prob(value)tolog_likelihood,on_factoraddslogwtolog_factors,finishreturns the (mutated) trace, whose choices are preserved.
Running the model factor(logw) through this handler therefore produces a
trace with total_log_weight() == logw whose choice map still equals the
original genome — this is exactly how “fitness as likelihood” is injected
into a genome’s probability mass.
Fields§
§trace: TraceThe working trace. Seed it with the genome’s choices to score them.
Implementations§
Trait Implementations§
Source§impl Handler for TraceScoringHandler
impl Handler for TraceScoringHandler
Source§fn on_sample_f64(&mut self, addr: &Address, dist: &dyn Distribution<f64>) -> f64
fn on_sample_f64(&mut self, addr: &Address, dist: &dyn Distribution<f64>) -> f64
Handle an f64 sampling operation (continuous distributions).
Source§fn on_sample_bool(
&mut self,
addr: &Address,
dist: &dyn Distribution<bool>,
) -> bool
fn on_sample_bool( &mut self, addr: &Address, dist: &dyn Distribution<bool>, ) -> bool
Handle a bool sampling operation (Bernoulli).
Source§fn on_sample_u64(&mut self, addr: &Address, dist: &dyn Distribution<u64>) -> u64
fn on_sample_u64(&mut self, addr: &Address, dist: &dyn Distribution<u64>) -> u64
Handle a u64 sampling operation (Poisson, Binomial).
Source§fn on_sample_usize(
&mut self,
addr: &Address,
dist: &dyn Distribution<usize>,
) -> usize
fn on_sample_usize( &mut self, addr: &Address, dist: &dyn Distribution<usize>, ) -> usize
Handle a usize sampling operation (Categorical).
Source§fn on_observe_f64(
&mut self,
_: &Address,
dist: &dyn Distribution<f64>,
value: f64,
)
fn on_observe_f64( &mut self, _: &Address, dist: &dyn Distribution<f64>, value: f64, )
Handle an f64 observation operation.
Source§fn on_observe_bool(
&mut self,
_: &Address,
dist: &dyn Distribution<bool>,
value: bool,
)
fn on_observe_bool( &mut self, _: &Address, dist: &dyn Distribution<bool>, value: bool, )
Handle a bool observation operation.
Source§fn on_observe_u64(
&mut self,
_: &Address,
dist: &dyn Distribution<u64>,
value: u64,
)
fn on_observe_u64( &mut self, _: &Address, dist: &dyn Distribution<u64>, value: u64, )
Handle a u64 observation operation.
Source§fn on_observe_usize(
&mut self,
_: &Address,
dist: &dyn Distribution<usize>,
value: usize,
)
fn on_observe_usize( &mut self, _: &Address, dist: &dyn Distribution<usize>, value: usize, )
Handle a usize observation operation.
§fn on_sample_i64(
&mut self,
addr: &Address,
_dist: &dyn Distribution<i64>,
) -> i64
fn on_sample_i64( &mut self, addr: &Address, _dist: &dyn Distribution<i64>, ) -> i64
Handle an i64 sampling operation (signed discrete distributions). Read more
§fn on_observe_i64(
&mut self,
addr: &Address,
_dist: &dyn Distribution<i64>,
_value: i64,
)
fn on_observe_i64( &mut self, addr: &Address, _dist: &dyn Distribution<i64>, _value: i64, )
Handle an i64 observation operation. Read more
Auto Trait Implementations§
impl Freeze for TraceScoringHandler
impl RefUnwindSafe for TraceScoringHandler
impl Send for TraceScoringHandler
impl Sync for TraceScoringHandler
impl Unpin for TraceScoringHandler
impl UnsafeUnpin for TraceScoringHandler
impl UnwindSafe for TraceScoringHandler
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.