def processImages(client, scriptParams):
    message = ''

    # for params with default values, we can get the value directly
    dataType = scriptParams['Data_Type']
    ids = scriptParams['IDs']
    contextName = scriptParams['Context_Name']

    tableName = '/Wndcharm/' + contextName + '/SmallFeatureSet.h5'
    message += 'tableName:' + tableName + '\n'
    ftb = WndcharmStorage.FeatureTable(client, tableName)

    try:
        # Get the datasets
        objects, logMessage = script_utils.getObjects(ftb.conn, scriptParams)
        message += logMessage

        if not objects:
            return message

        datasets = WndcharmStorage.datasetGenerator(ftb.conn, dataType, ids)
        for ds in datasets:
            message += 'Processing dataset id:%d\n' % ds.getId()
            msg = countCompleted(ftb, ds)
            message += msg

    except:
        print message
        raise
    finally:
        ftb.close()

    return message
def predict(client, scriptParams):
    message = ""

    # for params with default values, we can get the value directly
    projectId = scriptParams["Training_Project_ID"]
    dataType = scriptParams["Data_Type"]
    predictIds = scriptParams["IDs"]
    commentImages = scriptParams["Comment_Images"]
    tagImages = scriptParams["Tag_Images"]

    contextName = scriptParams["Context_Name"]

    tableNameIn = "/Wndcharm/" + contextName + WndcharmStorage.SMALLFEATURES_TABLE
    tableNameF = "/Wndcharm/" + contextName + WndcharmStorage.CLASS_FEATURES_TABLE
    tableNameW = "/Wndcharm/" + contextName + WndcharmStorage.CLASS_WEIGHTS_TABLE
    tableNameL = "/Wndcharm/" + contextName + WndcharmStorage.CLASS_LABELS_TABLE
    message += "tableNameIn:" + tableNameIn + "\n"
    message += "tableNameF:" + tableNameF + "\n"
    message += "tableNameW:" + tableNameW + "\n"
    message += "tableNameL:" + tableNameL + "\n"

    ftb = WndcharmStorage.FeatureTable(client, tableNameIn)
    ctb = WndcharmStorage.ClassifierTables(client, tableNameF, tableNameW, tableNameL)

    try:
        message += "Loading classifier\n"
        trainProject = ftb.conn.getObject("Project", projectId)
        trainFts, weights = loadClassifier(ctb, trainProject)
        classifierName = WndcharmStorage.CLASSIFIER_WNDCHARM_NAMESPACE
        tagSet = WndcharmStorage.getClassifierTagSet(classifierName, trainProject.getName(), trainProject)

        # Predict
        message += "Predicting\n"
        predDatasets = WndcharmStorage.datasetGenerator(ftb.conn, dataType, predictIds)

        for ds in predDatasets:
            message += "Predicting dataset id:%d\n" % ds.getId()
            pred, msg = predictDataset(ftb, trainFts, ds, weights)
            message += msg
            message += addPredictionsToImages(ftb.conn, pred, ds.getId(), commentImages, tagSet)

    except:
        print message
        raise
    finally:
        ftb.close()
        ctb.close()

    return message
def processImages(client, scriptParams):
    message = ''

    # for params with default values, we can get the value directly
    dataType = scriptParams['Data_Type']
    ids = scriptParams['IDs']
    contextName = scriptParams['Context_Name']
    newOnly = scriptParams['New_Images_Only']

    tableName = '/Wndcharm/' + contextName + '/SmallFeatureSet.h5'
    message += 'tableName:' + tableName + '\n'
    ftb = WndcharmStorage.FeatureTable(client, tableName)

    try:
        nimages = 0

        # Get the datasets
        objects, logMessage = script_utils.getObjects(ftb.conn, scriptParams)
        message += logMessage

        if not objects:
            return message

        datasets = list(WndcharmStorage.datasetGenerator(
                ftb.conn, dataType, ids))

        good, chNames, msg = checkChannels(datasets)
        message += msg
        if not good:
            raise omero.ServerError(
                'Channel check failed, ' +
                'all images must have the same channels: %s' % message)

        for d in datasets:
            message += 'Processing dataset id:%d\n' % d.getId()
            for image in d.listChildren():
                message += 'Processing image id:%d\n' % image.getId()
                msg = extractFeatures(ftb, d, newOnly, chNames, im=image)
                message += msg + '\n'

    except:
        print message
        raise
    finally:
        ftb.close()

    return message