From 8070dc963753142bb86c4ed698d91fd623ed28e7 Mon Sep 17 00:00:00 2001 From: ziejd2 Date: Thu, 28 Sep 2017 15:04:40 -0500 Subject: BNW using Octave instead of Matlab. This version of BNW should perform the same as the original version. The only difference is that it uses Octave instead of Matlab when running BayesNet Toolbox during parameter learning. I am calling this BNW_1.02. It can be accessed at: compbio.uthsc.edu/BNW_1.02 --- sourcecodes/add_inv.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'sourcecodes/add_inv.php') diff --git a/sourcecodes/add_inv.php b/sourcecodes/add_inv.php index 77e0f0ef..69dab328 100644 --- a/sourcecodes/add_inv.php +++ b/sourcecodes/add_inv.php @@ -188,17 +188,17 @@ structure_change($keyval); - $file1="./data/".$keyval."run_newintervention.sh"; - $initiallines=file_get_contents("./data/temp_intervention_file"); - $all_lines="$initiallines"."$keyval\nfi\nexit"; +// $file1="./data/".$keyval."run_newintervention.sh"; +// $initiallines=file_get_contents("./data/temp_intervention_file"); +// $all_lines="$initiallines"."$keyval\nfi\nexit"; - $fp = fopen($file1,"w"); - fwrite($fp, "$all_lines\n"); - fclose($fp); +// $fp = fopen($file1,"w"); +// fwrite($fp, "$all_lines\n"); +// fclose($fp); //execute shell script for matlab // $cmd="./runmat_inv.sh $keyval"; // system($cmd); -shell_exec('./runmat_inv.sh '.$keyval); +shell_exec('./run_octave_inv '.$keyval); -- cgit 1.4.1 From c80226899f5cdd9f11c163817d59445213f5bef0 Mon Sep 17 00:00:00 2001 From: ziejd2 Date: Wed, 14 Mar 2018 23:19:16 -0500 Subject: Separating Octave and php calculations --- BNW_parameter_learning/Predictmultiple.m | 87 +-- .../Predictmultipleintrvention.m | 76 ++- BNW_parameter_learning/drawFigure.m | 17 +- BNW_parameter_learning/drawFigureM.m | 60 +- BNW_parameter_learning/prepareInput.m | 281 +++++++++ BNW_parameter_learning/readInput.m | 9 +- BNW_parameter_learning/runBN_initial.m | 87 +-- BNW_parameter_learning/standardizeData.m | 2 +- BNW_parameter_learning/writeParameters.m | 106 ++++ BNW_parameter_learning/writeParameters_ev.m | 151 +++++ BNW_parameter_learning/writeParameters_int.m | 186 ++++++ home.php | 4 +- sourcecodes/BNW_workflow_net1.htm | 6 +- sourcecodes/add_evd.php | 10 +- sourcecodes/add_evd.php~ | 204 ------- sourcecodes/add_evd_example.php | 10 +- sourcecodes/add_evd_example.php~ | 204 ------- sourcecodes/add_inv.php | 12 +- sourcecodes/add_inv.php~ | 262 -------- sourcecodes/add_inv_example.php | 12 +- sourcecodes/add_inv_example.php~ | 251 -------- sourcecodes/bn_file_load_gom.php | 270 +-------- sourcecodes/execute_bn_gom.php~ | 98 --- sourcecodes/graphviz_structure.php~ | 97 --- sourcecodes/header_batchsearch.inc | 2 +- sourcecodes/input_check.php | 16 + sourcecodes/layout.php | 3 + sourcecodes/layout_example.php | 3 + sourcecodes/my_new_style.css | 6 +- sourcecodes/network_layout_evd.php | 162 ++--- sourcecodes/network_layout_evd.php~ | 667 --------------------- sourcecodes/network_layout_evd_2.php | 110 +--- sourcecodes/network_layout_evd_2_example.php | 40 +- sourcecodes/network_layout_evd_example.php | 56 +- sourcecodes/network_layout_inv.php | 118 +--- sourcecodes/network_layout_inv_2.php | 51 +- sourcecodes/network_layout_inv_2_example.php | 37 +- sourcecodes/network_layout_inv_example.php | 31 +- sourcecodes/parameter_display.php | 16 + sourcecodes/parameter_learning/Predictmultiple.m | 87 +-- .../Predictmultipleintrvention.m | 76 ++- sourcecodes/parameter_learning/drawFigure.m | 17 +- sourcecodes/parameter_learning/drawFigureM.m | 60 +- sourcecodes/parameter_learning/prepareInput.m | 281 +++++++++ sourcecodes/parameter_learning/readInput.m | 9 +- sourcecodes/parameter_learning/runBN_initial.m | 87 +-- sourcecodes/parameter_learning/standardizeData.m | 2 +- .../test/Agbcontinuous_input.txt | 103 ---- sourcecodes/parameter_learning/test/Agbmap.txt | 6 - sourcecodes/parameter_learning/test/Agbmapdata.txt | 1 - .../parameter_learning/test/Agbnet_figure.txt | 440 -------------- .../parameter_learning/test/Agbnet_figure.txt.bk | 440 -------------- sourcecodes/parameter_learning/test/Agbnnode.txt | 1 - .../parameter_learning/test/Agbstructure_input.txt | 7 - sourcecodes/parameter_learning/test/octave-core | Bin 247702 -> 0 bytes sourcecodes/parameter_learning/writeParameters.m | 106 ++++ .../parameter_learning/writeParameters_ev.m | 151 +++++ .../parameter_learning/writeParameters_int.m | 186 ++++++ sourcecodes/run_octave_evd~ | 7 - sourcecodes/run_octave_inv~ | 7 - sourcecodes/run_octave~ | 7 - sourcecodes/run_prep_input | 7 + sourcecodes/runmat.sh | 7 - sourcecodes/runmat.sh.bk | 7 - sourcecodes/runmat_evd.sh | 4 - sourcecodes/runmat_evd.sh.bk | 4 - sourcecodes/runmat_inv.sh | 4 - sourcecodes/runmat_inv.sh.bk | 4 - 68 files changed, 2040 insertions(+), 3898 deletions(-) create mode 100644 BNW_parameter_learning/prepareInput.m create mode 100644 BNW_parameter_learning/writeParameters.m create mode 100644 BNW_parameter_learning/writeParameters_ev.m create mode 100644 BNW_parameter_learning/writeParameters_int.m delete mode 100644 sourcecodes/add_evd.php~ delete mode 100644 sourcecodes/add_evd_example.php~ delete mode 100644 sourcecodes/add_inv.php~ delete mode 100644 sourcecodes/add_inv_example.php~ delete mode 100644 sourcecodes/execute_bn_gom.php~ delete mode 100644 sourcecodes/graphviz_structure.php~ create mode 100644 sourcecodes/input_check.php delete mode 100644 sourcecodes/network_layout_evd.php~ create mode 100644 sourcecodes/parameter_display.php create mode 100644 sourcecodes/parameter_learning/prepareInput.m delete mode 100644 sourcecodes/parameter_learning/test/Agbcontinuous_input.txt delete mode 100644 sourcecodes/parameter_learning/test/Agbmap.txt delete mode 100644 sourcecodes/parameter_learning/test/Agbmapdata.txt delete mode 100644 sourcecodes/parameter_learning/test/Agbnet_figure.txt delete mode 100644 sourcecodes/parameter_learning/test/Agbnet_figure.txt.bk delete mode 100644 sourcecodes/parameter_learning/test/Agbnnode.txt delete mode 100644 sourcecodes/parameter_learning/test/Agbstructure_input.txt delete mode 100644 sourcecodes/parameter_learning/test/octave-core create mode 100644 sourcecodes/parameter_learning/writeParameters.m create mode 100644 sourcecodes/parameter_learning/writeParameters_ev.m create mode 100644 sourcecodes/parameter_learning/writeParameters_int.m delete mode 100644 sourcecodes/run_octave_evd~ delete mode 100644 sourcecodes/run_octave_inv~ delete mode 100644 sourcecodes/run_octave~ create mode 100644 sourcecodes/run_prep_input delete mode 100644 sourcecodes/runmat.sh delete mode 100644 sourcecodes/runmat.sh.bk delete mode 100644 sourcecodes/runmat_evd.sh delete mode 100644 sourcecodes/runmat_evd.sh.bk delete mode 100644 sourcecodes/runmat_inv.sh delete mode 100644 sourcecodes/runmat_inv.sh.bk (limited to 'sourcecodes/add_inv.php') diff --git a/BNW_parameter_learning/Predictmultiple.m b/BNW_parameter_learning/Predictmultiple.m index c14b516c..781c64a4 100644 --- a/BNW_parameter_learning/Predictmultiple.m +++ b/BNW_parameter_learning/Predictmultiple.m @@ -1,57 +1,72 @@ function Predictmultiple(pre) - dfile=strcat(pre,'structure_input.txt'); sfile=dfile; dfile=strcat(pre,'continuous_input.txt'); nnodefile=strcat(pre,'nnode.txt'); + fnnode = fopen(nnodefile,'r'); nnodes = fscanf(fnnode,'%d'); - - -%nnodes=5; Std_flag=true; [labels,cases,bnet]=readInput(dfile,sfile,nnodes,Std_flag); - -%name -%labels -%map - [bnet]=parameterLearning(bnet,cases); -%[predict_mean,predict_sd,q_sq]=looCrossValid(bnet,cases); -fvarfile=strcat(pre,'var.txt'); -fvar = fopen(fvarfile,'r'); - +fvarfile=strcat(pre,'var.txt'); +fvar = fopen(fvarfile,'r'); select_var_new = fscanf(fvar,'%d'); fvardfile=strcat(pre,'vardata.txt'); - fvard = fopen(fvardfile,'r'); - select_var_data_new = fscanf(fvard,'%f'); +means_orig = cell(1,nnodes); +stdevs_orig = cell(1,nnodes); +labels_orig = cell(1,nnodes); +%Read in original means and standard deviations +mapfile = strcat(pre,'map.txt'); +fmap = fopen(mapfile,'r'); +for i=1:nnodes + buffer = fgetl(mapfile); + temp = cell(1,4); + for j=1:4 + [next,buffer] = strtok(buffer); + temp{j} = next; + end + labels_orig{i} = temp{1}; + means_orig{i} = str2num(temp{4}); + stdevs_orig{i} = str2num(temp{3}); +end +fclose(fmap); + +%Need to map the means and stdevs to the correct labels +means = cell(1,nnodes); +stdevs = cell(1,nnodes); +%Read in labels in new order. +labelsnew = cell(1,nnodes); +mapdatafile = strcat(pre,'mapdata.txt'); +fmapdata = fopen(mapdatafile,'r'); +buffer = fgetl(fmapdata); +for i = 1:nnodes + [next,buffer ] = strtok(buffer); + labelsnew{i} = next; +end +fclose(fmapdata); +for i = 1:nnodes + for j = 1:nnodes + if strcmp(labelsnew{i},labels_orig{j}) + means{i} = means_orig{j}; + stdevs{i} = stdevs_orig{j}; + break + end + end +end + + filename=strcat(pre,'net_figure_new.txt'); -drawFigureM(nnodes,bnet,labels,filename,cases,select_var_new,select_var_data_new); - -%quit force; -%marginal_nodes(engine,2) -%marginal_nodes(engine,3) -%marginal_nodes(engine,4) -%marginal_nodes(engine,5) -%evidence{1}=2; -%[engine,loglik]=enter_evidence(engine,evidence) -%marginal_nodes(engine,1) -%marginal_nodes(engine,2) -%marginal_nodes(engine,3) -%marginal_nodes(engine,4) -%marginal_nodes(engine,5) -%evidence{2}=0.6; -%evidence{1}=[]; -%[engine,loglik]=enter_evidence(engine,evidence); -%marginal_nodes(engine,3); -%marginal_nodes(engine,4); -%marginal_nodes(engine,5); -end \ No newline at end of file +drawFigureM(nnodes,bnet,labels,filename,cases,stdevs,means,select_var_new,select_var_data_new); + +writeParameters_ev(pre,bnet,nnodes,labels,cases,stdevs,means,select_var_new,select_var_data_new); + +end diff --git a/BNW_parameter_learning/Predictmultipleintrvention.m b/BNW_parameter_learning/Predictmultipleintrvention.m index 4675b846..eaec60dc 100644 --- a/BNW_parameter_learning/Predictmultipleintrvention.m +++ b/BNW_parameter_learning/Predictmultipleintrvention.m @@ -11,17 +11,13 @@ fvarnamefile=strcat(pre,'varname.txt'); varfile = fopen(fvarnamefile,'r'); -%nnodes=5; Std_flag=true; [labels,cases,bnet]=readInput(dfile,sfile,nnodes,Std_flag); -[bnet]=parameterLearning(bnet,cases); - -%[predict_mean,predict_sd,q_sq]=looCrossValid(bnet,cases); +[bnet]=parameterLearning(bnet,cases); fvarfile=strcat(pre,'var.txt'); -fvar = fopen(fvarfile,'r'); - +fvar = fopen(fvarfile,'r'); select_var_new = fscanf(fvar,'%d'); nm = numel(select_var_new); @@ -48,26 +44,52 @@ fvard = fopen(fvardfile,'r'); select_var_data_new = fscanf(fvard,'%f'); +means_orig = cell(1,nnodes); +stdevs_orig = cell(1,nnodes); +labels_orig = cell(1,nnodes); +%Read in original means and standard deviations +mapfile = strcat(pre,'map.txt'); +fmap = fopen(mapfile,'r'); +for i=1:nnodes + buffer = fgetl(mapfile); + temp = cell(1,4); + for j=1:4 + [next,buffer] = strtok(buffer); + temp{j} = next; + end + labels_orig{i} = temp{1}; + means_orig{i} = str2num(temp{4}); + stdevs_orig{i} = str2num(temp{3}); +end +fclose(fmap); + +%Need to map the means and stdevs to the correct labels +means = cell(1,nnodes); +stdevs = cell(1,nnodes); +%Read in labels in new order. +labelsnew = cell(1,nnodes); +mapdatafile = strcat(pre,'mapdata.txt'); +fmapdata = fopen(mapdatafile,'r'); +buffer = fgetl(fmapdata); +for i = 1:nnodes + [next,buffer ] = strtok(buffer); + labelsnew{i} = next; +end +fclose(fmapdata); +for i = 1:nnodes + for j = 1:nnodes + if strcmp(labelsnew{i},labels_orig{j}) + means{i} = means_orig{j}; + stdevs{i} = stdevs_orig{j}; + break + end + end +end + filename=strcat(pre,'net_figure_new.txt'); -drawFigureM(nnodes,bnet,labels,filename,cases,select_var_new,select_var_data_new); - -%quit force; -%marginal_nodes(engine,2) -%marginal_nodes(engine,3) -%marginal_nodes(engine,4) -%marginal_nodes(engine,5) -%evidence{1}=2; -%[engine,loglik]=enter_evidence(engine,evidence) -%marginal_nodes(engine,1) -%marginal_nodes(engine,2) -%marginal_nodes(engine,3) -%marginal_nodes(engine,4) -%marginal_nodes(engine,5) -%evidence{2}=0.6; -%evidence{1}=[]; -%[engine,loglik]=enter_evidence(engine,evidence); -%marginal_nodes(engine,3); -%marginal_nodes(engine,4); -%marginal_nodes(engine,5); -end \ No newline at end of file +drawFigureM(nnodes,bnet,labels,filename,cases,stdevs,means,select_var_new,select_var_data_new); + +writeParameters_int(pre,bnet,nnodes,labels,cases,stdevs,means,select_var_new,select_var_data_new); + +end diff --git a/BNW_parameter_learning/drawFigure.m b/BNW_parameter_learning/drawFigure.m index a5de0f2d..fa963a4b 100644 --- a/BNW_parameter_learning/drawFigure.m +++ b/BNW_parameter_learning/drawFigure.m @@ -1,18 +1,19 @@ -function [] = drawFigure(nnodes,bnet,labels,filename,cases,selectvar,selectdata) +function [] = drawFigure(nnodes,bnet,labels,filename,cases,stdevs,means,selectvar,selectdata) %drawFigure writes the parameters and data that are needed to draw the %structure of a Bayesian network. -if nargin < 6, - drawFigureNoEv(nnodes,bnet,labels,filename,cases); + +if nargin < 8, + drawFigureNoEv(nnodes,bnet,labels,filename,cases,stdevs,means); else - drawFigureEv(nnodes,bnet,labels,filename,cases,selectvar,selectdata); + drawFigureEv(nnodes,bnet,labels,filename,cases,stdevs,means,selectvar,selectdata); end; end -function [] = drawFigureEv(nnodes,bnet,labels,filename,cases,selectvar,selectdata) +function [] = drawFigureEv(nnodes,bnet,labels,filename,cases,stdevs,means,selectvar,selectdata) %Function to use if there is no entered evidence. % % @@ -152,6 +153,8 @@ for i = 1:nnodes, [x_vals,y_vals] = calcGaussian(predict.mu,predict.Sigma,Amax(i),Amin(i)); %%%For continuous nodes, print x and the pdf of a normal curve. for j = 1:101, + %%Undo standardization + xvals(j,1) = xvals(j,1)*stdevs{i}+means{i} fprintf(fileID,'%6.4f\t%6.4f\n',x_vals(j,1),y_vals(j,1)); end; end; @@ -172,7 +175,7 @@ end -function [] = drawFigureNoEv(nnodes,bnet,labels,filename,cases) +function [] = drawFigureNoEv(nnodes,bnet,labels,filename,cases,stdevs,means) %Function to use if there is no entered evidence. % % @@ -302,6 +305,8 @@ for i = 1:nnodes, [x_vals,y_vals] = calcGaussian(predict.mu,predict.Sigma,Amax(i),Amin(i)); %%%For continuous nodes, print x and the pdf of a normal curve. for j = 1:101, + %%Undo standardization + x_vals(j,1) = x_vals(j,1)*stdevs{i}+means{i}; fprintf(fileID,'%6.4f\t%6.4f\n',x_vals(j,1),y_vals(j,1)); end; end; diff --git a/BNW_parameter_learning/drawFigureM.m b/BNW_parameter_learning/drawFigureM.m index bca223ce..9aa77d35 100644 --- a/BNW_parameter_learning/drawFigureM.m +++ b/BNW_parameter_learning/drawFigureM.m @@ -1,21 +1,6 @@ -function [] = drawFigureM(nnodes,bnet,labels,filename,cases,selectvar,selectdata) -%drawFigure writes the parameters and data that are needed to draw the -%structure of a Bayesian network. - - -%Function to use if there is no entered evidence. -% -% -%Before each printed line, I will have a line that starts with %%% -% that describes what will be on that line - -%Create an empty evidence cell array. - -%val=cases; -%for i = 1:nnodes -% val(i,1)=val(i,2); - -%end +function [] = drawFigureM(nnodes,bnet,labels,filename,cases,stdevs,means,selectvar,selectdata) +%drawFigureM writes the parameters and data that are needed to draw the +%structure of a Bayesian network after added evidence or intervention fileID = fopen(filename,'w'); @@ -30,49 +15,35 @@ engine = jtree_inf_engine(bnet); m = size(selectvar,1); - ev_dat = zeros(1,nnodes); -%For parents, sum down columns for i = 1:m, di=selectvar(i,1); ev_dat(di)=selectdata(i,1); - +%Need to standardized evidence for continuous nodes. + if bnet.node_sizes(di) == 1 + ev_dat(di) = (ev_dat(di) - means{di}) / stdevs{di}; + end evidence{di}=ev_dat(di); fprintf(fileID,'%i\t',di); end -fprintf(fileID,'\n'); - -%ev_dat -% select_var = selectvar(1,1) -% -% select_var_data = selectdata(1,1) -% -% -% evidence{select_var}=select_var_data; +fprintf(fileID,'\n'); [engine,loglik]=enter_evidence(engine,evidence); %Open the file, and write the nodes to a file. - - -%%%%Evidence node - %%% The number of nodes fprintf(fileID,'%i\n',nnodes); %Get canvas size labels_temp = cellstr(labels); [x,y] = make_layout(bnet.dag); - x = x - min(x); y = 1 - y; y = y - min(y); - [x_dim,y_dim] = canvasSize(nnodes,x,y); %%% The dimensions of the canvas for the javascript code -fprintf(fileID,'%i\t%i\t\n',x_dim,y_dim) - +fprintf(fileID,'%i\t%i\t\n',x_dim,y_dim); x = x*x_dim; y = y*y_dim; for i = 1:nnodes, @@ -99,7 +70,6 @@ for i = 1:nnodes, end end - for i = 1:nnodes, %%% The name and type of each node (1=continuous, the number of states %%% if it is discrete @@ -162,23 +132,25 @@ for i = 1:nnodes, fprintf(fileID,'%i\t%6.4f\n',j,predict.T(j)); end; else - [x_vals,y_vals] = calcGaussian(predict.mu,predict.Sigma,Amax(i),Amin(i)); %%%For continuous nodes, print x and the pdf of a normal curve. for j = 1:101, + %%Undo standardization + x_vals(j,1) = x_vals(j,1)*stdevs{i}+means{i}; fprintf(fileID,'%6.4f\t%6.4f\n',x_vals(j,1),y_vals(j,1)); end; end; else - fprintf(fileID,'%6.4f\t%6.4f\n',ev_dat(i),1); + if bnet.node_sizes(i) == 1, + fprintf(fileID,'%6.4f\t%6.4f\n',ev_dat(i)*stdevs{i}+means{i},1); + else + fprintf(fileID,'%6.4f\t%6.4f\n',ev_dat(i),1); + endif end end -%fprintf(fileID,'%s\t %\n',labels_temp{:}); - fclose(fileID); - end diff --git a/BNW_parameter_learning/prepareInput.m b/BNW_parameter_learning/prepareInput.m new file mode 100644 index 00000000..28a06c15 --- /dev/null +++ b/BNW_parameter_learning/prepareInput.m @@ -0,0 +1,281 @@ +function [ ] = prepareInput( pre ) + % + % This function takes files that are uploaded to BNW and creates output + % files that can be used for structure and parameter learning. + % It replaces php code that was previously in bn_file_load_gom.php. + % There are several improvements in performance and ease of use: + % 1) Loading files is significantly (~5x) faster for large input files. + % 2) The allowed values for discrete variables are more flexible. + % (e.g., A genotype variable be 'B' and 'D' instead of having + % to replace to make them '1' and '2'.) + % 3) Continuous variables may be identified as continuous in some cases + % even if there is not a period. + % 4) The states of discrete variables should be correctly ordered in + % almost all cases. + % 5) An additional output file is written that will let users check if + % the input file has been uploaded and parsed correctly. + % 6) Future updates to this code should be easier than updating the php. + % + % + % Input: ???continuous_input_orig.txt + % This is the input file that is uploaded to BNW. + % It is directly written out by the BNW php code with no modification. + % The file format is a header line containing the variable names + % followed by the data, with each case in a row. + % + % Output: There are many output files. + % 1) The main output file is ???continuous_input.txt that can be + % used by the structure learning code and parameter learning codes. + % The first line is variable names, the second line is the node type + % (continuous nodes should have 1, discrete nodes have the number + % of states), and the rest is the data. + % 2) A new output file is ???input_desc.txt, a file that describes the + % data so users can check that it has been parsed correctly. + % 3) ???nlevels.txt: The states of discrete variables. + % 4) ???name.txt: The names of the variables as uploaded. + % 5) ???type.txt: The number of states for each variables + % (1 indicates a continuous variable.) + % 6/7) ???nnode.txt and ???nrows.txt: number of nodes and cases + % 8-12) ???ban.txt, ???white.txt, ???k.txt, ???thr.txt, and + % ???parent.txt: Files with default values for structure learning. + % + +% open file for input, include error handling +dfile=strcat(pre,'continuous_input_orig.txt'); + +fin = fopen(dfile,'r'); +if fin < 0 + error(['Could not open ',dfile,' for input']); +end + +% Get the number of cases (the number of rows in the file excluding the header) +ncases = fskipl(fin,Inf) - 1; + +frewind(fin); + +% Read in first line to get the number of nodes and the node labels. +buffer = fgetl(fin); %get header line as a string +nnodes = numel(strfind(buffer,"\t")) + 1; +labels = cell(1,nnodes); +for j=1:nnodes + [next,buffer] = strtok(buffer); + labels{j} = next; +end + +% Read in the data +data = cell(ncases,nnodes); +for i = 1:ncases + buffer = fgetl(fin); + for j = 1:nnodes + [next,buffer] = strtok(buffer); + data{i,j} = next; + end +end + +% Determine whether or not the nodes are continuous or discrete. +% First, treat them as all discrete and get the states and number of stats(levels). +levels = cell(1,nnodes); +states = []; +for j = 1:nnodes + states{end+1} = unique(data(:,j)); + levels{j} = size(states{j},1); +end + +%Now do some checks to see if nodes are discrete or continuous +for j = 1:nnodes + % If there are 3 or less unique values, I will assume that the node is discrete. + if levels{j} < 4; + continue + % If there are as many unique values as a third of the number of cases, + % I will assume that the node is continuous. + elseif levels{j} > ncases/3; + levels{j} = 1; + % If there are more than twenty unique values, + % I will assume that the node is continuous. + elseif levels{j} > 20; + levels{j} = 1; + % Otherwise, I will scan through the individual values. + % If any of the values contain a '.', I will assume it is continuous. + else + period_test = 0; + column = data(:,j); + k = 1; + while period_test == 0 + period_test = sum(cell2mat(strfind(column(k),"."))); + if period_test != 0; + levels{j} = 1; + end + k++; + if k > ncases + break + end + end + end +end + +%I need to check if any discrete nodes are listed after continuous nodes. +%If so, I need to rearrange the columns. +max_disc = 0; +min_cont = nnodes + 1; +for i = 1:nnodes + if levels{i} > 1 + max_disc = i; + elseif min_cont == nnodes+1 + min_cont = i; + end +end +%If max_disc > min_cont, you need to rearrange the nodes +% to put the discrete nodes first. +if max_disc > min_cont + levels_old = levels; + labels_old = labels; + data_old = data; + states_old = states; + new_order = {}; + for i=1:nnodes + if levels_old{i} > 1 + new_order{end+1} = i; + end + end + for i=1:nnodes + if levels_old{i} == 1 + new_order{end+1} = i; + end + end + labels = {}; + levels = {}; + states = {}; + for i =1:nnodes + labels{i} = labels_old{new_order{i}}; + levels{i} = levels_old{new_order{i}}; + states{i} = states_old{new_order{i}}; + for j=1:ncases + data{j,i} = data_old{j,new_order{i}}; + end + end + +endif + + +%Write other files that are used by BNW for this key. +%The first group of files establish default settings for structure learning. +outfile = strcat(pre,'white.txt'); +fout = fopen(outfile,'w'); +fprintf(fout,'From\tTo\n'); +fclose(fout); + +outfile = strcat(pre,'ban.txt'); +fout = fopen(outfile,'w'); +fprintf(fout,'From\tTo\n'); +fclose(fout); + +outfile = strcat(pre,'k.txt'); +fout = fopen(outfile,'w'); +fprintf(fout,'1\n'); +fclose(fout); + +outfile = strcat(pre,'parent.txt'); +fout = fopen(outfile,'w'); +fprintf(fout,'4\n'); +fclose(fout); + +outfile = strcat(pre,'thr.txt'); +fout = fopen(outfile,'w'); +fprintf(fout,'0.5\n'); +fclose(fout); + + +%The next group of files have information about the uploaded file. +outfile = strcat(pre,'name.txt'); +fout = fopen(outfile,'w'); +fprintf(fout,'%s\t',labels{1:end-1}); +fprintf(fout,'%s\n',labels{end}); +fclose(fout); + +outfile = strcat(pre,'nnode.txt'); +fout = fopen(outfile,'w'); +fprintf(fout,'%i\n',nnodes); +fclose(fout); + +outfile = strcat(pre,'nrows.txt'); +fout = fopen(outfile,'w'); +fprintf(fout,'%i\n',ncases); +fclose(fout); + +outfile = strcat(pre,'type.txt'); +fout = fopen(outfile,'w'); +fprintf(fout,'%s\t',labels{1:end-1}); +fprintf(fout,'%s\n',labels{end}); +fprintf(fout,'%i\t',levels{1:end-1}); +fprintf(fout,'%i\n',levels{end}); +fclose(fout); + +%This output file contains the states for discrete nodes. +% The unique matlab function already sorts the states. +outfile = strcat(pre,'nlevels.txt'); +fout = fopen(outfile,'w'); +for i = 1:nnodes + if levels{i} > 1 + fprintf(fout,'%s\t',labels{i},states{i}{1:end-1}); + fprintf(fout,'%s\n',states{i}{end}); + end +end +fclose(fout); + + +%Print a file with a short description of the input. +descfile = strcat(pre,'input_desc.txt'); +dout = fopen(descfile,'w'); +fprintf(dout,['As loaded, the input file had the following properties:\n\n']); +dout = fopen(descfile,'a'); +fprintf(dout,'There are %i variables and %i cases(rows)\n',size(labels,2),ncases); +fprintf(dout,'The variable names are:\n'); +fprintf(dout,'%s\t',labels{1:end-1}); +fprintf(dout,'%s\n\n',labels{end}); +for i=1:nnodes + if levels{i} == 1 + fprintf(dout,'%s is a continuous variable\n',labels{i}); + column = str2double(data(:,i)); + colmean = mean(column); + colstd = std(column); + fprintf(dout,'It has a mean of %6.3f and a standard deviation of %6.3f\n\n',mean(column),std(column)) + else + fprintf(dout,'%s is a discrete variable with %i states\n',labels{i},levels{i}); + fprintf(dout,'The states are: '); + fprintf(dout,'%s ',states{i}{1:end-1}); + fprintf(dout,'%s\n\n',states{i}{end}); + end +end +fclose(fout); + +outfile = strcat(pre,'continuous_input.txt'); +fout = fopen(outfile,'w'); +fprintf(fout,'%s\t',labels{1:end-1}); +fprintf(fout,'%s\n',labels{end}); +fprintf(fout,'%i\t',levels{1:end-1}); +fprintf(fout,'%i\n',levels{end}); +%Need to replace states in discrete variables with integers for BNT +for i = 1:nnodes + if levels{i} > 1 + for j = 1:ncases + for k=1:size(states{i},1) + if data{j,i} == states{i}{k} + data{j,i} = sprintf('%i',num2cell(k){1});; + break + end + end + end + end +end +for i = 1:ncases + fprintf(fout,'%s\t',data{i,1:end-1}); + fprintf(fout,'%s\n',data{i,end}); +end +fclose(fout); + + + + + +end +% end of prepareInput.m \ No newline at end of file diff --git a/BNW_parameter_learning/readInput.m b/BNW_parameter_learning/readInput.m index c2c16331..2be0af29 100644 --- a/BNW_parameter_learning/readInput.m +++ b/BNW_parameter_learning/readInput.m @@ -25,19 +25,12 @@ end [labelsold,node_sizes,cases, data] = readInputData(dfile,nnodes); - - % read in the file with the structure [dag] = readInputStructure(sfile,labelsold); % check the ordering of the nodes and reorder if necessary [labels,cases,dag,node_sizes,ord_flag] = checkStructure(labelsold,cases,dag,node_sizes); -%draw_graph(dag,labels); -%if ord_flag == 1 -% fprintf(['Order of nodes was changed to agree with topological order\n']) -%end -%fprintf(['The structure of the network should be correctly displayed in a figure\n']) dcount = 0; for i = 1:nnodes @@ -67,4 +60,4 @@ end end -% end of readInput.m \ No newline at end of file +% end of readInput.m diff --git a/BNW_parameter_learning/runBN_initial.m b/BNW_parameter_learning/runBN_initial.m index c3f2a34b..43caf402 100644 --- a/BNW_parameter_learning/runBN_initial.m +++ b/BNW_parameter_learning/runBN_initial.m @@ -15,84 +15,43 @@ mapfile = fopen(mapfilename,'w'); mapval = fopen(mapvalfilename,'w'); -%nnodes=5; Std_flag=true; [labels,cases,bnet,node_sizes,data,labelsold]=readInput(dfile,sfile,nnodes,Std_flag); -s = std(data,0,1); +s=std(data,0,1); m=mean(data); - for i=1:nnodes fprintf(mapval,'%s\t%d\t%f\t%f\n',labelsold{i},node_sizes(i),s(i),m(i)); end - -% for j=1:nnodes -% [next,buffer] = strtok(buffer); -% name{j}=next; -% for i=1:nnodes -% if strcmp(name{j},labels{i}) -% map{j}=i; -% fprintf(mapfile,'%d\t',i); -% end -% end -% end -%name -%labels -%map fprintf(mapfile,'%s',labels{1}); for i=2:nnodes fprintf(mapfile,'\t%s',labels{i}); end fprintf(mapfile,'\n'); +fclose(mapval); +fclose(mapfile); + +%Need to rearrange the means and stdevs to match the new labeling. +means = cell(1,nnodes); +stdevs = cell(1,nnodes); +for i = 1:nnodes + for j = 1:nnodes + if strcmp(labels{i},labelsold{j}) + means{i} = m(j); + stdevs{i} = s(j); + break + end + end +end + [bnet]=parameterLearning(bnet,cases); -%[predict_mean,predict_sd,q_sq]=looCrossValid(bnet,cases); -%engine=jtree_inf_engine(bnet); -%evidence=cell(1,nnodes); - -%varfile='var.txt'; -%fvar = fopen(varfile,'r'); -%select_var = fscanf(fvar,'%d'); -%select_var=map{select_var}; -%varfiled='vardata.txt'; -%fvard = fopen(varfiled,'r'); -%select_var_data = fscanf(fvard,'%f'); - -%evidence{select_var}=select_var_data; -%[engine,loglik]=enter_evidence(engine,evidence); - -%outdata='prediction.txt'; -%fout = fopen(outdata,'w'); - -%for ii = 1:nnodes - % i=map{ii}; - % data=marginal_nodes(engine,i); - % fprintf(fout,'%d\t%d\t%f\t%f\t%f\n',ii,data.domain,data.T,data.mu,data.Sigma); - %fprintf(1,'%d\n',i); -% end filename=strcat(pre,'net_figure.txt'); -drawFigure(nnodes,bnet,labels,filename,cases); - -%quit force; -%marginal_nodes(engine,2) -%marginal_nodes(engine,3) -%marginal_nodes(engine,4) -%marginal_nodes(engine,5) -%evidence{1}=2; -%[engine,loglik]=enter_evidence(engine,evidence) -%marginal_nodes(engine,1) -%marginal_nodes(engine,2) -%marginal_nodes(engine,3) -%marginal_nodes(engine,4) -%marginal_nodes(engine,5) -%evidence{2}=0.6; -%evidence{1}=[]; -%[engine,loglik]=enter_evidence(engine,evidence); -%marginal_nodes(engine,3); -%marginal_nodes(engine,4); -%marginal_nodes(engine,5); -fclose(mapval); -fclose(mapfile); -end \ No newline at end of file + +drawFigure(nnodes,bnet,labels,filename,cases,stdevs,means); + +writeParameters(pre,nnodes,bnet,labels,cases,labelsold,s,m); + +end diff --git a/BNW_parameter_learning/standardizeData.m b/BNW_parameter_learning/standardizeData.m index ba4ef5dd..449aa440 100644 --- a/BNW_parameter_learning/standardizeData.m +++ b/BNW_parameter_learning/standardizeData.m @@ -1,7 +1,7 @@ function [ cases ] = standardizeData( labels, node_sizes, cases ) %standardizeData standardizes continuous nodes so they have a mean = 0 % and standard deviation = 1 -% Detailed explanation goes here + nnodes = size(labels,2); diff --git a/BNW_parameter_learning/writeParameters.m b/BNW_parameter_learning/writeParameters.m new file mode 100644 index 00000000..0790a8e2 --- /dev/null +++ b/BNW_parameter_learning/writeParameters.m @@ -0,0 +1,106 @@ +function [] = writeParameters(pre,nnodes,bnet,labels,cases,labelsold,s,m) +%Writes a file that contains the parameters of the network with no evidence. + + +%%Get the types of the nodes. +typefile = strcat(pre,'type.txt'); +ftype = fopen(typefile,'r'); +types = cell(1,nnodes); +buffer = fgetl(ftype); +buffer = fgetl(ftype); +for j = 1:nnodes + [next,buffer] = strtok(buffer); + types{j} = uint16(str2num(next)); +end + +max_states = 0; +disc_nodes = 0; +for j = 1:nnodes + if types{j} > max_states + max_states = types{j}; + end + if types{j} > 1 + disc_nodes = disc_nodes + 1; + end +end + +%Add 1 to max_states to account for node name +max_states = max_states + 1; + +%%Get mapping of discrete levels. +levelfile = strcat(pre,'nlevels.txt'); +flevels = fopen(levelfile,'r'); +levels = cell(disc_nodes,max_states); +ndisc_nodes = 0; +for i=1:disc_nodes + ndisc_nodes = ndisc_nodes + 1; + buffer = fgetl(flevels); + for j = 1:max_states + [next,buffer] = strtok(buffer); + if j == 1 + levels{i,j} = next; + else +% levels{i,j} = uint16(str2num(next)); + levels{i,j} = next; + end + if length(buffer) < 1 + break + end + end +end + + +evidence = cell(1,nnodes); +engine = jtree_inf_engine(bnet); +[engine,loglik] = enter_evidence(engine,evidence); + +%Open output file. +filename = strcat(pre,'parameters.txt'); +fileID = fopen(filename,'w'); + +for i = 1:nnodes + for j = 1:nnodes + if strcmp(labelsold{i},labels{j}); + nodeid = j; + break + end + end + predict = marginal_nodes(engine,nodeid); + %%%Print the name of the node + fprintf(fileID,'%s\n',labels{nodeid}); + %%%Print the type of node + if bnet.node_sizes(nodeid) == 1; + line = 'Continuous node\n'; + fprintf(fileID,line); + %%% 'i' in the line below is correct: m and s are had original node labeling + adj_mu = predict.mu*s(i)+m(i); + adj_sigma = s(i)*predict.Sigma; + fprintf(fileID,'%6.4f\t%6.4f\n\n',adj_mu,adj_sigma); + else + line = 'Discrete node with %i states\n'; + fprintf(fileID,line,bnet.node_sizes(nodeid)); + %line = 'Probability of each state\n'; + %fprintf(fileID,line); + nodeid2 = 0; + for k = 1:ndisc_nodes, + if strcmp(levels{k,1},labels{nodeid}), + nodeid2 = k; + break + end + end + for j = 1:bnet.node_sizes(nodeid), + %%%For discrete nodes, the state and the percent of that state +% fprintf(fileID,'%i\t%6.4f\n',levels{nodeid2,j+1},predict.T(j)); + fprintf(fileID,'%s\t%6.4f\n',levels{nodeid2,j+1},predict.T(j)); + end; + fprintf(fileID,'\n') + + end +end + + + +fclose(fileID); + +end + diff --git a/BNW_parameter_learning/writeParameters_ev.m b/BNW_parameter_learning/writeParameters_ev.m new file mode 100644 index 00000000..fc24e2e5 --- /dev/null +++ b/BNW_parameter_learning/writeParameters_ev.m @@ -0,0 +1,151 @@ +function [] = writeParameters_ev(pre,bnet,nnodes,labels,cases,stdevs,means,selectvar,selectdata) +%Writes a file that contains the parameters of the network after entering evidence. + +%Read in original node labels to get node IDs. +infile = strcat(pre,'continuous_input.txt'); +fin = fopen(infile,'r'); +labelsold = cell(1,nnodes); +buffer = fgetl(fin); +for j = 1:nnodes + [next,buffer] = strtok(buffer); + labelsold{j} = next; +end +fclose(fin); + + +evidence = cell(1,nnodes); +engine = jtree_inf_engine(bnet); + +m = size(selectvar,1); + +%%Get the types of the nodes. +typefile = strcat(pre,'type.txt'); +ftype = fopen(typefile,'r'); +types = cell(1,nnodes); +buffer = fgetl(ftype); +buffer = fgetl(ftype); +for j = 1:nnodes + [next,buffer] = strtok(buffer); + types{j} = uint16(str2num(next)); +end + +max_states = 0; +disc_nodes = 0; +for j = 1:nnodes + if types{j} > max_states + max_states = types{j}; + end + if types{j} > 1 + disc_nodes = disc_nodes + 1; + end +end + +%Add 1 to max_states to account for node name +max_states = max_states + 1; + +%%Get mapping of discrete levels. +levelfile = strcat(pre,'nlevels.txt'); +flevels = fopen(levelfile,'r'); +levels = cell(disc_nodes,max_states); +ndisc_nodes = 0; +for i=1:disc_nodes + ndisc_nodes = ndisc_nodes + 1; +buffer = fgetl(flevels); +for j = 1:max_states + [next,buffer] = strtok(buffer); + if j == 1 + levels{i,j} = next; + else +% levels{i,j} = uint16(str2num(next)); + levels{i,j} = next; + end + if length(buffer) < 1 + break + end + end +end + + +ev_dat = zeros(1,nnodes); +for i = 1:m, + di=selectvar(i,1); + ev_dat(di)=selectdata(i,1); +%Need to standardize evidence for continuous nodes. + if bnet.node_sizes(di) == 1, + ev_dat(di) = (ev_dat(di) - means{di})/stdevs{di}; + end + evidence{di} = ev_dat(di); +end + +[engine,loglik]=enter_evidence(engine,evidence); + +%Open output file. +filename = strcat(pre,'parameters_ev.txt'); +fileID = fopen(filename,'w'); + +for i = 1:nnodes + for j = 1:nnodes + if strcmp(labelsold{i},labels{j}); + nodeid = j; + break + end + end + %%%Print the name of the node + fprintf(fileID,'%s\n',labels{nodeid}); + predict = marginal_nodes(engine,nodeid); + if isempty(evidence{nodeid}) + %%%Print the type of node + if bnet.node_sizes(nodeid) == 1; + line = 'Continuous parameters considering evidence:\n'; + fprintf(fileID,line); + %line = 'Mean and standard deviation of Gaussian distribution\n'; + %fprintf(fileID,line); + adj_mu = predict.mu*stdevs{nodeid}+means{nodeid}; + adj_sigma = stdevs{nodeid}*predict.Sigma; + fprintf(fileID,'%6.4f\t%6.4f\n\n',adj_mu,adj_sigma); + else + line = 'Probability of states considering evidence:\n'; + fprintf(fileID,line); + nodeid2 = 0; + for k = 1:ndisc_nodes, + if strcmp(levels{k,1},labels{nodeid}), + nodeid2 = k; + break + end + end + for j = 1:bnet.node_sizes(nodeid), + %%%For discrete nodes, the state and the percent of that state +% fprintf(fileID,'%i\t%6.4f\n',levels{nodeid2,j+1},predict.T(j)); + fprintf(fileID,'%s\t%6.4f\n',levels{nodeid2,j+1},predict.T(j)); + end; + fprintf(fileID,'\n') + end + else + if bnet.node_sizes(nodeid) == 1; + line = 'Evidence was observed for this node. The observed value was:\n'; + fprintf(fileID,line); + adj_mu = ev_dat(nodeid)*stdevs{nodeid}+means{nodeid}; + fprintf(fileID,'%6.4f\n\n',adj_mu); + else + nodeid2 = 0; + for k = 1:ndisc_nodes, + if strcmp(levels{k,1},labels{nodeid}), + nodeid2 = k; + break + end + end + line = 'Evidence was observed for this node. The observed state was:\n'; + fprintf(fileID,line); + state_ev = uint16(ev_dat(nodeid)); +% fprintf(fileID,'%i\n\n',levels{nodeid2,state_ev+1}); + fprintf(fileID,'%s\n\n',levels{nodeid2,state_ev+1}); + end + end +end + + + +fclose(fileID); + +end + diff --git a/BNW_parameter_learning/writeParameters_int.m b/BNW_parameter_learning/writeParameters_int.m new file mode 100644 index 00000000..ed92d593 --- /dev/null +++ b/BNW_parameter_learning/writeParameters_int.m @@ -0,0 +1,186 @@ +function [] = writeParameters_int(pre,bnet,nnodes,labels,cases,stdevs,means,selectvar,selectdata) +%Writes a file that contains the parameters of the network after intervention. + + +%First read input file to get node labels to get node IDs. +infile = strcat(pre,'continuous_input.txt'); +fin = fopen(infile,'r'); +labelsold = cell(1,nnodes); +buffer = fgetl(fin); +for j = 1:nnodes + [next,buffer] = strtok(buffer); + labelsold{j} = next; +end + +evidence = cell(1,nnodes); +engine = jtree_inf_engine(bnet); + +m = size(selectvar,1); + +%%Get the types of the nodes. +typefile = strcat(pre,'type.txt'); +ftype = fopen(typefile,'r'); +types = cell(1,nnodes); +buffer = fgetl(ftype); +buffer = fgetl(ftype); +for j = 1:nnodes + [next,buffer] = strtok(buffer); + types{j} = uint16(str2num(next)); +end + +max_states = 0; +disc_nodes = 0; +for j = 1:nnodes + if types{j} > max_states + max_states = types{j}; + end + if types{j} > 1 + disc_nodes = disc_nodes + 1; + end +end + +%Add 1 to max_states to account for node name +max_states = max_states + 1; + +%%Get mapping of discrete levels. +levelfile = strcat(pre,'nlevels.txt'); +flevels = fopen(levelfile,'r'); +levels = cell(disc_nodes,max_states); +ndisc_nodes = 0; +for i=1:disc_nodes + ndisc_nodes = ndisc_nodes + 1; +buffer = fgetl(flevels); +for j = 1:max_states + [next,buffer] = strtok(buffer); + if j == 1 + levels{i,j} = next; + else +% levels{i,j} = uint16(str2num(next)); + levels{i,j} = next; + end + if length(buffer) < 1 + break + end + end +end + + +ev_dat = zeros(1,nnodes); +for i = 1:m, + di=selectvar(i,1); + ev_dat(di)=selectdata(i,1); +%Need to standardize evidence for continuous nodes. + if bnet.node_sizes(di) == 1, + ev_dat(di) = (ev_dat(di) - means{di})/stdevs{di}; + end + evidence{di} = ev_dat(di); +end + +[engine,loglik]=enter_evidence(engine,evidence); + +%Get list of nodes that are children, grandchildren, etc. of intervened nodes +%int_nodes contains the list of these children nodes +int_nodes = zeros(1,nnodes); +%new_nodes is just a temporary array to know when to keep looking +new_nodes = zeros(1,nnodes); +for i = 1:nnodes + if !isempty(evidence{i}); + new_nodes(i) = 1; + int_nodes(i) = 1; + end +end +while sum(new_nodes) != 0 + new_nodes_old = new_nodes; + new_nodes = zeros(1,nnodes); + for i = 1:nnodes + if new_nodes_old(i) == 1 + for j = 1:nnodes + if int_nodes(j) == 0 + if bnet.dag(i,j) == 1, + new_nodes(j) = 1; + end + end + end + end + end + for i = 1:nnodes + if new_nodes(i) == 1; + int_nodes(i) = 1; + end + end +end + + +%Open output file. +filename = strcat(pre,'parameters_ev.txt'); +fileID = fopen(filename,'w'); + +for i = 1:nnodes + for j = 1:nnodes + if strcmp(labelsold{i},labels{j}); + nodeid = j; + break + end + end + %check to see if this is a node impacted by intervention + if int_nodes(nodeid) == 1 + %%%Print the name of the node + fprintf(fileID,'%s\n',labels{nodeid}); + predict = marginal_nodes(engine,nodeid); + if isempty(evidence{nodeid}) + %%%Print the type of node + if bnet.node_sizes(nodeid) == 1; + line = 'Continuous parameters considering intervention:\n'; + fprintf(fileID,line); + %line = 'Mean and standard deviation of Gaussian distribution\n'; + %fprintf(fileID,line); + adj_mu = predict.mu*stdevs{nodeid}+means{nodeid}; + adj_sigma = stdevs{nodeid}*predict.Sigma; + fprintf(fileID,'%6.4f\t%6.4f\n\n',adj_mu,adj_sigma); + else + line = 'Probability of states considering intervention:\n'; + fprintf(fileID,line); + nodeid2 = 0; + for k = 1:ndisc_nodes, + if strcmp(levels{k,1},labels{nodeid}), + nodeid2 = k; + break + end + end + for j = 1:bnet.node_sizes(nodeid), + %%%For discrete nodes, the state and the percent of that state +% fprintf(fileID,'%i\t%6.4f\n',levels{nodeid2,j+1},predict.T(j)); + fprintf(fileID,'%s\t%6.4f\n',levels{nodeid2,j+1},predict.T(j)); + end; + fprintf(fileID,'\n') + end + else + if bnet.node_sizes(nodeid) == 1; + line = 'Intervention on this node assigned the following value:\n'; + fprintf(fileID,line); + adj_mu = ev_dat(nodeid)*stdevs{nodeid}+means{nodeid}; + fprintf(fileID,'%6.4f\n\n',adj_mu); + else + nodeid2 = 0; + for k = 1:ndisc_nodes, + if strcmp(levels{k,1},labels{nodeid}), + nodeid2 = k; + break + end + end + line = 'Intervention on this node assigned the following state:\n'; + fprintf(fileID,line); + state_ev = uint16(ev_dat(nodeid)); +% fprintf(fileID,'%i\n\n',levels{nodeid2,state_ev+1}); + fprintf(fileID,'%s\n\n',levels{nodeid2,state_ev+1}); + end + end + end +end + + + +fclose(fileID); + +end + diff --git a/home.php b/home.php index e6c85c12..93348be2 100644 --- a/home.php +++ b/home.php @@ -13,7 +13,7 @@ if($str_arrmat[1]>70.0) ?> This tutorial provides -an overview of using BNW to build a Bayesian network model from a dataset and use the network to make predictions. The dataset used in this tutorial is a synthetic example of a genetic dataset that has a total of 8 variables. Two of the variables are genotypes labeled Geno1 and Geno2, and the remaining 6 variables are gene expression levels or other quantitative traits that are labeled Trait1 to Trait6. The dataset is available here.

