about summary refs log tree commit diff
path: root/sourcecodes/parameter_learning/Predictmultipleintervention.m
diff options
context:
space:
mode:
authorziejd22018-04-25 16:43:19 -0500
committerziejd22018-04-25 16:43:19 -0500
commit74b673ba4a706085201a5610b938ff98f08f641d (patch)
treecb39006ea1a39499e00dbbb0e0097087a4567031 /sourcecodes/parameter_learning/Predictmultipleintervention.m
parenta781cb1ff2e7ae6de0f686bd02cd279261485b1e (diff)
downloadBNW-74b673ba4a706085201a5610b938ff98f08f641d.tar.gz
Bug fixes, code comments, and minor changes
Diffstat (limited to 'sourcecodes/parameter_learning/Predictmultipleintervention.m')
-rw-r--r--sourcecodes/parameter_learning/Predictmultipleintervention.m107
1 files changed, 107 insertions, 0 deletions
diff --git a/sourcecodes/parameter_learning/Predictmultipleintervention.m b/sourcecodes/parameter_learning/Predictmultipleintervention.m
new file mode 100644
index 00000000..7e6140a9
--- /dev/null
+++ b/sourcecodes/parameter_learning/Predictmultipleintervention.m
@@ -0,0 +1,107 @@
+function Predictmultipleintervention(pre)
+% Predictmultipleintervention is used when predicting the impact of
+%    intervention on the network. The 'multiple' part refers to 
+%    it working when intervention for multiple nodes is entered.
+%
+% The input is 'pre'-- the prefix for the network and data
+%      in BNW. It reads information from several files from BNW. 
+%
+% The output is ???net_figure_new.txt. It also calls 
+%      writeParameters_int to write the parameter file.
+%
+% It is called by the run_octave_inv file in the 'sourcecodes' directory.
+
+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');
+
+fvarnamefile=strcat(pre,'varname.txt');
+
+varfile = fopen(fvarnamefile,'r');
+
+Std_flag=true;
+[labels,cases,bnet]=readInput(dfile,sfile,nnodes,Std_flag);
+
+[bnet]=parameterLearning(bnet,cases);
+
+fvarfile=strcat(pre,'var.txt');
+fvar = fopen(fvarfile,'r');                           
+select_var_new = fscanf(fvar,'%d');
+
+nm = numel(select_var_new);
+
+varlabels = cell(1,nm);
+varbuffer = fgetl(varfile);    %get header line as a string
+for j=1:nm
+    [varnext,varbuffer] = strtok(varbuffer);
+    varlabels{j} = varnext;
+    for i=1:nnodes    
+        if strcmp(varlabels{j},labels{i})
+            select_var_new(j)=i;
+        end
+     end    
+    
+end
+
+
+
+
+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,3);
+    for j=1:3
+        [next,buffer] = strtok(buffer);
+        temp{j} = next;
+    end
+    labels_orig{i} = temp{1};
+    means_orig{i} = str2num(temp{3});
+    stdevs_orig{i} = str2num(temp{2});
+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,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