in Rust/src/rcf.rs [392:442]
fn generic_conditional_field(
&self,
positions: &[usize],
point: &[f32],
centrality: f64,
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,
) -> Vec<usize> {
let new_point = self.point_store.get_shingled_point(point);
let new_positions = self.point_store.get_missing_values(positions);
let mut list: Vec<usize> = if self.parallel_enabled {
self.sampler_plus_trees
.par_iter()
.map(|m| {
m.conditional_field(
&new_positions,
centrality,
&new_point,
&self.point_store,
ignore_mass,
score_seen,
score_unseen,
damp,
normalizer,
)
})
.collect()
} else {
self.sampler_plus_trees
.iter()
.map(|m| {
m.conditional_field(
&new_positions,
centrality,
&new_point,
&self.point_store,
ignore_mass,
score_seen,
score_unseen,
damp,
normalizer,
)
})
.collect()
};
list.sort();
list
}