get_chromatogram_by/
get_chromatogram_by.rs1use std::{env, io, path};
2
3use log::info;
4use mzdata::io::MZReader;
5use mzdata::prelude::*;
6
7fn main() -> io::Result<()> {
8 env_logger::init();
9 let mut args = env::args().skip(1);
10
11 let path = path::PathBuf::from(args.next().expect("Please pass an MS data file path"));
12
13 let key = args
14 .next()
15 .expect("Please provide a key type, \"id\" or \"index\"");
16 let key_value = args
17 .next()
18 .expect("Please provide a key value matching the key type");
19
20 info!("Opening {}", path.display());
21 let mut reader = MZReader::open_path(path)?;
22
23 let chrom = match key.as_str() {
24 "id" => reader.get_chromatogram_by_id(&key_value).unwrap(),
25 "index" => reader
26 .get_chromatogram_by_index(key_value.parse().unwrap())
27 .unwrap(),
28 _ => {
29 panic!("Unknown key type {}", key);
30 }
31 };
32
33 println!("ID: {}; Index: {};", chrom.id(), chrom.index(),);
34 println!("Type: {:?}", chrom.chromatogram_type());
35 if let Some(product) = chrom.product() {
36 println!("Product: {:?}", product);
37 }
38 Ok(())
39}