From 034b879e3f73fcc525577dd01ff455b8e9829e32 Mon Sep 17 00:00:00 2001 From: Wim Pomp Date: Sun, 4 Jan 2026 16:49:12 +0100 Subject: [PATCH] - change all Option> into Vec<_> - add multi-channel.ome test --- Cargo.toml | 2 +- src/lib.rs | 1 + src/ome.rs | 60 ++++++++++++++++++------------------- tests/multi-channel.ome.xml | 1 + 4 files changed, 33 insertions(+), 31 deletions(-) create mode 100644 tests/multi-channel.ome.xml diff --git a/Cargo.toml b/Cargo.toml index 167fc3f..2165e65 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ome-metadata" -version = "0.3.3" +version = "0.4.0" edition = "2024" rust-version = "1.85.1" authors = ["Wim Pomp "] diff --git a/src/lib.rs b/src/lib.rs index cfaa233..34ccd7f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -48,5 +48,6 @@ mod tests { i: "beads_2023_05_04__19_00_22" j: "20230511-p53-4x-CMV-1min-4h-01-Airyscan Processing-01" k: "YTL1849A131_2023_05_04__13_36_36" + l: "multi-channel.ome" ); } diff --git a/src/ome.rs b/src/ome.rs index 3fb00e1..c68a29c 100644 --- a/src/ome.rs +++ b/src/ome.rs @@ -1584,30 +1584,30 @@ pub struct Ome { pub creator: Option, #[serde(rename = "Rights")] pub rights: Option, - #[serde(rename = "Project")] - pub project: Option>, - #[serde(rename = "Dataset")] - pub dataset: Option>, - #[serde(rename = "Folder")] - pub folder: Option>, - #[serde(rename = "Experiment")] - pub experiment: Option>, - #[serde(rename = "Plate")] - pub plate: Option>, - #[serde(rename = "Screen")] - pub screen: Option>, - #[serde(rename = "Experimenter")] - pub experimenter: Option>, - #[serde(rename = "ExperimenterGroup")] - pub experimenter_group: Option>, - #[serde(rename = "Instrument")] - pub instrument: Option>, - #[serde(rename = "Image")] - pub image: Option>, + #[serde(default, rename = "Project")] + pub project: Vec, + #[serde(default, rename = "Dataset")] + pub dataset: Vec, + #[serde(default, rename = "Folder")] + pub folder: Vec, + #[serde(default, rename = "Experiment")] + pub experiment: Vec, + #[serde(default, rename = "Plate")] + pub plate: Vec, + #[serde(default, rename = "Screen")] + pub screen: Vec, + #[serde(default, rename = "Experimenter")] + pub experimenter: Vec, + #[serde(default, rename = "ExperimenterGroup")] + pub experimenter_group: Vec, + #[serde(default, rename = "Instrument")] + pub instrument: Vec, + #[serde(default, rename = "Image")] + pub image: Vec, #[serde(rename = "StructuredAnnotations")] pub structured_annotations: Option, - #[serde(rename = "ROI")] - pub roi: Option>, + #[serde(default, rename = "ROI")] + pub roi: Vec, #[serde(rename = "BinaryOnly")] pub binary_only: Option, } @@ -1812,16 +1812,16 @@ pub struct Pixels { rename = "@TimeIncrementUnit" )] pub time_increment_unit: UnitsTime, - #[serde(rename = "Channel")] - pub channel: Option>, - #[serde(rename = "BinData")] - pub bin_data: Option>, - #[serde(rename = "TiffData")] - pub tiff_data: Option>, + #[serde(default, rename = "Channel")] + pub channel: Vec, + #[serde(default, rename = "BinData")] + pub bin_data: Vec, + #[serde(default, rename = "TiffData")] + pub tiff_data: Vec, #[serde(rename = "MetadataOnly")] pub metadata_only: Option, - #[serde(rename = "Plane")] - pub plane: Option>, + #[serde(default, rename = "Plane")] + pub plane: Vec, } impl Pixels { pub fn default_physical_size_x_unit() -> UnitsLength { diff --git a/tests/multi-channel.ome.xml b/tests/multi-channel.ome.xml new file mode 100644 index 0000000..475176d --- /dev/null +++ b/tests/multi-channel.ome.xml @@ -0,0 +1 @@ +urn:uuid:bebd2be7-8253-4b90-be93-4df567ffe1beurn:uuid:bebd2be7-8253-4b90-be93-4df567ffe1beurn:uuid:bebd2be7-8253-4b90-be93-4df567ffe1be \ No newline at end of file