in Rust/src/rcf.rs [347:390]
fn generic_score(
&self,
point: &[f32],
ignore_mass: usize,
score_seen: fn(usize, usize) -> f64,
score_unseen: fn(usize, usize) -> f64,
damp: fn(usize, usize) -> f64,
normalizer: fn(f64, usize) -> f64,
) -> f64 {
let mut sum = 0.0;
let new_point = self.point_store.get_shingled_point(point);
sum = if self.parallel_enabled {
self.sampler_plus_trees
.par_iter()
.map(|m| {
m.generic_score(
&new_point,
&self.point_store,
ignore_mass,
score_seen,
score_unseen,
damp,
normalizer,
)
})
.sum()
} else {
self.sampler_plus_trees
.iter()
.map(|m| {
m.generic_score(
&new_point,
&self.point_store,
ignore_mass,
score_seen,
score_unseen,
damp,
normalizer,
)
})
.sum()
};
sum / (self.sampler_plus_trees.len() as f64)
}