The data file is formatted according to the guidelines on the BNW help page. The first row of the file contains the names of the variables and the remaining rows contain the data for each sample of the dataset. The genotypes (Geno1 and Geno2), which are the only discrete variables in the network, are the leftmost variables in the input file and are integer values (1 and 2) for all of the samples. The quantitative traits are continuous variables, and, therefore, all contain a "." in at least one of the samples.

+an overview of using BNW to build a Bayesian network model from a dataset and use the network to make predictions. The dataset used in this tutorial is a synthetic example of a genetic dataset that has a total of 8 variables. Two of the variables are genotypes labeled Geno1 and Geno2, and the remaining 6 variables are gene expression levels or other quantitative traits that are labeled Trait1 to Trait6. The dataset is available here.

The data file is formatted according to the guidelines on the BNW help page. The first row of the file contains the names of the variables and the remaining rows contain the data for each sample of the dataset. The genotypes (Geno1 and Geno2), which are the only discrete variables in the network, are the leftmost variables in the input file and are integer values (1 and 2) for all of the samples. The quantitative traits are continuous variables, and, therefore, all contain a "." in at least one of the samples.

1. Structure learning using default options

@@ -322,7 +322,7 @@ normal'>In order to test if edges present the single best scoring network are conserved across high scoring networks. We can modify the structure learning settings to get identify the structures of many high scoring networks and perform model averaging over these structures. To do this, return to the BNW home page, select Learn a network model from data, and upload the datafile. Instead of using the default settings, select Go to structure learning settings and the BNW structural constraint interface. A more detailed overview of use of the structural constraint interface is provided in another tutorial, but, here, we will investigate the impact of modifying some of the structure learning settings shown below:


