def getHeatmap(filename): try: a = data(filename).getMatrix() except KeyError: a = loadTSV(filename) heatmap(a) plt.show()
def getTsne(filepath, targetname='', cluster_label=[]): try: data = loadTSV(filepath) except: data = loadCSV(filepath) X_tsne = TSNE(learning_rate=200, random_state=0).fit_transform(data) Xtsne = X_tsne[:, 0] Ytsne = X_tsne[:, 1] lisXtsne = Xtsne.tolist() lisYtsne = Ytsne.tolist() if not targetname == '': colors = [ 'black', 'purple', 'red', 'yellow', 'pink', 'grey', 'green', 'bisque', 'blanchedalmond', 'blue', 'blueviolet', 'brown', 'burlywood', 'cadetblue', 'chartreuse', 'chocolate' ] if len(cluster_label) == 0: cluster_label = [0] * len(lisXtsne) fig = plt.figure(figsize=(20, 10), dpi=80, facecolor='w', edgecolor='k') for i in range(len(lisXtsne)): plt.scatter(lisXtsne[i], lisYtsne[i], c=colors[cluster_label[i]]) plt.title(targetname) plt.xlabel('x') plt.ylabel('y') fig.savefig(targetname) return (lisXtsne, lisYtsne)
def getGeneofCentroids(filename, target, index): # save gene lists of centroid cells matrix = loadTSV(filename) result = np.zeros(shape=(len(index), len(matrix[0]))) num = 0 for i in index: result[num, :] = matrix[i, :] np.savetxt(target, result, delimiter="\t")
def update_graph1(visualization, dim_method, gene, dataset): # load if not visualization: filepath = './data/' + dataset + "/" + dim_method + '/tsne.txt' tsne = load(filepath) else: filepath = './data/' + dataset + "/" + dim_method + '/scvis.tsv' scvis = loadTSV(filepath) tsne = (scvis[:, 1], scvis[:, 2]) # generate range rx = [min(tsne[0]) - 10, max(tsne[0]) + 10] ry = [min(tsne[1]) - 10, max(tsne[1]) + 10] return { 'data': [ go.Scattergl( x=tsne[0], y=tsne[1], mode="markers", marker=dict( # set color equal to a variable color=color_mask_genes[gene], colorscale='Jet', showscale=True)) ], 'layout': go.Layout(autosize=False, title="TSNE with Genes", font={ "family": "Raleway", "size": "5vh" }, height="200vh", width="30%", hovermode="closest", margin={ "r": 0, "t": 50, "b": 40, "l": 100 }, xaxis={ "range": rx, "zeroline": False }, yaxis={ "mirror": False, "range": ry, "zeroline": False, }) }
def kmeans(filename, target_name="", clusters=8, scvis=False): # use kmeans on tsne if scvis: matrix = loadTSV(filename) else: matrix = tsne(filename) # get kmeans labels k = KMeans(n_clusters=clusters).fit_predict(matrix) # generate graph if not target_name=="": getTsne(filename, target_name, k) return KMeans(n_clusters=clusters), k
def saveGeneTable(filename, file_after_reduction, target_dir, k, scvis=False): createDir(target_dir) _, k_mask = cluster.kmeans(file_after_reduction, clusters=k, scvis=scvis) data = loadTSV(filename) indexes = [] for _ in range(k): indexes.append([]) for index in range(len(k_mask)): indexes[k_mask[index]].append(index) result = np.zeros(shape=(k, len(data[0]))) for _ in range(k): result[_] = np.mean(data[indexes[_]], axis=0) if not scvis: np.savetxt(target_dir + "geneTable_" + str(k) + ".txt", result.transpose(), delimiter="\t") else: np.savetxt(target_dir + "geneTable_" + str(k) + "_scvis.txt", result.transpose(), delimiter="\t")
result[i, j] = float(lines[i].split()[j]) return result def loadList(file): with open(file, "r") as o: data = o.read() lines = data.splitlines() result = [] for n_ in range(len(lines)): result.append(lines[n_]) return result # load genelist genelist = loadList("./data/Airway/genelist.txt") filtered = loadTSV("./data/Airway/filtered.txt") dropdown_label = [] color_mask_genes = [] for i in range(len(genelist)): dropdown_label.append({"label": genelist[i], "value": i}) color_mask_genes.append(filtered[:, i]) # draw website app = dash.Dash() app.layout = html.Div(style={"height": "150vh", "fontFamily": "Georgia"}, children=[ # head html.Div(style={'background-color': "#CEF0EF", "height": "10vh", "width": "100%"}, children=[ html.Img(src='https://upload.wikimedia.org/wikipedia/commons/e/e1/Duke_Athletics_logo.svg', height="50vh", width="50vh", style={"margin-top": "2vh", "margin-left": "3vh"}), html.Ul(style={"float": "right", "list-style": "none", "margin-right": "5vh"},
def tsne(filepath): # get tsne coordinates return TSNE(random_state=0).fit_transform(loadTSV(filepath))
def savePCA(file, target_dir): createDir(target_dir) data = loadTSV(file) pca = PCA(n_components=10).fit_transform(data) print(type(pca)) np.savetxt(target_dir + "pca.txt", pca, delimiter="\t")
def getData(filepath): data = data_helper.loadTSV(filepath) return data
def update_graph_2(value, dim_method, dataset, visualization): filepath = './data/' + dataset + "/" + dim_method + "/" # load if not visualization: filepath += "tsne.txt" tsne = load(filepath) else: filepath = './data/' + dataset + "/" + dim_method + '/scvis.tsv' scvis = loadTSV(filepath) tsne = (scvis[:, 1], scvis[:, 2]) # load colormap color_mask = [] if not visualization: for k_ in range(1, 9): color_mask.append( loadColorMask("./data/" + dataset + "/" + dim_method + "/" + "color_mask_" + str(k_) + ".txt")) else: for k_ in range(1, 9): color_mask.append( loadColorMask("./data/" + dataset + "/" + dim_method + "/" + "color_mask_" + str(k_) + "_scvis.txt")) text = [] for i in color_mask[value - 1]: text.append("Cluster " + str(i)) rx = [min(tsne[0]) - 10, max(tsne[0]) + 10] ry = [min(tsne[1]) - 10, max(tsne[1]) + 10] return { 'data': [ go.Scattergl( x=tsne[0], y=tsne[1], text=text, mode="markers", marker=dict( color=color_mask[value - 1], # set color equal to a variable showscale=True, colorscale="Jet")) ], 'layout': go.Layout(autosize=False, title="TSNE with KMeans", font={ "family": "Raleway", "size": "5vh" }, height="200vh", width="40%", hovermode="closest", margin={ "r": 0, "t": 50, "b": 40, "l": 100 }, xaxis={ "range": rx, "zeroline": False }, yaxis={ "range": ry, "zeroline": False }) }