diff options
| author | ziejd2 | 2019-06-27 13:58:58 -0500 |
|---|---|---|
| committer | ziejd2 | 2019-06-27 13:58:58 -0500 |
| commit | 5310fa747a6a46a0e96dc649cbca863e2c44aeb4 (patch) | |
| tree | 3d4ba8a8a8a6f50b4877d1153e0fb390bbf86564 /sourcecodes/parameter_learning/code_backup/checkStructure.m | |
| parent | 2be4664d4ef668feee3d1e8972c7fd0813aea7e8 (diff) | |
| download | BNW-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.m | 78 |
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 + |
