1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
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
|