diff options
| author | ziejd2 | 2021-02-24 14:36:59 -0600 |
|---|---|---|
| committer | ziejd2 | 2021-02-24 14:36:59 -0600 |
| commit | 25b843f6bbacb1937bdb960777b73acbece64115 (patch) | |
| tree | 88645b9d1d8a0eea19d7229555bf8805571bc8b7 /sourcecodes/violin_plotly.py | |
| parent | 33cedf36248f616aa37d1462c69a4a3058a5d92e (diff) | |
| download | BNW-25b843f6bbacb1937bdb960777b73acbece64115.tar.gz | |
GENENET8 update
Diffstat (limited to 'sourcecodes/violin_plotly.py')
| -rw-r--r-- | sourcecodes/violin_plotly.py | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/sourcecodes/violin_plotly.py b/sourcecodes/violin_plotly.py new file mode 100644 index 00000000..8e0f8ea2 --- /dev/null +++ b/sourcecodes/violin_plotly.py @@ -0,0 +1,123 @@ +#!/var/www/html/compbio/BNW_1.3/bnw-env/bin/python3 +import os +import sys +import math +#sys.path.append('/home/jziebart/.local/bin') +#sys.path.append('/home/jziebart/.local/lib') + + +import plotly +import plotly.graph_objs as go +import csv +import string + +def mean_stdev(y): + mean = sum(y) + mean = sum(y)/len(y) + stdev = 0 + for yi in y: + stdev = stdev + (yi - mean)**2 + stdev = stdev/(len(y)-1) + stdev = math.sqrt(stdev) + return mean,stdev; + +def standardize(y): + mean,stdev = mean_stdev(y) + ystd = [] + for yi in y: + yi = (yi - mean)/stdev + ystd.append(yi) + return ystd + + +netID = sys.argv[-1] +outfile = netID+"violin_plotly.html" + + +filename=netID+"continuous_input.txt" +f=open(filename,"r") +#Read the first line to get the variable names +line=f.readline() +#line = map(string.strip,line.strip().split("\t")) +varNames = line.strip().split("\t") +line=f.readline() +#line = map(string.strip,line.strip().split("\t")) +line = line.strip().split("\t") +for i in range(len(line)): + line[i] = int(line[i]) +cd_types = line +cNames = [] +for i in range(len(varNames)): + if cd_types[i] == 1: + cNames.append(varNames[i]) + +#Read in original data +data = [] +line = f.readline() +while line: + #line = map(string.strip,line.strip().split("\t")) + line = line.strip().split("\t") + temp = [] + for i in range(len(varNames)): + if cd_types[i] == 1: + temp.append(float(line[i])) + data.append(temp) + line = f.readline() + +#Read in data for violin plots +filename2=netID+"violin_orig.txt" +f2=open(filename2,"r") +line = f2.readline() +pdf_data = [] +while line: + line = line.strip() + if line == "Data for new node": + line = f2.readline() + pdf_data.append([line.strip()]) + else: + pdf_data[-1].append(float(line.strip())) + line = f2.readline() + +pdf_data2 = [] +for i in range(len(cNames)): + for j in range(len(pdf_data)): + if cNames[i] == pdf_data[j][0]: + pdf_data2.append(pdf_data[j][1:]) + +del pdf_data + +layout = go.Layout( + title="Original distributions", + titlefont=dict( + family='Arial, sans-serif', + size=24, + color='black' + ), + title_xref="paper", + title_x=0.5, + title_xanchor="center", + title_yanchor="middle", + yaxis=dict(title="Distributions of standardized data"), + legend=dict(orientation='h'), + margin=dict(t=40,l=70,b=40) +) +fig = go.Figure(layout=layout) + +for i in range(len(cNames)): + y = [] + for j in range(len(data)): + y.append(data[j][i]) + y_stand = standardize(y) + #Add traces to violin plot + if i == 1: + fig.add_trace(go.Violin(y=y_stand,x0=cNames[i],side='negative',legendgroup='Data',name='Fit to data',fillcolor='blue',line=dict(color='blue'),hoverinfo='none',points='all',scalegroup=cNames[i])) + fig.add_trace(go.Violin(y=pdf_data2[i],x0=cNames[i],side='positive',legendgroup='Network parameters',name='Network parameters',fillcolor='orange',line=dict(color='orange'),hoverinfo='none',points=False,scalegroup=cNames[i])) + else: + fig.add_trace(go.Violin(y=y_stand,x0=cNames[i],side='negative',legendgroup='Data',name='Data',fillcolor='blue',line=dict(color='blue'),showlegend=False,hoverinfo='none',points='all',scalegroup=cNames[i])) + fig.add_trace(go.Violin(y=pdf_data2[i],x0=cNames[i],side='positive',legendgroup='Network parameters',name='Network parameters',fillcolor='orange',line=dict(color='orange'),showlegend=False,hoverinfo='none',points=False,scalegroup=cNames[i])) + + +fig.update_layout(title_xanchor="center") + +plotly.offline.plot(fig,filename=outfile) + |
