pub struct SafeScoreGivenTrace {
pub base: Trace,
pub trace: Trace,
pub warn_on_error: bool,
}Expand description
Safe version of ScoreGivenTrace that gracefully handles incomplete traces.
SafeScoreGivenTrace computes log-probability like ScoreGivenTrace, but handles missing addresses or type mismatches by returning negative infinity log-weight instead of panicking. Essential for production inference where trace validity cannot be guaranteed.
Example:
// Create incomplete trace
let mut rng = StdRng::seed_from_u64(42);
let (_, incomplete_trace) = runtime::handler::run(
PriorHandler { rng: &mut rng, trace: Trace::default() },
sample(addr!("x"), Normal::new(0.0, 1.0).unwrap()) // Only has "x"
);
// Safe scoring handles missing address gracefully
let (_, score_trace) = runtime::handler::run(
SafeScoreGivenTrace {
base: incomplete_trace,
trace: Trace::default(),
warn_on_error: true, // Enable warnings
},
sample(addr!("missing"), Normal::new(0.0, 1.0).unwrap()) // Address not in base
);
assert_eq!(score_trace.total_log_weight(), f64::NEG_INFINITY); // Graceful failureFields§
§base: TraceBase trace containing the fixed choices to score.
trace: TraceNew trace to accumulate log-probabilities.
warn_on_error: boolWhether to log warnings on missing addresses or type mismatches.
Trait Implementations§
Source§impl Handler for SafeScoreGivenTrace
impl Handler for SafeScoreGivenTrace
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 SafeScoreGivenTrace
impl RefUnwindSafe for SafeScoreGivenTrace
impl Send for SafeScoreGivenTrace
impl Sync for SafeScoreGivenTrace
impl Unpin for SafeScoreGivenTrace
impl UnwindSafe for SafeScoreGivenTrace
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