about summary refs log tree commit diff
path: root/sourcecodes/parameter_learning/createSVG.m
diff options
context:
space:
mode:
Diffstat (limited to 'sourcecodes/parameter_learning/createSVG.m')
-rw-r--r--sourcecodes/parameter_learning/createSVG.m137
1 files changed, 137 insertions, 0 deletions
diff --git a/sourcecodes/parameter_learning/createSVG.m b/sourcecodes/parameter_learning/createSVG.m
new file mode 100644
index 00000000..f7cc9b64
--- /dev/null
+++ b/sourcecodes/parameter_learning/createSVG.m
@@ -0,0 +1,137 @@
+function  [ ] = createSVG( pre )
+   %  This function will create a JSON file for network visualization.
+   %
+   %  Input: 
+   %   1) prestructure_input.txt
+   %    Structure file.
+   %   2) prestructure_input_temp.txt
+   %    Structure file with model averaging scores.
+   %   3) pregrviz_name_file.txt
+   %    Node names in graph viz file.   
+   %   4) pregraphviz.txt
+   %    Original graphviz input file.   
+   %
+   %  Output: 
+   %   pregraphviz_svg.txt-- Modified graphviz input file.
+   %
+
+
+%  open file for input, include error handling
+dfile=strcat(pre,'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")) + 1;
+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 to read in model averaging scores
+dfile2=strcat(pre,'structure_input_temp.txt');
+
+if (exist(dfile2) == 0)
+  scores = cell(nnodes,nnodes);
+  for i = 1:nnodes
+    for j = 1:nnodes
+      scores{i,j} = edges{i,j};
+    end
+  end
+else
+  fin2 = fopen(dfile2,'r');
+  if fin2 < 0
+    error(['Could not open ',dfile2,' for input']);
+  end
+
+  buffer = fgetl(fin2);    %get header line as a string
+
+% Read in the scores
+  scores = cell(nnodes,nnodes);
+  for i = 1:nnodes
+    buffer = fgetl(fin2);
+    for j = 1:nnodes
+         [next,buffer] = strtok(buffer);
+         scores{i,j} = next;
+    end
+  end
+end
+
+% open file to get positions of variables
+dfile3=strcat(pre,'grviz_name_file.txt');
+
+fin3 = fopen(dfile3,'r');
+if fin3 < 0
+   error(['Could not open ',dfile3,' for input']);
+end
+
+grphviz_names = cell(nnodes);
+for j=1:nnodes
+    [next,buffer] = strtok(buffer);
+    grphviz_names{j} = next;
+end
+
+
+nedges = 0;
+sources = [];
+targets = [];
+scores1 = [];
+for i = 1:nnodes
+  for j = 1:nnodes
+    if edges{i,j} == "1"
+      nedges = nedges + 1;
+      sources = [sources; i]; 
+      targets = [targets; j]; 
+      scores1 = [scores1; str2num(scores{i,j})]; 
+    end
+  end
+end
+
+
+outfile = strcat(pre,'graphviz_svg.txt');
+fout = fopen(outfile,'w');
+fprintf(fout,"digraph G {\n");
+%fprintf(fout,"size=\"10,10\"; ratio = fill;\n");
+fprintf(fout,"size=\"10,10\"; remincross = true;\n");
+fprintf(fout,"node [shape=rectangle, width=1.0, fontsize=22];\n");
+fprintf(fout,"edge [fontsize=16];\n");
+for i = 1:nedges
+  fprintf(fout,"\"%s\" -> \"%s\" [ label=\"%3.2f\", penwidth=\"%3.2f\" ];\n",labels{sources(i)},labels{targets(i)},scores1(i),2*scores1(i));
+end
+fprintf(fout,"}/n");
+fclose(fout);
+
+
+outfile2 = strcat(pre,'graphviz_svg_no_edge.txt');
+fout2 = fopen(outfile2,'w');
+fprintf(fout2,"digraph G {\n");
+%fprintf(fout,"size=\"10,10\"; ratio = fill;\n");
+fprintf(fout2,"size=\"10,10\"; remincross = true;\n");
+fprintf(fout2,"node [shape=rectangle, width=1.0, fontsize=22];\n");
+fprintf(fout2,"edge [fontsize=16];\n");
+for i = 1:nedges
+  fprintf(fout,"\"%s\" -> \"%s\" [ penwidth=\"%3.2f\" ];\n",labels{sources(i)},labels{targets(i)},2*scores1(i));
+end
+fprintf(fout2,"}/n");
+fclose(fout2);
+
+
+
+end