diff --git a/.gitignore b/.gitignore index 35db05af..7330b585 100644 --- a/.gitignore +++ b/.gitignore @@ -42,5 +42,5 @@ data # data folder data/ tests/data -uv.lock -.asv/ +.venv +.uv.lock diff --git a/src/spatialdata_io/readers/macsima.py b/src/spatialdata_io/readers/macsima.py index 2b4493f4..40333960 100644 --- a/src/spatialdata_io/readers/macsima.py +++ b/src/spatialdata_io/readers/macsima.py @@ -38,6 +38,7 @@ "B": "bleach", # v1 "AntigenCycle": "stain", # v0 "S": "stain", # v1 + "AF": "autofluorescence", # v1 } @@ -499,7 +500,7 @@ def _parse_v0_ome_metadata(ome: OME) -> dict[str, Any]: # Harmonize imagetype across versions if metadata["imagetype"]: - metadata["imagetype"] = IMAGETYPE_DICT[metadata["imagetype"]] + metadata["imagetype"] = IMAGETYPE_DICT.get(metadata["imagetype"], metadata["imagetype"]) return metadata @@ -579,7 +580,7 @@ def _parse_v1_ome_metadata(ome: OME) -> dict[str, Any]: # Harmonize imagetype across versions if metadata["imagetype"]: - metadata["imagetype"] = IMAGETYPE_DICT[metadata["imagetype"]] + metadata["imagetype"] = IMAGETYPE_DICT.get(metadata["imagetype"], metadata["imagetype"]) return metadata diff --git a/tests/test_macsima.py b/tests/test_macsima.py index db701b52..72b33fbe 100644 --- a/tests/test_macsima.py +++ b/tests/test_macsima.py @@ -551,6 +551,26 @@ def test_parse_v0_ome_metadata_bleach_cycle_appends_background() -> None: assert md["name"] == "CD4_background" +def test_parse_v0_ome_metadata_handles_unknown_imagetypes() -> None: + ome = OME( + structured_annotations=StructuredAnnotations( + map_annotations=[ + MapAnnotation( + value={ + "MICS cycle type": "NOT A VALID TYPE", + } + ) + ] + ), + screens=[Screen(reagents=[Reagent(name="CD4__RPA-T4")])], + ) + + md = _parse_v0_ome_metadata(ome) + + # Unknown types should just be passed through + assert md["imagetype"] == "NOT A VALID TYPE" + + def test_parse_v1_ome_metadata_basic_extraction_and_conversions() -> None: ome = OME( structured_annotations=StructuredAnnotations( @@ -605,6 +625,26 @@ def test_parse_v1_ome_metadata_invalid_numerics_become_none() -> None: assert md["roi"] is None +def test_parse_v1_ome_metadata_handles_unknown_imagetypes() -> None: + ome = OME( + structured_annotations=StructuredAnnotations( + map_annotations=[ + MapAnnotation( + value={ + "ScanType": "NOT A VALID TYPE", + } + ) + ] + ), + screens=[Screen(reagents=[Reagent(name="CD4__RPA-T4")])], + ) + + md = _parse_v1_ome_metadata(ome) + + # Unknown types should just be passed through + assert md["imagetype"] == "NOT A VALID TYPE" + + def make_ome_with_version(version_value: str, extra_ma: dict[str, Any] | None = None) -> OME: base = {"SoftwareVersion": version_value} if extra_ma: