3
|
1 import numpy as np
|
|
2 import pandas as pd
|
|
3 import seaborn as sns
|
|
4 import plotly.express as px
|
|
5 import xarray as xr
|
|
6
|
|
7 import sys, getopt
|
|
8
|
|
9 np.bool = np.bool_
|
|
10
|
|
11
|
|
12 def main(argv):
|
|
13 inputfile = ''
|
|
14 outputfile = ''
|
|
15 try:
|
|
16 opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="])
|
|
17 except getopt.GetoptError:
|
|
18 print ('Heatmap.py -i <inputfile> -o <outputfile>')
|
|
19 sys.exit(2)
|
|
20 for opt, arg in opts:
|
|
21 if opt == '-h':
|
|
22 print ('Heatmap.py -i <inputfile> -o <outputfile>')
|
|
23 sys.exit()
|
|
24 elif opt in ("-i", "--ifile"):
|
|
25 inputfile = arg
|
|
26 elif opt in ("-o", "--ofile"):
|
|
27 outputfile = arg
|
|
28 print ('Input file is "', inputfile)
|
|
29 print ('Output file is "', outputfile)
|
|
30
|
|
31 data = pd.read_csv(inputfile, sep='\t')
|
|
32
|
|
33 #data.drop(columns=data.columns[0], axis=1, inplace=True)
|
|
34
|
|
35 data2 = pd.read_csv(inputfile, sep='\t', header=None)
|
|
36 data2.drop(index=data2.index[0], axis=0, inplace=True)
|
|
37 data3 = data2[data2.columns[1:]]
|
|
38 data3_transposed = data3.T
|
|
39
|
|
40 myList = list(data.columns)
|
|
41 del myList[0]
|
|
42
|
|
43 myClusters = list(data['ClutserID'])
|
|
44
|
|
45 fig = px.imshow(data3_transposed,
|
|
46 x=myClusters,
|
|
47 y=myList,
|
|
48 labels=dict(y="Strains", x="Clusters"),
|
|
49 height = 900,width = 900,
|
|
50 color_continuous_scale=["lightgrey", "red","green"]
|
|
51 )
|
|
52
|
|
53 fig.update_traces(hovertemplate="<br>".join(["Cluster: %{x}","Strain: %{y}"]))
|
|
54 fig.update_coloraxes(showscale=False)
|
|
55 fig.update_layout(xaxis_scaleanchor="x")
|
|
56 fig.write_html(outputfile)
|
|
57
|
|
58 if __name__ == "__main__":
|
|
59 main(sys.argv[1:])
|