From 09fa88dbf2046e507b58a8df7e011d8810c196bb Mon Sep 17 00:00:00 2001 From: Sebastian Wehner Date: Mon, 6 Nov 2023 09:59:02 +0100 Subject: [PATCH] fix: throw error instead of panicking when expected minitdf file formats are not found in provided path. --- .../spectrum_readers/mini_tdf_reader.rs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/file_readers/spectrum_readers/mini_tdf_reader.rs b/src/file_readers/spectrum_readers/mini_tdf_reader.rs index d1aad1f..999bd1d 100644 --- a/src/file_readers/spectrum_readers/mini_tdf_reader.rs +++ b/src/file_readers/spectrum_readers/mini_tdf_reader.rs @@ -14,6 +14,7 @@ use { rayon::prelude::*, std::path::PathBuf, }; +use crate::file_readers::FileFormatError; #[derive(Debug, Default, Clone)] pub struct MiniTDFReader { @@ -24,15 +25,21 @@ pub struct MiniTDFReader { frame_reader: BinFileReader, } -fn find_ms2spectrum_file(ms2_dir_path: &str, extension: String) -> String { +fn find_ms2spectrum_file(ms2_dir_path: &str, extension: String) -> Result { let files = fs::read_dir(ms2_dir_path).unwrap(); for file in files { let filename = file.unwrap().path().file_name().unwrap().to_str().unwrap().to_owned(); if filename.ends_with( std::format!("ms2spectrum.{}", extension).as_str()) { - return filename + return Ok(filename) } } - panic!("No '*.ms2spectrum.{}' file found in '{}'", extension, ms2_dir_path) + let err = match extension.as_str() { + "parquet" => FileFormatError::MetadataFilesAreMissing, + "bin" => FileFormatError::BinaryFilesAreMissing, + _ => FileFormatError::BinaryFilesAreMissing + }; + println!("{}", format!("No '*.ms2spectrum.{}' file found in '{}'", extension, ms2_dir_path)); + return Err(err); } @@ -48,7 +55,7 @@ impl MiniTDFReader { fn read_parquet_file_name(&mut self) { let mut path: PathBuf = PathBuf::from(&self.path_name); - let ms2_parquet_file = find_ms2spectrum_file(&self.path_name, "parquet".to_owned()); + let ms2_parquet_file = find_ms2spectrum_file(&self.path_name, "parquet".to_owned()).unwrap(); path.push(ms2_parquet_file); self.parquet_file_name = path.to_string_lossy().into_owned(); } @@ -59,7 +66,7 @@ impl MiniTDFReader { } fn set_spectrum_reader(&mut self) { let mut path: PathBuf = PathBuf::from(&self.path_name); - let ms2_bin_file = find_ms2spectrum_file(&self.path_name, "bin".to_owned()); + let ms2_bin_file = find_ms2spectrum_file(&self.path_name, "bin".to_owned()).unwrap(); path.push(ms2_bin_file); let file_name: String = path.to_string_lossy().into_owned(); self.frame_reader =