- bump ome-metadata dependency

- make Reader::new error instead of panic if file cannot be read
This commit is contained in:
Wim Pomp
2026-01-04 15:09:23 +01:00
parent 3c14168878
commit 8db873c425
2 changed files with 23 additions and 12 deletions

View File

@@ -1,6 +1,6 @@
[package] [package]
name = "ndbioimage" name = "ndbioimage"
version = "2026.1.0" version = "2026.1.1"
edition = "2024" edition = "2024"
rust-version = "1.85.1" rust-version = "1.85.1"
authors = ["Wim Pomp <w.pomp@nki.nl>"] authors = ["Wim Pomp <w.pomp@nki.nl>"]
@@ -36,7 +36,7 @@ serde_json = { version = "1", optional = true }
serde_with = "3" serde_with = "3"
tiffwrite = { version = "2025.12.0", optional = true} tiffwrite = { version = "2025.12.0", optional = true}
thread_local = "1" thread_local = "1"
ome-metadata = "0.3" ome-metadata = "0.3.2"
lazy_static = "1" lazy_static = "1"
thiserror = "2" thiserror = "2"

View File

@@ -269,15 +269,7 @@ impl Deref for Reader {
type Target = ImageReader; type Target = ImageReader;
fn deref(&self) -> &Self::Target { fn deref(&self) -> &Self::Target {
self.image_reader.get_or(|| { self.get_reader().unwrap()
let reader = ImageReader::new().unwrap();
let meta_data_tools = MetadataTools::new().unwrap();
let ome_meta = meta_data_tools.create_ome_xml_metadata().unwrap();
reader.set_metadata_store(ome_meta).unwrap();
reader.set_id(self.path.to_str().unwrap()).unwrap();
reader.set_series(self.series as i32).unwrap();
reader
})
} }
} }
@@ -322,6 +314,7 @@ impl Reader {
pixel_type: PixelType::I8, pixel_type: PixelType::I8,
little_endian: false, little_endian: false,
}; };
reader.set_reader()?;
reader.size_x = reader.get_size_x()? as usize; reader.size_x = reader.get_size_x()? as usize;
reader.size_y = reader.get_size_y()? as usize; reader.size_y = reader.get_size_y()? as usize;
reader.size_c = reader.get_size_c()? as usize; reader.size_c = reader.get_size_c()? as usize;
@@ -332,6 +325,22 @@ impl Reader {
Ok(reader) Ok(reader)
} }
fn get_reader(&self) -> Result<&ImageReader, Error> {
self.image_reader.get_or_try(|| {
let reader = ImageReader::new()?;
let meta_data_tools = MetadataTools::new()?;
let ome_meta = meta_data_tools.create_ome_xml_metadata()?;
reader.set_metadata_store(ome_meta)?;
reader.set_id(self.path.to_str().ok_or(Error::InvalidFileName)?)?;
reader.set_series(self.series as i32)?;
Ok(reader)
})
}
pub fn set_reader(&self) -> Result<(), Error> {
self.get_reader().map(|_| ())
}
/// Get ome metadata as ome structure /// Get ome metadata as ome structure
pub fn get_ome(&self) -> Result<Ome, Error> { pub fn get_ome(&self) -> Result<Ome, Error> {
let mut ome = self.ome_xml()?.parse::<Ome>()?; let mut ome = self.ome_xml()?.parse::<Ome>()?;
@@ -473,6 +482,8 @@ impl Reader {
impl Drop for Reader { impl Drop for Reader {
fn drop(&mut self) { fn drop(&mut self) {
let _ = self.close(); if let Ok(reader) = self.get_reader() {
reader.close().unwrap();
}
} }
} }