about summary refs log tree commit diff
path: root/sourcecodes/parameter_learning/modifyEdges.m
diff options
context:
space:
mode:
authorziejd22019-01-28 16:37:57 -0600
committerziejd22019-01-28 16:37:57 -0600
commit995f6673b5e725d6907ccd4f8e25033e8524f116 (patch)
tree5df08d9503394eab1190a01a640f3c338e8c74d6 /sourcecodes/parameter_learning/modifyEdges.m
parentbb9d93322abf825368dedaafc2376ef8fdfc1e2f (diff)
downloadBNW-995f6673b5e725d6907ccd4f8e25033e8524f116.tar.gz
Deleting old versions of files
Diffstat (limited to 'sourcecodes/parameter_learning/modifyEdges.m')
-rw-r--r--sourcecodes/parameter_learning/modifyEdges.m133
1 files changed, 133 insertions, 0 deletions
diff --git a/sourcecodes/parameter_learning/modifyEdges.m b/sourcecodes/parameter_learning/modifyEdges.m
new file mode 100644
index 00000000..2b336710
--- /dev/null
+++ b/sourcecodes/parameter_learning/modifyEdges.m
@@ -0,0 +1,133 @@
+function  [ ] = modifyEdges( pre_old, pre_new )
+   %  This function will allow users to add or delete edges from the network.
+   %
+   %  Input: 
+   %   1) pre_oldstructure_input.txt
+   %    Original structure file.
+   %   2) pre_olddel_edge.txt
+   %    A list of the edges that should be deleted.   
+   %   3) pre_oldadd_edge.txt
+   %    A list of the edges that should be added.
+   %
+   %  Output: 
+   %   pre_newstructure_input.txt-- structure file with edges added/deleted.
+   %
+
+
+%  open file for input, include error handling
+dfile=strcat(pre_old,'structure_input.txt');
+
+fin = fopen(dfile,'r');
+if fin < 0
+   error(['Could not open ',dfile,' for input']);
+end
+
+% 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"));
+labels = cell(1,nnodes);
+for j=1:nnodes
+    [next,buffer] = strtok(buffer);
+    labels{j} = next;
+end
+
+% Read in the edges
+edges = cell(nnodes,nnodes);
+for i = 1:nnodes
+    buffer = fgetl(fin);
+    for j = 1:nnodes
+         [next,buffer] = strtok(buffer);
+         edges{i,j} = next;
+    end
+end
+
+
+%  open file with edges to be deleted
+dedgefile=strcat(pre_old,'del_edge.txt');
+fin2 = fopen(dedgefile,'r');
+ndel=fskipl(fin2,Inf) - 1;
+frewind(fin2);
+
+delfrom = cell(1,ndel);
+delto = cell(1,ndel);
+
+buffer = fgetl(fin2);    %get header line
+for j=1:ndel
+  buffer = fgetl(fin2);    %get line with actual variables
+  [next,buffer] = strtok(buffer);
+  delfrom{j} = next;
+  [next,buffer] = strtok(buffer);
+  delto{j} = next;
+end
+
+%get index of edges to delete
+idel_from = [];
+idel_to = [];
+for j = 1:ndel
+  for k = 1:nnodes
+    if strcmp(labels{k},delfrom{j})
+      idel_from = [idel_from;k];
+    endif
+    if strcmp(labels{k},delto{j})
+      idel_to = [idel_to;k];
+    endif
+  end
+end
+
+for i = 1:ndel
+  edges(idel_from(i),idel_to(i)) = "0";
+end
+
+fclose(fin2);
+
+%  open file with edges to be added
+aedgefile=strcat(pre_old,'add_edge.txt');
+fin3 = fopen(aedgefile,'r');
+nadd=fskipl(fin3,Inf) - 1;
+frewind(fin3);
+
+addfrom = cell(1,nadd);
+addto = cell(1,nadd);
+
+buffer = fgetl(fin3);    %get header line
+for j=1:nadd
+  buffer = fgetl(fin3);    %get line with actual variables
+  [next,buffer] = strtok(buffer);
+  addfrom{j} = next;
+  [next,buffer] = strtok(buffer);
+  addto{j} = next;
+end
+
+%get index of edges to added
+iadd_from = [];
+iadd_to = [];
+for j = 1:nadd
+  for k = 1:nnodes
+    if strcmp(labels{k},addfrom{j})
+      iadd_from = [iadd_from;k];
+    endif
+    if strcmp(labels{k},addto{j})
+      iadd_to = [iadd_to;k];
+    endif
+  end
+end
+
+for i = 1:nadd
+  edges(iadd_from(i),iadd_to(i)) = "1";
+end
+
+
+
+
+
+outfile = strcat(pre_new,'structure_input.txt');
+fout = fopen(outfile,'w');
+fprintf(fout,'%s\t',labels{1:end-1});
+fprintf(fout,'%s\n',labels{end});
+for i = 1:nnodes
+      fprintf(fout,'%s\t',edges{i,1:end-1});
+      fprintf(fout,'%s\n',edges{i,end});
+end
+fclose(fout);
+
+end