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")
Exemple #4
0
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
Exemple #6
0
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")
Exemple #7
0
            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))
Exemple #9
0
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
Exemple #11
0
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
                  })
    }