Skip to content

Commit a6dc25f

Browse files
committed
Fall back to MICS cycle ID if Cycle is not present in v0 metadata
1 parent dfb7d8e commit a6dc25f

2 files changed

Lines changed: 32 additions & 0 deletions

File tree

src/spatialdata_io/readers/macsima.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -456,8 +456,12 @@ def _parse_v0_ome_metadata(ome: OME) -> dict[str, Any]:
456456
except (TypeError, ValueError):
457457
metadata["exposure"] = None
458458

459+
cyc = None
459460
if "Cycle" in ma_values:
460461
cyc = ma_values["Cycle"]
462+
elif "MICS cycle ID" in ma_values: # Very old formats do not have "Cycle", then use "MICS cycle ID"
463+
cyc = ma_values["MICS cycle ID"]
464+
if cyc:
461465
try:
462466
metadata["cycle"] = int(cyc)
463467
except (TypeError, ValueError):

tests/test_macsima.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,34 @@ def test_parse_v0_ome_metadata_handles_missing_or_invalid_numeric_fields() -> No
469469
assert md["well"] is None
470470

471471

472+
def test_parse_v0_ome_metadata_falls_back_to_MICScycleID_if_no_cycle_keyword() -> None:
473+
ome = OME(
474+
structured_annotations=StructuredAnnotations(
475+
map_annotations=[
476+
MapAnnotation(
477+
value={
478+
"MICS cycle ID": "5",
479+
}
480+
)
481+
]
482+
),
483+
)
484+
485+
md = _parse_v0_ome_metadata(ome)
486+
assert md["cycle"] == 5
487+
488+
489+
def test_parse_v0_ome_metadata_prefers_Cycle_over_MICScycleID_keyword() -> None:
490+
ome = OME(
491+
structured_annotations=StructuredAnnotations(
492+
map_annotations=[MapAnnotation(value={"MICS cycle ID": "5", "Cycle": "1"})]
493+
),
494+
)
495+
496+
md = _parse_v0_ome_metadata(ome)
497+
assert md["cycle"] == 1
498+
499+
472500
def test_parse_v0_ome_metadata_bleach_cycle_appends_background() -> None:
473501
ome = OME(
474502
structured_annotations=StructuredAnnotations(

0 commit comments

Comments
 (0)