def handler()

in main/src/image-inspector/image-inspector.py [0:0]


def handler(event, context):
    item = event['Item']
    imageId = item['imageId']
    bucket = item['bucket']
    key = item['key']
    numChannels=0
    if 'channelKeys' in item:
        numChannels=len(item['channelKeys'])
    imageKeys = []
    if numChannels==0:
        imageKeys.append(key)
    else:
        channelKeys=item['channelKeys']
        for channelKey in channelKeys:
            imageKeys.append(key + channelKey['keysuffix'])
    if numChannels==0:
        try:
            np=bi.getImageFromS3AsNumpy(bucket,imageKeys[0])
        except Exception as err:
            errStr = "exception={0}".format(err)
            print("Error loading bucket="+bucket+" key="+imageKeys[0]+" "+errStr)
            applyErrorResult(imageId)
            return { "imageId": imageId, "valid": False }
        if passZeroCheck(np):
            dims = getDimensions(np)
            result = { "imageId" : imageId, "valid" : True, "width": dims[0], "height": dims[1], "depth": dims[2], "channels": 1 }
            applyInspectionResult(result)
            return { "imageId": imageId, "valid": True }
    else:
        dims=[]
        for i, channel in enumerate(item['channelKeys']):
            try:
                np=bi.getImageFromS3AsNumpy(bucket, imageKeys[i])
            except Exception as err:
                errStr = "exception={0}".format(err)
                print("Error loading bucket="+bucket+ " key="+imageKeys[i]+" "+errStr)
                applyErrorResult(imageId)
                return { "imageId" : imageId, "valid" : False }
            ndims = getDimensions(np)
            if i==0:
                dims.append(ndims[0])
                dims.append(ndims[1])
                dims.append(ndims[2])
            else:
                if not(dims[0]==ndims[0] and dims[1]==dims[1] and dims[2]==dims[2]):
                    print("Error dimensions do not match for channel  bucket="+bucket+ " key="+imageKeys[i])
                    applyErrorResult(imageId)
                    return { "imageId" : imageId, "valid" : False }
        result = { "imageId" : imageId, "valid" : True, "width" : dims[0], "height" : dims[1], "depth" : dims[2], "channels" : numChannels }
        applyInspectionResult(result)
        return { "imageId" : imageId, "valid" : True }