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