pub struct ScoreGivenTrace {
pub base: Trace,
pub trace: Trace,
}Expand description
Handler for scoring a model given a complete trace of fixed choices.
ScoreGivenTrace computes log-probability of a model execution where all random choices are predetermined. No sampling occurs - values are looked up from the base trace and their log-probabilities computed. Essential for MCMC acceptance ratios, importance sampling, and model comparison.
Example:
// Create a complete trace
let mut rng = StdRng::seed_from_u64(42);
let (_, complete_trace) = runtime::handler::run(
PriorHandler { rng: &mut rng, trace: Trace::default() },
sample(addr!("x"), Normal::new(0.0, 1.0).unwrap())
);
// Score under different model parameters
let (value, score_trace) = runtime::handler::run(
ScoreGivenTrace {
base: complete_trace,
trace: Trace::default()
},
sample(addr!("x"), Normal::new(1.0, 2.0).unwrap()) // Different parameters
);
assert!(score_trace.total_log_weight().is_finite());Fields§
§base: TraceBase trace containing the fixed choices to score.
trace: TraceNew trace to accumulate log-probabilities.
Trait Implementations§
Source§impl Handler for ScoreGivenTrace
impl Handler for ScoreGivenTrace
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.
Auto Trait Implementations§
impl Freeze for ScoreGivenTrace
impl RefUnwindSafe for ScoreGivenTrace
impl Send for ScoreGivenTrace
impl Sync for ScoreGivenTrace
impl Unpin for ScoreGivenTrace
impl UnwindSafe for ScoreGivenTrace
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