pub fn evaluate(
episodes: &[Episode],
windows: &[PerturbationWindow],
total_residual_samples_per_motif: &HashMap<MotifClass, usize>,
trace_duration_s: f64,
) -> Vec<PerMotifMetrics>Expand description
Compute per-motif precision / recall / F1 / TTD against perturbation
windows. An episode is a TP if its [t_start, t_end] overlaps the
matching-class perturbation window for the same channel.