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])
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)
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