Created
November 11, 2019 02:09
-
-
Save Tehsurfer/81853759c4c5af679aa4144873ea806f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import plotly.graph_objects as go | |
import plotly.figure_factory as ff | |
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot | |
import numpy as np | |
from scipy.spatial.distance import pdist, squareform | |
import pandas as pd | |
# get data | |
url = 'https://mapcore-bucket1.s3-us-west-2.amazonaws.com/ISAN/csv-data/use-case-4/RNA_Seq.csv' | |
# url = "http://files.figshare.com/2133304/ExpRawData_E_TABM_84_A_AFFY_44.tab" | |
data = np.genfromtxt(url, names=True, usecols=tuple(range(1,30)), dtype=float, delimiter=",") | |
data_array = data.view((np.float, len(data.dtype.names))) | |
data_array = data_array.transpose() | |
data_array = np.nan_to_num(data_array) | |
labels = data.dtype.names | |
# Initialize figure by creating upper dendrogram | |
fig = ff.create_dendrogram(data_array, orientation='bottom', labels=labels) | |
for i in range(len(fig['data'])): | |
fig['data'][i]['yaxis'] = 'y2' | |
# Create Side Dendrogram | |
dendro_side = ff.create_dendrogram(data_array, orientation='right') | |
for i in range(len(dendro_side['data'])): | |
dendro_side['data'][i]['xaxis'] = 'x2' | |
# Add Side Dendrogram Data to Figure | |
for data in dendro_side['data']: | |
fig.add_trace(data) | |
# Create Heatmap | |
dendro_leaves = dendro_side['layout']['yaxis']['ticktext'] | |
dendro_leaves = list(map(int, dendro_leaves)) | |
data_dist = pdist(data_array) | |
heat_data = squareform(data_dist) | |
heat_data = heat_data[dendro_leaves,:] | |
heat_data = heat_data[:,dendro_leaves] | |
heatmap = [ | |
go.Heatmap( | |
x = dendro_leaves, | |
y = dendro_leaves, | |
z = heat_data, | |
colorscale = 'Blues' | |
) | |
] | |
heatmap[0]['x'] = fig['layout']['xaxis']['tickvals'] | |
heatmap[0]['y'] = dendro_side['layout']['yaxis']['tickvals'] | |
# Add Heatmap Data to Figure | |
for data in heatmap: | |
fig.add_trace(data) | |
# Edit Layout | |
fig.update_layout({'width':800, 'height':800, | |
'showlegend':False, 'hovermode': 'closest', | |
}) | |
# Edit xaxis | |
fig.update_layout(xaxis={'domain': [.15, 1], | |
'mirror': False, | |
'showgrid': False, | |
'showline': False, | |
'zeroline': False, | |
'ticks':""}) | |
# Edit xaxis2 | |
fig.update_layout(xaxis2={'domain': [0, .15], | |
'mirror': False, | |
'showgrid': False, | |
'showline': False, | |
'zeroline': False, | |
'showticklabels': False, | |
'ticks':""}) | |
# Edit yaxis | |
fig.update_layout(yaxis={'domain': [0, .85], | |
'mirror': False, | |
'showgrid': False, | |
'showline': False, | |
'zeroline': False, | |
'showticklabels': False, | |
'ticks': "" | |
}) | |
# Edit yaxis2 | |
fig.update_layout(yaxis2={'domain':[.825, .975], | |
'mirror': False, | |
'showgrid': False, | |
'showline': False, | |
'zeroline': False, | |
'showticklabels': False, | |
'ticks':""}) | |
# Plot! | |
plot(fig) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment