about summary refs log tree commit diff
path: root/sourcecodes/parameter_learning/code_backup/checkStructure.m
diff options
context:
space:
mode:
authorziejd22019-06-27 13:58:58 -0500
committerziejd22019-06-27 13:58:58 -0500
commit5310fa747a6a46a0e96dc649cbca863e2c44aeb4 (patch)
tree3d4ba8a8a8a6f50b4877d1153e0fb390bbf86564 /sourcecodes/parameter_learning/code_backup/checkStructure.m
parent2be4664d4ef668feee3d1e8972c7fd0813aea7e8 (diff)
downloadBNW-5310fa747a6a46a0e96dc649cbca863e2c44aeb4.tar.gz
Version 1.22
Adding new visualization options
Diffstat (limited to 'sourcecodes/parameter_learning/code_backup/checkStructure.m')
-rw-r--r--sourcecodes/parameter_learning/code_backup/checkStructure.m78
1 files changed, 78 insertions, 0 deletions
diff --git a/sourcecodes/parameter_learning/code_backup/checkStructure.m b/sourcecodes/parameter_learning/code_backup/checkStructure.m
new file mode 100644
index 00000000..b4de9403
--- /dev/null
+++ b/sourcecodes/parameter_learning/code_backup/checkStructure.m
@@ -0,0 +1,78 @@
+function [ labels, cases, dag, node_sizes, ord_flag ] = checkStructure(labels, cases, dag, node_sizes)
+    %checkStructure Check to see if nodes are sorted correctly.  Nodes must be
+    %   in topological order (i.e., parents before children) before parameter
+    %   learning can take place. This function performs this sorting.
+    %
+    %Input and output have the same meaning.  The output has just been
+    %topologically ordered.
+    %   labels = cell array with the names of the nodes.
+    %   cases = cell array with the data.
+    %   dag = matrix with the strucutre of the network.
+    %   node_sizes = vector with the size of each node.
+
+%make connections array
+%count how big you need the connections array to be
+nnodes = size(dag,1);
+narcs = 0;
+for i = 1:nnodes
+    for j = 1:nnodes
+        if dag(i,j) == 1
+            narcs = narcs + 1;
+        end
+    end
+end
+%fill connections array with label names
+connections = cell(narcs,2);
+ncount = 0;
+for i = 1:nnodes
+    for j = 1:nnodes
+        if dag(i,j) == 1
+            ncount = ncount + 1;
+            connections{ncount,1} = labels{i};
+            connections{ncount,2} = labels{j};
+        end
+    end
+end
+
+%get topologically sorted dag and labels
+[new_dag, new_labels] = mk_adj_mat(connections, labels, 1);
+
+%check to see if order changed
+ord_flag = 0;
+for i = 1:nnodes
+    if ~strcmp(new_labels{i},labels{i})
+        ord_flag = 1;
+    end
+end
+
+if ord_flag
+    %get new ordering of nodes
+    order = cell(1,nnodes);
+    for i = 1:nnodes
+        for j = 1:nnodes
+            if strcmp(new_labels{j},labels{i})
+                order{i} = j;
+            end
+        end
+    end
+
+    %reorder cases and node_sizes
+    new_cases = cell(size(cases));
+    for i = 1:nnodes
+        new_cases(order{i},:) = cases(i,:);
+    end
+    new_node_sizes = zeros(1,nnodes);
+    for i = 1:nnodes
+        new_node_sizes(order{i}) = node_sizes(i);
+    end
+
+
+    dag = new_dag;
+    cases = new_cases;
+    node_sizes = new_node_sizes;
+    labels = new_labels;    
+end
+
+end
+%end checkStructure.m
+