+line-height:115%;font-family:"Arial","sans-serif";mso-no-proof:yes'>In order to test if edges present the single best scoring network are conserved across high scoring networks. We can modify the structure learning settings to get identify the structures of many high scoring networks and perform model averaging over these structures. To do this, return to the BNW home page, select Learn a network model from data, and upload the datafile. Instead of using the default settings, select Go to structure learning settings and the BNW structural constraint interface. A more detailed overview of use of the structural constraint interface is provided in another tutorial, but, here, we will investigate the impact of modifying some of the structure learning settings shown below:


@@ -356,7 +356,7 @@ normal'>
To make predictions with the network, we will use the structure learned after model averaging of the top 100 highest scoring networks. First, we will use the model to compare the expected values for nodes in the network based on observed genotypes. For these predictions, we will keep the prediction in evidence mode. The difference between evidence and intervention modes is discussed in the BNW FAQ page. To use the model to make predictions based on Geno1, click on one of the blue bars in the Geno1 node and enter 1 or 2 to indicate which genotype value should be used to predict the values of the other network nodes. In the figure below, Geno1 is outlined in red and state 2 has a 100% probability, indicating that the value of this node has been entered as evidence. The red lines in the figure show the predicted distributions of the nodes after this evidence is known and can be compared with the blue lines which show the distributions for variables using the original data.


+line-height:115%;font-family:"Arial","sans-serif";mso-no-proof:yes'>
To make predictions with the network, we will use the structure learned after model averaging of the top 100 highest scoring networks. First, we will use the model to compare the expected values for nodes in the network based on observed genotypes. For these predictions, we will keep the prediction in evidence mode. The difference between evidence and intervention modes is discussed in the BNW FAQ page. To use the model to make predictions based on Geno1, click on one of the blue bars in the Geno1 node and enter 1 or 2 to indicate which genotype value should be used to predict the values of the other network nodes. In the figure below, Geno1 is outlined in red and state 2 has a 100% probability, indicating that the value of this node has been entered as evidence. The red lines in the figure show the predicted distributions of the nodes after this evidence is known and can be compared with the blue lines which show the distributions for variables using the original data.


diff --git a/sourcecodes/add_evd.php b/sourcecodes/add_evd.php index cba58632..191dc244 100644 --- a/sourcecodes/add_evd.php +++ b/sourcecodes/add_evd.php @@ -105,12 +105,16 @@ for($j=0;$j<$nn;$j++) $dt=$type_d[$s]; -if($dt==1) - $textdata=reversemap($sym,$textdata,$keyval); -else +//if($dt==1) +// $textdata=reversemap($sym,$textdata,$keyval); +//else +// $textdata=discretemap($textdata,$sym,$dmapdata); + +if($dt!=1) $textdata=discretemap($textdata,$sym,$dmapdata); + $ft=$dir."$keyval"."var.txt"; $f1=fopen("$ft","w"); $ft=$dir."$keyval"."vardata.txt"; diff --git a/sourcecodes/add_evd.php~ b/sourcecodes/add_evd.php~ deleted file mode 100644 index 5a5ad2ff..00000000 --- a/sourcecodes/add_evd.php~ +++ /dev/null @@ -1,204 +0,0 @@ - - diff --git a/sourcecodes/add_evd_example.php b/sourcecodes/add_evd_example.php index af97c030..03846663 100644 --- a/sourcecodes/add_evd_example.php +++ b/sourcecodes/add_evd_example.php @@ -105,11 +105,13 @@ for($j=0;$j<$nn;$j++) $dt=$type_d[$s]; -if($dt==1) - $textdata=reversemap($sym,$textdata,$keyval); -else - $textdata=discretemap($textdata,$sym,$dmapdata); +//if($dt==1) +// $textdata=reversemap($sym,$textdata,$keyval); +//else +// $textdata=discretemap($textdata,$sym,$dmapdata); +if($dt!=1) + $textdata=discretemap($textdata,$sym,$dmapdata); $ft=$dir."$keyval"."var.txt"; $f1=fopen("$ft","w"); diff --git a/sourcecodes/add_evd_example.php~ b/sourcecodes/add_evd_example.php~ deleted file mode 100644 index e3daca1e..00000000 --- a/sourcecodes/add_evd_example.php~ +++ /dev/null @@ -1,204 +0,0 @@ - - diff --git a/sourcecodes/add_inv.php b/sourcecodes/add_inv.php index 69dab328..d9ec7cbb 100644 --- a/sourcecodes/add_inv.php +++ b/sourcecodes/add_inv.php @@ -100,10 +100,14 @@ for($j=0;$j<$nn;$j++) $dt=$type_d[$s]; -if($dt==1) - $textdata=reversemap($sym,$textdata,$keyval); -else - $textdata=discretemap($textdata,$sym,$dmapdata); +//if($dt==1) +// $textdata=reversemap($sym,$textdata,$keyval); +//else +// $textdata=discretemap($textdata,$sym,$dmapdata); + +if($dt!=1) + $textdata=discretemap($textdata,$sym,$dmapdata); + $ft=$dir.$keyval."var.txt"; $f1=fopen("$ft","w"); diff --git a/sourcecodes/add_inv.php~ b/sourcecodes/add_inv.php~ deleted file mode 100644 index 877b4a9a..00000000 --- a/sourcecodes/add_inv.php~ +++ /dev/null @@ -1,262 +0,0 @@ - %s;\n",$ii,$j); - - - } - } - - -} -fwrite($fout,"$endstring"); - -?> - diff --git a/sourcecodes/add_inv_example.php b/sourcecodes/add_inv_example.php index c3514122..a66e069c 100644 --- a/sourcecodes/add_inv_example.php +++ b/sourcecodes/add_inv_example.php @@ -100,11 +100,17 @@ for($j=0;$j<$nn;$j++) $dt=$type_d[$s]; -if($dt==1) - $textdata=reversemap($sym,$textdata,$keyval); -else +//if($dt==1) +// $textdata=reversemap($sym,$textdata,$keyval); +//else +// $textdata=discretemap($textdata,$sym,$dmapdata); + +if($dt!=1) $textdata=discretemap($textdata,$sym,$dmapdata); + + + $ft=$dir.$keyval."var.txt"; $f1=fopen("$ft","w"); $ft=$dir.$keyval."vardata.txt"; diff --git a/sourcecodes/add_inv_example.php~ b/sourcecodes/add_inv_example.php~ deleted file mode 100644 index 93c70c8d..00000000 --- a/sourcecodes/add_inv_example.php~ +++ /dev/null @@ -1,251 +0,0 @@ - %s;\n",$row_name,$col_name); - - - } - } - - -} -fwrite($fout,"$endstring"); - -?> - diff --git a/sourcecodes/bn_file_load_gom.php b/sourcecodes/bn_file_load_gom.php index 342afe02..8f14aa7a 100644 --- a/sourcecodes/bn_file_load_gom.php +++ b/sourcecodes/bn_file_load_gom.php @@ -1,5 +1,7 @@ -

