- read ome xml tiff
This commit is contained in:
1 parent
7f07f82fdb
commit
4815690621
3 files changed
+27
-4
No files matched your search
+1
-1
Submodule image-tiff updated: 96d37bb087...9b452e93b7.
@@ -33,7 +33,7 @@ libczirw-sys = { version = "0.5", optional = true }
|
|||||||
ndarray = { version = "0.17", features = ["serde"] }
|
ndarray = { version = "0.17", features = ["serde"] }
|
||||||
num = "0.4"
|
num = "0.4"
|
||||||
numpy = { version = "0.29", optional = true }
|
numpy = { version = "0.29", optional = true }
|
||||||
ome-metadata = "0.5"
|
ome-metadata = "0.6"
|
||||||
ordered-float = { version = "5", optional = true }
|
ordered-float = { version = "5", optional = true }
|
||||||
phf = { version = "0.14", features = ["macros"] }
|
phf = { version = "0.14", features = ["macros"] }
|
||||||
postcard = { version = "1", features = ["use-std"], optional = true }
|
postcard = { version = "1", features = ["use-std"], optional = true }
|
||||||
|
|||||||
@@ -156,6 +156,18 @@ impl Reader for TiffReader {
|
|||||||
.unwrap_or(1)
|
.unwrap_or(1)
|
||||||
== 2;
|
== 2;
|
||||||
|
|
||||||
|
let image_description = reader.current_ifd().get_tag(Tag::ImageDescription);
|
||||||
|
let p_ndim = if n_samples > 1 { 3u8 } else { 2u8 };
|
||||||
|
let (size_c, size_t, size_z) = if let Ok(Value::Ascii(xml)) = image_description
|
||||||
|
&& xml.starts_with("<?xml")
|
||||||
|
{
|
||||||
|
let ome = Ome::from_xml(xml)?;
|
||||||
|
(
|
||||||
|
ome.image[0].pixels.size_c as usize,
|
||||||
|
ome.image[0].pixels.size_t as usize,
|
||||||
|
ome.image[0].pixels.size_z as usize,
|
||||||
|
)
|
||||||
|
} else {
|
||||||
let imagej_bytes = reader
|
let imagej_bytes = reader
|
||||||
.current_ifd()
|
.current_ifd()
|
||||||
.get_tag(Tag::Unknown(50839))
|
.get_tag(Tag::Unknown(50839))
|
||||||
@@ -166,7 +178,7 @@ impl Reader for TiffReader {
|
|||||||
};
|
};
|
||||||
let metadata_str = String::from_utf8_lossy(&imagej_bytes);
|
let metadata_str = String::from_utf8_lossy(&imagej_bytes);
|
||||||
let metadata_map = parse_imagej_metadata(&metadata_str);
|
let metadata_map = parse_imagej_metadata(&metadata_str);
|
||||||
let p_ndim = if n_samples > 1 { 3u8 } else { 2u8 };
|
|
||||||
let size_c = if p_ndim == 3 {
|
let size_c = if p_ndim == 3 {
|
||||||
n_samples
|
n_samples
|
||||||
} else {
|
} else {
|
||||||
@@ -198,6 +210,8 @@ impl Reader for TiffReader {
|
|||||||
} else {
|
} else {
|
||||||
size_z
|
size_z
|
||||||
};
|
};
|
||||||
|
(size_c, size_t, size_z)
|
||||||
|
};
|
||||||
drop(reader);
|
drop(reader);
|
||||||
|
|
||||||
new.shape = Shape {
|
new.shape = Shape {
|
||||||
@@ -220,6 +234,12 @@ impl Reader for TiffReader {
|
|||||||
|
|
||||||
fn metadata(&self) -> Result<Ome, Error> {
|
fn metadata(&self) -> Result<Ome, Error> {
|
||||||
let mut reader = self.get_reader()?;
|
let mut reader = self.get_reader()?;
|
||||||
|
let image_description = reader.current_ifd().get_tag(Tag::ImageDescription);
|
||||||
|
if let Ok(Value::Ascii(xml)) = image_description
|
||||||
|
&& xml.starts_with("<?xml")
|
||||||
|
{
|
||||||
|
Ok(Ome::from_xml(xml)?)
|
||||||
|
} else {
|
||||||
let imagej_bytes = reader
|
let imagej_bytes = reader
|
||||||
.current_ifd()
|
.current_ifd()
|
||||||
.get_tag(Tag::Unknown(50839))
|
.get_tag(Tag::Unknown(50839))
|
||||||
@@ -354,6 +374,7 @@ impl Reader for TiffReader {
|
|||||||
});
|
});
|
||||||
Ok(ome)
|
Ok(ome)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn get_frame(&self, c: usize, z: usize, t: usize) -> Result<Frame, Error> {
|
fn get_frame(&self, c: usize, z: usize, t: usize) -> Result<Frame, Error> {
|
||||||
let (page_idx, offset, stride) = if self.p_ndim == 3 {
|
let (page_idx, offset, stride) = if self.p_ndim == 3 {
|
||||||
@@ -521,6 +542,8 @@ mod tests {
|
|||||||
metadata_e: "tiff/1xp53-01-AP1.tiff",
|
metadata_e: "tiff/1xp53-01-AP1.tiff",
|
||||||
metadata_f: "tiff/test.tif",
|
metadata_f: "tiff/test.tif",
|
||||||
metadata_g: "tiff/YTL1849A111_2023_05_04__14_46_19_cellnr_1_track.tif",
|
metadata_g: "tiff/YTL1849A111_2023_05_04__14_46_19_cellnr_1_track.tif",
|
||||||
metadata_h: "tiff/Wapl-AID_C46_13_tagRFPt_MCP_well1_video1_1_max.tif"
|
metadata_h: "tiff/Wapl-AID_C46_13_tagRFPt_MCP_well1_video1_1_max.tif",
|
||||||
|
metadata_i: "tiff/R1_NRF1_Gtf3a500nM_REAL_20260731_25pct_500ms_001_MMStack_PosR1_NRF1_Gtf3a500nM_REAL_20260731_25pct_500ms_001.ome.tif"
|
||||||
|
metadata_j: "tiff/20260922_Pos0_max.tif"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user