From 58838a21d487cc1481bf5744da067eb252facd17 Mon Sep 17 00:00:00 2001 From: Sander Willems Date: Thu, 19 Dec 2024 10:38:07 +0100 Subject: [PATCH 1/6] CHORE: version update --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f9c1b71..612b5a4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1139,7 +1139,7 @@ checksum = "7f4423059b0eec2a116d2b8e4b40d4faaad1b72ae17df8718c66520e0e876885" [[package]] name = "timsrust" -version = "0.4.2" +version = "0.4.3" dependencies = [ "bytemuck", "criterion", diff --git a/Cargo.toml b/Cargo.toml index c40b783..788ec04 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "timsrust" -version = "0.4.2" +version = "0.4.3" edition = "2021" description = "A crate to read Bruker timsTOF data" license = "Apache-2.0" From 5fb1957e0acd56a494a4299ef693e259b6766bda Mon Sep 17 00:00:00 2001 From: Sander Willems Date: Thu, 19 Dec 2024 11:51:48 +0100 Subject: [PATCH 2/6] CHORE: thiserror update --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 788ec04..1923f06 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,7 +18,7 @@ zstd = "0.13.2" rayon = "1.10.0" linreg = "0.2.0" bytemuck = "1.18.0" -thiserror = "1.0.0" +thiserror = "2.0.3" memmap2 = "0.9.3" rusqlite = { version = "0.32.0", features = ["bundled"], optional = true } parquet = { version = "53.0.0", optional = true } From 478f21ebdac9fa6371d936146c18e99b02581ca1 Mon Sep 17 00:00:00 2001 From: Sander Willems Date: Thu, 19 Dec 2024 11:52:08 +0100 Subject: [PATCH 3/6] CHORE: cleaner error message for empty data blobs --- src/io/readers/file_readers/tdf_blob_reader.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/io/readers/file_readers/tdf_blob_reader.rs b/src/io/readers/file_readers/tdf_blob_reader.rs index f5aa4df..b4d2e81 100644 --- a/src/io/readers/file_readers/tdf_blob_reader.rs +++ b/src/io/readers/file_readers/tdf_blob_reader.rs @@ -33,6 +33,9 @@ impl TdfBlobReader { .bin_file_reader .get_data(offset, byte_count) .ok_or(TdfBlobReaderError::CorruptData)?; + if data.len() == 0 { + return Err(TdfBlobReaderError::EmptyData); + } let bytes = decode_all(data).map_err(|_| TdfBlobReaderError::Decompression)?; let blob = TdfBlob::new(bytes)?; @@ -130,6 +133,8 @@ pub enum TdfBlobReaderError { IO(#[from] io::Error), #[error("{0}")] TdfBlob(#[from] TdfBlobError), + #[error("No binary data")] + EmptyData, #[error("Data is corrupt")] CorruptData, #[error("Decompression fails")] From 6b16ce969808146c0624075706d0119fe437a987 Mon Sep 17 00:00:00 2001 From: Sander Willems Date: Thu, 19 Dec 2024 12:05:45 +0100 Subject: [PATCH 4/6] CHORE: removed impossible error --- src/io/readers/frame_reader.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/io/readers/frame_reader.rs b/src/io/readers/frame_reader.rs index 6a0767a..6a28e22 100644 --- a/src/io/readers/frame_reader.rs +++ b/src/io/readers/frame_reader.rs @@ -165,7 +165,7 @@ impl FrameReader { let offset = self.get_binary_offset(index); let blob = self.tdf_bin_reader.get(offset)?; let scan_count: usize = - blob.get(0).ok_or(FrameReaderError::CorruptFrame)? as usize; + blob.get(0).expect("Blob cannot be empty") as usize; let peak_count: usize = (blob.len() - scan_count) / 2; frame.scan_offsets = read_scan_offsets(scan_count, peak_count, &blob)?; frame.intensities = read_intensities(scan_count, peak_count, &blob)?; From 8cad158cecfa88363badcc659603aba0c4a66bf7 Mon Sep 17 00:00:00 2001 From: Sander Willems Date: Tue, 14 Jan 2025 14:44:54 +0100 Subject: [PATCH 5/6] FIX: timscompress updates --- src/io/readers/frame_reader.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/io/readers/frame_reader.rs b/src/io/readers/frame_reader.rs index 6a28e22..8417f3c 100644 --- a/src/io/readers/frame_reader.rs +++ b/src/io/readers/frame_reader.rs @@ -50,8 +50,10 @@ impl FrameReader { let sql_frames = SqlFrame::from_sql_reader(&tdf_sql_reader)?; let tdf_bin_reader = TdfBlobReader::new(&path)?; #[cfg(feature = "timscompress")] - let compressed_reader = CompressedTdfBlobReader::new(&path) - .ok_or_else(|| FrameReaderError::TimscompressError)?; + let compressed_reader = CompressedTdfBlobReader::new( + &path.as_ref().to_path_buf().join("analysis.tdf_bin"), + ) + .ok_or_else(|| FrameReaderError::TimscompressError)?; let acquisition = if sql_frames.iter().any(|x| x.msms_type == 8) { AcquisitionType::DDAPASEF } else if sql_frames.iter().any(|x| x.msms_type == 9) { @@ -189,7 +191,8 @@ impl FrameReader { let offset = self.get_binary_offset(index); let raw_frame = self .compressed_reader - .get_raw_frame_data(offset, self.scan_count); + .get_raw_frame_data(offset, self.scan_count) + .ok_or_else(|| FrameReaderError::TimscompressError)?; frame.tof_indices = raw_frame.tof_indices; frame.intensities = raw_frame.intensities; frame.scan_offsets = raw_frame.scan_offsets; From 8fd6e83ef8bb8001d2587f15e44fa298d3bd3f62 Mon Sep 17 00:00:00 2001 From: Joshua Klein Date: Fri, 31 Jan 2025 21:31:05 -0500 Subject: [PATCH 6/6] chore: make badges in README link to the things they refer to --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index be2aef5..1a1384a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -![Crates.io](https://img.shields.io/crates/v/timsrust?link=https%3A%2F%2Fcrates.io%2Fcrates%2Ftimsrust) -![docs.rs](https://img.shields.io/docsrs/timsrust?link=https%3A%2F%2Fdocs.rs%2Ftimsrust%2F0.2.1%2Ftimsrust%2F) +[![Crates.io](https://img.shields.io/crates/v/timsrust?link=https%3A%2F%2Fcrates.io%2Fcrates%2Ftimsrust)](https://crates.io/crates/timsrust) +[![docs.rs](https://img.shields.io/docsrs/timsrust?link=https%3A%2F%2Fdocs.rs%2Ftimsrust%2F0.2.1%2Ftimsrust%2F)](https://docs.rs/timsrust/0.4.2/timsrust/) # TimsRust