1*2abb3134SXin Li// Based on http://graphviz.org/content/cluster 2*2abb3134SXin Li 3*2abb3134SXin Li// Node types: 4*2abb3134SXin Li// Rectangle: process 5*2abb3134SXin Li// Oval: data 6*2abb3134SXin Li// Diamond: debug/simulation data 7*2abb3134SXin Li 8*2abb3134SXin Lidigraph G { 9*2abb3134SXin Li //rankdir="LR"; // left to right layout 10*2abb3134SXin Li 11*2abb3134SXin Li // http://www.graphviz.org/content/color-names 12*2abb3134SXin Li colorscheme=pastel13; 13*2abb3134SXin Li 14*2abb3134SXin Li subgraph cluster_0 { 15*2abb3134SXin Li graph [ fontsize=24 ]; 16*2abb3134SXin Li label = "Reporting"; 17*2abb3134SXin Li style=filled; 18*2abb3134SXin Li color=2; 19*2abb3134SXin Li 20*2abb3134SXin Li node [style=filled, color=white, fontsize=12]; 21*2abb3134SXin Li 22*2abb3134SXin Li gen_sim_input -> dist_csv -> rappor_sim; 23*2abb3134SXin Li 24*2abb3134SXin Li rappor_sim -> out; 25*2abb3134SXin Li rappor_sim -> params; 26*2abb3134SXin Li rappor_sim -> hist; 27*2abb3134SXin Li rappor_sim -> true_inputs; 28*2abb3134SXin Li 29*2abb3134SXin Li // Process 30*2abb3134SXin Li rappor_sim [label="rappor_sim"]; 31*2abb3134SXin Li 32*2abb3134SXin Li // Data 33*2abb3134SXin Li dist_csv [shape=box, label="dist.csv"]; 34*2abb3134SXin Li out [shape=box, label="dist_out.csv"]; 35*2abb3134SXin Li params [shape=box, label="dist_params.csv"]; 36*2abb3134SXin Li 37*2abb3134SXin Li // simulation data 38*2abb3134SXin Li hist [shape=box, style=dotted, color=black, label="dist_hist.csv"]; 39*2abb3134SXin Li true_inputs [shape=box, style=dotted, color=black, label="dist_true_inputs.txt"]; 40*2abb3134SXin Li } 41*2abb3134SXin Li 42*2abb3134SXin Li subgraph cluster_1 { 43*2abb3134SXin Li graph [ fontsize=24 ]; 44*2abb3134SXin Li label = "Analysis"; 45*2abb3134SXin Li style = filled; 46*2abb3134SXin Li color=3; 47*2abb3134SXin Li 48*2abb3134SXin Li node [style=filled, color=white, fontsize=12]; 49*2abb3134SXin Li 50*2abb3134SXin Li sum_bits -> counts; 51*2abb3134SXin Li 52*2abb3134SXin Li // sum_bits needs the params to construct the matrix. Technically it could 53*2abb3134SXin Li // infer it, but this is simple. 54*2abb3134SXin Li params -> sum_bits; 55*2abb3134SXin Li 56*2abb3134SXin Li // only in the simulation 57*2abb3134SXin Li true_inputs -> demo_sh -> candidates [style=dotted]; 58*2abb3134SXin Li 59*2abb3134SXin Li candidates -> hash_candidates -> map; 60*2abb3134SXin Li params -> hash_candidates; 61*2abb3134SXin Li 62*2abb3134SXin Li params -> analyze; 63*2abb3134SXin Li map -> analyze; 64*2abb3134SXin Li counts -> analyze; 65*2abb3134SXin Li hist -> analyze [style=dotted]; // only for comparison 66*2abb3134SXin Li 67*2abb3134SXin Li analyze -> plot_png; 68*2abb3134SXin Li 69*2abb3134SXin Li // Processes 70*2abb3134SXin Li analyze [label="analyze.R"]; 71*2abb3134SXin Li demo_sh [label="demo.sh", style=dotted, color=black]; 72*2abb3134SXin Li 73*2abb3134SXin Li // Data 74*2abb3134SXin Li counts [shape=box, label="dist_count.csv"]; 75*2abb3134SXin Li candidates [shape=box, label="dist_candidates.txt"]; 76*2abb3134SXin Li map [shape=box, label="dist_map.csv"]; 77*2abb3134SXin Li 78*2abb3134SXin Li plot_png [shape=box, label="dist.png"]; 79*2abb3134SXin Li 80*2abb3134SXin Li } 81*2abb3134SXin Li 82*2abb3134SXin Li out -> sum_bits; 83*2abb3134SXin Li} 84