diff --git a/sourcecodes/layout_example.php b/sourcecodes/layout_example.php index b5f53a6b..130b8b7c 100644 --- a/sourcecodes/layout_example.php +++ b/sourcecodes/layout_example.php @@ -84,6 +84,9 @@ function calcHeight()
  • ","Ratting","width=950,height=270,0,status=0,");>Display structure matrix +
  • ","Ratting","width=950,height=270,0,status=0,");>View parameters
  • Help
  • Home diff --git a/sourcecodes/my_new_style.css b/sourcecodes/my_new_style.css index 20db184f..8e88862f 100644 --- a/sourcecodes/my_new_style.css +++ b/sourcecodes/my_new_style.css @@ -44,7 +44,7 @@ body { text-align:left; background:white; min-width:50%; - min-hieght:50%; + min-height:50%; max-width:70%; } @@ -58,7 +58,7 @@ body { text-align:left; background:white; min-width:50%; - min-hieght:50%; + min-height:50%; max-width:60%; } @@ -72,7 +72,7 @@ body { text-align:left; background:white; min-width:50%; - min-hieght:50%; + min-height:50%; max-width:60%; } diff --git a/sourcecodes/network_layout_evd.php b/sourcecodes/network_layout_evd.php index 4efd35da..09554624 100644 --- a/sourcecodes/network_layout_evd.php +++ b/sourcecodes/network_layout_evd.php @@ -1,6 +1,9 @@ -

    Error: Unable to display your network structure 1.

    +

    Error: Unable to display your network structure.

    5 && $node<=7) -{ - $width=150; - $hieght=120; - $font=12; -} -else if($node>7 && $node<=10) -{ - $width=110; - $hieght=85; - $font=10; -} -else -{ - $width=80; - $hieght=60; - $font=8; -} -*/ - $width=150; - $hieght=150; - $font=12; +$width=150; +$height=150; +$font=12; $r_index=$node+2; @@ -93,26 +71,21 @@ $data_read[$i][0]=trim($datamat[0]); //name $data_read[$i][1]=trim($datamat[1]); //datatype $col_in=2; $r_index+=4; - if($datamat[1]==1) //type=coninuous + if($datamat[1]==1) //type=continuous { for($j=1;$j<=101;$j++) { $datamat=explode("\t",$str_arrmat[$r_index]); $data_read[$i][$col_in]=trim($datamat[0]); //x data - // echo $data_read[$i][$col_in]; - // echo ' '; $col_in++; $data_read[$i][$col_in]=trim($datamat[1]); //y data - // echo $data_read[$i][$col_in]; - // echo ' '; $col_in++; $r_index++; // increment to point next data - // echo "
    "; } } - if($datamat[1]>1) //type=descrete + if($datamat[1]>1) //type=discrete { $iter=$datamat[1]; for($j=1;$j<=$iter;$j++) @@ -120,46 +93,28 @@ $r_index+=4; $datamat=explode("\t",$str_arrmat[$r_index]); $data_read[$i][$col_in]=trim($datamat[0]); //x data //use level mapping - $data_read[$i][$col_in]=levelmap($data_read[$i][$col_in],$data_read[$i][0],$levelmap); + $data_read[$i][$col_in]=levelmap($data_read[$i][$col_in],$data_read[$i][0],$levelmap); $col_in++; $data_read[$i][$col_in]=trim($datamat[1]); //y data $col_in++; $r_index++; // increment to point next data - //echo "
    "; } } } - - -////////////////////////////////////////////////Graphviz data read//////////////////////////////////////////////////////////////////////////////// +/////////Graphviz data read//////////////// $grv=$dir.$keyval."graphviz.txt"; $line=shell_exec('/usr/bin/dot -Tplain -y '.$grv); - - $grviz_name_list=array(); $g_file_name="./data/".$keyval."grviz_name_file.txt"; $grviz_name=file_get_contents("$g_file_name"); $grviz_name_list=explode("\n",$grviz_name); - - -//$foutnew=fopen("contentofgraphviz.txt","w"); -//fwrite($foutnew,"$line"); - - -//$grfilename=$keyval."graphviz.txt"; -//$cmd="/usr/bin/dot -Tplain -y $grfilename"; -//$line=system($cmd); - - - - $str_arrname=array(); $str_arrname=explode("\n",$line); $data=array(); @@ -171,42 +126,29 @@ foreach($str_arrname as $row) $i++; if($i>1) { - - $data=explode(" ",$row); + $data=explode(" ",$row); $j=0; $k=0; $flag=0; foreach($data as $cell) { - $j++; - $cell=trim($cell); - //echo $cell; - //echo ' '; if($j==1 && $cell=="node") { $flag=1; } - if($j>1 && $j<5 && $flag==1) { - //echo $cell; - //echo ' '; if($j==2) { - $ID_data[$ii][$k]=$grviz_name_list[$cell]; } else $ID_data[$ii][$k]=round($cell/10*900); - // echo $ID_data[$ii][$k]; - //echo ' '; - $k++; } } - if($flag==1) { $ID_data[$ii][3]=$ID_data[$ii][1]+100; @@ -214,10 +156,7 @@ foreach($str_arrname as $row) $ID_data[$ii][5]=$ID_data[$ii][1]+100; $ID_data[$ii][6]=$ID_data[$ii][2]; $ii++; - //echo "
    "; } - // echo "
    "; - } } @@ -232,10 +171,8 @@ foreach($str_arrname as $row) $i++; if($i>1) { - - $data=explode(" ",$row); + $data=explode(" ",$row); $j=0; - $flag=0; $number_of_point=0; $index=0; @@ -243,15 +180,12 @@ foreach($str_arrname as $row) { $j++; $cell=trim($cell); - if($j==1 && $cell=="edge") { $flag=1; } - if($j==2 && $flag==1) { - for($k=0;$k<$nnode;$k++) { $cell=$grviz_name_list[$cell]; @@ -260,9 +194,7 @@ foreach($str_arrname as $row) $edge_data[$ii][0]=$ID_data[$k][3]; $edge_data[$ii][1]=$ID_data[$k][4]; } - } - } else if($j==3 && $flag==1) { @@ -273,9 +205,7 @@ foreach($str_arrname as $row) $edge_data[$ii][2]=$ID_data[$k][5]; $edge_data[$ii][3]=$ID_data[$k][6]; } - } - } else if($j==4 && $flag==1) { @@ -286,27 +216,19 @@ foreach($str_arrname as $row) else if($j>4 && $number_of_point>0 && $flag==1) { if(($j%2)!=0) - $edge_data[$ii][$index]=round($cell/10*900)+60;//+30+30; + $edge_data[$ii][$index]=round($cell/10*900)+60; else - $edge_data[$ii][$index]=round($cell/10*900)+48;//+18+30; - + $edge_data[$ii][$index]=round($cell/10*900)+48; $number_of_point--; $index++; } - - - } if($flag==1) { $ii++; - //echo "
    "; } - } } - - $nedges=$ii; ?> @@ -316,9 +238,9 @@ $nedges=$ii; - + ", titleTextStyle: {fontSize: }, - width:, height:, - vAxis: {title: "State", textStyle: {fontSize:}}, - hAxis: {title: "Fraction", minValue: 0, maxValue: 1, gridlines: {count: 3}}, legend: {position: 'none'}, + width:, height:, + vAxis: {textStyle: {fontSize:}}, + hAxis: {minValue: 0, maxValue: 1, gridlines: {count: 3}}, legend: {position: 'none'}, backgroundColor: {stroke: 'black', strokeWidth: 5}} ); google.visualization.events.addListener(chart, 'select', selectHandler); @@ -428,13 +350,13 @@ for($i=0;$i<$nnode;$i++) function { // Create and populate the data table. var data = google.visualization.arrayToDataTable([ - ['', ''], + [{label:'',type:'number'}, {label:''}], ", titleTextStyle: {fontSize: }, legend: {position: 'none'}, - width:, height:, - hAxis: {maxValue: 1, minValue: 0}, - vAxis: {maxValue: 1, minValue: 0}, - backgroundColor: {stroke: 'black', strokeWidth: 5}} + width:, height:, + vAxis: {minValue: 0, maxValue: 1, viewWindow: {min:0}, gridlines: {count: 5}, textStyle: {fontSize: 9}}, + hAxis: {gridlines: {count: 4}, textStyle: {fontSize: 9},viewWindowMode: 'maximized'}, + chartArea:{left:30,top:25,right:8,bottom:25}, + backgroundColor: {stroke: 'black', strokeWidth: 5}} ); google.visualization.events.addListener(chart, 'select', selectHandler); } @@ -496,9 +419,9 @@ for($i=0;$i<$nnode;$i++) } ///////////////////////////////////write data to file/////////////////////////////////////////////////////////// -$fl=$dir.$keyval."structure_old.txt"; -$fp = fopen("$fl","w"); -fwrite($fp,"$data_val"); +//$fl=$dir.$keyval."structure_old.txt"; +//$fp = fopen("$fl","w"); +//fwrite($fp,"$data_val"); ?> @@ -540,22 +463,10 @@ function canvas_arrow_draw(n, polypts,context){ //Create jsGraphics object var headlen = 10; -/* -var hexno=new String; -arr=new Array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"); -var n1=Math.round(Math.random()*15); -var n2=Math.round(Math.random()*15); -var n3=Math.round(Math.random()*15); -var n4=Math.round(Math.random()*15); -var n5=Math.round(Math.random()*15); -var n6=Math.round(Math.random()*15); -hexno="#"+arr[n1]+""+arr[n2]+""+arr[n3]+""+arr[n4]+""+arr[n5]+""+arr[n6]; -*/ hexno="black"; var polypoints = new Array(); var n2=n*2; - var sx=polypts[0]; var sy=polypts[1]; @@ -624,8 +535,7 @@ $data=$edge_data[$i][$inx]; ?> polypoints[j] = ""; - - j++; + j++; @@ -651,7 +561,7 @@ for($i=0;$i<$nnode;$i++) -
    +
    -

    Error: Unable to display your network structure.

    -5 && $node<=7) -{ - $width=150; - $hieght=120; - $font=12; - -} -else if($node>7 && $node<=10) -{ - $width=110; - $hieght=85; - $font=10; -} -else -{ - $width=80; - $hieght=60; - $font=8; -} -*/ - $width=150; - $hieght=150; - $font=12; - -$r_index=$node+2; - -for($i=0;$i<$node;$i++) -{ -$datamat=explode("\t",$str_arrmat[$r_index]); -$data_read[$i][0]=trim($datamat[0]); //name -$data_read[$i][1]=trim($datamat[1]); //datatype -$col_in=2; -$r_index+=4; - if($datamat[1]==1) //type=coninuous - { - for($j=1;$j<=101;$j++) - { - $datamat=explode("\t",$str_arrmat[$r_index]); - $data_read[$i][$col_in]=trim($datamat[0]); //x data - // echo $data_read[$i][$col_in]; - // echo ' '; - - $col_in++; - $data_read[$i][$col_in]=trim($datamat[1]); //y data - // echo $data_read[$i][$col_in]; - // echo ' '; - - $col_in++; - $r_index++; // increment to point next data - // echo "
    "; - } - } - if($datamat[1]>1) //type=descrete - { - $iter=$datamat[1]; - for($j=1;$j<=$iter;$j++) - { - $datamat=explode("\t",$str_arrmat[$r_index]); - $data_read[$i][$col_in]=trim($datamat[0]); //x data - //use level mapping - $data_read[$i][$col_in]=levelmap($data_read[$i][$col_in],$data_read[$i][0],$levelmap); - - $col_in++; - $data_read[$i][$col_in]=trim($datamat[1]); //y data - - $col_in++; - $r_index++; // increment to point next data - //echo "
    "; - } - } - -} - - - - -////////////////////////////////////////////////Graphviz data read//////////////////////////////////////////////////////////////////////////////// - -$grv=$dir.$keyval."graphviz.txt"; -$line=shell_exec('/usr/bin/dot -Tplain -y '.$grv); - - -$grviz_name_list=array(); -$g_file_name="./data/".$keyval."grviz_name_file.txt"; -$grviz_name=file_get_contents("$g_file_name"); -$grviz_name_list=explode("\n",$grviz_name); - - - -//$foutnew=fopen("contentofgraphviz.txt","w"); -//fwrite($foutnew,"$line"); - - -//$grfilename=$keyval."graphviz.txt"; -//$cmd="/usr/bin/dot -Tplain -y $grfilename"; -//$line=system($cmd); - - - - -$str_arrname=array(); -$str_arrname=explode("\n",$line); -$data=array(); -$ID_data=array(); -$i=0; -$ii=0; -foreach($str_arrname as $row) -{ - $i++; - if($i>1) - { - - $data=explode(" ",$row); - $j=0; - $k=0; - $flag=0; - foreach($data as $cell) - { - - $j++; - - $cell=trim($cell); - //echo $cell; - //echo ' '; - if($j==1 && $cell=="node") - { - $flag=1; - } - - if($j>1 && $j<5 && $flag==1) - { - //echo $cell; - //echo ' '; - if($j==2) - { - - $ID_data[$ii][$k]=$grviz_name_list[$cell]; - } - else - $ID_data[$ii][$k]=round($cell/10*900); - // echo $ID_data[$ii][$k]; - //echo ' '; - - $k++; - } - } - - if($flag==1) - { - $ID_data[$ii][3]=$ID_data[$ii][1]+100; - $ID_data[$ii][4]=$ID_data[$ii][2]+150; - $ID_data[$ii][5]=$ID_data[$ii][1]+100; - $ID_data[$ii][6]=$ID_data[$ii][2]; - $ii++; - //echo "
    "; - } - // echo "
    "; - - } -} - -$nnode=$ii; -$edge_data=array(); - -$i=0; -$ii=0; - -foreach($str_arrname as $row) -{ - $i++; - if($i>1) - { - - $data=explode(" ",$row); - $j=0; - - $flag=0; - $number_of_point=0; - $index=0; - foreach($data as $cell) - { - $j++; - $cell=trim($cell); - - if($j==1 && $cell=="edge") - { - $flag=1; - } - - if($j==2 && $flag==1) - { - - for($k=0;$k<$nnode;$k++) - { - $cell=$grviz_name_list[$cell]; - if($cell==$ID_data[$k][0]) - { - $edge_data[$ii][0]=$ID_data[$k][3]; - $edge_data[$ii][1]=$ID_data[$k][4]; - } - - } - - } - else if($j==3 && $flag==1) - { - for($k=0;$k<$nnode;$k++) - { - if($cell==$ID_data[$k][0]) - { - $edge_data[$ii][2]=$ID_data[$k][5]; - $edge_data[$ii][3]=$ID_data[$k][6]; - } - - } - - } - else if($j==4 && $flag==1) - { - $edge_data[$ii][4]=$cell; - $number_of_point=$cell*2; - $index=5; - } - else if($j>4 && $number_of_point>0 && $flag==1) - { - if(($j%2)!=0) - $edge_data[$ii][$index]=round($cell/10*900)+60;//+30+30; - else - $edge_data[$ii][$index]=round($cell/10*900)+48;//+18+30; - - $number_of_point--; - $index++; - } - - - - } - if($flag==1) - { - $ii++; - //echo "
    "; - } - - } -} - - -$nedges=$ii; - -?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - diff --git a/sourcecodes/network_layout_evd_2.php b/sourcecodes/network_layout_evd_2.php index c89cb465..0daf9df9 100644 --- a/sourcecodes/network_layout_evd_2.php +++ b/sourcecodes/network_layout_evd_2.php @@ -108,35 +108,8 @@ if($str_arrmat[2]=="" || $matrix1=="") 5 && $node<=7) -{ - $width=150; - $hieght=120; - $font=10; - -} -else if($node>7 && $node<=10) -{ - $width=110; - $hieght=85; - $font=8; -} -else -{ - $width=80; - $hieght=60; - $font=7; -} -*/ $width=150; - $hieght=150; + $height=150; $font=12; @@ -193,7 +166,7 @@ for($i=0;$i<$node;$i++) } } - if($nodetype>1) //type=descrete + if($nodetype>1) //type=discrete { $iter=$datamat[1]; for($j=1;$j<=$iter;$j++) @@ -205,7 +178,6 @@ for($i=0;$i<$node;$i++) $data_read[$i][$col_in]=trim($datamat[1]); //y data $col_in++; $r_index++; // increment to point next data - //echo "
    "; } } @@ -234,7 +206,7 @@ for($i=0;$i<$node_old;$i++) $data_read_old[$i][1]=trim($datamat_old[1]); //datatype $col_in_old=2; $r_index_old+=4; - if($datamat_old[1]==1) //type=coninuous + if($datamat_old[1]==1) //type=continuous { for($j=1;$j<=101;$j++) { @@ -249,7 +221,7 @@ for($i=0;$i<$node_old;$i++) } } - if($datamat_old[1]>1) //type=descrete + if($datamat_old[1]>1) //type=discrete { $iter=$datamat_old[1]; for($j=1;$j<=$iter;$j++) @@ -279,15 +251,6 @@ $g_file_name="./data/".$keyval."grviz_name_file.txt"; $grviz_name=file_get_contents("$g_file_name"); $grviz_name_list=explode("\n",$grviz_name); - - -//$grfilename=$keyval."graphviz.txt"; -//$cmd="/usr/bin/dot -Tplain -y $grfilename"; -//$line=system($cmd); - - - -//shell_exec('/usr/bin/dot -Tpng -o /var/www/html/compbio/BNW/graphviz.png /var/www/html/compbio/BNW/graphviz.txt'); $str_arrname=array(); $str_arrname=explode("\n",$line); $data=array(); @@ -299,35 +262,24 @@ foreach($str_arrname as $row) $i++; if($i>1) { - - $data=explode(" ",$row); + $data=explode(" ",$row); $j=0; $k=0; $flag=0; foreach($data as $cell) { - $j++; - $cell=trim($cell); - //echo $cell; - //echo ' '; if($j==1 && $cell=="node") { $flag=1; } - if($j>1 && $j<5 && $flag==1) { - //echo $cell; - //echo ' '; if($j==2) $ID_data[$ii][$k]=$grviz_name_list[$cell]; else $ID_data[$ii][$k]=round($cell/10*900); - // echo $ID_data[$ii][$k]; - //echo ' '; - $k++; } } @@ -339,10 +291,7 @@ foreach($str_arrname as $row) $ID_data[$ii][5]=$ID_data[$ii][1]+100; $ID_data[$ii][6]=$ID_data[$ii][2]; $ii++; - //echo "
    "; } - // echo "
    "; - } } @@ -357,10 +306,8 @@ foreach($str_arrname as $row) $i++; if($i>1) { - $data=explode(" ",$row); $j=0; - $flag=0; $number_of_point=0; $index=0; @@ -368,12 +315,10 @@ foreach($str_arrname as $row) { $j++; $cell=trim($cell); - if($j==1 && $cell=="edge") { $flag=1; } - if($j==2 && $flag==1) { @@ -385,9 +330,7 @@ foreach($str_arrname as $row) $edge_data[$ii][0]=$ID_data[$k][3]; $edge_data[$ii][1]=$ID_data[$k][4]; } - } - } else if($j==3 && $flag==1) { @@ -398,9 +341,7 @@ foreach($str_arrname as $row) $edge_data[$ii][2]=$ID_data[$k][5]; $edge_data[$ii][3]=$ID_data[$k][6]; } - } - } else if($j==4 && $flag==1) { @@ -411,29 +352,21 @@ foreach($str_arrname as $row) else if($j>4 && $number_of_point>0 && $flag==1) { if(($j%2)!=0) - $edge_data[$ii][$index]=round($cell/10*900)+60;//+30+30; + $edge_data[$ii][$index]=round($cell/10*900)+60; else - $edge_data[$ii][$index]=round($cell/10*900)+48;//+18+30; - + $edge_data[$ii][$index]=round($cell/10*900)+48; $number_of_point--; $index++; } - - - } if($flag==1) { $ii++; - //echo "
    "; } - } } - $nedges=$ii; -//echo $nedges; ?> @@ -625,9 +558,9 @@ else } chart.draw(data, {title:"", titleTextStyle: {fontSize: }, - width:, height:, - vAxis: {title: "State", textStyle: {fontSize:}}, - hAxis: {title: "Fraction", minValue: 0, maxValue: 1, gridlines: {count: 3}}, legend: {position: 'none'}, + width:, height:, + vAxis: {textStyle: {fontSize:}}, + hAxis: {minValue: 0, maxValue: 1, gridlines: {count: 3}}, legend: {position: 'none'}, backgroundColor: {stroke: '', strokeWidth: 5}} ); google.visualization.events.addListener(chart, 'select', selectHandler); @@ -654,14 +587,14 @@ if($evd==-9999) { ?> var data = google.visualization.arrayToDataTable([ - ['', 'Old', 'New'], + [{label: '', type: 'number'}, {label:'Old'},{label:'New'}], var data = google.visualization.arrayToDataTable([ - ['', 'Old', 'New'], + [{label: '', type: 'number'}, {label:'Old'},{label:'New'}], ", titleTextStyle: {fontSize: }, legend: {position: 'none'}, - width:, height:, - hAxis: {maxValue: 1, minValue: 0}, - vAxis: {maxValue: 1, minValue: 0}, + width:, height:, + hAxis: {gridlines: {count: 4}, textStyle: {fontSize: 9},viewWindowMode: 'maximized'}, + vAxis: {maxValue: 1, minValue: 0,viewWindow: {min:0}, gridlines: {count:5}, textStyle: {fontSize: 9}}, + chartArea:{left:30,top:25,right:8,bottom:25}, backgroundColor: {stroke: '', strokeWidth: 5}} ); google.visualization.events.addListener(chart, 'select', selectHandler); @@ -946,7 +880,7 @@ for($i=0;$i<$nnode;$i++) -
    +
    5 && $node<=7) { $width=150; - $hieght=120; + $height=120; $font=10; } else if($node>7 && $node<=10) { $width=110; - $hieght=85; + $height=85; $font=8; } else { $width=80; - $hieght=60; + $height=60; $font=7; } */ $width=150; - $hieght=150; + $height=150; $font=12; @@ -617,9 +617,9 @@ else } chart.draw(data, {title:"", titleTextStyle: {fontSize: }, - width:, height:, - vAxis: {title: "State", textStyle: {fontSize:}}, - hAxis: {title: "Fraction", minValue: 0, maxValue: 1, gridlines: {count: 3}}, legend: {position: 'none'}, + width:, height:, + vAxis: {textStyle: {fontSize:}}, + hAxis: {minValue: 0, maxValue: 1, gridlines: {count: 3}}, legend: {position: 'none'}, backgroundColor: {stroke: '', strokeWidth: 5}} ); google.visualization.events.addListener(chart, 'select', selectHandler); @@ -646,14 +646,14 @@ if($evd==-9999) { ?> var data = google.visualization.arrayToDataTable([ - ['', 'Old', 'New'], + [{label:'',type:'number'}, {label:'Old'},{label:'New'}], var data = google.visualization.arrayToDataTable([ - ['', 'Old', 'New'], + [{label:'',type:'number'}, {label:'Old'},{label:'New'}], +// ['', 'Old', 'New'], ", titleTextStyle: {fontSize: }, legend: {position: 'none'}, - width:, height:, - hAxis: {maxValue: 1, minValue: 0}, - vAxis: {maxValue: 1, minValue: 0}, + width:, height:, + hAxis: {gridlines: {count: 4}, textStyle: {fontSize: 9}, viewWindowMode: 'maximized'}, + vAxis: {maxValue: 1, minValue: 0,viewWindow: {min:0}, gridlines: {count:5}, textStyle: {fontSize: 9}}, + chartArea:{left:30,top:25,right:8,bottom:25}, backgroundColor: {stroke: '', strokeWidth: 5}} ); google.visualization.events.addListener(chart, 'select', selectHandler); @@ -938,7 +940,7 @@ for($i=0;$i<$nnode;$i++) -
    +
    5 && $node<=7) -{ - $width=150; - $hieght=120; - $font=12; - -} -else if($node>7 && $node<=10) -{ - $width=110; - $hieght=85; - $font=10; -} -else -{ - $width=80; - $hieght=60; - $font=8; -} -*/ $width=150; - $hieght=150; + $height=150; $font=12; $r_index=$node+2; @@ -396,9 +369,9 @@ for($i=0;$i<$nnode;$i++) } chart.draw(data, {title:"", titleTextStyle: {fontSize: }, - width:, height:, - vAxis: {title: "State", textStyle: {fontSize:}}, - hAxis: {title: "Fraction", minValue: 0, maxValue: 1, gridlines: {count: 3}}, legend: {position: 'none'}, + width:, height:, + vAxis: {textStyle: {fontSize:}}, + hAxis: {minValue: 0, maxValue: 1, gridlines: {count: 3}}, legend: {position: 'none'}, backgroundColor: {stroke: 'black', strokeWidth: 5}} ); google.visualization.events.addListener(chart, 'select', selectHandler); @@ -412,27 +385,27 @@ for($i=0;$i<$nnode;$i++) function { // Create and populate the data table. var data = google.visualization.arrayToDataTable([ - ['', ''], + [ {label: '', type: 'number'}, {label:''}], - ['', ], + ['', ], ", titleTextStyle: {fontSize: }, - legend: {position: 'none'}, - width:, height:, - hAxis: {maxValue: 1, minValue: 0}, - vAxis: {maxValue: 1, minValue: 0}, - backgroundColor: {stroke: 'black', strokeWidth: 5}} + legend: {position: 'none'}, + width:, height:, + vAxis: {minValue: 0, maxValue: 1, viewWindow: {min:0}, gridlines: {count: 5}, textStyle: {fontSize: 9}}, + hAxis: {gridlines: {count: 4}, textStyle: {fontSize: 9},viewWindowMode: 'maximized'}, + chartArea:{left:30,top:25,right:8,bottom:25}, + backgroundColor: {stroke: 'black', strokeWidth: 5}} ); google.visualization.events.addListener(chart, 'select', selectHandler); } @@ -635,7 +609,7 @@ for($i=0;$i<$nnode;$i++) -
    +
    5 && $node<=7) -{ - $width=150; - $hieght=120; - $font=12; - -} -else if($node>7 && $node<=10) -{ - $width=110; - $hieght=85; - $font=10; -} -else -{ - $width=80; - $hieght=60; - $font=8; -} -*/ - $width=150; - $hieght=150; - $font=12; +$width=150; +$height=150; +$font=12; $r_index=$node+2; @@ -96,26 +63,21 @@ $data_read[$i][0]=trim($datamat[0]); //name $data_read[$i][1]=trim($datamat[1]); //datatype $col_in=2; $r_index+=4; - if($datamat[1]==1) //type=coninuous + if($datamat[1]==1) //type=continuous { for($j=1;$j<=101;$j++) { $datamat=explode("\t",$str_arrmat[$r_index]); $data_read[$i][$col_in]=trim($datamat[0]); //x data - // echo $data_read[$i][$col_in]; - // echo ' '; $col_in++; $data_read[$i][$col_in]=trim($datamat[1]); //y data - // echo $data_read[$i][$col_in]; - // echo ' '; $col_in++; $r_index++; // increment to point next data - // echo "
    "; } } - if($datamat[1]>1) //type=descrete + if($datamat[1]>1) //type=discrete { $iter=$datamat[1]; for($j=1;$j<=$iter;$j++) @@ -123,43 +85,25 @@ $r_index+=4; $datamat=explode("\t",$str_arrmat[$r_index]); $data_read[$i][$col_in]=trim($datamat[0]); //x data $data_read[$i][$col_in]=levelmap($data_read[$i][$col_in],$data_read[$i][0],$levelmap); - - // echo $data_read[$i][$col_in]; - // echo ' '; $col_in++; $data_read[$i][$col_in]=trim($datamat[1]); //y data - // echo $data_read[$i][$col_in]; - //echo ' '; $col_in++; $r_index++; // increment to point next data - //echo "
    "; } } - } - - - ////////////////////////////////////////////////Graphviz data read//////////////////////////////////////////////////////////////////////////////// $grv=$dir.$keyval."graphviz.txt"; $line=shell_exec('/usr/bin/dot -Tplain -y '.$grv); - $grviz_name_list=array(); $g_file_name="./data/".$keyval."grviz_name_file.txt"; $grviz_name=file_get_contents("$g_file_name"); $grviz_name_list=explode("\n",$grviz_name); - -//$grfilename=$keyval."graphviz.txt"; -//$cmd="/usr/bin/dot -Tplain -y $grfilename"; -//$line=system($cmd); - - -//shell_exec('/usr/bin/dot -Tpng -o /var/www/html/compbio/BNW/graphviz.png /var/www/html/compbio/BNW/graphviz.txt'); $str_arrname=array(); $str_arrname=explode("\n",$line); $data=array(); @@ -171,35 +115,24 @@ foreach($str_arrname as $row) $i++; if($i>1) { - - $data=explode(" ",$row); + $data=explode(" ",$row); $j=0; $k=0; $flag=0; foreach($data as $cell) { - $j++; - $cell=trim($cell); - //echo $cell; - //echo ' '; if($j==1 && $cell=="node") { $flag=1; } - if($j>1 && $j<5 && $flag==1) { - //echo $cell; - //echo ' '; if($j==2) $ID_data[$ii][$k]=$grviz_name_list[$cell]; else $ID_data[$ii][$k]=round($cell/10*900); - // echo $ID_data[$ii][$k]; - //echo ' '; - $k++; } } @@ -211,10 +144,7 @@ foreach($str_arrname as $row) $ID_data[$ii][5]=$ID_data[$ii][1]+100; $ID_data[$ii][6]=$ID_data[$ii][2]; $ii++; - //echo "
    "; } - // echo "
    "; - } } @@ -229,7 +159,6 @@ foreach($str_arrname as $row) $i++; if($i>1) { - $data=explode(" ",$row); $j=0; @@ -240,15 +169,12 @@ foreach($str_arrname as $row) { $j++; $cell=trim($cell); - if($j==1 && $cell=="edge") { $flag=1; } - if($j==2 && $flag==1) { - for($k=0;$k<$nnode;$k++) { $cell=$grviz_name_list[$cell]; @@ -257,9 +183,7 @@ foreach($str_arrname as $row) $edge_data[$ii][0]=$ID_data[$k][3]; $edge_data[$ii][1]=$ID_data[$k][4]; } - } - } else if($j==3 && $flag==1) { @@ -270,9 +194,7 @@ foreach($str_arrname as $row) $edge_data[$ii][2]=$ID_data[$k][5]; $edge_data[$ii][3]=$ID_data[$k][6]; } - } - } else if($j==4 && $flag==1) { @@ -290,16 +212,11 @@ foreach($str_arrname as $row) $number_of_point--; $index++; } - - - } if($flag==1) { $ii++; - //echo "
    "; } - } } @@ -408,9 +325,9 @@ for($i=0;$i<$nnode;$i++) } chart.draw(data, {title:"", titleTextStyle: {fontSize: }, - width:, height:, - vAxis: {title: "State", textStyle: {fontSize:}}, - hAxis: {title: "Fraction", minValue: 0, maxValue: 1, gridlines: {count: 3}}, legend: {position: 'none'}, + width:, height:, + vAxis: {textStyle: {fontSize:}}, + hAxis: {minValue: 0, maxValue: 1, gridlines: {count: 3}}, legend: {position: 'none'}, backgroundColor: {stroke: 'black', strokeWidth: 5}} ); google.visualization.events.addListener(chart, 'select', selectHandler); @@ -424,13 +341,13 @@ for($i=0;$i<$nnode;$i++) function { // Create and populate the data table. var data = google.visualization.arrayToDataTable([ - ['', ''], + [{label:'',type:'number'},{label: ''}], ", titleTextStyle: {fontSize: }, legend: {position: 'none'}, - width:, height:, - hAxis: {maxValue: 1, minValue: 0}, - vAxis: {maxValue: 1, minValue: 0}, + width:, height:, + hAxis: {gridlines: {count: 4}, textStyle: {fontSize: 9}, viewWindowMode: 'maximized'}, + vAxis: {maxValue: 1, minValue: 0,viewWindow: {min:0}, gridlines: {count:5}, textStyle: {fontSize: 9}}, + chartArea:{left:30,top:25,right:8,bottom:25}, backgroundColor: {stroke: 'black', strokeWidth: 5}} ); google.visualization.events.addListener(chart, 'select', selectHandler); @@ -648,7 +566,7 @@ for($i=0;$i<$nnode;$i++) -
    +
    5 && $node<=7) { $width=150; - $hieght=120; + $height=120; $font=12; } else if($node>7 && $node<=10) { $width=110; - $hieght=85; + $height=85; $font=10; } else { $width=80; - $hieght=60; + $height=60; $font=8; } */ $width=150; - $hieght=150; + $height=150; $font=12; @@ -771,9 +771,9 @@ else } chart.draw(data, {title:"", titleTextStyle: {fontSize: }, - width:, height:, - vAxis: {title: "State", textStyle: {fontSize:}}, - hAxis: {title: "Fraction", minValue: 0, maxValue: 1, gridlines: {count: 3}}, legend: {position: 'none'}, + width:, height:, + vAxis: {textStyle: {fontSize:}}, + hAxis: {minValue: 0, maxValue: 1, gridlines: {count: 3}}, legend: {position: 'none'}, backgroundColor: {stroke: '', strokeWidth: 5}} ); google.visualization.events.addListener(chart, 'select', selectHandler); @@ -806,21 +806,21 @@ if($evd==-9999) { ?> var data = google.visualization.arrayToDataTable([ - ['', 'Old'], + [{label:'',type:'number'},{label: 'Old'}], var data = google.visualization.arrayToDataTable([ - ['', 'Old', 'New'], + [{label:'',type:'number'},{label: 'Old'},{label: 'New'}], var data = google.visualization.arrayToDataTable([ - ['', 'Old', 'New'], + [{label:'',type:'number'},{label: 'Old'},{label: 'New'}], ", titleTextStyle: {fontSize: }, legend: {position: 'none'}, - width:, height:, - hAxis: {maxValue: 1, minValue: 0}, - vAxis: {maxValue: 1, minValue: 0}, + width:, height:, + hAxis: {gridlines: {count: 4}, textStyle: {fontSize: 9}, viewWindowMode: 'maximized'}, + vAxis: {maxValue: 1, minValue: 0,viewWindow: {min:0}, gridlines: {count:5}, textStyle: {fontSize: 9}}, + chartArea:{left:30,top:25,right:8,bottom:25}, backgroundColor: {stroke: '', strokeWidth: 5}} ); google.visualization.events.addListener(chart, 'select', selectHandler); @@ -1145,7 +1146,7 @@ for($i=0;$i<$nnode;$i++) -
    +
    ", titleTextStyle: {fontSize: }, width:, height:, - vAxis: {title: "State", textStyle: {fontSize:}}, - hAxis: {title: "Fraction", minValue: 0, maxValue: 1, gridlines: {count: 3}}, legend: {position: 'none'}, + vAxis: {textStyle: {fontSize:}}, + hAxis: {minValue: 0, maxValue: 1, gridlines: {count: 3}}, legend: {position: 'none'}, backgroundColor: {stroke: '', strokeWidth: 5}} ); google.visualization.events.addListener(chart, 'select', selectHandler); @@ -800,20 +800,20 @@ if($evd==-9999) { ?> var data = google.visualization.arrayToDataTable([ - ['', 'Old'], + [{label:'',type:'number'},{label:'Old'}], var data = google.visualization.arrayToDataTable([ - ['', 'Old', 'New'], + [{label:'',type:'number'},{label:'Old'},{label:'New'}], var data = google.visualization.arrayToDataTable([ - ['', 'Old', 'New'], + [{label:'',type:'number'},{label: 'Old'},{label: 'New'}], ", titleTextStyle: {fontSize: }, legend: {position: 'none'}, width:, height:, - hAxis: {maxValue: 1, minValue: 0}, - vAxis: {maxValue: 1, minValue: 0}, - backgroundColor: {stroke: '', strokeWidth: 5}} + hAxis: {gridlines: {count: 4}, textStyle: {fontSize: 9}, viewWindowMode: 'maximized'}, + vAxis: {maxValue: 1, minValue: 0,viewWindow: {min:0}, gridlines: {count:5}, textStyle: {fontSize: 9}}, + chartArea:{left:30,top:25,right:8,bottom:25}, + backgroundColor: {stroke: '', strokeWidth: 5}} ); google.visualization.events.addListener(chart, 'select', selectHandler); } diff --git a/sourcecodes/network_layout_inv_example.php b/sourcecodes/network_layout_inv_example.php index 1e5cd51b..04543523 100644 --- a/sourcecodes/network_layout_inv_example.php +++ b/sourcecodes/network_layout_inv_example.php @@ -60,31 +60,31 @@ $node=trim($str_arrmat[0]); if($node<=5) { $width=200; - $hieght=150; + $height=150; $font=14; } else if($node>5 && $node<=7) { $width=150; - $hieght=120; + $height=120; $font=12; } else if($node>7 && $node<=10) { $width=110; - $hieght=85; + $height=85; $font=10; } else { $width=80; - $hieght=60; + $height=60; $font=8; } */ $width=150; - $hieght=150; + $height=150; $font=12; $r_index=$node+2; @@ -401,9 +401,9 @@ for($i=0;$i<$nnode;$i++) } chart.draw(data, {title:"", titleTextStyle: {fontSize: }, - width:, height:, - vAxis: {title: "State", textStyle: {fontSize:}}, - hAxis: {title: "Fraction", minValue: 0, maxValue: 1, gridlines: {count: 3}}, legend: {position: 'none'}, + width:, height:, + vAxis: {textStyle: {fontSize:}}, + hAxis: {minValue: 0, maxValue: 1, gridlines: {count: 3}}, legend: {position: 'none'}, backgroundColor: {stroke: 'black', strokeWidth: 5}} ); google.visualization.events.addListener(chart, 'select', selectHandler); @@ -417,13 +417,13 @@ for($i=0;$i<$nnode;$i++) function { // Create and populate the data table. var data = google.visualization.arrayToDataTable([ - ['', ''], + [{label:'', type: 'number'},{label: ''}], ", titleTextStyle: {fontSize: }, legend: {position: 'none'}, - width:, height:, - hAxis: {maxValue: 1, minValue: 0}, - vAxis: {maxValue: 1, minValue: 0}, + width:, height:, + hAxis: {gridlines: {count: 4}, textStyle: {fontSize: 9}, viewWindowMode: 'maximized'}, + vAxis: {maxValue: 1, minValue: 0,viewWindow: {min:0}, gridlines: {count:5}, textStyle: {fontSize: 9}}, + chartArea:{left:30,top:25,right:8,bottom:25}, backgroundColor: {stroke: 'black', strokeWidth: 5}} ); google.visualization.events.addListener(chart, 'select', selectHandler); @@ -641,7 +642,7 @@ for($i=0;$i<$nnode;$i++) -
    +
    + +

    >View original parameters

    +
    + +
    + + +

    >View parameters after added evidence or intervention

    +
    + diff --git a/sourcecodes/parameter_learning/Predictmultiple.m b/sourcecodes/parameter_learning/Predictmultiple.m index 692c6b24..f03568ef 100644 --- a/sourcecodes/parameter_learning/Predictmultiple.m +++ b/sourcecodes/parameter_learning/Predictmultiple.m @@ -1,57 +1,72 @@ function Predictmultiple(pre) - dfile=strcat(pre,'structure_input.txt'); sfile=dfile; dfile=strcat(pre,'continuous_input.txt'); nnodefile=strcat(pre,'nnode.txt'); + fnnode = fopen(nnodefile,'r'); nnodes = fscanf(fnnode,'%d'); - - -%nnodes=5; Std_flag=true; [labels,cases,bnet]=readInput(dfile,sfile,nnodes,Std_flag); - -%name -%labels -%map - [bnet]=parameterLearning(bnet,cases); -%[predict_mean,predict_sd,q_sq]=looCrossValid(bnet,cases); -fvarfile=strcat(pre,'var.txt'); -fvar = fopen(fvarfile,'r'); - +fvarfile=strcat(pre,'var.txt'); +fvar = fopen(fvarfile,'r'); select_var_new = fscanf(fvar,'%d'); fvardfile=strcat(pre,'vardata.txt'); - fvard = fopen(fvardfile,'r'); - select_var_data_new = fscanf(fvard,'%f'); +means_orig = cell(1,nnodes); +stdevs_orig = cell(1,nnodes); +labels_orig = cell(1,nnodes); +%Read in original means and standard deviations +mapfile = strcat(pre,'map.txt'); +fmap = fopen(mapfile,'r'); +for i=1:nnodes + buffer = fgetl(mapfile); + temp = cell(1,4); + for j=1:4 + [next,buffer] = strtok(buffer); + temp{j} = next; + end + labels_orig{i} = temp{1}; + means_orig{i} = str2num(temp{4}); + stdevs_orig{i} = str2num(temp{3}); +end +fclose(fmap); + +%Need to map the means and stdevs to the correct labels +means = cell(1,nnodes); +stdevs = cell(1,nnodes); +%Read in labels in new order. +labelsnew = cell(1,nnodes); +mapdatafile = strcat(pre,'mapdata.txt'); +fmapdata = fopen(mapdatafile,'r'); +buffer = fgetl(fmapdata); +for i = 1:nnodes + [next,buffer ] = strtok(buffer); + labelsnew{i} = next; +end +fclose(fmapdata); +for i = 1:nnodes + for j = 1:nnodes + if strcmp(labelsnew{i},labels_orig{j}) + means{i} = means_orig{j}; + stdevs{i} = stdevs_orig{j}; + break + end + end +end + + filename=strcat(pre,'net_figure_new.txt'); -drawFigureM(nnodes,bnet,labels,filename,cases,select_var_new,select_var_data_new); - -%quit force; -%marginal_nodes(engine,2) -%marginal_nodes(engine,3) -%marginal_nodes(engine,4) -%marginal_nodes(engine,5) -%evidence{1}=2; -%[engine,loglik]=enter_evidence(engine,evidence) -%marginal_nodes(engine,1) -%marginal_nodes(engine,2) -%marginal_nodes(engine,3) -%marginal_nodes(engine,4) -%marginal_nodes(engine,5) -%evidence{2}=0.6; -%evidence{1}=[]; -%[engine,loglik]=enter_evidence(engine,evidence); -%marginal_nodes(engine,3); -%marginal_nodes(engine,4); -%marginal_nodes(engine,5); -end \ No newline at end of file +drawFigureM(nnodes,bnet,labels,filename,cases,stdevs,means,select_var_new,select_var_data_new); + +writeParameters_ev(pre,bnet,nnodes,labels,cases,stdevs,means,select_var_new,select_var_data_new); + +end diff --git a/sourcecodes/parameter_learning/Predictmultipleintrvention.m b/sourcecodes/parameter_learning/Predictmultipleintrvention.m index d3d509cb..1b9fa2f4 100644 --- a/sourcecodes/parameter_learning/Predictmultipleintrvention.m +++ b/sourcecodes/parameter_learning/Predictmultipleintrvention.m @@ -11,17 +11,13 @@ fvarnamefile=strcat(pre,'varname.txt'); varfile = fopen(fvarnamefile,'r'); -%nnodes=5; Std_flag=true; [labels,cases,bnet]=readInput(dfile,sfile,nnodes,Std_flag); -[bnet]=parameterLearning(bnet,cases); - -%[predict_mean,predict_sd,q_sq]=looCrossValid(bnet,cases); +[bnet]=parameterLearning(bnet,cases); fvarfile=strcat(pre,'var.txt'); -fvar = fopen(fvarfile,'r'); - +fvar = fopen(fvarfile,'r'); select_var_new = fscanf(fvar,'%d'); nm = numel(select_var_new); @@ -48,26 +44,52 @@ fvard = fopen(fvardfile,'r'); select_var_data_new = fscanf(fvard,'%f'); +means_orig = cell(1,nnodes); +stdevs_orig = cell(1,nnodes); +labels_orig = cell(1,nnodes); +%Read in original means and standard deviations +mapfile = strcat(pre,'map.txt'); +fmap = fopen(mapfile,'r'); +for i=1:nnodes + buffer = fgetl(mapfile); + temp = cell(1,4); + for j=1:4 + [next,buffer] = strtok(buffer); + temp{j} = next; + end + labels_orig{i} = temp{1}; + means_orig{i} = str2num(temp{4}); + stdevs_orig{i} = str2num(temp{3}); +end +fclose(fmap); + +%Need to map the means and stdevs to the correct labels +means = cell(1,nnodes); +stdevs = cell(1,nnodes); +%Read in labels in new order. +labelsnew = cell(1,nnodes); +mapdatafile = strcat(pre,'mapdata.txt'); +fmapdata = fopen(mapdatafile,'r'); +buffer = fgetl(fmapdata); +for i = 1:nnodes + [next,buffer ] = strtok(buffer); + labelsnew{i} = next; +end +fclose(fmapdata); +for i = 1:nnodes + for j = 1:nnodes + if strcmp(labelsnew{i},labels_orig{j}) + means{i} = means_orig{j}; + stdevs{i} = stdevs_orig{j}; + break + end + end +end + filename=strcat(pre,'net_figure_new.txt'); -drawFigureM(nnodes,bnet,labels,filename,cases,select_var_new,select_var_data_new); - -%quit force; -%marginal_nodes(engine,2) -%marginal_nodes(engine,3) -%marginal_nodes(engine,4) -%marginal_nodes(engine,5) -%evidence{1}=2; -%[engine,loglik]=enter_evidence(engine,evidence) -%marginal_nodes(engine,1) -%marginal_nodes(engine,2) -%marginal_nodes(engine,3) -%marginal_nodes(engine,4) -%marginal_nodes(engine,5) -%evidence{2}=0.6; -%evidence{1}=[]; -%[engine,loglik]=enter_evidence(engine,evidence); -%marginal_nodes(engine,3); -%marginal_nodes(engine,4); -%marginal_nodes(engine,5); -end \ No newline at end of file +drawFigureM(nnodes,bnet,labels,filename,cases,stdevs,means,select_var_new,select_var_data_new); + +writeParameters_int(pre,bnet,nnodes,labels,cases,stdevs,means,select_var_new,select_var_data_new); + +end diff --git a/sourcecodes/parameter_learning/drawFigure.m b/sourcecodes/parameter_learning/drawFigure.m index 76979b3e..404a65f7 100644 --- a/sourcecodes/parameter_learning/drawFigure.m +++ b/sourcecodes/parameter_learning/drawFigure.m @@ -1,18 +1,19 @@ -function [] = drawFigure(nnodes,bnet,labels,filename,cases,selectvar,selectdata) +function [] = drawFigure(nnodes,bnet,labels,filename,cases,stdevs,means,selectvar,selectdata) %drawFigure writes the parameters and data that are needed to draw the %structure of a Bayesian network. -if nargin < 6, - drawFigureNoEv(nnodes,bnet,labels,filename,cases); + +if nargin < 8, + drawFigureNoEv(nnodes,bnet,labels,filename,cases,stdevs,means); else - drawFigureEv(nnodes,bnet,labels,filename,cases,selectvar,selectdata); + drawFigureEv(nnodes,bnet,labels,filename,cases,stdevs,means,selectvar,selectdata); end; end -function [] = drawFigureEv(nnodes,bnet,labels,filename,cases,selectvar,selectdata) +function [] = drawFigureEv(nnodes,bnet,labels,filename,cases,stdevs,means,selectvar,selectdata) %Function to use if there is no entered evidence. % % @@ -152,6 +153,8 @@ for i = 1:nnodes, [x_vals,y_vals] = calcGaussian(predict.mu,predict.Sigma,Amax(i),Amin(i)); %%%For continuous nodes, print x and the pdf of a normal curve. for j = 1:101, + %%Undo standardization + xvals(j,1) = xvals(j,1)*stdevs{i}+means{i} fprintf(fileID,'%6.4f\t%6.4f\n',x_vals(j,1),y_vals(j,1)); end; end; @@ -172,7 +175,7 @@ end -function [] = drawFigureNoEv(nnodes,bnet,labels,filename,cases) +function [] = drawFigureNoEv(nnodes,bnet,labels,filename,cases,stdevs,means) %Function to use if there is no entered evidence. % % @@ -302,6 +305,8 @@ for i = 1:nnodes, [x_vals,y_vals] = calcGaussian(predict.mu,predict.Sigma,Amax(i),Amin(i)); %%%For continuous nodes, print x and the pdf of a normal curve. for j = 1:101, + %%Undo standardization + x_vals(j,1) = x_vals(j,1)*stdevs{i}+means{i}; fprintf(fileID,'%6.4f\t%6.4f\n',x_vals(j,1),y_vals(j,1)); end; end; diff --git a/sourcecodes/parameter_learning/drawFigureM.m b/sourcecodes/parameter_learning/drawFigureM.m index 95a27634..91b8698f 100644 --- a/sourcecodes/parameter_learning/drawFigureM.m +++ b/sourcecodes/parameter_learning/drawFigureM.m @@ -1,21 +1,6 @@ -function [] = drawFigureM(nnodes,bnet,labels,filename,cases,selectvar,selectdata) -%drawFigure writes the parameters and data that are needed to draw the -%structure of a Bayesian network. - - -%Function to use if there is no entered evidence. -% -% -%Before each printed line, I will have a line that starts with %%% -% that describes what will be on that line - -%Create an empty evidence cell array. - -%val=cases; -%for i = 1:nnodes -% val(i,1)=val(i,2); - -%end +function [] = drawFigureM(nnodes,bnet,labels,filename,cases,stdevs,means,selectvar,selectdata) +%drawFigureM writes the parameters and data that are needed to draw the +%structure of a Bayesian network after added evidence or intervention fileID = fopen(filename,'w'); @@ -30,49 +15,35 @@ engine = jtree_inf_engine(bnet); m = size(selectvar,1); - ev_dat = zeros(1,nnodes); -%For parents, sum down columns for i = 1:m, di=selectvar(i,1); ev_dat(di)=selectdata(i,1); - +%Need to standardized evidence for continuous nodes. + if bnet.node_sizes(di) == 1 + ev_dat(di) = (ev_dat(di) - means{di}) / stdevs{di}; + end evidence{di}=ev_dat(di); fprintf(fileID,'%i\t',di); end -fprintf(fileID,'\n'); - -%ev_dat -% select_var = selectvar(1,1) -% -% select_var_data = selectdata(1,1) -% -% -% evidence{select_var}=select_var_data; +fprintf(fileID,'\n'); [engine,loglik]=enter_evidence(engine,evidence); %Open the file, and write the nodes to a file. - - -%%%%Evidence node - %%% The number of nodes fprintf(fileID,'%i\n',nnodes); %Get canvas size labels_temp = cellstr(labels); [x,y] = make_layout(bnet.dag); - x = x - min(x); y = 1 - y; y = y - min(y); - [x_dim,y_dim] = canvasSize(nnodes,x,y); %%% The dimensions of the canvas for the javascript code -fprintf(fileID,'%i\t%i\t\n',x_dim,y_dim) - +fprintf(fileID,'%i\t%i\t\n',x_dim,y_dim); x = x*x_dim; y = y*y_dim; for i = 1:nnodes, @@ -99,7 +70,6 @@ for i = 1:nnodes, end end - for i = 1:nnodes, %%% The name and type of each node (1=continuous, the number of states %%% if it is discrete @@ -162,23 +132,25 @@ for i = 1:nnodes, fprintf(fileID,'%i\t%6.4f\n',j,predict.T(j)); end; else - [x_vals,y_vals] = calcGaussian(predict.mu,predict.Sigma,Amax(i),Amin(i)); %%%For continuous nodes, print x and the pdf of a normal curve. for j = 1:101, + %%Undo standardization + x_vals(j,1) = x_vals(j,1)*stdevs{i}+means{i}; fprintf(fileID,'%6.4f\t%6.4f\n',x_vals(j,1),y_vals(j,1)); end; end; else - fprintf(fileID,'%6.4f\t%6.4f\n',ev_dat(i),1); + if bnet.node_sizes(i) == 1, + fprintf(fileID,'%6.4f\t%6.4f\n',ev_dat(i)*stdevs{i}+means{i},1); + else + fprintf(fileID,'%6.4f\t%6.4f\n',ev_dat(i),1); + endif end end -%fprintf(fileID,'%s\t %\n',labels_temp{:}); - fclose(fileID); - end diff --git a/sourcecodes/parameter_learning/prepareInput.m b/sourcecodes/parameter_learning/prepareInput.m new file mode 100644 index 00000000..28a06c15 --- /dev/null +++ b/sourcecodes/parameter_learning/prepareInput.m @@ -0,0 +1,281 @@ +function [ ] = prepareInput( pre ) + % + % This function takes files that are uploaded to BNW and creates output + % files that can be used for structure and parameter learning. + % It replaces php code that was previously in bn_file_load_gom.php. + % There are several improvements in performance and ease of use: + % 1) Loading files is significantly (~5x) faster for large input files. + % 2) The allowed values for discrete variables are more flexible. + % (e.g., A genotype variable be 'B' and 'D' instead of having + % to replace to make them '1' and '2'.) + % 3) Continuous variables may be identified as continuous in some cases + % even if there is not a period. + % 4) The states of discrete variables should be correctly ordered in + % almost all cases. + % 5) An additional output file is written that will let users check if + % the input file has been uploaded and parsed correctly. + % 6) Future updates to this code should be easier than updating the php. + % + % + % Input: ???continuous_input_orig.txt + % This is the input file that is uploaded to BNW. + % It is directly written out by the BNW php code with no modification. + % The file format is a header line containing the variable names + % followed by the data, with each case in a row. + % + % Output: There are many output files. + % 1) The main output file is ???continuous_input.txt that can be + % used by the structure learning code and parameter learning codes. + % The first line is variable names, the second line is the node type + % (continuous nodes should have 1, discrete nodes have the number + % of states), and the rest is the data. + % 2) A new output file is ???input_desc.txt, a file that describes the + % data so users can check that it has been parsed correctly. + % 3) ???nlevels.txt: The states of discrete variables. + % 4) ???name.txt: The names of the variables as uploaded. + % 5) ???type.txt: The number of states for each variables + % (1 indicates a continuous variable.) + % 6/7) ???nnode.txt and ???nrows.txt: number of nodes and cases + % 8-12) ???ban.txt, ???white.txt, ???k.txt, ???thr.txt, and + % ???parent.txt: Files with default values for structure learning. + % + +% open file for input, include error handling +dfile=strcat(pre,'continuous_input_orig.txt'); + +fin = fopen(dfile,'r'); +if fin < 0 + error(['Could not open ',dfile,' for input']); +end + +% Get the number of cases (the number of rows in the file excluding the header) +ncases = fskipl(fin,Inf) - 1; + +frewind(fin); + +% Read in first line to get the number of nodes and the node labels. +buffer = fgetl(fin); %get header line as a string +nnodes = numel(strfind(buffer,"\t")) + 1; +labels = cell(1,nnodes); +for j=1:nnodes + [next,buffer] = strtok(buffer); + labels{j} = next; +end + +% Read in the data +data = cell(ncases,nnodes); +for i = 1:ncases + buffer = fgetl(fin); + for j = 1:nnodes + [next,buffer] = strtok(buffer); + data{i,j} = next; + end +end + +% Determine whether or not the nodes are continuous or discrete. +% First, treat them as all discrete and get the states and number of stats(levels). +levels = cell(1,nnodes); +states = []; +for j = 1:nnodes + states{end+1} = unique(data(:,j)); + levels{j} = size(states{j},1); +end + +%Now do some checks to see if nodes are discrete or continuous +for j = 1:nnodes + % If there are 3 or less unique values, I will assume that the node is discrete. + if levels{j} < 4; + continue + % If there are as many unique values as a third of the number of cases, + % I will assume that the node is continuous. + elseif levels{j} > ncases/3; + levels{j} = 1; + % If there are more than twenty unique values, + % I will assume that the node is continuous. + elseif levels{j} > 20; + levels{j} = 1; + % Otherwise, I will scan through the individual values. + % If any of the values contain a '.', I will assume it is continuous. + else + period_test = 0; + column = data(:,j); + k = 1; + while period_test == 0 + period_test = sum(cell2mat(strfind(column(k),"."))); + if period_test != 0; + levels{j} = 1; + end + k++; + if k > ncases + break + end + end + end +end + +%I need to check if any discrete nodes are listed after continuous nodes. +%If so, I need to rearrange the columns. +max_disc = 0; +min_cont = nnodes + 1; +for i = 1:nnodes + if levels{i} > 1 + max_disc = i; + elseif min_cont == nnodes+1 + min_cont = i; + end +end +%If max_disc > min_cont, you need to rearrange the nodes +% to put the discrete nodes first. +if max_disc > min_cont + levels_old = levels; + labels_old = labels; + data_old = data; + states_old = states; + new_order = {}; + for i=1:nnodes + if levels_old{i} > 1 + new_order{end+1} = i; + end + end + for i=1:nnodes + if levels_old{i} == 1 + new_order{end+1} = i; + end + end + labels = {}; + levels = {}; + states = {}; + for i =1:nnodes + labels{i} = labels_old{new_order{i}}; + levels{i} = levels_old{new_order{i}}; + states{i} = states_old{new_order{i}}; + for j=1:ncases + data{j,i} = data_old{j,new_order{i}}; + end + end + +endif + + +%Write other files that are used by BNW for this key. +%The first group of files establish default settings for structure learning. +outfile = strcat(pre,'white.txt'); +fout = fopen(outfile,'w'); +fprintf(fout,'From\tTo\n'); +fclose(fout); + +outfile = strcat(pre,'ban.txt'); +fout = fopen(outfile,'w'); +fprintf(fout,'From\tTo\n'); +fclose(fout); + +outfile = strcat(pre,'k.txt'); +fout = fopen(outfile,'w'); +fprintf(fout,'1\n'); +fclose(fout); + +outfile = strcat(pre,'parent.txt'); +fout = fopen(outfile,'w'); +fprintf(fout,'4\n'); +fclose(fout); + +outfile = strcat(pre,'thr.txt'); +fout = fopen(outfile,'w'); +fprintf(fout,'0.5\n'); +fclose(fout); + + +%The next group of files have information about the uploaded file. +outfile = strcat(pre,'name.txt'); +fout = fopen(outfile,'w'); +fprintf(fout,'%s\t',labels{1:end-1}); +fprintf(fout,'%s\n',labels{end}); +fclose(fout); + +outfile = strcat(pre,'nnode.txt'); +fout = fopen(outfile,'w'); +fprintf(fout,'%i\n',nnodes); +fclose(fout); + +outfile = strcat(pre,'nrows.txt'); +fout = fopen(outfile,'w'); +fprintf(fout,'%i\n',ncases); +fclose(fout); + +outfile = strcat(pre,'type.txt'); +fout = fopen(outfile,'w'); +fprintf(fout,'%s\t',labels{1:end-1}); +fprintf(fout,'%s\n',labels{end}); +fprintf(fout,'%i\t',levels{1:end-1}); +fprintf(fout,'%i\n',levels{end}); +fclose(fout); + +%This output file contains the states for discrete nodes. +% The unique matlab function already sorts the states. +outfile = strcat(pre,'nlevels.txt'); +fout = fopen(outfile,'w'); +for i = 1:nnodes + if levels{i} > 1 + fprintf(fout,'%s\t',labels{i},states{i}{1:end-1}); + fprintf(fout,'%s\n',states{i}{end}); + end +end +fclose(fout); + + +%Print a file with a short description of the input. +descfile = strcat(pre,'input_desc.txt'); +dout = fopen(descfile,'w'); +fprintf(dout,['As loaded, the input file had the following properties:\n\n']); +dout = fopen(descfile,'a'); +fprintf(dout,'There are %i variables and %i cases(rows)\n',size(labels,2),ncases); +fprintf(dout,'The variable names are:\n'); +fprintf(dout,'%s\t',labels{1:end-1}); +fprintf(dout,'%s\n\n',labels{end}); +for i=1:nnodes + if levels{i} == 1 + fprintf(dout,'%s is a continuous variable\n',labels{i}); + column = str2double(data(:,i)); + colmean = mean(column); + colstd = std(column); + fprintf(dout,'It has a mean of %6.3f and a standard deviation of %6.3f\n\n',mean(column),std(column)) + else + fprintf(dout,'%s is a discrete variable with %i states\n',labels{i},levels{i}); + fprintf(dout,'The states are: '); + fprintf(dout,'%s ',states{i}{1:end-1}); + fprintf(dout,'%s\n\n',states{i}{end}); + end +end +fclose(fout); + +outfile = strcat(pre,'continuous_input.txt'); +fout = fopen(outfile,'w'); +fprintf(fout,'%s\t',labels{1:end-1}); +fprintf(fout,'%s\n',labels{end}); +fprintf(fout,'%i\t',levels{1:end-1}); +fprintf(fout,'%i\n',levels{end}); +%Need to replace states in discrete variables with integers for BNT +for i = 1:nnodes + if levels{i} > 1 + for j = 1:ncases + for k=1:size(states{i},1) + if data{j,i} == states{i}{k} + data{j,i} = sprintf('%i',num2cell(k){1});; + break + end + end + end + end +end +for i = 1:ncases + fprintf(fout,'%s\t',data{i,1:end-1}); + fprintf(fout,'%s\n',data{i,end}); +end +fclose(fout); + + + + + +end +% end of prepareInput.m \ No newline at end of file diff --git a/sourcecodes/parameter_learning/readInput.m b/sourcecodes/parameter_learning/readInput.m index 9d4959b8..891d7f36 100644 --- a/sourcecodes/parameter_learning/readInput.m +++ b/sourcecodes/parameter_learning/readInput.m @@ -25,19 +25,12 @@ end [labelsold,node_sizes,cases, data] = readInputData(dfile,nnodes); - - % read in the file with the structure [dag] = readInputStructure(sfile,labelsold); % check the ordering of the nodes and reorder if necessary [labels,cases,dag,node_sizes,ord_flag] = checkStructure(labelsold,cases,dag,node_sizes); -%draw_graph(dag,labels); -%if ord_flag == 1 -% fprintf(['Order of nodes was changed to agree with topological order\n']) -%end -%fprintf(['The structure of the network should be correctly displayed in a figure\n']) dcount = 0; for i = 1:nnodes @@ -67,4 +60,4 @@ end end -% end of readInput.m \ No newline at end of file +% end of readInput.m diff --git a/sourcecodes/parameter_learning/runBN_initial.m b/sourcecodes/parameter_learning/runBN_initial.m index 789b4260..c2dec164 100644 --- a/sourcecodes/parameter_learning/runBN_initial.m +++ b/sourcecodes/parameter_learning/runBN_initial.m @@ -15,84 +15,43 @@ mapfile = fopen(mapfilename,'w'); mapval = fopen(mapvalfilename,'w'); -%nnodes=5; Std_flag=true; [labels,cases,bnet,node_sizes,data,labelsold]=readInput(dfile,sfile,nnodes,Std_flag); -s = std(data,0,1); +s=std(data,0,1); m=mean(data); - for i=1:nnodes fprintf(mapval,'%s\t%d\t%f\t%f\n',labelsold{i},node_sizes(i),s(i),m(i)); end - -% for j=1:nnodes -% [next,buffer] = strtok(buffer); -% name{j}=next; -% for i=1:nnodes -% if strcmp(name{j},labels{i}) -% map{j}=i; -% fprintf(mapfile,'%d\t',i); -% end -% end -% end -%name -%labels -%map fprintf(mapfile,'%s',labels{1}); for i=2:nnodes fprintf(mapfile,'\t%s',labels{i}); end fprintf(mapfile,'\n'); +fclose(mapval); +fclose(mapfile); + +%Need to rearrange the means and stdevs to match the new labeling. +means = cell(1,nnodes); +stdevs = cell(1,nnodes); +for i = 1:nnodes + for j = 1:nnodes + if strcmp(labels{i},labelsold{j}) + means{i} = m(j); + stdevs{i} = s(j); + break + end + end +end + [bnet]=parameterLearning(bnet,cases); -%[predict_mean,predict_sd,q_sq]=looCrossValid(bnet,cases); -%engine=jtree_inf_engine(bnet); -%evidence=cell(1,nnodes); - -%varfile='var.txt'; -%fvar = fopen(varfile,'r'); -%select_var = fscanf(fvar,'%d'); -%select_var=map{select_var}; -%varfiled='vardata.txt'; -%fvard = fopen(varfiled,'r'); -%select_var_data = fscanf(fvard,'%f'); - -%evidence{select_var}=select_var_data; -%[engine,loglik]=enter_evidence(engine,evidence); - -%outdata='prediction.txt'; -%fout = fopen(outdata,'w'); - -%for ii = 1:nnodes - % i=map{ii}; - % data=marginal_nodes(engine,i); - % fprintf(fout,'%d\t%d\t%f\t%f\t%f\n',ii,data.domain,data.T,data.mu,data.Sigma); - %fprintf(1,'%d\n',i); -% end filename=strcat(pre,'net_figure.txt'); -drawFigure(nnodes,bnet,labels,filename,cases); - -%quit force; -%marginal_nodes(engine,2) -%marginal_nodes(engine,3) -%marginal_nodes(engine,4) -%marginal_nodes(engine,5) -%evidence{1}=2; -%[engine,loglik]=enter_evidence(engine,evidence) -%marginal_nodes(engine,1) -%marginal_nodes(engine,2) -%marginal_nodes(engine,3) -%marginal_nodes(engine,4) -%marginal_nodes(engine,5) -%evidence{2}=0.6; -%evidence{1}=[]; -%[engine,loglik]=enter_evidence(engine,evidence); -%marginal_nodes(engine,3); -%marginal_nodes(engine,4); -%marginal_nodes(engine,5); -fclose(mapval); -fclose(mapfile); -end \ No newline at end of file + +drawFigure(nnodes,bnet,labels,filename,cases,stdevs,means); + +writeParameters(pre,nnodes,bnet,labels,cases,labelsold,s,m); + +end diff --git a/sourcecodes/parameter_learning/standardizeData.m b/sourcecodes/parameter_learning/standardizeData.m index 61ea280e..db5e04c7 100644 --- a/sourcecodes/parameter_learning/standardizeData.m +++ b/sourcecodes/parameter_learning/standardizeData.m @@ -1,7 +1,7 @@ function [ cases ] = standardizeData( labels, node_sizes, cases ) %standardizeData standardizes continuous nodes so they have a mean = 0 % and standard deviation = 1 -% Detailed explanation goes here + nnodes = size(labels,2); diff --git a/sourcecodes/parameter_learning/test/Agbcontinuous_input.txt b/sourcecodes/parameter_learning/test/Agbcontinuous_input.txt deleted file mode 100644 index bcd9b88c..00000000 --- a/sourcecodes/parameter_learning/test/Agbcontinuous_input.txt +++ /dev/null @@ -1,103 +0,0 @@ -GenotypeA GenotypeB Gene1 Gene2 Gene3 Gene4 -2 2 1 1 1 1 -1 1 0.0735451012188 0.807744827105 -0.141557122166 0.871977046116 -2 1 0.0783291492541 0.784023461068 0.501395957396 1.20598627055 -2 1 0.786243065384 0.978600201012 1.10615045137 0.91427570527 -2 1 -0.133165253244 1.09368397217 0.943147613583 1.28625182746 -2 1 0.849732696834 0.701697179341 1.1597647359 1.10898527576 -2 1 0.117358779641 1.27641582521 1.07600246132 0.837957699405 -1 2 0.260845541489 0.126507267356 0.134953769296 1.05166904426 -2 1 0.277734881926 1.07193390309 0.282304188176 1.11305323003 -1 2 0.23482774261 1.22992089679 0.0929753295409 1.16341704702 -1 2 0.948183366714 0.133267523413 -0.218162396333 0.906540379337 -2 1 -0.116613369121 1.14203606435 0.109901766308 0.729527128692 -1 1 -0.179825551391 0.10619275827 0.937787825497 1.03567603615 -2 1 0.293022973091 1.08721255661 -0.175473007708 0.887010836361 -2 1 -0.0489346771642 0.968137836317 0.107834185199 0.896061918536 -1 2 0.236140871956 -0.0428030926592 -0.318492104268 0.570552965391 -2 2 -0.0800211950407 0.69984329873 0.188143588172 1.31042305844 -1 1 -0.0036838396465 0.115049518621 1.23342471413 -0.0310668924648 -1 2 0.821596343182 -0.206883091797 -0.176745465075 1.00503814188 -2 1 0.968136985881 0.17393492998 1.10355204542 1.50730341194 -1 1 -0.2529273487 1.15825296446 -0.296758267158 0.334353609539 -2 2 0.996924729837 0.79867304131 -0.0654588195254 1.14114632703 -1 1 1.11517699739 1.04475472944 1.01515337419 -0.114835981744 -1 1 1.13306628335 0.212806963119 -0.331850695159 1.3262481351 -2 1 -0.202717212277 1.16180466017 0.698481134231 0.837229654056 -2 1 1.09703628172 0.988374730515 0.632905281073 0.871944778559 -1 1 0.0877178138353 0.92193353301 0.0882061186606 -0.109998053824 -2 2 -0.0465657805556 1.0562741142 0.203076906226 0.947081854544 -1 1 0.253626344342 0.774666759107 0.160237735682 0.137119974017 -2 2 0.958504778114 0.696202219462 0.837104986151 1.22862239026 -2 1 0.0190762231091 1.07363361357 0.836517352782 1.13138357074 -1 2 1.04546343625 1.22248653304 -0.177641501681 0.938273372293 -1 1 -0.356538939133 0.926691569307 -0.0141334158342 -0.333256032191 -2 2 -0.271616290794 1.02237907773 -0.0893323176884 1.13812703435 -1 1 0.112310230451 0.96903715979 0.735229019751 0.0718376819618 -2 2 -0.0541760888203 0.910562906664 0.237421737724 1.12792106072 -2 1 0.140510085427 1.14598129626 0.684754216604 1.37711161908 -1 2 0.673132921769 1.16156481777 0.828299174842 1.23484148864 -1 1 -0.36576911038 1.22402806897 0.985794473424 0.371258195776 -2 1 1.30745593323 -0.305709792671 1.18778090128 0.773246386727 -2 2 -0.530650832006 1.12852174836 -0.242830565653 0.83833485032 -1 1 -0.291997112416 -0.0207658889693 0.172776752193 0.36694855027 -1 2 -0.161225357475 1.16418585274 0.00727443800449 1.1352882361 -2 2 1.30343435031 0.732902323978 -0.172844997755 0.874662524376 -2 2 0.85539635481 1.29119106621 0.016024964511 1.13160810191 -1 2 0.839799562146 -0.0698184772979 0.064736024742 0.888230930115 -1 2 0.95789577351 -0.0042439536723 0.0555580748795 1.07993651996 -1 1 1.32802494815 -0.214047314771 0.329813058688 0.728172901439 -1 1 -0.200890919169 1.1000313421 1.04401630691 0.0521627161216 -2 2 0.937448394951 1.08384634906 -0.0899239635102 1.07443211017 -2 1 -0.0666111295973 0.607978461697 0.178977027858 0.996958995079 -2 1 0.98988279173 0.936124382141 1.16162098 0.953396718798 -1 1 0.783923131778 -0.185782423384 0.234091790401 1.05701020406 -1 1 0.761503655241 1.10820714005 0.784532435857 -0.125970126396 -2 1 -0.0961115621732 0.992263342859 0.660910916217 0.963055169574 -2 2 -0.154764213109 0.730891518005 -0.109545565909 1.12272967655 -2 2 0.0479283751395 0.928564948748 0.0947967021058 0.98105799191 -2 2 1.39168552274 0.128331277089 0.10146975109 1.24231428304 -1 1 0.976982771784 -0.146928630221 -0.0608841220423 0.972841874016 -2 1 1.15485099166 0.935197552788 0.965011443377 1.34264634759 -1 2 -0.166427006522 0.213464027262 -0.031343375005 0.8119490745 -2 1 0.602325327176 1.47360525321 1.40368030116 0.887287145417 -1 2 1.12050355207 1.18852964108 0.0704081979976 1.19584630693 -2 1 0.702485774332 1.15988608636 0.294782678413 0.751491248655 -1 2 0.155516690813 0.251086517248 0.975388704705 0.688269967741 -1 2 0.038035346805 0.682904829816 0.0951645619842 0.665389726903 -1 1 0.339450864189 0.116879724658 -0.170951058396 -0.370117675216 -2 2 -0.108372250446 0.696218715139 -0.00428297700477 0.961335352653 -2 2 0.0146712646232 1.12798531635 0.778687243129 1.27150673153 -1 2 0.704617012215 1.08526662881 0.799187464816 1.13063944956 -1 1 1.10224639633 1.09684843311 1.13580106237 0.186395861041 -1 1 1.13687210336 0.592984795387 0.20048850526 -0.0553656796539 -1 2 0.0632700472019 0.864610771614 -0.242802029698 0.848811159682 -2 1 0.0451786925492 1.33573290418 0.92973441898 -0.344011193096 -1 2 1.26061879295 1.09499325896 0.0222202420765 0.847629840625 -1 2 0.91681254794 0.290800393334 -0.0719474399104 0.926496648214 -2 1 1.2172426262 0.951648627857 1.25202262128 0.233889527648 -1 2 1.05048646769 0.172566561404 0.0550162349302 0.750079764855 -1 2 0.675366500637 -0.0673050997098 0.1645804156 0.781063579107 -2 1 0.204088201674 0.886512802356 1.05795947541 0.185790058971 -2 1 -0.100901351663 0.714436170991 -0.505529978858 0.647306701065 -1 2 0.907207625417 1.16174653049 -0.155199134127 0.747382222584 -1 2 0.0672106257479 0.603637849323 -0.140625204522 1.08080017243 -2 1 1.2385313097 1.0695347389 -0.176990709153 0.848256839162 -1 2 0.186923583294 0.119157644078 0.0349289573077 0.744803259527 -1 2 1.09352177593 0.194715059877 0.0236391004662 0.499673191061 -2 1 -0.376369481804 0.985546924317 0.0945527339598 0.948918281956 -1 1 1.18474855816 -0.115831486698 0.283152200427 0.970403352935 -2 2 1.15179008534 1.11293520284 0.221811798026 0.999871011204 -1 2 -0.270193067228 1.1546656712 -0.244378116913 0.671654326382 -2 2 0.439331185377 1.12197569445 0.258362973013 1.11146143747 -2 2 1.01095806207 0.745930460781 -0.0409015639874 1.14791250376 -2 1 -0.26402775558 1.0189980863 0.0142629520115 0.959203836932 -1 1 1.1622683144 -0.0120889455187 1.07714267283 -0.177584275215 -1 1 0.942340790264 0.254818931717 0.0587741977709 0.980453538135 -2 2 0.106324819492 0.79161883369 -0.16526611256 0.916230483749 -2 1 1.19278065887 0.913551161988 -0.0956615348665 1.05953140511 -1 1 0.99020996204 -0.0516709802571 0.785783698942 1.47690006823 -2 1 1.1566705292 1.05878794929 0.0968404106402 0.827720917511 -1 2 0.05207115921 -0.252341077617 -0.0848699551554 1.19139462554 -2 2 0.991086851115 -0.301180892331 -0.00253197995383 1.46608138294 - diff --git a/sourcecodes/parameter_learning/test/Agbmap.txt b/sourcecodes/parameter_learning/test/Agbmap.txt deleted file mode 100644 index bb1dd64f..00000000 --- a/sourcecodes/parameter_learning/test/Agbmap.txt +++ /dev/null @@ -1,6 +0,0 @@ -GenotypeA 2 0.502519 1.500000 -GenotypeB 1 0.500908 1.460000 -Gene1 2 0.553536 0.475371 -Gene2 1 0.485907 0.701417 -Gene3 1 0.485352 0.313494 -Gene4 1 0.435265 0.819489 diff --git a/sourcecodes/parameter_learning/test/Agbmapdata.txt b/sourcecodes/parameter_learning/test/Agbmapdata.txt deleted file mode 100644 index fa8be0bd..00000000 --- a/sourcecodes/parameter_learning/test/Agbmapdata.txt +++ /dev/null @@ -1 +0,0 @@ -GenotypeB Gene3 GenotypeA Gene2 Gene4 Gene1 diff --git a/sourcecodes/parameter_learning/test/Agbnet_figure.txt b/sourcecodes/parameter_learning/test/Agbnet_figure.txt deleted file mode 100644 index 8243b7d9..00000000 --- a/sourcecodes/parameter_learning/test/Agbnet_figure.txt +++ /dev/null @@ -1,440 +0,0 @@ -6 -1200 1200 -GenotypeB 0 0 -Gene3 120 300 -GenotypeA 400 0 -Gene2 520 300 -Gene4 0 600 -Gene1 400 600 -GenotypeB 2 -250 150 -0 -2 2 5 -1 0.5400 -2 0.4600 -Gene3 1 -250 150 -1 1 -0 --2.6875 0.0108 --2.6281 0.0126 --2.5688 0.0147 --2.5095 0.0171 --2.4501 0.0198 --2.3908 0.0229 --2.3315 0.0263 --2.2721 0.0302 --2.2128 0.0345 --2.1535 0.0393 --2.0941 0.0445 --2.0348 0.0503 --1.9754 0.0567 --1.9161 0.0636 --1.8568 0.0712 --1.7974 0.0793 --1.7381 0.0881 --1.6788 0.0975 --1.6194 0.1075 --1.5601 0.1181 --1.5008 0.1294 --1.4414 0.1412 --1.3821 0.1535 --1.3227 0.1663 --1.2634 0.1796 --1.2041 0.1932 --1.1447 0.2072 --1.0854 0.2214 --1.0261 0.2357 --0.9667 0.2500 --0.9074 0.2643 --0.8480 0.2784 --0.7887 0.2923 --0.7294 0.3058 --0.6700 0.3187 --0.6107 0.3311 --0.5514 0.3427 --0.4920 0.3535 --0.4327 0.3633 --0.3734 0.3721 --0.3140 0.3797 --0.2547 0.3862 --0.1953 0.3914 --0.1360 0.3953 --0.0767 0.3978 --0.0173 0.3989 -0.0420 0.3986 -0.1013 0.3969 -0.1607 0.3938 -0.2200 0.3894 -0.2793 0.3837 -0.3387 0.3767 -0.3980 0.3686 -0.4574 0.3593 -0.5167 0.3491 -0.5760 0.3380 -0.6354 0.3260 -0.6947 0.3134 -0.7540 0.3002 -0.8134 0.2866 -0.8727 0.2726 -0.9320 0.2584 -0.9914 0.2441 -1.0507 0.2297 -1.1101 0.2154 -1.1694 0.2014 -1.2287 0.1875 -1.2881 0.1740 -1.3474 0.1609 -1.4067 0.1483 -1.4661 0.1362 -1.5254 0.1246 -1.5848 0.1136 -1.6441 0.1033 -1.7034 0.0935 -1.7628 0.0844 -1.8221 0.0759 -1.8814 0.0680 -1.9408 0.0607 -2.0001 0.0540 -2.0594 0.0479 -2.1188 0.0423 -2.1781 0.0372 -2.2375 0.0326 -2.2968 0.0285 -2.3561 0.0249 -2.4155 0.0216 -2.4748 0.0187 -2.5341 0.0161 -2.5935 0.0138 -2.6528 0.0118 -2.7121 0.0101 -2.7715 0.0086 -2.8308 0.0073 -2.8902 0.0061 -2.9495 0.0052 -3.0088 0.0043 -3.0682 0.0036 -3.1275 0.0030 -3.1868 0.0025 -3.2462 0.0021 -GenotypeA 2 -250 150 -0 -2 4 5 -1 0.5000 -2 0.5000 -Gene2 1 -250 150 -1 3 -2 5 6 --3.0727 0.0036 --3.0161 0.0042 --2.9594 0.0050 --2.9028 0.0059 --2.8462 0.0069 --2.7896 0.0081 --2.7330 0.0095 --2.6763 0.0111 --2.6197 0.0129 --2.5631 0.0149 --2.5065 0.0172 --2.4499 0.0198 --2.3933 0.0228 --2.3366 0.0260 --2.2800 0.0297 --2.2234 0.0337 --2.1668 0.0381 --2.1102 0.0431 --2.0535 0.0484 --1.9969 0.0543 --1.9403 0.0607 --1.8837 0.0677 --1.8271 0.0752 --1.7705 0.0832 --1.7138 0.0919 --1.6572 0.1011 --1.6006 0.1108 --1.5440 0.1211 --1.4874 0.1320 --1.4307 0.1434 --1.3741 0.1552 --1.3175 0.1675 --1.2609 0.1802 --1.2043 0.1932 --1.1476 0.2065 --1.0910 0.2200 --1.0344 0.2336 --0.9778 0.2473 --0.9212 0.2610 --0.8646 0.2745 --0.8079 0.2878 --0.7513 0.3008 --0.6947 0.3134 --0.6381 0.3255 --0.5815 0.3369 --0.5248 0.3476 --0.4682 0.3575 --0.4116 0.3665 --0.3550 0.3746 --0.2984 0.3816 --0.2418 0.3875 --0.1851 0.3922 --0.1285 0.3957 --0.0719 0.3979 --0.0153 0.3989 -0.0413 0.3986 -0.0980 0.3970 -0.1546 0.3942 -0.2112 0.3901 -0.2678 0.3849 -0.3244 0.3785 -0.3810 0.3710 -0.4377 0.3625 -0.4943 0.3531 -0.5509 0.3428 -0.6075 0.3317 -0.6641 0.3200 -0.7208 0.3077 -0.7774 0.2949 -0.8340 0.2818 -0.8906 0.2683 -0.9472 0.2547 -1.0039 0.2410 -1.0605 0.2274 -1.1171 0.2138 -1.1737 0.2003 -1.2303 0.1872 -1.2869 0.1743 -1.3436 0.1618 -1.4002 0.1497 -1.4568 0.1381 -1.5134 0.1269 -1.5700 0.1163 -1.6267 0.1063 -1.6833 0.0967 -1.7399 0.0878 -1.7965 0.0794 -1.8531 0.0716 -1.9097 0.0644 -1.9664 0.0577 -2.0230 0.0516 -2.0796 0.0459 -2.1362 0.0407 -2.1928 0.0360 -2.2495 0.0318 -2.3061 0.0279 -2.3627 0.0245 -2.4193 0.0214 -2.4759 0.0186 -2.5326 0.0161 -2.5892 0.0140 -Gene4 1 -250 150 -3 1 3 4 -0 --3.7331 0.0009 --3.6699 0.0011 --3.6068 0.0014 --3.5437 0.0016 --3.4805 0.0020 --3.4174 0.0024 --3.3543 0.0029 --3.2911 0.0035 --3.2280 0.0042 --3.1649 0.0050 --3.1017 0.0059 --3.0386 0.0070 --2.9755 0.0083 --2.9123 0.0097 --2.8492 0.0114 --2.7861 0.0133 --2.7229 0.0154 --2.6598 0.0179 --2.5967 0.0206 --2.5335 0.0238 --2.4704 0.0273 --2.4073 0.0312 --2.3441 0.0355 --2.2810 0.0403 --2.2179 0.0455 --2.1547 0.0513 --2.0916 0.0577 --2.0285 0.0645 --1.9653 0.0720 --1.9022 0.0800 --1.8391 0.0886 --1.7759 0.0978 --1.7128 0.1075 --1.6497 0.1178 --1.5865 0.1287 --1.5234 0.1401 --1.4603 0.1519 --1.3971 0.1642 --1.3340 0.1768 --1.2709 0.1897 --1.2077 0.2029 --1.1446 0.2162 --1.0815 0.2296 --1.0183 0.2430 --0.9552 0.2563 --0.8921 0.2693 --0.8290 0.2820 --0.7658 0.2943 --0.7027 0.3061 --0.6396 0.3172 --0.5764 0.3275 --0.5133 0.3371 --0.4502 0.3456 --0.3870 0.3532 --0.3239 0.3597 --0.2608 0.3650 --0.1976 0.3691 --0.1345 0.3719 --0.0714 0.3735 --0.0082 0.3737 -0.0549 0.3727 -0.1180 0.3703 -0.1812 0.3667 -0.2443 0.3618 -0.3074 0.3558 -0.3706 0.3486 -0.4337 0.3404 -0.4968 0.3312 -0.5600 0.3212 -0.6231 0.3103 -0.6862 0.2988 -0.7494 0.2867 -0.8125 0.2741 -0.8756 0.2612 -0.9388 0.2480 -1.0019 0.2347 -1.0650 0.2213 -1.1282 0.2079 -1.1913 0.1947 -1.2544 0.1816 -1.3176 0.1689 -1.3807 0.1565 -1.4438 0.1445 -1.5070 0.1329 -1.5701 0.1219 -1.6332 0.1113 -1.6964 0.1014 -1.7595 0.0920 -1.8226 0.0831 -1.8858 0.0749 -1.9489 0.0673 -2.0120 0.0602 -2.0752 0.0536 -2.1383 0.0477 -2.2014 0.0422 -2.2646 0.0372 -2.3277 0.0327 -2.3908 0.0287 -2.4540 0.0250 -2.5171 0.0218 -2.5802 0.0189 -Gene1 1 -250 150 -1 4 -0 --2.8174 0.0076 --2.7627 0.0088 --2.7080 0.0102 --2.6533 0.0119 --2.5985 0.0137 --2.5438 0.0158 --2.4891 0.0181 --2.4343 0.0207 --2.3796 0.0236 --2.3249 0.0268 --2.2702 0.0304 --2.2154 0.0344 --2.1607 0.0387 --2.1060 0.0435 --2.0512 0.0488 --1.9965 0.0545 --1.9418 0.0607 --1.8871 0.0674 --1.8323 0.0746 --1.7776 0.0823 --1.7229 0.0906 --1.6682 0.0994 --1.6134 0.1087 --1.5587 0.1185 --1.5040 0.1289 --1.4492 0.1397 --1.3945 0.1510 --1.3398 0.1627 --1.2851 0.1748 --1.2303 0.1872 --1.1756 0.2000 --1.1209 0.2129 --1.0661 0.2260 --1.0114 0.2392 --0.9567 0.2524 --0.9020 0.2656 --0.8472 0.2786 --0.7925 0.2914 --0.7378 0.3038 --0.6830 0.3158 --0.6283 0.3273 --0.5736 0.3383 --0.5189 0.3485 --0.4641 0.3580 --0.4094 0.3667 --0.3547 0.3744 --0.2999 0.3811 --0.2452 0.3869 --0.1905 0.3915 --0.1358 0.3950 --0.0810 0.3974 --0.0263 0.3985 -0.0284 0.3985 -0.0832 0.3973 -0.1379 0.3949 -0.1926 0.3913 -0.2473 0.3867 -0.3021 0.3809 -0.3568 0.3741 -0.4115 0.3663 -0.4663 0.3577 -0.5210 0.3481 -0.5757 0.3379 -0.6304 0.3269 -0.6852 0.3154 -0.7399 0.3033 -0.7946 0.2909 -0.8493 0.2781 -0.9041 0.2651 -0.9588 0.2519 -1.0135 0.2387 -1.0683 0.2255 -1.1230 0.2124 -1.1777 0.1995 -1.2324 0.1867 -1.2872 0.1743 -1.3419 0.1622 -1.3966 0.1505 -1.4514 0.1393 -1.5061 0.1285 -1.5608 0.1181 -1.6155 0.1083 -1.6703 0.0990 -1.7250 0.0902 -1.7797 0.0820 -1.8345 0.0743 -1.8892 0.0671 -1.9439 0.0604 -1.9986 0.0543 -2.0534 0.0486 -2.1081 0.0433 -2.1628 0.0386 -2.2176 0.0342 -2.2723 0.0303 -2.3270 0.0267 -2.3817 0.0235 -2.4365 0.0206 -2.4912 0.0180 -2.5459 0.0157 -2.6007 0.0136 -2.6554 0.0118 diff --git a/sourcecodes/parameter_learning/test/Agbnet_figure.txt.bk b/sourcecodes/parameter_learning/test/Agbnet_figure.txt.bk deleted file mode 100644 index 8243b7d9..00000000 --- a/sourcecodes/parameter_learning/test/Agbnet_figure.txt.bk +++ /dev/null @@ -1,440 +0,0 @@ -6 -1200 1200 -GenotypeB 0 0 -Gene3 120 300 -GenotypeA 400 0 -Gene2 520 300 -Gene4 0 600 -Gene1 400 600 -GenotypeB 2 -250 150 -0 -2 2 5 -1 0.5400 -2 0.4600 -Gene3 1 -250 150 -1 1 -0 --2.6875 0.0108 --2.6281 0.0126 --2.5688 0.0147 --2.5095 0.0171 --2.4501 0.0198 --2.3908 0.0229 --2.3315 0.0263 --2.2721 0.0302 --2.2128 0.0345 --2.1535 0.0393 --2.0941 0.0445 --2.0348 0.0503 --1.9754 0.0567 --1.9161 0.0636 --1.8568 0.0712 --1.7974 0.0793 --1.7381 0.0881 --1.6788 0.0975 --1.6194 0.1075 --1.5601 0.1181 --1.5008 0.1294 --1.4414 0.1412 --1.3821 0.1535 --1.3227 0.1663 --1.2634 0.1796 --1.2041 0.1932 --1.1447 0.2072 --1.0854 0.2214 --1.0261 0.2357 --0.9667 0.2500 --0.9074 0.2643 --0.8480 0.2784 --0.7887 0.2923 --0.7294 0.3058 --0.6700 0.3187 --0.6107 0.3311 --0.5514 0.3427 --0.4920 0.3535 --0.4327 0.3633 --0.3734 0.3721 --0.3140 0.3797 --0.2547 0.3862 --0.1953 0.3914 --0.1360 0.3953 --0.0767 0.3978 --0.0173 0.3989 -0.0420 0.3986 -0.1013 0.3969 -0.1607 0.3938 -0.2200 0.3894 -0.2793 0.3837 -0.3387 0.3767 -0.3980 0.3686 -0.4574 0.3593 -0.5167 0.3491 -0.5760 0.3380 -0.6354 0.3260 -0.6947 0.3134 -0.7540 0.3002 -0.8134 0.2866 -0.8727 0.2726 -0.9320 0.2584 -0.9914 0.2441 -1.0507 0.2297 -1.1101 0.2154 -1.1694 0.2014 -1.2287 0.1875 -1.2881 0.1740 -1.3474 0.1609 -1.4067 0.1483 -1.4661 0.1362 -1.5254 0.1246 -1.5848 0.1136 -1.6441 0.1033 -1.7034 0.0935 -1.7628 0.0844 -1.8221 0.0759 -1.8814 0.0680 -1.9408 0.0607 -2.0001 0.0540 -2.0594 0.0479 -2.1188 0.0423 -2.1781 0.0372 -2.2375 0.0326 -2.2968 0.0285 -2.3561 0.0249 -2.4155 0.0216 -2.4748 0.0187 -2.5341 0.0161 -2.5935 0.0138 -2.6528 0.0118 -2.7121 0.0101 -2.7715 0.0086 -2.8308 0.0073 -2.8902 0.0061 -2.9495 0.0052 -3.0088 0.0043 -3.0682 0.0036 -3.1275 0.0030 -3.1868 0.0025 -3.2462 0.0021 -GenotypeA 2 -250 150 -0 -2 4 5 -1 0.5000 -2 0.5000 -Gene2 1 -250 150 -1 3 -2 5 6 --3.0727 0.0036 --3.0161 0.0042 --2.9594 0.0050 --2.9028 0.0059 --2.8462 0.0069 --2.7896 0.0081 --2.7330 0.0095 --2.6763 0.0111 --2.6197 0.0129 --2.5631 0.0149 --2.5065 0.0172 --2.4499 0.0198 --2.3933 0.0228 --2.3366 0.0260 --2.2800 0.0297 --2.2234 0.0337 --2.1668 0.0381 --2.1102 0.0431 --2.0535 0.0484 --1.9969 0.0543 --1.9403 0.0607 --1.8837 0.0677 --1.8271 0.0752 --1.7705 0.0832 --1.7138 0.0919 --1.6572 0.1011 --1.6006 0.1108 --1.5440 0.1211 --1.4874 0.1320 --1.4307 0.1434 --1.3741 0.1552 --1.3175 0.1675 --1.2609 0.1802 --1.2043 0.1932 --1.1476 0.2065 --1.0910 0.2200 --1.0344 0.2336 --0.9778 0.2473 --0.9212 0.2610 --0.8646 0.2745 --0.8079 0.2878 --0.7513 0.3008 --0.6947 0.3134 --0.6381 0.3255 --0.5815 0.3369 --0.5248 0.3476 --0.4682 0.3575 --0.4116 0.3665 --0.3550 0.3746 --0.2984 0.3816 --0.2418 0.3875 --0.1851 0.3922 --0.1285 0.3957 --0.0719 0.3979 --0.0153 0.3989 -0.0413 0.3986 -0.0980 0.3970 -0.1546 0.3942 -0.2112 0.3901 -0.2678 0.3849 -0.3244 0.3785 -0.3810 0.3710 -0.4377 0.3625 -0.4943 0.3531 -0.5509 0.3428 -0.6075 0.3317 -0.6641 0.3200 -0.7208 0.3077 -0.7774 0.2949 -0.8340 0.2818 -0.8906 0.2683 -0.9472 0.2547 -1.0039 0.2410 -1.0605 0.2274 -1.1171 0.2138 -1.1737 0.2003 -1.2303 0.1872 -1.2869 0.1743 -1.3436 0.1618 -1.4002 0.1497 -1.4568 0.1381 -1.5134 0.1269 -1.5700 0.1163 -1.6267 0.1063 -1.6833 0.0967 -1.7399 0.0878 -1.7965 0.0794 -1.8531 0.0716 -1.9097 0.0644 -1.9664 0.0577 -2.0230 0.0516 -2.0796 0.0459 -2.1362 0.0407 -2.1928 0.0360 -2.2495 0.0318 -2.3061 0.0279 -2.3627 0.0245 -2.4193 0.0214 -2.4759 0.0186 -2.5326 0.0161 -2.5892 0.0140 -Gene4 1 -250 150 -3 1 3 4 -0 --3.7331 0.0009 --3.6699 0.0011 --3.6068 0.0014 --3.5437 0.0016 --3.4805 0.0020 --3.4174 0.0024 --3.3543 0.0029 --3.2911 0.0035 --3.2280 0.0042 --3.1649 0.0050 --3.1017 0.0059 --3.0386 0.0070 --2.9755 0.0083 --2.9123 0.0097 --2.8492 0.0114 --2.7861 0.0133 --2.7229 0.0154 --2.6598 0.0179 --2.5967 0.0206 --2.5335 0.0238 --2.4704 0.0273 --2.4073 0.0312 --2.3441 0.0355 --2.2810 0.0403 --2.2179 0.0455 --2.1547 0.0513 --2.0916 0.0577 --2.0285 0.0645 --1.9653 0.0720 --1.9022 0.0800 --1.8391 0.0886 --1.7759 0.0978 --1.7128 0.1075 --1.6497 0.1178 --1.5865 0.1287 --1.5234 0.1401 --1.4603 0.1519 --1.3971 0.1642 --1.3340 0.1768 --1.2709 0.1897 --1.2077 0.2029 --1.1446 0.2162 --1.0815 0.2296 --1.0183 0.2430 --0.9552 0.2563 --0.8921 0.2693 --0.8290 0.2820 --0.7658 0.2943 --0.7027 0.3061 --0.6396 0.3172 --0.5764 0.3275 --0.5133 0.3371 --0.4502 0.3456 --0.3870 0.3532 --0.3239 0.3597 --0.2608 0.3650 --0.1976 0.3691 --0.1345 0.3719 --0.0714 0.3735 --0.0082 0.3737 -0.0549 0.3727 -0.1180 0.3703 -0.1812 0.3667 -0.2443 0.3618 -0.3074 0.3558 -0.3706 0.3486 -0.4337 0.3404 -0.4968 0.3312 -0.5600 0.3212 -0.6231 0.3103 -0.6862 0.2988 -0.7494 0.2867 -0.8125 0.2741 -0.8756 0.2612 -0.9388 0.2480 -1.0019 0.2347 -1.0650 0.2213 -1.1282 0.2079 -1.1913 0.1947 -1.2544 0.1816 -1.3176 0.1689 -1.3807 0.1565 -1.4438 0.1445 -1.5070 0.1329 -1.5701 0.1219 -1.6332 0.1113 -1.6964 0.1014 -1.7595 0.0920 -1.8226 0.0831 -1.8858 0.0749 -1.9489 0.0673 -2.0120 0.0602 -2.0752 0.0536 -2.1383 0.0477 -2.2014 0.0422 -2.2646 0.0372 -2.3277 0.0327 -2.3908 0.0287 -2.4540 0.0250 -2.5171 0.0218 -2.5802 0.0189 -Gene1 1 -250 150 -1 4 -0 --2.8174 0.0076 --2.7627 0.0088 --2.7080 0.0102 --2.6533 0.0119 --2.5985 0.0137 --2.5438 0.0158 --2.4891 0.0181 --2.4343 0.0207 --2.3796 0.0236 --2.3249 0.0268 --2.2702 0.0304 --2.2154 0.0344 --2.1607 0.0387 --2.1060 0.0435 --2.0512 0.0488 --1.9965 0.0545 --1.9418 0.0607 --1.8871 0.0674 --1.8323 0.0746 --1.7776 0.0823 --1.7229 0.0906 --1.6682 0.0994 --1.6134 0.1087 --1.5587 0.1185 --1.5040 0.1289 --1.4492 0.1397 --1.3945 0.1510 --1.3398 0.1627 --1.2851 0.1748 --1.2303 0.1872 --1.1756 0.2000 --1.1209 0.2129 --1.0661 0.2260 --1.0114 0.2392 --0.9567 0.2524 --0.9020 0.2656 --0.8472 0.2786 --0.7925 0.2914 --0.7378 0.3038 --0.6830 0.3158 --0.6283 0.3273 --0.5736 0.3383 --0.5189 0.3485 --0.4641 0.3580 --0.4094 0.3667 --0.3547 0.3744 --0.2999 0.3811 --0.2452 0.3869 --0.1905 0.3915 --0.1358 0.3950 --0.0810 0.3974 --0.0263 0.3985 -0.0284 0.3985 -0.0832 0.3973 -0.1379 0.3949 -0.1926 0.3913 -0.2473 0.3867 -0.3021 0.3809 -0.3568 0.3741 -0.4115 0.3663 -0.4663 0.3577 -0.5210 0.3481 -0.5757 0.3379 -0.6304 0.3269 -0.6852 0.3154 -0.7399 0.3033 -0.7946 0.2909 -0.8493 0.2781 -0.9041 0.2651 -0.9588 0.2519 -1.0135 0.2387 -1.0683 0.2255 -1.1230 0.2124 -1.1777 0.1995 -1.2324 0.1867 -1.2872 0.1743 -1.3419 0.1622 -1.3966 0.1505 -1.4514 0.1393 -1.5061 0.1285 -1.5608 0.1181 -1.6155 0.1083 -1.6703 0.0990 -1.7250 0.0902 -1.7797 0.0820 -1.8345 0.0743 -1.8892 0.0671 -1.9439 0.0604 -1.9986 0.0543 -2.0534 0.0486 -2.1081 0.0433 -2.1628 0.0386 -2.2176 0.0342 -2.2723 0.0303 -2.3270 0.0267 -2.3817 0.0235 -2.4365 0.0206 -2.4912 0.0180 -2.5459 0.0157 -2.6007 0.0136 -2.6554 0.0118 diff --git a/sourcecodes/parameter_learning/test/Agbnnode.txt b/sourcecodes/parameter_learning/test/Agbnnode.txt deleted file mode 100644 index 1e8b3149..00000000 --- a/sourcecodes/parameter_learning/test/Agbnnode.txt +++ /dev/null @@ -1 +0,0 @@ -6 diff --git a/sourcecodes/parameter_learning/test/Agbstructure_input.txt b/sourcecodes/parameter_learning/test/Agbstructure_input.txt deleted file mode 100644 index 10766f0c..00000000 --- a/sourcecodes/parameter_learning/test/Agbstructure_input.txt +++ /dev/null @@ -1,7 +0,0 @@ -GenotypeA GenotypeB Gene1 Gene2 Gene3 Gene4 -0 0 0 1 0 1 -0 0 0 0 1 1 -0 0 0 0 0 0 -0 0 1 0 0 1 -0 0 0 0 0 0 -0 0 0 0 0 0 diff --git a/sourcecodes/parameter_learning/test/octave-core b/sourcecodes/parameter_learning/test/octave-core deleted file mode 100644 index 678fda92..00000000 Binary files a/sourcecodes/parameter_learning/test/octave-core and /dev/null differ diff --git a/sourcecodes/parameter_learning/writeParameters.m b/sourcecodes/parameter_learning/writeParameters.m new file mode 100644 index 00000000..0790a8e2 --- /dev/null +++ b/sourcecodes/parameter_learning/writeParameters.m @@ -0,0 +1,106 @@ +function [] = writeParameters(pre,nnodes,bnet,labels,cases,labelsold,s,m) +%Writes a file that contains the parameters of the network with no evidence. + + +%%Get the types of the nodes. +typefile = strcat(pre,'type.txt'); +ftype = fopen(typefile,'r'); +types = cell(1,nnodes); +buffer = fgetl(ftype); +buffer = fgetl(ftype); +for j = 1:nnodes + [next,buffer] = strtok(buffer); + types{j} = uint16(str2num(next)); +end + +max_states = 0; +disc_nodes = 0; +for j = 1:nnodes + if types{j} > max_states + max_states = types{j}; + end + if types{j} > 1 + disc_nodes = disc_nodes + 1; + end +end + +%Add 1 to max_states to account for node name +max_states = max_states + 1; + +%%Get mapping of discrete levels. +levelfile = strcat(pre,'nlevels.txt'); +flevels = fopen(levelfile,'r'); +levels = cell(disc_nodes,max_states); +ndisc_nodes = 0; +for i=1:disc_nodes + ndisc_nodes = ndisc_nodes + 1; + buffer = fgetl(flevels); + for j = 1:max_states + [next,buffer] = strtok(buffer); + if j == 1 + levels{i,j} = next; + else +% levels{i,j} = uint16(str2num(next)); + levels{i,j} = next; + end + if length(buffer) < 1 + break + end + end +end + + +evidence = cell(1,nnodes); +engine = jtree_inf_engine(bnet); +[engine,loglik] = enter_evidence(engine,evidence); + +%Open output file. +filename = strcat(pre,'parameters.txt'); +fileID = fopen(filename,'w'); + +for i = 1:nnodes + for j = 1:nnodes + if strcmp(labelsold{i},labels{j}); + nodeid = j; + break + end + end + predict = marginal_nodes(engine,nodeid); + %%%Print the name of the node + fprintf(fileID,'%s\n',labels{nodeid}); + %%%Print the type of node + if bnet.node_sizes(nodeid) == 1; + line = 'Continuous node\n'; + fprintf(fileID,line); + %%% 'i' in the line below is correct: m and s are had original node labeling + adj_mu = predict.mu*s(i)+m(i); + adj_sigma = s(i)*predict.Sigma; + fprintf(fileID,'%6.4f\t%6.4f\n\n',adj_mu,adj_sigma); + else + line = 'Discrete node with %i states\n'; + fprintf(fileID,line,bnet.node_sizes(nodeid)); + %line = 'Probability of each state\n'; + %fprintf(fileID,line); + nodeid2 = 0; + for k = 1:ndisc_nodes, + if strcmp(levels{k,1},labels{nodeid}), + nodeid2 = k; + break + end + end + for j = 1:bnet.node_sizes(nodeid), + %%%For discrete nodes, the state and the percent of that state +% fprintf(fileID,'%i\t%6.4f\n',levels{nodeid2,j+1},predict.T(j)); + fprintf(fileID,'%s\t%6.4f\n',levels{nodeid2,j+1},predict.T(j)); + end; + fprintf(fileID,'\n') + + end +end + + + +fclose(fileID); + +end + diff --git a/sourcecodes/parameter_learning/writeParameters_ev.m b/sourcecodes/parameter_learning/writeParameters_ev.m new file mode 100644 index 00000000..fc24e2e5 --- /dev/null +++ b/sourcecodes/parameter_learning/writeParameters_ev.m @@ -0,0 +1,151 @@ +function [] = writeParameters_ev(pre,bnet,nnodes,labels,cases,stdevs,means,selectvar,selectdata) +%Writes a file that contains the parameters of the network after entering evidence. + +%Read in original node labels to get node IDs. +infile = strcat(pre,'continuous_input.txt'); +fin = fopen(infile,'r'); +labelsold = cell(1,nnodes); +buffer = fgetl(fin); +for j = 1:nnodes + [next,buffer] = strtok(buffer); + labelsold{j} = next; +end +fclose(fin); + + +evidence = cell(1,nnodes); +engine = jtree_inf_engine(bnet); + +m = size(selectvar,1); + +%%Get the types of the nodes. +typefile = strcat(pre,'type.txt'); +ftype = fopen(typefile,'r'); +types = cell(1,nnodes); +buffer = fgetl(ftype); +buffer = fgetl(ftype); +for j = 1:nnodes + [next,buffer] = strtok(buffer); + types{j} = uint16(str2num(next)); +end + +max_states = 0; +disc_nodes = 0; +for j = 1:nnodes + if types{j} > max_states + max_states = types{j}; + end + if types{j} > 1 + disc_nodes = disc_nodes + 1; + end +end + +%Add 1 to max_states to account for node name +max_states = max_states + 1; + +%%Get mapping of discrete levels. +levelfile = strcat(pre,'nlevels.txt'); +flevels = fopen(levelfile,'r'); +levels = cell(disc_nodes,max_states); +ndisc_nodes = 0; +for i=1:disc_nodes + ndisc_nodes = ndisc_nodes + 1; +buffer = fgetl(flevels); +for j = 1:max_states + [next,buffer] = strtok(buffer); + if j == 1 + levels{i,j} = next; + else +% levels{i,j} = uint16(str2num(next)); + levels{i,j} = next; + end + if length(buffer) < 1 + break + end + end +end + + +ev_dat = zeros(1,nnodes); +for i = 1:m, + di=selectvar(i,1); + ev_dat(di)=selectdata(i,1); +%Need to standardize evidence for continuous nodes. + if bnet.node_sizes(di) == 1, + ev_dat(di) = (ev_dat(di) - means{di})/stdevs{di}; + end + evidence{di} = ev_dat(di); +end + +[engine,loglik]=enter_evidence(engine,evidence); + +%Open output file. +filename = strcat(pre,'parameters_ev.txt'); +fileID = fopen(filename,'w'); + +for i = 1:nnodes + for j = 1:nnodes + if strcmp(labelsold{i},labels{j}); + nodeid = j; + break + end + end + %%%Print the name of the node + fprintf(fileID,'%s\n',labels{nodeid}); + predict = marginal_nodes(engine,nodeid); + if isempty(evidence{nodeid}) + %%%Print the type of node + if bnet.node_sizes(nodeid) == 1; + line = 'Continuous parameters considering evidence:\n'; + fprintf(fileID,line); + %line = 'Mean and standard deviation of Gaussian distribution\n'; + %fprintf(fileID,line); + adj_mu = predict.mu*stdevs{nodeid}+means{nodeid}; + adj_sigma = stdevs{nodeid}*predict.Sigma; + fprintf(fileID,'%6.4f\t%6.4f\n\n',adj_mu,adj_sigma); + else + line = 'Probability of states considering evidence:\n'; + fprintf(fileID,line); + nodeid2 = 0; + for k = 1:ndisc_nodes, + if strcmp(levels{k,1},labels{nodeid}), + nodeid2 = k; + break + end + end + for j = 1:bnet.node_sizes(nodeid), + %%%For discrete nodes, the state and the percent of that state +% fprintf(fileID,'%i\t%6.4f\n',levels{nodeid2,j+1},predict.T(j)); + fprintf(fileID,'%s\t%6.4f\n',levels{nodeid2,j+1},predict.T(j)); + end; + fprintf(fileID,'\n') + end + else + if bnet.node_sizes(nodeid) == 1; + line = 'Evidence was observed for this node. The observed value was:\n'; + fprintf(fileID,line); + adj_mu = ev_dat(nodeid)*stdevs{nodeid}+means{nodeid}; + fprintf(fileID,'%6.4f\n\n',adj_mu); + else + nodeid2 = 0; + for k = 1:ndisc_nodes, + if strcmp(levels{k,1},labels{nodeid}), + nodeid2 = k; + break + end + end + line = 'Evidence was observed for this node. The observed state was:\n'; + fprintf(fileID,line); + state_ev = uint16(ev_dat(nodeid)); +% fprintf(fileID,'%i\n\n',levels{nodeid2,state_ev+1}); + fprintf(fileID,'%s\n\n',levels{nodeid2,state_ev+1}); + end + end +end + + + +fclose(fileID); + +end + diff --git a/sourcecodes/parameter_learning/writeParameters_int.m b/sourcecodes/parameter_learning/writeParameters_int.m new file mode 100644 index 00000000..ed92d593 --- /dev/null +++ b/sourcecodes/parameter_learning/writeParameters_int.m @@ -0,0 +1,186 @@ +function [] = writeParameters_int(pre,bnet,nnodes,labels,cases,stdevs,means,selectvar,selectdata) +%Writes a file that contains the parameters of the network after intervention. + + +%First read input file to get node labels to get node IDs. +infile = strcat(pre,'continuous_input.txt'); +fin = fopen(infile,'r'); +labelsold = cell(1,nnodes); +buffer = fgetl(fin); +for j = 1:nnodes + [next,buffer] = strtok(buffer); + labelsold{j} = next; +end + +evidence = cell(1,nnodes); +engine = jtree_inf_engine(bnet); + +m = size(selectvar,1); + +%%Get the types of the nodes. +typefile = strcat(pre,'type.txt'); +ftype = fopen(typefile,'r'); +types = cell(1,nnodes); +buffer = fgetl(ftype); +buffer = fgetl(ftype); +for j = 1:nnodes + [next,buffer] = strtok(buffer); + types{j} = uint16(str2num(next)); +end + +max_states = 0; +disc_nodes = 0; +for j = 1:nnodes + if types{j} > max_states + max_states = types{j}; + end + if types{j} > 1 + disc_nodes = disc_nodes + 1; + end +end + +%Add 1 to max_states to account for node name +max_states = max_states + 1; + +%%Get mapping of discrete levels. +levelfile = strcat(pre,'nlevels.txt'); +flevels = fopen(levelfile,'r'); +levels = cell(disc_nodes,max_states); +ndisc_nodes = 0; +for i=1:disc_nodes + ndisc_nodes = ndisc_nodes + 1; +buffer = fgetl(flevels); +for j = 1:max_states + [next,buffer] = strtok(buffer); + if j == 1 + levels{i,j} = next; + else +% levels{i,j} = uint16(str2num(next)); + levels{i,j} = next; + end + if length(buffer) < 1 + break + end + end +end + + +ev_dat = zeros(1,nnodes); +for i = 1:m, + di=selectvar(i,1); + ev_dat(di)=selectdata(i,1); +%Need to standardize evidence for continuous nodes. + if bnet.node_sizes(di) == 1, + ev_dat(di) = (ev_dat(di) - means{di})/stdevs{di}; + end + evidence{di} = ev_dat(di); +end + +[engine,loglik]=enter_evidence(engine,evidence); + +%Get list of nodes that are children, grandchildren, etc. of intervened nodes +%int_nodes contains the list of these children nodes +int_nodes = zeros(1,nnodes); +%new_nodes is just a temporary array to know when to keep looking +new_nodes = zeros(1,nnodes); +for i = 1:nnodes + if !isempty(evidence{i}); + new_nodes(i) = 1; + int_nodes(i) = 1; + end +end +while sum(new_nodes) != 0 + new_nodes_old = new_nodes; + new_nodes = zeros(1,nnodes); + for i = 1:nnodes + if new_nodes_old(i) == 1 + for j = 1:nnodes + if int_nodes(j) == 0 + if bnet.dag(i,j) == 1, + new_nodes(j) = 1; + end + end + end + end + end + for i = 1:nnodes + if new_nodes(i) == 1; + int_nodes(i) = 1; + end + end +end + + +%Open output file. +filename = strcat(pre,'parameters_ev.txt'); +fileID = fopen(filename,'w'); + +for i = 1:nnodes + for j = 1:nnodes + if strcmp(labelsold{i},labels{j}); + nodeid = j; + break + end + end + %check to see if this is a node impacted by intervention + if int_nodes(nodeid) == 1 + %%%Print the name of the node + fprintf(fileID,'%s\n',labels{nodeid}); + predict = marginal_nodes(engine,nodeid); + if isempty(evidence{nodeid}) + %%%Print the type of node + if bnet.node_sizes(nodeid) == 1; + line = 'Continuous parameters considering intervention:\n'; + fprintf(fileID,line); + %line = 'Mean and standard deviation of Gaussian distribution\n'; + %fprintf(fileID,line); + adj_mu = predict.mu*stdevs{nodeid}+means{nodeid}; + adj_sigma = stdevs{nodeid}*predict.Sigma; + fprintf(fileID,'%6.4f\t%6.4f\n\n',adj_mu,adj_sigma); + else + line = 'Probability of states considering intervention:\n'; + fprintf(fileID,line); + nodeid2 = 0; + for k = 1:ndisc_nodes, + if strcmp(levels{k,1},labels{nodeid}), + nodeid2 = k; + break + end + end + for j = 1:bnet.node_sizes(nodeid), + %%%For discrete nodes, the state and the percent of that state +% fprintf(fileID,'%i\t%6.4f\n',levels{nodeid2,j+1},predict.T(j)); + fprintf(fileID,'%s\t%6.4f\n',levels{nodeid2,j+1},predict.T(j)); + end; + fprintf(fileID,'\n') + end + else + if bnet.node_sizes(nodeid) == 1; + line = 'Intervention on this node assigned the following value:\n'; + fprintf(fileID,line); + adj_mu = ev_dat(nodeid)*stdevs{nodeid}+means{nodeid}; + fprintf(fileID,'%6.4f\n\n',adj_mu); + else + nodeid2 = 0; + for k = 1:ndisc_nodes, + if strcmp(levels{k,1},labels{nodeid}), + nodeid2 = k; + break + end + end + line = 'Intervention on this node assigned the following state:\n'; + fprintf(fileID,line); + state_ev = uint16(ev_dat(nodeid)); +% fprintf(fileID,'%i\n\n',levels{nodeid2,state_ev+1}); + fprintf(fileID,'%s\n\n',levels{nodeid2,state_ev+1}); + end + end + end +end + + + +fclose(fileID); + +end + diff --git a/sourcecodes/run_octave_evd~ b/sourcecodes/run_octave_evd~ deleted file mode 100644 index 3879280e..00000000 --- a/sourcecodes/run_octave_evd~ +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/octave -qf -cd ./data -arg_list = argv(); -addpath("../bnt-master"); -addpath(genpathKPM("../bnt-master")); -addpath("../parameter_learning"); -runBN_initial(arg_list{1}); diff --git a/sourcecodes/run_octave_inv~ b/sourcecodes/run_octave_inv~ deleted file mode 100644 index f9e568e3..00000000 --- a/sourcecodes/run_octave_inv~ +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/octave -qf -cd ./data -arg_list = argv(); -addpath("../bnt-master"); -addpath(genpathKPM("../bnt-master")); -addpath("../parameter_learning"); -Predictmultipleintervention(arg_list{1}); diff --git a/sourcecodes/run_octave~ b/sourcecodes/run_octave~ deleted file mode 100644 index fe29d0d1..00000000 --- a/sourcecodes/run_octave~ +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/octave -qf -cd ./data -arg_list = argv(); -addpath("/var/www/html/compbio/BNW_1.02/sourcecodes/bnt-master"); -addpath(genpathKPM("/var/www/html/compbio/BNW_1.02/sourcecodes/bnt-master")); -addpath("/var/www/html/compbio/BNW_1.02/sourcecodes/parameter_learning"); -runBN_initial(arg_list{1}); diff --git a/sourcecodes/run_prep_input b/sourcecodes/run_prep_input new file mode 100644 index 00000000..4611d880 --- /dev/null +++ b/sourcecodes/run_prep_input @@ -0,0 +1,7 @@ +#!/usr/bin/octave -qf +cd ./data +arg_list = argv(); +addpath("../bnt-master"); +addpath(genpathKPM("../bnt-master")); +addpath("../parameter_learning"); +prepareInput(arg_list{1}); diff --git a/sourcecodes/runmat.sh b/sourcecodes/runmat.sh deleted file mode 100644 index 948bdac3..00000000 --- a/sourcecodes/runmat.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -cd ./data/ - -chmod 0774 $1run_initialstructure.sh - -./$1run_initialstructure.sh /usr/local/MATLAB/R2012a/ \ No newline at end of file diff --git a/sourcecodes/runmat.sh.bk b/sourcecodes/runmat.sh.bk deleted file mode 100644 index 948bdac3..00000000 --- a/sourcecodes/runmat.sh.bk +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -cd ./data/ - -chmod 0774 $1run_initialstructure.sh - -./$1run_initialstructure.sh /usr/local/MATLAB/R2012a/ \ No newline at end of file diff --git a/sourcecodes/runmat_evd.sh b/sourcecodes/runmat_evd.sh deleted file mode 100644 index 68f30ca5..00000000 --- a/sourcecodes/runmat_evd.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -cd ./data/ -chmod 0774 $1run_evidencemodified.sh -./$1run_evidencemodified.sh /usr/local/MATLAB/R2012a/ \ No newline at end of file diff --git a/sourcecodes/runmat_evd.sh.bk b/sourcecodes/runmat_evd.sh.bk deleted file mode 100644 index 68f30ca5..00000000 --- a/sourcecodes/runmat_evd.sh.bk +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -cd ./data/ -chmod 0774 $1run_evidencemodified.sh -./$1run_evidencemodified.sh /usr/local/MATLAB/R2012a/ \ No newline at end of file diff --git a/sourcecodes/runmat_inv.sh b/sourcecodes/runmat_inv.sh deleted file mode 100644 index 1368b423..00000000 --- a/sourcecodes/runmat_inv.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -cd ./data/ -chmod 0774 $1run_newintervention.sh -./$1run_newintervention.sh /usr/local/MATLAB/R2012a/ \ No newline at end of file diff --git a/sourcecodes/runmat_inv.sh.bk b/sourcecodes/runmat_inv.sh.bk deleted file mode 100644 index 1368b423..00000000 --- a/sourcecodes/runmat_inv.sh.bk +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -cd ./data/ -chmod 0774 $1run_newintervention.sh -./$1run_newintervention.sh /usr/local/MATLAB/R2012a/ \ No newline at end of file -- cgit 1.4.1