diff --git a/model_server/base/accessors.py b/model_server/base/accessors.py index 07eba484b24c7b64b729ee1bb71de708ecf1f934..b0df05873d982be7b9578bebdab47ad5dd13b1c8 100644 --- a/model_server/base/accessors.py +++ b/model_server/base/accessors.py @@ -162,6 +162,14 @@ class CziImageFileAccessor(GenericImageFileAccessor): except Exception: raise FileAccessorError(f'Unable to access CZI data in {fpath}') + try: + md = cf.metadata(raw=False) + compmet = md['ImageDocument']['Metadata']['Information']['Image']['OriginalCompressionMethod'] + except KeyError: + raise InvalidCziCompression('Could not find metadata key OriginalCompressionMethod') + if compmet.upper() != 'UNCOMPRESSED': + raise InvalidCziCompression(f'Unsupported compression method {compmet}') + sd = {ch: cf.shape[cf.axes.index(ch)] for ch in cf.axes} if (sd.get('S') and (sd['S'] > 1)) or (sd.get('T') and (sd['T'] > 1)): raise DataShapeError(f'Cannot handle image with multiple positions or time points: {sd}') @@ -345,6 +353,9 @@ class FileWriteError(Error): class InvalidAxisKey(Error): pass +class InvalidCziCompression(Error): + pass + class InvalidDataShape(Error): pass