rbmatlab  1.13.10
 All Classes Namespaces Files Functions Variables Groups Pages
test_data_tree.m
1 function ok = test_data_tree
2  ok = true;
3 
4  %% TPartDataNode test
5  tpart_map1 = [0 5 7 10];
6  tpart_map2 = [0 2 7 10];
7 
8  tpart_init1 = arrayfun(@(x) DataTree.DummyLeafNode(x), [1 2 3], 'UniformOutput', false);
9  tpart_init2 = arrayfun(@(x) DataTree.DummyLeafNode(x), [4 5 6], 'UniformOutput', false);
10 
11  tpart1 = DataTree.TpartNode(tpart_map1, tpart_init1, 1);
12  tpart2 = DataTree.TpartNode(tpart_map2, tpart_init2, 1);
13 
14  %% first IdMapDataNode
15  idmap = {'id1', 'id2'};
16  initvalues = {tpart1, tpart2};
17 
18  idnode1 = DataTree.IdMapNode(idmap, initvalues);
19 
20  %% second IdMapDataNode (note the nesting of idmaps)
21  idmap2 = {idmap, 'id3'};
22 
23  idnode2 = DataTree.DummyLeafNode(7);
24 
25  idnode3 = DataTree.IdMapNode(idmap2, {idnode1, idnode2});
26 
27  display(idnode3);
28 % keyboard
29 
30  ok = ok & (get(idnode3,[idnode3.get_index('id2', [], 3),1]) == 5);
31  ok = ok & (get(idnode3,[idnode3.get_index('id1', [], 3),1]) == 1);
32  ok = ok & (get(idnode3,[idnode3.get_index('id2', [], 6.999),1]) == 5);
33  ok = ok & (get(idnode3,[idnode3.get_index('id2', [], 7),1]) == 6);
34  ok = ok & (get(idnode3,[idnode3.get_index('id2', [], 10),1]) == 6);
35  ok = ok & (get(idnode3,[idnode3.get_index('id2', [], 9),1]) == 6);
36 
37  %% test the MergedTreeCreatorIf
38  % here e.g. detailed data containers could be used for initialization
39  merger1 = DataTree.DummyMerger({'id1'});
40  mergedtree1 = merger1.merge(idnode2, idnode1);
41  ok = ok & (isequal(get(mergedtree1,[mergedtree1.get_index('id1',[],3),1]), '7+1'));
42  ok = ok & (isequal(get(mergedtree1,[mergedtree1.get_index('id2',[],3),1]), '7+1'));
43  merger2 = DataTree.DummyMerger({'id1','id2'});
44  mergedtree2 = merger2.merge(idnode2, idnode1);
45  ok = ok & (isequal(get(mergedtree2,[mergedtree2.get_index('id1',[],3),1]), '7+1'));
46  ok = ok & (isequal(get(mergedtree2,[mergedtree2.get_index('id2',[],3),1]), '7+5'));
47 % ok = ok & (get(
48  % filter = [];
49  % construct(mdatatree, filter);
50 
51 end
52 
53 %% Two applications for MergedTreeCreator:
54 % - combine (1) ei ops with rb and (2) compute rb overlaps
55 % 1. merge at RBEIDetailedData.gen_reduced_data for each id in ei part
56 % using "id regions, tpart_regions, mu_part_regions".
57 % 1.1. in new nodes link to reduced_data of ei and rb
58 % 1.2. compute merged data from detailed_data from ei and rb
59 %
60 % 2. merge at TPartDetailedData.gen_reduced_data for each right_overlap
61 % using "tpart_regions, mu_part_regions". The id should always be
62 % the same.
63 % 2.1. in new nodes link to reduced_data of left and right intervals
64 % 2.2. compute merged data from detailed_data from left and right rb
65 %
66 % So we can and need assume, that indices in reduced_data are the same as in detailed_data