use rayon::prelude::*;
use timsrust::{SpectrumReader, TimsTofPath};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let raw_path = std::env::args()
.nth(1)
.expect("usage: read_spectra_parallel <path-to-data>");
let path = TimsTofPath::new(&raw_path)?;
let reader = SpectrumReader::build().with_path(&path).finalize()?;
let total_peaks: usize = reader
.par_iter()
.filter_map(|spectrum| spectrum.ok())
.map(|spectrum| spectrum.len())
.sum();
println!("Total peaks across {} spectra: {total_peaks}", reader.len(),);
Ok(())
}