about summary refs log tree commit diff
path: root/sourcecodes/parameter_learning/Predictmultipleintervention.m
blob: 7e6140a9e2188c2edce9afd33a05293197d14ef6 (plain)
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