pub fn project_time_legacy(
rt_mus: &[f64],
rt_sigmas: &[f64],
rt_lambdas: &[f64],
frame_ids: &[u32],
frame_times: &[f64],
rt_cycle_length: f64,
target_p: f64,
step_size: f64,
n_steps: Option<usize>,
remove_epsilon: f64,
num_threads: usize,
) -> Vec<Vec<(u32, f64)>>Expand description
LegacyCompat time projection: reproduce frame_occurrence/frame_abundance
over the full frames table, exactly as simulate_frame_distributions_emg
did. Inputs are taken at f64 (the precision the legacy pipeline used) —
NOT the f32 trunk entities — so the result is bit-faithful: rt_mus,
rt_sigmas, rt_lambdas are per-peptide EMG params (rt_mu, not the GRU
apex); frame_ids/frame_times are the whole frames table ascending by id.
Occurrence positions (1-indexed into frame_times) are translated to frame
ids via frame_ids[pos-1]; the remove_epsilon filter drops frames whose
abundance is <= remove_epsilon (matching the legacy job). Returns
(frame_id, abundance) per peptide.