Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
884 changes: 472 additions & 412 deletions Cargo.lock

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "mzdata"
version = "0.59.3"
edition = "2021"
edition = "2024"
keywords = ['mass-spectrometry', 'mzml', 'mgf']

categories = ["science", "parser-implementations", "data-structures"]
Expand Down
2 changes: 1 addition & 1 deletion benches/mzml.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use criterion::{black_box, criterion_group, criterion_main, Criterion};
use criterion::{Criterion, black_box, criterion_group, criterion_main};

use std::fs;

Expand Down
3 changes: 2 additions & 1 deletion examples/async_mzcat.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@ async fn scan_file(reader: &mut mzml::AsyncMzMLReader<fs::File>) {
#[tokio::main(flavor = "multi_thread", worker_threads = 10)]
async fn main() -> io::Result<()> {
let path = path::PathBuf::from(
env::args().nth(1)
env::args()
.nth(1)
.expect("Please pass an MS data file path"),
);
if let Some(ext) = path.extension() {
Expand Down
4 changes: 2 additions & 2 deletions examples/from_stdin.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ use std::io::{self, Seek};
use std::time::Instant;

use mzdata::io::{
infer_from_stream, MassSpectrometryFormat, PreBufferedStream, RestartableGzDecoder,
SpectrumSource,
MassSpectrometryFormat, PreBufferedStream, RestartableGzDecoder, SpectrumSource,
infer_from_stream,
};
use mzdata::{MGFReader, MzMLReader};

Expand Down
12 changes: 10 additions & 2 deletions examples/get_scan_by.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,16 @@ fn main() -> io::Result<()> {
};

// dbg!(spectrum);
println!("ID: {}; Index: {}; Time: {}", spectrum.id(), spectrum.index(), spectrum.start_time());
println!("Num data points: {}", spectrum.raw_arrays().unwrap().mzs().unwrap().len());
println!(
"ID: {}; Index: {}; Time: {}",
spectrum.id(),
spectrum.index(),
spectrum.start_time()
);
println!(
"Num data points: {}",
spectrum.raw_arrays().unwrap().mzs().unwrap().len()
);

Ok(())
}
2 changes: 1 addition & 1 deletion examples/infer_format.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use std::env;
use std::io;
use std::process::exit;

use mzdata::io::{infer_format, infer_from_stream, PreBufferedStream};
use mzdata::io::{PreBufferedStream, infer_format, infer_from_stream};

fn main() -> io::Result<()> {
let input = env::args().nth(1).unwrap_or_else(|| {
Expand Down
2 changes: 1 addition & 1 deletion examples/mzcat.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use std::time;
use std::{env, io, path};

use mzdata::spectrum::MultiLayerSpectrum;
use mzdata::{prelude::*, MZReader};
use mzdata::{MZReader, prelude::*};
use rayon::prelude::*;

fn scan_file<R: MZFileReader + Iterator<Item = MultiLayerSpectrum> + Send>(reader: &mut R) {
Expand Down
36 changes: 21 additions & 15 deletions examples/mzconvert.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,31 @@ use std::any::Any;
use std::fs::File;
use std::io;
use std::path::PathBuf;
use std::sync::{mpsc::sync_channel, Arc, atomic::{AtomicU64, Ordering as AtomicOrdering}};
use std::sync::{
Arc,
atomic::{AtomicU64, Ordering as AtomicOrdering},
mpsc::sync_channel,
};
use std::thread;
use std::time;

use clap::Parser;

use log::info;
use mzdata::io::MassSpectrometryFormat;
use mzdata::io::{checksum_file, MassSpectrometryReadWriteProcess, Sink, Source};
use mzdata::meta::custom_software_name;
use mzdata::io::{MassSpectrometryReadWriteProcess, Sink, Source, checksum_file};
use mzdata::meta::Software;
use mzdata::meta::custom_software_name;
use mzdata::meta::{DataProcessing, ProcessingMethod, SourceFile};
use mzdata::params::ControlledVocabulary;
use mzdata::prelude::*;

use mzdata::spectrum::bindata::BinaryCompressionType;
use mzdata::MzMLWriter;
use mzdata::spectrum::ArrayType;
use mzdata::spectrum::ArrayType::IntensityArray;
use mzdata::spectrum::ArrayType::MZArray;
use mzdata::spectrum::BinaryDataArrayType;
use mzdata::MzMLWriter;
use mzdata::spectrum::bindata::BinaryCompressionType;
use mzpeaks::{CentroidPeak, DeconvolutedPeak};

fn compression_parser(compression: &str) -> Result<BinaryCompressionType, String> {
Expand All @@ -32,9 +36,11 @@ fn compression_parser(compression: &str) -> Result<BinaryCompressionType, String
compression.to_string()
};

BinaryCompressionType::COMPRESSION_METHODS.iter().find(|x| {
x.as_param().unwrap().name() == compression
}).copied().ok_or_else(|| compression.to_string())
BinaryCompressionType::COMPRESSION_METHODS
.iter()
.find(|x| x.as_param().unwrap().name() == compression)
.copied()
.ok_or_else(|| compression.to_string())
}

#[derive(Debug, Clone, Parser)]
Expand All @@ -44,7 +50,7 @@ pub struct MZConvert {
#[arg()]
pub outpath: String,

#[arg(short='b', long, default_value_t=8192)]
#[arg(short = 'b', long, default_value_t = 8192)]
pub buffer_size: usize,

#[arg(long, value_parser=compression_parser, default_value="zlib compression")]
Expand Down Expand Up @@ -91,7 +97,7 @@ impl MZConvert {
mut writer: W,
) -> io::Result<()> {
let (send, recv) = sync_channel(self.buffer_size);
let buffered= Arc::new(AtomicU64::default());
let buffered = Arc::new(AtomicU64::default());
let buffered_w = Arc::clone(&buffered);
let reader_handle = thread::spawn(move || {
reader.enumerate().for_each(|(i, s)| {
Expand All @@ -111,9 +117,10 @@ impl MZConvert {
for s in recv.iter() {
let i = s.index();
buffered_w.fetch_sub(1, AtomicOrdering::SeqCst);
writer.write_owned(s).inspect_err(|e| {
log::error!("Failed to write spectrum {i}: {e}")
}).unwrap();
writer
.write_owned(s)
.inspect_err(|e| log::error!("Failed to write spectrum {i}: {e}"))
.unwrap();
}
writer.close().unwrap();
});
Expand Down Expand Up @@ -190,7 +197,6 @@ impl MZConvert {
self.ion_mobility_compression,
);
}

}
}
}
Expand Down Expand Up @@ -251,7 +257,7 @@ impl MassSpectrometryReadWriteProcess<CentroidPeak, DeconvolutedPeak> for MZConv
Default::default()
} else {
info!("Computing checksum for {}", pb.display());

checksum_file(&pb)?
};
let has_already = reader
Expand Down
16 changes: 9 additions & 7 deletions examples/mzinfo.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ use std::time;

use std::sync::mpsc::sync_channel;

use mzdata::MZReader;
use mzdata::io::Source;
use mzdata::prelude::*;
use mzdata::spectrum::{
DeconvolutedSpectrum, MultiLayerSpectrum, RefPeakDataLevel, SignalContinuity, SpectrumLike,
};
use mzdata::MZReader;

struct MSDataFileSummary {
pub start_time: f64,
Expand All @@ -22,7 +22,7 @@ struct MSDataFileSummary {
pub charge_table: HashMap<i32, usize>,
pub peak_charge_table: HashMap<u8, HashMap<i32, usize>>,
pub peak_mode_table: HashMap<SignalContinuity, usize>,
pub has_ion_mobility: bool
pub has_ion_mobility: bool,
}

impl Default for MSDataFileSummary {
Expand Down Expand Up @@ -112,11 +112,10 @@ impl MSDataFileSummary {
let start = time::Instant::now();
let (sender, receiver) = sync_channel(2usize.pow(12));
let read_handle = spawn(move || {
reader.into_iter()
reader
.into_iter()
.enumerate()
.for_each(|(i, scan)| {
sender.send((i, scan)).unwrap()
});
.for_each(|(i, scan)| sender.send((i, scan)).unwrap());
});
let i = receiver.iter().fold(0, |_, (i, scan)| {
if i % 10000 == 0 && i > 0 {
Expand All @@ -134,7 +133,10 @@ impl MSDataFileSummary {
read_handle.join().unwrap();
let end = time::Instant::now();
let elapsed = end - start;
println!("{:0.3} seconds elapsed, handled {i} spectra", elapsed.as_secs_f64());
println!(
"{:0.3} seconds elapsed, handled {i} spectra",
elapsed.as_secs_f64()
);
}

pub fn write_out(&self) {
Expand Down
2 changes: 1 addition & 1 deletion src/io/compression.rs
Original file line number Diff line number Diff line change
Expand Up @@ -115,4 +115,4 @@ mod test {
assert!(buf.contains("controllerType=0 controllerNumber=1 scan=1"));
Ok(())
}
}
}
Loading
Loading