From 25b843f6bbacb1937bdb960777b73acbece64115 Mon Sep 17 00:00:00 2001 From: ziejd2 Date: Wed, 24 Feb 2021 14:36:59 -0600 Subject: GENENET8 update --- sourcecodes/violin_ev_plotly.py | 137 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 sourcecodes/violin_ev_plotly.py (limited to 'sourcecodes/violin_ev_plotly.py') diff --git a/sourcecodes/violin_ev_plotly.py b/sourcecodes/violin_ev_plotly.py new file mode 100644 index 00000000..69609d94 --- /dev/null +++ b/sourcecodes/violin_ev_plotly.py @@ -0,0 +1,137 @@ +#!/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_evidence.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") +#varNames = line +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]) + +#Get the variables with evidence +evfile=netID+"varname.txt" +evf=open(evfile,"r") +line=evf.readline() +#ev_vars = map(string.strip,line.strip().split("\t")) +ev_vars = line.strip().split("\t") +keepVars = [] +for i in cNames: + if i not in ev_vars: + keepVars.append(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_evidence.txt" +f2=open(filename2,"r") +line = f2.readline() +pdf_varName = [] +pdf_data = [] +while line: + line = line.strip() + if line == "Data for new node": + line = f2.readline() + pdf_varName.append(line.strip()) + line = f2.readline() + pdf_data.append([line.strip()]) + else: + pdf_data[-1].append(float(line.strip())) + line = f2.readline() + +layout = go.Layout( + title="Distributions considering evidence", + 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) + +icount = 0 +for i in range(len(keepVars)): + for j in range(len(cNames)): + if keepVars[i] == cNames[j]: + idata = j + break + for j in range(len(pdf_varName)): + if keepVars[i] == pdf_varName[j]: + ipdf = j + break + y = [] + for j in range(len(data)): + y.append(data[j][idata]) + y_stand = standardize(y) + #Add traces to violin plot + if icount == 0: + fig.add_trace(go.Violin(y=y_stand,x0=cNames[idata],side='negative',legendgroup='Data',name='Fit to original data',fillcolor='blue',line=dict(color='blue'),hoverinfo='none',points='all',scalegroup=cNames[idata])) + fig.add_trace(go.Violin(y=pdf_data[ipdf],x0=cNames[idata],side='positive',legendgroup='Network parameters considering evidence',name='Network parameters considering evidence',fillcolor='orange',line=dict(color='orange'),hoverinfo='none',points=False,scalegroup=cNames[idata])) + icount = 1 + else: + fig.add_trace(go.Violin(y=y_stand,x0=cNames[idata],side='negative',legendgroup='Data',name='Data',fillcolor='blue',line=dict(color='blue'),showlegend=False,hoverinfo='none',points='all',scalegroup=cNames[idata])) + fig.add_trace(go.Violin(y=pdf_data[ipdf],x0=cNames[idata],side='positive',legendgroup='Network parameters considering evidence',name='Network parameters considering evidence',fillcolor='orange',line=dict(color='orange'),showlegend=False,hoverinfo='none',points=False,scalegroup=cNames[idata])) + + +plotly.offline.plot(fig,filename=outfile) + -- cgit 1.4.1