Exemple #1
0
def saveDetails(meta, predictions, importances, fold, featureByIndex=None, reclassify=False):
    if featureByIndex == None:
        featureByIndex = result.getFeaturesByIndex(meta)
    if predictions != None:
        for index in predictions:
            if fold == "hidden":
                example = result.getExampleFromSet(meta, index, "hidden")
            else:
                example = result.getExampleFromSet(meta, index, "train")
            if reclassify and ("classification" in example):
                del example["classification"]
            if "classification" in example:
                raise Exception("Example " + str(index) + " has already been classified " + str([fold, str(example)]))
            result.setValue(example, "prediction", predictions[index], "classification")
            result.setValue(example, "fold", fold, "classification")
    if importances != None:
        for i in range(len(importances)):
            if importances[i] != 0:
                feature = result.getFeature(meta, i, featureByIndex)
                if fold != "hidden":
                    result.setValue(feature, fold, importances[i], "importances")
                    #if "sort" not in feature:
                    #    result.setValue(feature, "sort", 0)
                else:
                    result.setValue(feature, "hidden-importance", importances[i])
                    result.setValue(feature, "sort", importances[i])
Exemple #2
0
def saveResults(meta, resultPath, perfs, selected):
    if not os.path.exists(os.path.dirname(resultPath)):
        os.makedirs(os.path.dirname(resultPath))
    meta = result.getMeta(meta)
    featureByIndex = result.getFeaturesByIndex(meta)
    for foldIndex in range(len(selected)):
        ranks = selected[foldIndex]
        for featureRank in range(len(ranks)):
            featureIndex = ranks[featureRank]
            feature = result.getFeature(meta, featureIndex, featureByIndex)
            result.setValue(feature, foldIndex, featureRank, "ranks")
            result.setValue(feature, "sort", -sum(feature["ranks"].values()) / len(feature["ranks"]))
    result.saveMeta(meta, resultPath)
Exemple #3
0
def analyze(meta, dbPath=None, resultPath=None, verbose=False):
    meta = result.getMeta(meta)
    if dbPath == None:
        dbPath = settings.CGI_DB_PATH
    print "Analyzing", dbPath
    con = DB.connect(dbPath)
    result.sortFeatures(meta)
    features = meta["features"]
    count = 1
    numFeatures = len(features)
    nonSelected = []
    for featureName in features:
        if not isinstance(features[featureName], int):
            if verbose:
                print "Processing feature", featureName, str(count) + "/" + str(numFeatures)
            geneName = getGeneName(featureName)
            if geneName != None:
                mappings = getTermAnalysis(con, geneName, "disease")
                result.setValue(features[featureName], "CancerGeneIndex", mappings)
                mappings = getTermAnalysis(con, geneName, "drug")
                result.setValue(features[featureName], "CancerGeneDrug", mappings)
        else:
            geneName = getGeneName(featureName)
            if geneName != None:
                nonSelected.append(geneName)
        count += 1
    result.setValue(meta, "CancerGeneIndex", analyzeTermCoverage(features), "analysis")
    result.setValue(meta["analysis"], "non-selected", getCancerGeneCoverage(con, nonSelected), "CancerGeneIndex")
    if resultPath != None:
        result.saveMeta(meta, resultPath)
    return meta