def objectHistogramMatrix(dataSet, features, exemplars, bins): tasks = [(dataSet, features, exemplars, xFtr, yFtr, bins) for yFtr in features for xFtr in features if xFtr < yFtr] if data.mdsColumnsPresent(dataSet): tasks.append((dataSet, features, exemplars, data.mdsColumns[0], data.mdsColumns[1], bins)) pool = Pool() results = pool.imap(objectHistogram2D, tasks) pool.close() pool.join() recDict = lambda: defaultdict(recDict) histograms = recDict() for xFeature, yFeature, contours in results: for c, lvlCnt in contours.iteritems(): histograms[xFeature][yFeature][c] = lvlCnt.tolist() histograms[yFeature][xFeature][c] = lvlCnt.transpose().tolist() return dict(histograms)
def objectInfo(dataSet, featureSet, column, row, plate, exemplars, probes): objects = allObjects(dataSet, column, row, plate, exemplars, probes) combined = wellIndex(dataSet).loc[objects].copy() # Feature values. for ftr in featureSet: combined[ftr] = np.take(scaledArray(dataSet, ftr), objects) if data.mdsColumnsPresent(dataSet): for mdsCol in data.mdsColumns: combined[mdsCol] = np.take(scaledArray(dataSet, mdsCol), objects) # Predicted population values. combined["population"] = np.take(clusters(dataSet, featureSet, exemplars), objects) # Generate well URLs on the spot, based on config. wellImages = data.config(dataSet).wellImages for name, urlFunction in wellImages.iteritems(): combined["img_" + name] = combined.apply( lambda row: urlFunction(int(row['plate']), int(row['column']), int(row['row'])), axis=1) return combined