From 10b320a81968b35feb3d7785d3df24bcea658b43 Mon Sep 17 00:00:00 2001 From: Chris Markiewicz Date: Fri, 30 Aug 2024 17:19:22 -0400 Subject: [PATCH] fix(schema): Update microscopy pixel size checks to account for error and OME convention --- src/schema/rules/checks/micr.yaml | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/src/schema/rules/checks/micr.yaml b/src/schema/rules/checks/micr.yaml index 7e78ab905a..431113cc10 100644 --- a/src/schema/rules/checks/micr.yaml +++ b/src/schema/rules/checks/micr.yaml @@ -12,15 +12,32 @@ PixelSizeInconsistent: - sidecar.PixelSize != null - sidecar.PixelSizeUnits != null checks: + # Note that OME-XML uses µm for microns and BIDS uses um + # Accept an error up to .001 of the BIDS unit, to account for floating point error - | - ome.PhysicalSizeX * 10 ** (-3 * index(["mm", "um", "nm"], ome.PhysicalSizeXUnit)) - == sidecar.PixelSize[0] * 10 ** (-3 * index(["mm", "um", "nm"], sidecar.PixelSizeUnits)) + ome.PhysicalSizeX * 10 ** (-3 * index(["mm", "µm", "nm"], ome.PhysicalSizeXUnit)) + - sidecar.PixelSize[0] * 10 ** (-3 * index(["mm", "um", "nm"], sidecar.PixelSizeUnits)) + < 0.001 * 10 ** (-3 * index(["mm", "um", "nm"], sidecar.PixelSizeUnits)) - | - ome.PhysicalSizeY * 10 ** (-3 * index(["mm", "um", "nm"], ome.PhysicalSizeYUnit)) - == sidecar.PixelSize[1] * 10 ** (-3 * index(["mm", "um", "nm"], sidecar.PixelSizeUnits)) + sidecar.PixelSize[0] * 10 ** (-3 * index(["mm", "um", "nm"], sidecar.PixelSizeUnits)) + - ome.PhysicalSizeX * 10 ** (-3 * index(["mm", "µm", "nm"], ome.PhysicalSizeXUnit)) + < 0.001 * 10 ** (-3 * index(["mm", "um", "nm"], sidecar.PixelSizeUnits)) - | - ome.PhysicalSizeZ * 10 ** (-3 * index(["mm", "um", "nm"], ome.PhysicalSizeZUnit)) - == sidecar.PixelSize[2] * 10 ** (-3 * index(["mm", "um", "nm"], sidecar.PixelSizeUnits)) + ome.PhysicalSizeY * 10 ** (-3 * index(["mm", "µm", "nm"], ome.PhysicalSizeYUnit)) + - sidecar.PixelSize[1] * 10 ** (-3 * index(["mm", "um", "nm"], sidecar.PixelSizeUnits)) + < 0.001 * 10 ** (-3 * index(["mm", "um", "nm"], sidecar.PixelSizeUnits)) + - | + sidecar.PixelSize[1] * 10 ** (-3 * index(["mm", "um", "nm"], sidecar.PixelSizeUnits)) + - ome.PhysicalSizeY * 10 ** (-3 * index(["mm", "µm", "nm"], ome.PhysicalSizeYUnit)) + < 0.001 * 10 ** (-3 * index(["mm", "um", "nm"], sidecar.PixelSizeUnits)) + - | + ome.PhysicalSizeZ * 10 ** (-3 * index(["mm", "µm", "nm"], ome.PhysicalSizeZUnit)) + - sidecar.PixelSize[2] * 10 ** (-3 * index(["mm", "um", "nm"], sidecar.PixelSizeUnits)) + < 0.001 * 10 ** (-3 * index(["mm", "um", "nm"], sidecar.PixelSizeUnits)) + - | + sidecar.PixelSize[2] * 10 ** (-3 * index(["mm", "um", "nm"], sidecar.PixelSizeUnits)) + - ome.PhysicalSizeZ * 10 ** (-3 * index(["mm", "µm", "nm"], ome.PhysicalSizeZUnit)) + < 0.001 * 10 ** (-3 * index(["mm", "um", "nm"], sidecar.PixelSizeUnits)) # 227 InconsistentTiffExtension: