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
def saveResults(meta, resultPath, results, extras, bestIndex, analyze, hiddenResults=None, hiddenDetails=None, databaseCGI=None, reclassify=False, details=True): if extras == None: print "No detailed information for cross-validation" return if not os.path.exists(os.path.dirname(resultPath)): os.makedirs(os.path.dirname(resultPath)) meta = result.getMeta(meta) # Add general results meta["results"] = {"best":results[bestIndex], "all":results} if hiddenResults != None: meta["results"]["hidden"] = hiddenResults # Insert detailed results if details: featureByIndex = result.getFeaturesByIndex(meta) if hiddenDetails != None: saveDetails(meta, hiddenDetails.get("predictions", None), hiddenDetails.get("importances", None), "hidden", featureByIndex, reclassify=reclassify) fold = 0 for extra in extras: saveDetails(meta, extra.get("predictions", None), extra.get("importances", None), fold, featureByIndex, reclassify=reclassify) fold += 1 else: if "examples" in meta: del meta["examples"] if "features" in meta: del meta["features"] # Analyze results if analyze: print "Analyzing results" meta = gene.analyze.analyze(meta, databaseCGI) # Save results if resultPath != None: result.saveMeta(meta, resultPath)
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)