diff --git a/.gitignore b/.gitignore index c7ba5080fd..395fe8ba7d 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,6 @@ .jac_mypy_cache/ +.envrc + +#ignore generated visual files +cfg.gv.pdf +cfg.gv \ No newline at end of file diff --git a/cfg.gv b/cfg.gv new file mode 100644 index 0000000000..76ab6f6c18 --- /dev/null +++ b/cfg.gv @@ -0,0 +1,9 @@ +// Control Flow Graph +digraph { + bb0 [label=BB0] + bb1 [label=BB1] + bb2 [label=BB2] + bb0 -> bb2 + bb0 -> bb1 + bb1 -> bb2 +} diff --git a/cfg.gv.pdf b/cfg.gv.pdf new file mode 100644 index 0000000000..c0df284829 Binary files /dev/null and b/cfg.gv.pdf differ diff --git a/jac/.gitignore b/jac/.gitignore index eb22397c53..e8314c413b 100644 --- a/jac/.gitignore +++ b/jac/.gitignore @@ -55,3 +55,5 @@ out.txt # Jaclang session files *.session + +env/* \ No newline at end of file diff --git a/jac/cfg.gv b/jac/cfg.gv new file mode 100644 index 0000000000..677f5b02e7 --- /dev/null +++ b/jac/cfg.gv @@ -0,0 +1,21 @@ +// Control Flow Graph +digraph { + bb0 [label=BB0] + bb1 [label=BB1] + bb2 [label=BB2] + bb3 [label=BB3] + bb4 [label=BB4] + bb5 [label=BB5] + bb6 [label=BB6] + bb7 [label=BB7] + bb0 -> bb7 + bb0 -> bb1 + bb1 -> bb3 + bb1 -> bb2 + bb2 -> bb4 + bb3 -> bb4 + bb4 -> bb6 + bb4 -> bb5 + bb5 -> bb1 + bb6 -> bb7 +} diff --git a/jac/cfg.gv.pdf b/jac/cfg.gv.pdf new file mode 100644 index 0000000000..7d43940e67 Binary files /dev/null and b/jac/cfg.gv.pdf differ diff --git a/jac/error b/jac/error new file mode 100644 index 0000000000..606fdf3984 --- /dev/null +++ b/jac/error @@ -0,0 +1,10 @@ +ERROR - division by zero +ERROR - Error: division by zero + 13 | # i += 1; + 14 | } + 15 | print(y/0); + | ^^^ + 16 | print(y); + 17 | print("hello"); + at /Users/christopherlin/Desktop/Classes/jaseci-ginS/jac/example.jac:15 +division by zero diff --git a/jac/examples/gins_scripts/acc_itr.jac b/jac/examples/gins_scripts/acc_itr.jac new file mode 100644 index 0000000000..2487a8aaa4 --- /dev/null +++ b/jac/examples/gins_scripts/acc_itr.jac @@ -0,0 +1,23 @@ +import:py random; + +with entry { + accu:int = 0; + itr:int = 0; + threshold:int = 500000; + series:list=[]; + meas:list=[0,0,0,0,0,0,0,0,0,0]; + for num in range(10) { + series.append(num + (num + 1)); + } + for i in range(len(series)) { + while itr < (series[i] * 100000) { + if (itr/2 < threshold) { + meas[i] += random.uniform(0.01,0.05); + } + else { + meas[i] -= random.uniform(0.01,0.05); + } + itr += 1; + } + } +} \ No newline at end of file diff --git a/jac/examples/gins_scripts/accu_hot_path.jac b/jac/examples/gins_scripts/accu_hot_path.jac new file mode 100644 index 0000000000..0b8baa10ea --- /dev/null +++ b/jac/examples/gins_scripts/accu_hot_path.jac @@ -0,0 +1,24 @@ +import:py random; + +with entry { + accu:int = 0; + itr:int = 0; + threshold:int = 500000; + series:list=[]; + meas:list=[0,0,0,0,0,0,0,0,0,0]; + for num in range(10) { + series.append(num + (num + 1)); + } + for i in range(len(series)) { + while itr < 100000 { + accu += series[i]; + if (accu < threshold) { + meas[i] += random.uniform(0.01,0.05); + } + else { + meas[i] -= random.uniform(0.01,0.05); + } + itr += 1; + } + } +} \ No newline at end of file diff --git a/jac/examples/gins_scripts/cfg.gv b/jac/examples/gins_scripts/cfg.gv new file mode 100644 index 0000000000..54fec36365 --- /dev/null +++ b/jac/examples/gins_scripts/cfg.gv @@ -0,0 +1,28 @@ +// Control Flow Graph +digraph { + bb0 [label=BB0] + bb1 [label=BB1] + bb2 [label=BB2] + bb3 [label=BB3] + bb4 [label=BB4] + bb5 [label=BB5] + bb6 [label=BB6] + bb7 [label=BB7] + bb8 [label=BB8] + bb9 [label=BB9] + bb10 [label=BB10] + bb0 -> bb2 + bb0 -> bb1 + bb1 -> bb3 + bb2 -> bb3 + bb3 -> bb10 + bb3 -> bb4 + bb4 -> bb6 + bb4 -> bb5 + bb5 -> bb7 + bb6 -> bb7 + bb7 -> bb9 + bb7 -> bb8 + bb8 -> bb4 + bb9 -> bb10 +} diff --git a/jac/examples/gins_scripts/cfg.gv.pdf b/jac/examples/gins_scripts/cfg.gv.pdf new file mode 100644 index 0000000000..9bf344a9ce Binary files /dev/null and b/jac/examples/gins_scripts/cfg.gv.pdf differ diff --git a/jac/examples/gins_scripts/example.jac b/jac/examples/gins_scripts/example.jac new file mode 100644 index 0000000000..f174566507 --- /dev/null +++ b/jac/examples/gins_scripts/example.jac @@ -0,0 +1,35 @@ +# with entry { +# x:int = 0; +# y:int = 3; +# z:int = x + y; +# i:int = 0; + +# while (i < 3) { +# # if i % 2 { +# # print("d"); +# # } +# x = 4; +# y = y + x; +# i += 1; +# } +# print(y/0); +# print(y); +# print("hello"); +# } +with entry { + x:int = 0; + y:int = 3; + z:int = x + y; + for i in range(49) { + x = 4 * i + y * (z); + if x % 2 { + y= 0; + } + else { + y = 4; + } + } + z = x/y; + print(y); + print("hello"); +} diff --git a/jac/examples/gins_scripts/exp_hot_path.jac b/jac/examples/gins_scripts/exp_hot_path.jac new file mode 100644 index 0000000000..be40b16a0a --- /dev/null +++ b/jac/examples/gins_scripts/exp_hot_path.jac @@ -0,0 +1,24 @@ +import:py random; + +with entry { + accu:int = 0; + itr:int = 0; + threshold:int = 500000; + series:list=[]; + meas:list=[0,0,0,0,0,0,0,0,0,0]; + for num in range(10) { + series.append(num * num); + } + for i in range(len(series)){ + while itr < 100000 { + accu += series[i]; + if accu < threshold { + meas[i] += random.uniform(0.01,0.05); + } + else { + meas[i] -= random.uniform(0.01,0.05); + } + itr += 1; + } + } +} \ No newline at end of file diff --git a/jac/examples/gins_scripts/exp_hot_path2.jac b/jac/examples/gins_scripts/exp_hot_path2.jac new file mode 100644 index 0000000000..57cd701c79 --- /dev/null +++ b/jac/examples/gins_scripts/exp_hot_path2.jac @@ -0,0 +1,24 @@ +import:py random; + +with entry { + accu:int = 0; + itr:int = 0; + threshold:int = 500000; + series:list=[]; + meas:list=[0,0,0,0,0,0,0,0,0,0]; + for num in range(10) { + series.append(num * num * num); + } + for i in range(len(series)) { + while itr < 100000 { + accu += series[i]; + if accu < threshold { + meas[i] += random.uniform(0.01,0.05); + } + else { + meas[i] -= random.uniform(0.01,0.05); + } + itr += 1; + } + } +} \ No newline at end of file diff --git a/jac/examples/gins_scripts/exp_hot_path3.jac b/jac/examples/gins_scripts/exp_hot_path3.jac new file mode 100644 index 0000000000..ebaa359925 --- /dev/null +++ b/jac/examples/gins_scripts/exp_hot_path3.jac @@ -0,0 +1,24 @@ +import:py random; + +with entry { + accu:int = 0; + itr:int = 0; + threshold:int = 500000; + series:list=[]; + meas:list=[0,0,0,0,0,0,0,0,0,0]; + for num in range(10) { + series.append(num * num + num); + } + for i in range(len(series)) { + while itr < 100000 { + accu += series[i]; + if accu < threshold { + meas[i] += random.uniform(0.01,0.05); + } + else { + meas[i] -= random.uniform(0.01,0.05); + } + itr += 1; + } + } +} \ No newline at end of file diff --git a/jac/examples/gins_scripts/exp_itr.jac b/jac/examples/gins_scripts/exp_itr.jac new file mode 100644 index 0000000000..e44ae3fbea --- /dev/null +++ b/jac/examples/gins_scripts/exp_itr.jac @@ -0,0 +1,23 @@ +import:py random; + +with entry { + accu:int = 0; + itr:int = 0; + threshold:int = 500000; + series:list=[]; + meas:list=[0,0,0,0,0,0,0,0,0,0]; + for num in range(10) { + series.append(num * num); + } + for i in range(len(series)){ + while itr < (series[i] * 100000) { + if (itr/2 < threshold) { + meas[i] += random.uniform(0.01,0.05); + } + else { + meas[i] -= random.uniform(0.01,0.05); + } + itr += 1; + } + } +} \ No newline at end of file diff --git a/jac/examples/gins_scripts/exp_itr2.jac b/jac/examples/gins_scripts/exp_itr2.jac new file mode 100644 index 0000000000..cf1302750a --- /dev/null +++ b/jac/examples/gins_scripts/exp_itr2.jac @@ -0,0 +1,23 @@ +import:py random; + +with entry { + accu:int = 0; + itr:int = 0; + threshold:int = 500000; + series:list=[]; + meas:list=[0,0,0,0,0,0,0,0,0,0]; + for num in range(10) { + series.append(num * num * num); + } + for i in range(len(series)){ + while itr < (series[i] * 100000) { + if (itr/2 < threshold) { + meas[i] += random.uniform(0.01,0.05); + } + else { + meas[i] -= random.uniform(0.01,0.05); + } + itr += 1; + } + } +} \ No newline at end of file diff --git a/jac/examples/gins_scripts/exp_itr3.jac b/jac/examples/gins_scripts/exp_itr3.jac new file mode 100644 index 0000000000..e0c352bc21 --- /dev/null +++ b/jac/examples/gins_scripts/exp_itr3.jac @@ -0,0 +1,23 @@ +import:py random; + +with entry { + accu:int = 0; + itr:int = 0; + threshold:int = 500000; + series:list=[]; + meas:list=[0,0,0,0,0,0,0,0,0,0]; + for num in range(10) { + series.append(num * num + num); + } + for i in range(len(series)){ + while itr < (series[i] * 100000) { + if (itr/2 < threshold) { + meas[i] += random.uniform(0.01,0.05); + } + else { + meas[i] -= random.uniform(0.01,0.05); + } + itr += 1; + } + } +} \ No newline at end of file diff --git a/jac/examples/gins_scripts/hot_path.jac b/jac/examples/gins_scripts/hot_path.jac new file mode 100644 index 0000000000..835a3ffe35 --- /dev/null +++ b/jac/examples/gins_scripts/hot_path.jac @@ -0,0 +1,43 @@ +import:py os; +import:py random; + +with entry { + current_directory = os.path.dirname(os.path.abspath(__file__)); + input_dir = os.path.join(current_directory,'inputs/test.txt'); + + var = []; + with open(input_dir, 'r') as file { + for line in file { + # Process each line here + var.append(float(line.strip())); # .strip() removes trailing newlines + } + } + a:int = 0; + b:int = 0; + c:int = 0; + input_val:float = 0.0; + test_val: float = 0.0; + count:int = 0; + accum_sum:float = 0.0; + changing_average:float = 0; + change_reduction_arr:list=[]; + for val in var { + input_val = val; + count = count + 1; + accum_sum = accum_sum + val; + changing_average = accum_sum/count; + if (changing_average)/100 < 1.0 { + test_val:int = test_val + 100.0; + } + else { + for i in range(count) { + test_val = test_val + 10.0; + } + } + } + while test_val > 0 { + reduce:float = random.uniform(5.0,10.0); + test_val -= 100.0; + # change_reduction_arr.append(test_val); + } +} \ No newline at end of file diff --git a/jac/examples/gins_scripts/hot_path_cfg.png b/jac/examples/gins_scripts/hot_path_cfg.png new file mode 100644 index 0000000000..4a41ccf737 Binary files /dev/null and b/jac/examples/gins_scripts/hot_path_cfg.png differ diff --git a/jac/examples/gins_scripts/import_helper.jac b/jac/examples/gins_scripts/import_helper.jac new file mode 100644 index 0000000000..e4b1092196 --- /dev/null +++ b/jac/examples/gins_scripts/import_helper.jac @@ -0,0 +1,13 @@ +import:py os; +can import_inputs() { + current_directory = os.path.dirname(os.path.abspath(__file__)); + input_dir = os.path.join(current_directory,'inputs/test.txt'); + var = []; + with open(input_dir, 'r') as file { + for line in file { + # Process each line here + var.append(int(line.strip())); # .strip() removes trailing newlines + } + } + return var; +} diff --git a/jac/examples/gins_scripts/import_helper.py b/jac/examples/gins_scripts/import_helper.py new file mode 100644 index 0000000000..df86376ad2 --- /dev/null +++ b/jac/examples/gins_scripts/import_helper.py @@ -0,0 +1,10 @@ +import os +def import_inputs(): + current_directory = os.path.dirname(os.path.abspath(__file__)) + input_dir = os.path.join(current_directory,'inputs/test.txt') + inputs = [] + with open(input_dir, 'r') as file: + for line in file: + # Process each line here + inputs.append[int(line.strip())] # .strip() removes trailing newlines + return inputs \ No newline at end of file diff --git a/jac/examples/gins_scripts/inputs/generate_inputs.py b/jac/examples/gins_scripts/inputs/generate_inputs.py new file mode 100644 index 0000000000..6eb4e57d1d --- /dev/null +++ b/jac/examples/gins_scripts/inputs/generate_inputs.py @@ -0,0 +1,39 @@ +import numpy as np +import os +import random + +current_directory = os.path.dirname(os.path.abspath(__file__)) +output_file = os.path.join(current_directory,'test_predict.txt') + + +# mean = 92 +# std_dev = 9 +# num_samples = 100 +# skewness = 5 +# random_numbers = list(np.random.normal(mean,std_dev, num_samples)) +# w_str = "\n".join(str(round(num,3)) for num in random_numbers) + +num_samples = 100 +start_value = 99 +end_avg = 105 + +# Initialize storage for sensor data +sensor_data = [] + +# Calculate the amount to increment each value to reach the desired average +increment = (end_avg - start_value) / num_samples + +current_value = start_value +for _ in range(num_samples): + # Add some noise to make the data more realistic + noise = random.uniform(-0.7, 0.5) + sensor_value = current_value + noise + sensor_data.append(sensor_value) + + # Update current value towards the end_avg + current_value += increment + +# Write data to output file +with open(output_file, 'w') as file: + for value in sensor_data: + file.write(f"{value:.4f}\n") \ No newline at end of file diff --git a/jac/examples/gins_scripts/inputs/test.txt b/jac/examples/gins_scripts/inputs/test.txt new file mode 100644 index 0000000000..3163f20534 --- /dev/null +++ b/jac/examples/gins_scripts/inputs/test.txt @@ -0,0 +1,1000 @@ +99.11 +98.88 +98.83 +99.11 +98.99 +99.42 +99.43 +98.56 +99.28 +98.75 +99.12 +99.23 +99.39 +99.03 +98.65 +98.74 +98.49 +98.77 +99.05 +98.82 +99.12 +99.53 +99.49 +99.01 +99.25 +99.40 +98.63 +98.63 +98.95 +99.58 +98.53 +99.66 +99.55 +98.86 +99.65 +98.62 +99.18 +99.30 +99.68 +99.72 +99.74 +99.42 +98.76 +99.24 +99.32 +99.46 +99.76 +99.28 +99.71 +98.73 +98.99 +98.69 +98.69 +99.75 +99.23 +99.79 +99.60 +99.66 +99.77 +98.71 +98.87 +99.00 +99.51 +98.82 +99.27 +99.68 +98.92 +99.08 +99.09 +99.52 +99.27 +98.82 +99.42 +99.54 +99.79 +99.71 +99.59 +99.04 +99.73 +99.94 +99.43 +98.96 +98.90 +99.80 +99.79 +99.48 +99.85 +99.85 +99.07 +99.31 +99.90 +99.13 +99.21 +99.24 +99.27 +99.51 +99.68 +100.01 +99.13 +99.28 +99.11 +99.35 +99.19 +99.57 +99.05 +99.49 +99.28 +98.96 +99.20 +99.66 +99.73 +100.14 +99.48 +99.80 +99.38 +99.37 +100.11 +99.11 +99.35 +99.27 +99.77 +99.21 +100.03 +99.63 +99.62 +100.23 +99.88 +99.54 +99.41 +99.60 +100.04 +99.53 +99.21 +99.84 +99.53 +99.27 +99.86 +99.94 +99.62 +100.32 +100.32 +99.22 +99.33 +99.64 +99.61 +99.57 +99.78 +99.87 +99.52 +100.22 +99.77 +99.23 +99.74 +99.71 +99.67 +99.97 +100.03 +99.90 +99.50 +100.35 +99.63 +99.29 +100.11 +100.20 +100.42 +100.20 +100.02 +99.71 +100.41 +99.67 +99.83 +99.65 +99.66 +99.66 +99.47 +99.43 +100.11 +99.50 +99.84 +99.69 +100.56 +100.41 +100.19 +100.36 +99.97 +99.91 +100.13 +99.83 +100.20 +100.07 +99.55 +99.89 +100.58 +99.98 +100.34 +100.46 +99.84 +100.13 +100.43 +100.64 +100.09 +99.91 +100.03 +99.97 +100.64 +99.78 +99.57 +100.41 +99.83 +100.36 +99.93 +99.59 +99.58 +99.62 +100.60 +99.72 +100.39 +99.61 +99.71 +99.73 +99.74 +100.31 +100.07 +99.79 +99.96 +100.58 +100.38 +100.35 +99.83 +100.76 +100.13 +100.78 +100.27 +100.59 +100.43 +100.37 +100.21 +100.33 +100.93 +99.75 +99.89 +100.73 +100.56 +100.89 +100.23 +100.24 +100.06 +100.06 +100.32 +100.86 +100.61 +100.52 +100.30 +100.78 +100.08 +100.19 +100.05 +100.53 +100.70 +101.01 +99.91 +100.70 +100.94 +100.51 +100.51 +101.04 +100.52 +100.23 +100.87 +100.97 +100.20 +100.36 +100.03 +100.25 +100.52 +101.09 +100.97 +100.18 +101.04 +100.76 +100.37 +101.12 +100.11 +101.13 +100.28 +100.28 +100.24 +100.17 +100.56 +101.14 +100.79 +101.01 +100.59 +100.06 +101.15 +101.08 +100.86 +100.77 +100.67 +100.56 +100.15 +101.20 +100.84 +100.57 +100.17 +101.05 +100.53 +100.61 +100.61 +101.23 +100.58 +100.28 +100.52 +101.15 +101.21 +101.21 +100.67 +100.64 +101.26 +100.22 +100.52 +101.37 +100.78 +100.88 +101.01 +100.67 +101.29 +101.26 +100.85 +100.29 +100.35 +100.91 +101.08 +100.36 +100.68 +100.41 +100.89 +100.52 +100.73 +101.40 +100.70 +101.22 +100.49 +100.49 +100.43 +101.52 +101.06 +101.02 +101.41 +100.48 +100.77 +101.21 +100.81 +100.60 +100.76 +101.01 +100.58 +101.53 +100.97 +101.22 +100.51 +100.80 +100.58 +100.67 +101.26 +100.72 +101.11 +101.65 +100.52 +100.92 +101.02 +100.61 +100.90 +101.54 +101.49 +100.96 +101.16 +100.75 +100.88 +101.09 +101.66 +100.69 +101.56 +100.82 +101.09 +101.39 +101.68 +100.73 +100.95 +100.79 +101.38 +100.85 +101.75 +100.78 +101.22 +101.17 +101.49 +101.43 +100.86 +101.14 +101.90 +101.21 +100.76 +101.79 +101.56 +101.87 +101.46 +101.68 +101.80 +100.90 +100.96 +101.40 +101.24 +101.79 +101.34 +101.94 +101.72 +101.52 +101.93 +101.62 +101.64 +101.52 +101.98 +101.98 +101.54 +101.56 +101.59 +101.11 +102.03 +101.97 +101.23 +101.76 +101.42 +101.60 +101.05 +101.21 +101.10 +101.88 +101.70 +101.80 +100.97 +101.88 +102.15 +101.89 +101.63 +102.15 +102.11 +102.02 +102.16 +102.15 +101.86 +102.18 +101.12 +101.80 +101.65 +101.08 +101.13 +101.93 +101.27 +101.75 +102.23 +101.44 +101.45 +102.26 +101.61 +101.53 +101.45 +101.12 +102.01 +102.20 +102.17 +101.96 +101.62 +101.89 +101.44 +101.38 +101.75 +102.05 +102.13 +101.81 +101.52 +101.32 +101.71 +101.52 +101.82 +101.45 +102.31 +101.74 +102.05 +101.24 +102.06 +102.12 +101.32 +101.74 +102.22 +102.03 +101.49 +101.52 +101.54 +102.24 +102.08 +101.43 +102.45 +101.32 +101.71 +101.35 +101.42 +102.44 +101.96 +101.86 +101.61 +101.93 +102.47 +102.31 +102.54 +102.20 +101.93 +102.31 +102.00 +102.57 +102.25 +101.52 +101.53 +102.19 +102.19 +101.81 +102.41 +102.43 +101.67 +101.56 +101.89 +102.60 +102.23 +102.49 +101.77 +101.84 +101.76 +102.55 +101.65 +102.32 +101.79 +102.18 +102.57 +102.09 +102.51 +102.66 +102.48 +101.72 +102.23 +101.78 +102.51 +102.15 +102.08 +102.59 +102.72 +102.55 +102.46 +102.33 +102.81 +102.39 +102.83 +101.77 +102.83 +102.35 +101.73 +102.31 +102.54 +102.43 +102.39 +102.09 +102.60 +101.83 +102.58 +102.53 +102.29 +101.96 +101.98 +101.78 +102.95 +102.94 +102.75 +102.77 +102.48 +102.53 +102.38 +102.95 +102.16 +101.98 +102.39 +101.94 +102.18 +101.85 +102.21 +102.47 +101.90 +102.07 +102.07 +102.70 +102.43 +101.96 +102.59 +102.06 +102.25 +102.97 +102.74 +103.07 +102.95 +102.90 +102.53 +102.54 +102.36 +102.22 +103.05 +102.46 +102.24 +102.58 +102.90 +102.25 +102.75 +103.11 +102.54 +102.44 +102.85 +102.78 +102.87 +102.90 +102.56 +103.11 +102.96 +102.10 +102.93 +102.23 +102.59 +102.70 +103.24 +102.72 +102.73 +103.08 +102.87 +103.10 +102.35 +103.00 +102.39 +102.99 +103.05 +102.38 +102.49 +102.41 +102.30 +103.33 +103.06 +102.47 +102.78 +103.35 +102.46 +102.30 +102.85 +102.40 +102.72 +102.65 +102.44 +103.46 +102.75 +103.17 +103.08 +102.48 +103.49 +102.50 +102.84 +102.53 +103.02 +103.36 +102.49 +102.68 +102.47 +103.33 +102.62 +102.82 +103.57 +102.90 +103.07 +102.56 +102.60 +103.55 +102.69 +103.43 +103.35 +103.19 +102.65 +103.08 +103.05 +103.18 +103.20 +103.42 +103.03 +103.50 +103.29 +102.91 +102.53 +103.50 +102.61 +103.24 +103.53 +103.29 +102.97 +102.81 +102.62 +102.70 +102.64 +103.21 +103.66 +103.35 +102.67 +102.83 +103.70 +103.73 +103.02 +103.15 +102.89 +103.02 +103.29 +103.74 +103.83 +103.80 +103.50 +103.83 +102.88 +103.41 +103.09 +102.78 +102.79 +102.99 +102.95 +102.88 +103.48 +103.58 +102.82 +103.01 +103.04 +103.63 +103.22 +103.84 +103.46 +103.65 +103.69 +103.03 +103.89 +103.11 +103.56 +103.27 +103.48 +103.87 +103.95 +103.17 +103.53 +103.93 +102.91 +103.26 +102.87 +103.70 +103.27 +103.40 +103.77 +103.58 +103.41 +103.25 +103.49 +103.56 +103.18 +103.39 +103.77 +103.32 +103.94 +103.83 +104.01 +103.61 +103.46 +104.12 +103.82 +103.77 +103.99 +103.25 +103.28 +103.91 +103.84 +103.87 +103.43 +103.62 +103.72 +103.50 +103.10 +103.49 +103.44 +103.09 +103.88 +103.98 +103.96 +103.21 +104.01 +104.16 +103.76 +104.18 +104.17 +103.45 +104.21 +103.99 +104.17 +103.39 +104.06 +103.50 +104.14 +103.86 +104.01 +103.48 +103.20 +104.14 +104.25 +104.04 +103.71 +104.06 +103.72 +103.35 +103.29 +103.56 +103.81 +103.27 +103.89 +104.16 +103.60 +103.52 +103.68 +104.31 +103.47 +104.25 +103.51 +103.41 +103.87 +103.57 +104.01 +103.82 +104.30 +104.17 +104.52 +103.45 +103.80 +104.14 +104.23 +103.54 +103.77 +104.00 +103.58 +104.49 +104.50 +104.35 +103.59 +104.41 +104.02 +104.10 +104.39 +103.62 +104.30 +104.65 +104.02 +104.27 +103.90 +104.07 +104.12 +103.57 +103.88 +104.39 +104.59 +104.24 +104.25 +103.93 +103.93 +104.13 +104.04 +104.19 +104.70 +104.67 +103.62 +104.06 +104.56 +103.68 +104.35 +104.12 +104.32 +103.81 +104.42 +104.51 +103.81 +104.12 +103.78 +103.88 +104.30 +104.66 +104.00 +103.98 +104.72 +103.87 +104.67 +104.17 +104.30 +104.51 +104.70 +103.85 +104.61 +104.77 +104.59 +104.24 +104.07 +104.18 +104.19 +104.88 +104.81 +104.08 +104.70 +103.82 +104.01 +104.06 +104.87 +104.27 +104.06 +104.23 +104.17 +104.63 +104.10 +104.71 +104.66 +105.02 +104.80 +104.49 +104.87 +104.07 +104.50 +104.14 +104.97 +104.64 +103.93 +104.29 +104.11 +104.10 +104.50 +104.11 +104.52 +104.06 +104.48 +104.99 +104.60 +104.78 +104.49 +105.00 +104.63 +104.48 +104.40 +104.79 +104.12 +104.45 +104.53 +104.18 +104.15 +104.78 +104.22 +104.80 +105.24 +104.89 +104.31 +104.53 +104.32 +104.89 +104.99 +104.21 +105.21 +104.94 +105.25 +104.89 +104.68 +104.47 +105.03 +104.22 +105.25 +104.74 +104.97 +105.20 +105.02 +105.19 +105.21 +104.79 +105.29 +104.70 +105.37 +104.96 +104.60 +104.35 +104.57 +105.27 +104.98 +104.68 +105.45 +104.76 diff --git a/jac/examples/gins_scripts/inputs/test_predict.txt b/jac/examples/gins_scripts/inputs/test_predict.txt new file mode 100644 index 0000000000..63dd0b0992 --- /dev/null +++ b/jac/examples/gins_scripts/inputs/test_predict.txt @@ -0,0 +1,100 @@ +98.95 +98.36 +98.60 +99.57 +98.91 +99.12 +99.37 +99.04 +99.28 +99.96 +99.23 +99.72 +99.23 +99.45 +99.75 +99.54 +100.37 +100.12 +99.97 +100.48 +100.44 +99.77 +99.67 +99.79 +100.01 +100.31 +100.69 +101.04 +100.79 +101.09 +101.11 +100.49 +100.24 +100.79 +100.40 +100.83 +101.07 +101.18 +101.02 +101.38 +101.62 +101.61 +101.40 +101.84 +101.70 +101.87 +102.11 +101.59 +101.31 +101.93 +102.20 +102.36 +101.67 +102.29 +102.74 +101.77 +101.73 +102.41 +101.83 +102.19 +102.36 +103.03 +102.83 +102.90 +103.10 +103.05 +103.00 +103.08 +102.93 +103.35 +102.55 +103.75 +102.81 +103.23 +103.75 +102.93 +103.51 +103.84 +103.51 +104.09 +103.62 +103.42 +103.54 +103.85 +103.64 +104.48 +103.50 +104.09 +104.61 +103.66 +104.61 +104.47 +104.72 +104.14 +104.65 +104.92 +104.92 +104.15 +104.59 +104.44 diff --git a/jac/examples/gins_scripts/phase_switch.jac b/jac/examples/gins_scripts/phase_switch.jac new file mode 100644 index 0000000000..3181c3dc78 --- /dev/null +++ b/jac/examples/gins_scripts/phase_switch.jac @@ -0,0 +1,34 @@ +import:py random; +import:py time; + +with entry { + bar:int = 1; + hot_path_switches:int = 10; + foo:int = 0; + ctr:int = 0; + itr:int = 0; + + while foo < hot_path_switches { + var = random.randint(1,12345); + if(var % 11111 == 0){ + ctr +=1; + time.sleep(0.1); + if (ctr == 100) { + print(itr); + itr = 0; + foo += 1; + ctr = 0; + print(foo); + } + #print(var) + } + itr += 1; + if foo % 2 == 0 { + bar = bar +3; + } else { + bar = bar -2; + } + } + + +} \ No newline at end of file diff --git a/jac/examples/gins_scripts/power.jac b/jac/examples/gins_scripts/power.jac new file mode 100644 index 0000000000..8c1e4a5236 --- /dev/null +++ b/jac/examples/gins_scripts/power.jac @@ -0,0 +1,83 @@ +import:py from math { exp } +import:py from time { sleep } +# Data structure representing system configuration +glob system_config: Dict[str, Union[int, str, float]] = { + 'base_load': 1000, # Base power load in watts + 'min_duration': 10, # Minimum valid duration in minutes + 'mode': 'active', + 'time_step': 0, # Track progression of simulation + 'reference_delta': 200 # Reference power delta for normalization +}; + +# Function to generate declining power readings +with entry { + # Create gradually converging power readings + base: float = system_config['base_load']; + power_readings: list[float] = []; + time_periods: list[int] = []; + reference_power: float = base + 200;# Reference power for normalization + + # Generate 200 readings that gradually approach base_load + for i in range(200) { + # Power gradually approaches base_load (1000W) + delta: float = 200.0 * exp(-0.5 * i);# Slower decay for better visualization + current_power: float = base + delta; + power_readings.append(current_power); + + # Time periods increase linearly + time_periods.append(15 + i * 2); + } + + # Initialize results storage + + efficiency_metrics: list = []; + total_operational_time: int = 0; + + PROGRAM_INPUT = power_readings; + + # Process each power reading with different execution paths + for (idx, current_power) in enumerate(power_readings) { + if system_config['mode'] != 'active' { + continue; + } + + duration: int = time_periods[idx]; + if duration < system_config['min_duration'] { + continue; + } + + # Track simulation progression + + system_config['time_step'] += 1; + + power_delta: float = current_power - system_config['base_load']; + + # Introduce different execution paths based on time_step + if system_config['time_step'] > 50 { + diminishing_reference: float = power_delta * 2; # Reference point approaches zero with power_delta + power_utilization: float = power_delta / diminishing_reference; # Approaches 0.5, then unstable + } else { + # Original calculation path for first 10 steps + power_utilization: float = power_delta / system_config['reference_delta']; + } + period_efficiency: float = power_utilization * (duration / max(time_periods)) * 100; + + efficiency_metrics.append(period_efficiency); + total_operational_time += duration; + + # Print current state + print( + f"Step {system_config['time_step']}: Power={current_power}W, " + f"Delta from base={current_power - system_config['base_load']}W" + ); + sleep(0.25); + } + + # Calculate final metrics if no error occurred + + average_efficiency: float = sum(efficiency_metrics) / len(efficiency_metrics) if efficiency_metrics else 0; + operational_hours: float = total_operational_time / 60; + print( + f"System Analysis Complete - Efficiency: {average_efficiency}%" + ); + +} diff --git a/jac/examples/gins_scripts/simple.jac b/jac/examples/gins_scripts/simple.jac new file mode 100644 index 0000000000..3575887f03 --- /dev/null +++ b/jac/examples/gins_scripts/simple.jac @@ -0,0 +1,14 @@ +can foo() { + return 1; +} + +with entry { + foo(); + a=0; + x=0; + if x >= 0{ + a=1; + } + a=-1; + print("hello"); +} \ No newline at end of file diff --git a/jac/examples/gins_scripts/simple_cfg.png b/jac/examples/gins_scripts/simple_cfg.png new file mode 100644 index 0000000000..4a41ccf737 Binary files /dev/null and b/jac/examples/gins_scripts/simple_cfg.png differ diff --git a/jac/examples/gins_scripts/simple_for.jac b/jac/examples/gins_scripts/simple_for.jac new file mode 100644 index 0000000000..82b2d68b22 --- /dev/null +++ b/jac/examples/gins_scripts/simple_for.jac @@ -0,0 +1,17 @@ +with entry { + x:int = 0; + y:int = 3; + z:int = x + y; + input = [4,9,2,10,10,10]; + for i in range(len(input)) { + z = input[i]; + if x % 2 { + y = y + x; + z = x + y; + } + x = 4 * i + y * (z); + if z == 10 { + y = 2; + } + } +} diff --git a/jac/examples/gins_scripts/test.txt b/jac/examples/gins_scripts/test.txt new file mode 100644 index 0000000000..70bb97496e --- /dev/null +++ b/jac/examples/gins_scripts/test.txt @@ -0,0 +1,185 @@ +2024-12-04 19:15:21 - {'timestamp': 0, 'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'edges': [{'edge_to_bb_id': 3, 'freq': 0}, {'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'edges': [{'edge_to_bb_id': 3, 'freq': 1}, {'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'edges': [{'edge_to_bb_id': 4, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 1}]}, {'bb_id': 4, 'freq': 1, 'edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'edges': [{'edge_to_bb_id': 6, 'freq': 1}, {'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 12678, 'edges': [{'edge_to_bb_id': 9, 'freq': 6339}, {'edge_to_bb_id': 8, 'freq': 6339}, {'edge_to_bb_id': 8, 'freq': 6339}]}, {'bb_id': 8, 'freq': 6339, 'edges': [{'edge_to_bb_id': 10, 'freq': 6339}, {'edge_to_bb_id': 10, 'freq': 6339}]}, {'bb_id': 9, 'freq': 6339, 'edges': [{'edge_to_bb_id': 10, 'freq': 6339}, {'edge_to_bb_id': 10, 'freq': 6339}]}, {'bb_id': 10, 'freq': 12678, 'edges': [{'edge_to_bb_id': 12, 'freq': 12677}, {'edge_to_bb_id': 11, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}]}, {'bb_id': 11, 'freq': 0, 'edges': [{'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}]}, {'bb_id': 12, 'freq': 12677, 'edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 12677}, {'edge_to_bb_id': 13, 'freq': 12677}]}, {'bb_id': 13, 'freq': 12677, 'edges': [{'edge_to_bb_id': 7, 'freq': 12677}, {'edge_to_bb_id': 7, 'freq': 12677}]}, {'bb_id': 14, 'freq': 0, 'edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 15, 'freq': 0}]}, {'bb_id': 15, 'freq': 0, 'edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'edges': [{'edge_to_bb_id': 6, 'freq': 0}, {'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'edges': [{'edge_to_bb_id': 6, 'freq': 0}]}]} +2024-12-04 19:15:22 - {'timestamp': 0, 'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'edges': [{'edge_to_bb_id': 3, 'freq': 0}, {'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'edges': [{'edge_to_bb_id': 3, 'freq': 1}, {'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'edges': [{'edge_to_bb_id': 4, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 1}]}, {'bb_id': 4, 'freq': 1, 'edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'edges': [{'edge_to_bb_id': 6, 'freq': 1}, {'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 30000, 'edges': [{'edge_to_bb_id': 9, 'freq': 15000}, {'edge_to_bb_id': 8, 'freq': 15000}, {'edge_to_bb_id': 8, 'freq': 15000}]}, {'bb_id': 8, 'freq': 15000, 'edges': [{'edge_to_bb_id': 10, 'freq': 15000}, {'edge_to_bb_id': 10, 'freq': 15000}]}, {'bb_id': 9, 'freq': 15000, 'edges': [{'edge_to_bb_id': 10, 'freq': 15000}, {'edge_to_bb_id': 10, 'freq': 15000}]}, {'bb_id': 10, 'freq': 30000, 'edges': [{'edge_to_bb_id': 12, 'freq': 30000}, {'edge_to_bb_id': 11, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}]}, {'bb_id': 11, 'freq': 0, 'edges': [{'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}]}, {'bb_id': 12, 'freq': 30000, 'edges': [{'edge_to_bb_id': 14, 'freq': 1}, {'edge_to_bb_id': 13, 'freq': 29999}, {'edge_to_bb_id': 13, 'freq': 29999}]}, {'bb_id': 13, 'freq': 29999, 'edges': [{'edge_to_bb_id': 7, 'freq': 29999}, {'edge_to_bb_id': 7, 'freq': 29999}]}, {'bb_id': 14, 'freq': 1, 'edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 15, 'freq': 0}]}, {'bb_id': 15, 'freq': 0, 'edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'edges': [{'edge_to_bb_id': 6, 'freq': 0}, {'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'edges': [{'edge_to_bb_id': 6, 'freq': 0}]}]} +2024-12-04 19:15:22 - yo +2024-12-04 19:24:47 - {'timestamp': 0, 'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 4, 'freq': 1}]}, {'bb_id': 4, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 10994, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}, {'edge_to_bb_id': 8, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 5496}, {'edge_to_bb_id': 8, 'freq': 5497}]}, {'bb_id': 8, 'freq': 5497, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 5497}]}, {'bb_id': 9, 'freq': 5496, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 5496}]}, {'bb_id': 10, 'freq': 10993, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 10993}, {'edge_to_bb_id': 11, 'freq': 0}]}, {'bb_id': 11, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 0}]}, {'bb_id': 12, 'freq': 10993, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 10993}]}, {'bb_id': 13, 'freq': 10993, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 10993}]}, {'bb_id': 14, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-04 19:24:49 - {'timestamp': 0, 'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 4, 'freq': 1}]}, {'bb_id': 4, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 28050, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}, {'edge_to_bb_id': 8, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 14024}, {'edge_to_bb_id': 8, 'freq': 14025}]}, {'bb_id': 8, 'freq': 14025, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 14025}]}, {'bb_id': 9, 'freq': 14024, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 14024}]}, {'bb_id': 10, 'freq': 28049, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 28049}, {'edge_to_bb_id': 11, 'freq': 0}]}, {'bb_id': 11, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 0}]}, {'bb_id': 12, 'freq': 28049, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 28049}]}, {'bb_id': 13, 'freq': 28049, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 28049}]}, {'bb_id': 14, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-04 19:24:49 - {'timestamp': 0, 'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 4, 'freq': 1}]}, {'bb_id': 4, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 30000, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}, {'edge_to_bb_id': 8, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 15000}, {'edge_to_bb_id': 8, 'freq': 15000}]}, {'bb_id': 8, 'freq': 15000, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 15000}]}, {'bb_id': 9, 'freq': 15000, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 15000}]}, {'bb_id': 10, 'freq': 30000, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 30000}, {'edge_to_bb_id': 11, 'freq': 0}]}, {'bb_id': 11, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 0}]}, {'bb_id': 12, 'freq': 30000, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 1}, {'edge_to_bb_id': 13, 'freq': 29999}]}, {'bb_id': 13, 'freq': 29999, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 29999}]}, {'bb_id': 14, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-04 19:24:49 - yo +2024-12-04 19:27:08 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 4, 'freq': 1}]}, {'bb_id': 4, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 10517, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}, {'edge_to_bb_id': 8, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 5258}, {'edge_to_bb_id': 8, 'freq': 5259}]}, {'bb_id': 8, 'freq': 5259, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 5259}]}, {'bb_id': 9, 'freq': 5258, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 5258}]}, {'bb_id': 10, 'freq': 10517, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 10516}, {'edge_to_bb_id': 11, 'freq': 0}]}, {'bb_id': 11, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 0}]}, {'bb_id': 12, 'freq': 10516, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 10516}]}, {'bb_id': 13, 'freq': 10516, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 10516}]}, {'bb_id': 14, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-04 19:27:10 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 4, 'freq': 1}]}, {'bb_id': 4, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 26337, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}, {'edge_to_bb_id': 8, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 13168}, {'edge_to_bb_id': 8, 'freq': 13169}]}, {'bb_id': 8, 'freq': 13169, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 13168}]}, {'bb_id': 9, 'freq': 13168, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 13168}]}, {'bb_id': 10, 'freq': 26336, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 26336}, {'edge_to_bb_id': 11, 'freq': 0}]}, {'bb_id': 11, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 0}]}, {'bb_id': 12, 'freq': 26336, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 26336}]}, {'bb_id': 13, 'freq': 26336, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 26336}]}, {'bb_id': 14, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-04 19:27:10 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 4, 'freq': 1}]}, {'bb_id': 4, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 30000, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}, {'edge_to_bb_id': 8, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 15000}, {'edge_to_bb_id': 8, 'freq': 15000}]}, {'bb_id': 8, 'freq': 15000, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 15000}]}, {'bb_id': 9, 'freq': 15000, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 15000}]}, {'bb_id': 10, 'freq': 30000, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 30000}, {'edge_to_bb_id': 11, 'freq': 0}]}, {'bb_id': 11, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 0}]}, {'bb_id': 12, 'freq': 30000, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 1}, {'edge_to_bb_id': 13, 'freq': 29999}]}, {'bb_id': 13, 'freq': 29999, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 29999}]}, {'bb_id': 14, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-04 19:27:10 - yo +2024-12-04 19:35:07 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 4, 'freq': 1}]}, {'bb_id': 4, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 12538, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}, {'edge_to_bb_id': 8, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 6269}, {'edge_to_bb_id': 8, 'freq': 6269}]}, {'bb_id': 8, 'freq': 6269, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 6269}]}, {'bb_id': 9, 'freq': 6269, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 6269}]}, {'bb_id': 10, 'freq': 12538, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 12538}, {'edge_to_bb_id': 11, 'freq': 0}]}, {'bb_id': 11, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 0}]}, {'bb_id': 12, 'freq': 12538, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 12537}]}, {'bb_id': 13, 'freq': 12537, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 12537}]}, {'bb_id': 14, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-04 19:36:12 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 4, 'freq': 1}]}, {'bb_id': 4, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 12676, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}, {'edge_to_bb_id': 8, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 6338}, {'edge_to_bb_id': 8, 'freq': 6338}]}, {'bb_id': 8, 'freq': 6338, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 6338}]}, {'bb_id': 9, 'freq': 6338, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 6338}]}, {'bb_id': 10, 'freq': 12676, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 12676}, {'edge_to_bb_id': 11, 'freq': 0}]}, {'bb_id': 11, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 0}]}, {'bb_id': 12, 'freq': 12676, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 12675}]}, {'bb_id': 13, 'freq': 12675, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 12675}]}, {'bb_id': 14, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-04 19:36:42 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 4, 'freq': 1}]}, {'bb_id': 4, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 12682, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}, {'edge_to_bb_id': 8, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 6340}, {'edge_to_bb_id': 8, 'freq': 6341}]}, {'bb_id': 8, 'freq': 6341, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 6341}]}, {'bb_id': 9, 'freq': 6340, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 6340}]}, {'bb_id': 10, 'freq': 12681, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 12681}, {'edge_to_bb_id': 11, 'freq': 0}]}, {'bb_id': 11, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 0}]}, {'bb_id': 12, 'freq': 12681, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 12681}]}, {'bb_id': 13, 'freq': 12681, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 12681}]}, {'bb_id': 14, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-04 19:40:05 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 4, 'freq': 1}]}, {'bb_id': 4, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 12282, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}, {'edge_to_bb_id': 8, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 6140}, {'edge_to_bb_id': 8, 'freq': 6141}]}, {'bb_id': 8, 'freq': 6141, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 6141}]}, {'bb_id': 9, 'freq': 6140, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 6140}]}, {'bb_id': 10, 'freq': 12281, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 12281}, {'edge_to_bb_id': 11, 'freq': 0}]}, {'bb_id': 11, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 0}]}, {'bb_id': 12, 'freq': 12281, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 12281}]}, {'bb_id': 13, 'freq': 12281, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 12281}]}, {'bb_id': 14, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-04 19:40:20 - {"cfg_bbs": [{"actual_edges": [{"edge_to_bb_id": 2, "freq": 1}, {"edge_to_bb_id": 1, "freq": 0}], "bb_id": 0, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 2, "freq": 1}, {"edge_to_bb_id": 1, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 3, "freq": 0}], "bb_id": 1, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 3, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 3, "freq": 1}], "bb_id": 2, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 3, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 4, "freq": 1}], "bb_id": 3, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 4, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 5, "freq": 1}, {"edge_to_bb_id": 4, "freq": 0}], "bb_id": 4, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 5, "freq": 1}, {"edge_to_bb_id": 4, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 6, "freq": 1}], "bb_id": 5, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 6, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 15, "freq": 0}, {"edge_to_bb_id": 7, "freq": 1}], "bb_id": 6, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 15, "freq": 0}, {"edge_to_bb_id": 7, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 9, "freq": 6140}, {"edge_to_bb_id": 8, "freq": 6141}], "bb_id": 7, "freq": 12282, "predicted_edges": [{"edge_to_bb_id": 9, "freq": 6140}, {"edge_to_bb_id": 8, "freq": 6141}]}, {"actual_edges": [{"edge_to_bb_id": 10, "freq": 6141}], "bb_id": 8, "freq": 6141, "predicted_edges": [{"edge_to_bb_id": 10, "freq": 6141}]}, {"actual_edges": [{"edge_to_bb_id": 10, "freq": 6140}], "bb_id": 9, "freq": 6140, "predicted_edges": [{"edge_to_bb_id": 10, "freq": 6140}]}, {"actual_edges": [{"edge_to_bb_id": 12, "freq": 12281}, {"edge_to_bb_id": 11, "freq": 0}], "bb_id": 10, "freq": 12281, "predicted_edges": [{"edge_to_bb_id": 12, "freq": 12281}, {"edge_to_bb_id": 11, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 12, "freq": 0}], "bb_id": 11, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 12, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 14, "freq": 0}, {"edge_to_bb_id": 13, "freq": 12281}], "bb_id": 12, "freq": 12281, "predicted_edges": [{"edge_to_bb_id": 14, "freq": 0}, {"edge_to_bb_id": 13, "freq": 12281}]}, {"actual_edges": [{"edge_to_bb_id": 7, "freq": 12281}], "bb_id": 13, "freq": 12281, "predicted_edges": [{"edge_to_bb_id": 7, "freq": 12281}]}, {"actual_edges": [{"edge_to_bb_id": 15, "freq": 0}], "bb_id": 14, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 15, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 17, "freq": 0}, {"edge_to_bb_id": 16, "freq": 0}], "bb_id": 15, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 17, "freq": 0}, {"edge_to_bb_id": 16, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 17, "freq": 0}], "bb_id": 16, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 17, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 6, "freq": 0}], "bb_id": 17, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 6, "freq": 0}]}, {"actual_edges": [], "bb_id": 18, "freq": 0, "predicted_edges": []}]} +2024-12-04 19:40:20 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 4, 'freq': 1}]}, {'bb_id': 4, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 30000, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}, {'edge_to_bb_id': 8, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 15000}, {'edge_to_bb_id': 8, 'freq': 15000}]}, {'bb_id': 8, 'freq': 15000, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 15000}]}, {'bb_id': 9, 'freq': 15000, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 15000}]}, {'bb_id': 10, 'freq': 30000, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 30000}, {'edge_to_bb_id': 11, 'freq': 0}]}, {'bb_id': 11, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 0}]}, {'bb_id': 12, 'freq': 30000, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 1}, {'edge_to_bb_id': 13, 'freq': 29999}]}, {'bb_id': 13, 'freq': 29999, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 29999}]}, {'bb_id': 14, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-04 19:40:33 - {"cfg_bbs": [{"actual_edges": [{"edge_to_bb_id": 2, "freq": 1}, {"edge_to_bb_id": 1, "freq": 0}], "bb_id": 0, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 2, "freq": 1}, {"edge_to_bb_id": 1, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 3, "freq": 0}], "bb_id": 1, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 3, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 3, "freq": 1}], "bb_id": 2, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 3, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 4, "freq": 1}], "bb_id": 3, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 4, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 5, "freq": 1}, {"edge_to_bb_id": 4, "freq": 0}], "bb_id": 4, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 5, "freq": 1}, {"edge_to_bb_id": 4, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 6, "freq": 1}], "bb_id": 5, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 6, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 15, "freq": 0}, {"edge_to_bb_id": 7, "freq": 1}], "bb_id": 6, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 15, "freq": 0}, {"edge_to_bb_id": 7, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 9, "freq": 15000}, {"edge_to_bb_id": 8, "freq": 15000}], "bb_id": 7, "freq": 30000, "predicted_edges": [{"edge_to_bb_id": 9, "freq": 15000}, {"edge_to_bb_id": 8, "freq": 15000}]}, {"actual_edges": [{"edge_to_bb_id": 10, "freq": 15000}], "bb_id": 8, "freq": 15000, "predicted_edges": [{"edge_to_bb_id": 10, "freq": 15000}]}, {"actual_edges": [{"edge_to_bb_id": 10, "freq": 15000}], "bb_id": 9, "freq": 15000, "predicted_edges": [{"edge_to_bb_id": 10, "freq": 15000}]}, {"actual_edges": [{"edge_to_bb_id": 12, "freq": 30000}, {"edge_to_bb_id": 11, "freq": 0}], "bb_id": 10, "freq": 30000, "predicted_edges": [{"edge_to_bb_id": 12, "freq": 30000}, {"edge_to_bb_id": 11, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 12, "freq": 0}], "bb_id": 11, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 12, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 14, "freq": 1}, {"edge_to_bb_id": 13, "freq": 29999}], "bb_id": 12, "freq": 30000, "predicted_edges": [{"edge_to_bb_id": 14, "freq": 1}, {"edge_to_bb_id": 13, "freq": 29999}]}, {"actual_edges": [{"edge_to_bb_id": 7, "freq": 29999}], "bb_id": 13, "freq": 29999, "predicted_edges": [{"edge_to_bb_id": 7, "freq": 29999}]}, {"actual_edges": [{"edge_to_bb_id": 15, "freq": 0}], "bb_id": 14, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 15, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 17, "freq": 0}, {"edge_to_bb_id": 16, "freq": 0}], "bb_id": 15, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 17, "freq": 0}, {"edge_to_bb_id": 16, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 17, "freq": 0}], "bb_id": 16, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 17, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 6, "freq": 0}], "bb_id": 17, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 6, "freq": 0}]}, {"actual_edges": [], "bb_id": 18, "freq": 0, "predicted_edges": []}]} +2024-12-04 19:42:14 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 4, 'freq': 1}]}, {'bb_id': 4, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 3699, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}, {'edge_to_bb_id': 8, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1849}, {'edge_to_bb_id': 8, 'freq': 1850}]}, {'bb_id': 8, 'freq': 1850, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1849}]}, {'bb_id': 9, 'freq': 1849, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1849}]}, {'bb_id': 10, 'freq': 3698, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 3698}, {'edge_to_bb_id': 11, 'freq': 0}]}, {'bb_id': 11, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 0}]}, {'bb_id': 12, 'freq': 3698, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 3698}]}, {'bb_id': 13, 'freq': 3698, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 3698}]}, {'bb_id': 14, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-04 19:42:29 - {"cfg_bbs": [{"actual_edges": [{"edge_to_bb_id": 2, "freq": 1}, {"edge_to_bb_id": 1, "freq": 0}], "bb_id": 0, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 2, "freq": 1}, {"edge_to_bb_id": 1, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 3, "freq": 0}], "bb_id": 1, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 3, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 3, "freq": 1}], "bb_id": 2, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 3, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 4, "freq": 1}], "bb_id": 3, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 4, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 5, "freq": 1}, {"edge_to_bb_id": 4, "freq": 0}], "bb_id": 4, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 5, "freq": 1}, {"edge_to_bb_id": 4, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 6, "freq": 1}], "bb_id": 5, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 6, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 15, "freq": 0}, {"edge_to_bb_id": 7, "freq": 1}], "bb_id": 6, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 15, "freq": 0}, {"edge_to_bb_id": 7, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 9, "freq": 1849}, {"edge_to_bb_id": 8, "freq": 1850}], "bb_id": 7, "freq": 3699, "predicted_edges": [{"edge_to_bb_id": 9, "freq": 1849}, {"edge_to_bb_id": 8, "freq": 1850}]}, {"actual_edges": [{"edge_to_bb_id": 10, "freq": 1849}], "bb_id": 8, "freq": 1850, "predicted_edges": [{"edge_to_bb_id": 10, "freq": 1849}]}, {"actual_edges": [{"edge_to_bb_id": 10, "freq": 1849}], "bb_id": 9, "freq": 1849, "predicted_edges": [{"edge_to_bb_id": 10, "freq": 1849}]}, {"actual_edges": [{"edge_to_bb_id": 12, "freq": 3698}, {"edge_to_bb_id": 11, "freq": 0}], "bb_id": 10, "freq": 3698, "predicted_edges": [{"edge_to_bb_id": 12, "freq": 3698}, {"edge_to_bb_id": 11, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 12, "freq": 0}], "bb_id": 11, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 12, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 14, "freq": 0}, {"edge_to_bb_id": 13, "freq": 3698}], "bb_id": 12, "freq": 3698, "predicted_edges": [{"edge_to_bb_id": 14, "freq": 0}, {"edge_to_bb_id": 13, "freq": 3698}]}, {"actual_edges": [{"edge_to_bb_id": 7, "freq": 3698}], "bb_id": 13, "freq": 3698, "predicted_edges": [{"edge_to_bb_id": 7, "freq": 3698}]}, {"actual_edges": [{"edge_to_bb_id": 15, "freq": 0}], "bb_id": 14, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 15, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 17, "freq": 0}, {"edge_to_bb_id": 16, "freq": 0}], "bb_id": 15, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 17, "freq": 0}, {"edge_to_bb_id": 16, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 17, "freq": 0}], "bb_id": 16, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 17, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 6, "freq": 0}], "bb_id": 17, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 6, "freq": 0}]}]} +2024-12-04 19:42:29 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 4, 'freq': 1}]}, {'bb_id': 4, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 30000, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}, {'edge_to_bb_id': 8, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 15000}, {'edge_to_bb_id': 8, 'freq': 15000}]}, {'bb_id': 8, 'freq': 15000, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 15000}]}, {'bb_id': 9, 'freq': 15000, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 15000}]}, {'bb_id': 10, 'freq': 30000, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 30000}, {'edge_to_bb_id': 11, 'freq': 0}]}, {'bb_id': 11, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 0}]}, {'bb_id': 12, 'freq': 30000, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 1}, {'edge_to_bb_id': 13, 'freq': 29999}]}, {'bb_id': 13, 'freq': 29999, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 29999}]}, {'bb_id': 14, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-04 19:42:42 - {"cfg_bbs": [{"actual_edges": [{"edge_to_bb_id": 2, "freq": 1}, {"edge_to_bb_id": 1, "freq": 0}], "bb_id": 0, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 2, "freq": 1}, {"edge_to_bb_id": 1, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 3, "freq": 0}], "bb_id": 1, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 3, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 3, "freq": 1}], "bb_id": 2, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 3, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 4, "freq": 1}], "bb_id": 3, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 4, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 5, "freq": 1}, {"edge_to_bb_id": 4, "freq": 0}], "bb_id": 4, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 5, "freq": 1}, {"edge_to_bb_id": 4, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 6, "freq": 1}], "bb_id": 5, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 6, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 15, "freq": 0}, {"edge_to_bb_id": 7, "freq": 1}], "bb_id": 6, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 15, "freq": 0}, {"edge_to_bb_id": 7, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 9, "freq": 15000}, {"edge_to_bb_id": 8, "freq": 15000}], "bb_id": 7, "freq": 30000, "predicted_edges": [{"edge_to_bb_id": 9, "freq": 15000}, {"edge_to_bb_id": 8, "freq": 15000}]}, {"actual_edges": [{"edge_to_bb_id": 10, "freq": 15000}], "bb_id": 8, "freq": 15000, "predicted_edges": [{"edge_to_bb_id": 10, "freq": 15000}]}, {"actual_edges": [{"edge_to_bb_id": 10, "freq": 15000}], "bb_id": 9, "freq": 15000, "predicted_edges": [{"edge_to_bb_id": 10, "freq": 15000}]}, {"actual_edges": [{"edge_to_bb_id": 12, "freq": 30000}, {"edge_to_bb_id": 11, "freq": 0}], "bb_id": 10, "freq": 30000, "predicted_edges": [{"edge_to_bb_id": 12, "freq": 30000}, {"edge_to_bb_id": 11, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 12, "freq": 0}], "bb_id": 11, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 12, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 14, "freq": 1}, {"edge_to_bb_id": 13, "freq": 29999}], "bb_id": 12, "freq": 30000, "predicted_edges": [{"edge_to_bb_id": 14, "freq": 1}, {"edge_to_bb_id": 13, "freq": 29999}]}, {"actual_edges": [{"edge_to_bb_id": 7, "freq": 29999}], "bb_id": 13, "freq": 29999, "predicted_edges": [{"edge_to_bb_id": 7, "freq": 29999}]}, {"actual_edges": [{"edge_to_bb_id": 15, "freq": 0}], "bb_id": 14, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 15, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 17, "freq": 0}, {"edge_to_bb_id": 16, "freq": 0}], "bb_id": 15, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 17, "freq": 0}, {"edge_to_bb_id": 16, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 17, "freq": 0}], "bb_id": 16, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 17, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 6, "freq": 0}], "bb_id": 17, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 6, "freq": 0}]}, {"actual_edges": [], "bb_id": 18, "freq": 0, "predicted_edges": []}]} +2024-12-04 19:43:55 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 4, 'freq': 1}]}, {'bb_id': 4, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 11293, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}, {'edge_to_bb_id': 8, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 5646}, {'edge_to_bb_id': 8, 'freq': 5647}]}, {'bb_id': 8, 'freq': 5647, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 5647}]}, {'bb_id': 9, 'freq': 5646, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 5646}]}, {'bb_id': 10, 'freq': 11293, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 11292}, {'edge_to_bb_id': 11, 'freq': 0}]}, {'bb_id': 11, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 0}]}, {'bb_id': 12, 'freq': 11292, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 11292}]}, {'bb_id': 13, 'freq': 11292, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 11292}]}, {'bb_id': 14, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-04 19:44:09 - {"cfg_bbs": [{"actual_edges": [{"edge_to_bb_id": 2, "freq": 1}, {"edge_to_bb_id": 1, "freq": 0}], "bb_id": 0, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 2, "freq": 1}, {"edge_to_bb_id": 1, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 3, "freq": 0}], "bb_id": 1, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 3, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 3, "freq": 1}], "bb_id": 2, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 3, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 4, "freq": 1}], "bb_id": 3, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 4, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 5, "freq": 1}, {"edge_to_bb_id": 4, "freq": 0}], "bb_id": 4, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 5, "freq": 1}, {"edge_to_bb_id": 4, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 6, "freq": 1}], "bb_id": 5, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 6, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 15, "freq": 0}, {"edge_to_bb_id": 7, "freq": 1}], "bb_id": 6, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 15, "freq": 0}, {"edge_to_bb_id": 7, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 9, "freq": 5646}, {"edge_to_bb_id": 8, "freq": 5647}], "bb_id": 7, "freq": 11293, "predicted_edges": [{"edge_to_bb_id": 9, "freq": 5646}, {"edge_to_bb_id": 8, "freq": 5647}]}, {"actual_edges": [{"edge_to_bb_id": 10, "freq": 5647}], "bb_id": 8, "freq": 5647, "predicted_edges": [{"edge_to_bb_id": 10, "freq": 5647}]}, {"actual_edges": [{"edge_to_bb_id": 10, "freq": 5646}], "bb_id": 9, "freq": 5646, "predicted_edges": [{"edge_to_bb_id": 10, "freq": 5646}]}, {"actual_edges": [{"edge_to_bb_id": 12, "freq": 11292}, {"edge_to_bb_id": 11, "freq": 0}], "bb_id": 10, "freq": 11293, "predicted_edges": [{"edge_to_bb_id": 12, "freq": 11292}, {"edge_to_bb_id": 11, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 12, "freq": 0}], "bb_id": 11, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 12, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 14, "freq": 0}, {"edge_to_bb_id": 13, "freq": 11292}], "bb_id": 12, "freq": 11292, "predicted_edges": [{"edge_to_bb_id": 14, "freq": 0}, {"edge_to_bb_id": 13, "freq": 11292}]}, {"actual_edges": [{"edge_to_bb_id": 7, "freq": 11292}], "bb_id": 13, "freq": 11292, "predicted_edges": [{"edge_to_bb_id": 7, "freq": 11292}]}, {"actual_edges": [{"edge_to_bb_id": 15, "freq": 0}], "bb_id": 14, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 15, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 17, "freq": 0}, {"edge_to_bb_id": 16, "freq": 0}], "bb_id": 15, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 17, "freq": 0}, {"edge_to_bb_id": 16, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 17, "freq": 0}], "bb_id": 16, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 17, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 6, "freq": 0}], "bb_id": 17, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 6, "freq": 0}]}]} +2024-12-04 19:44:09 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 4, 'freq': 1}]}, {'bb_id': 4, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 30000, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}, {'edge_to_bb_id': 8, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 15000}, {'edge_to_bb_id': 8, 'freq': 15000}]}, {'bb_id': 8, 'freq': 15000, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 15000}]}, {'bb_id': 9, 'freq': 15000, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 15000}]}, {'bb_id': 10, 'freq': 30000, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 30000}, {'edge_to_bb_id': 11, 'freq': 0}]}, {'bb_id': 11, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 0}]}, {'bb_id': 12, 'freq': 30000, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 1}, {'edge_to_bb_id': 13, 'freq': 29999}]}, {'bb_id': 13, 'freq': 29999, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 29999}]}, {'bb_id': 14, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-04 19:44:22 - {"cfg_bbs": [{"actual_edges": [{"edge_to_bb_id": 2, "freq": 1}, {"edge_to_bb_id": 1, "freq": 0}], "bb_id": 0, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 2, "freq": 1}, {"edge_to_bb_id": 1, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 3, "freq": 0}], "bb_id": 1, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 3, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 3, "freq": 1}], "bb_id": 2, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 3, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 4, "freq": 1}], "bb_id": 3, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 4, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 5, "freq": 1}, {"edge_to_bb_id": 4, "freq": 0}], "bb_id": 4, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 5, "freq": 1}, {"edge_to_bb_id": 4, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 6, "freq": 1}], "bb_id": 5, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 6, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 15, "freq": 0}, {"edge_to_bb_id": 7, "freq": 1}], "bb_id": 6, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 15, "freq": 0}, {"edge_to_bb_id": 7, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 9, "freq": 15000}, {"edge_to_bb_id": 8, "freq": 15000}], "bb_id": 7, "freq": 30000, "predicted_edges": [{"edge_to_bb_id": 9, "freq": 15000}, {"edge_to_bb_id": 8, "freq": 15000}]}, {"actual_edges": [{"edge_to_bb_id": 10, "freq": 15000}], "bb_id": 8, "freq": 15000, "predicted_edges": [{"edge_to_bb_id": 10, "freq": 15000}]}, {"actual_edges": [{"edge_to_bb_id": 10, "freq": 15000}], "bb_id": 9, "freq": 15000, "predicted_edges": [{"edge_to_bb_id": 10, "freq": 15000}]}, {"actual_edges": [{"edge_to_bb_id": 12, "freq": 30000}, {"edge_to_bb_id": 11, "freq": 0}], "bb_id": 10, "freq": 30000, "predicted_edges": [{"edge_to_bb_id": 12, "freq": 30000}, {"edge_to_bb_id": 11, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 12, "freq": 0}], "bb_id": 11, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 12, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 14, "freq": 1}, {"edge_to_bb_id": 13, "freq": 29999}], "bb_id": 12, "freq": 30000, "predicted_edges": [{"edge_to_bb_id": 14, "freq": 1}, {"edge_to_bb_id": 13, "freq": 29999}]}, {"actual_edges": [{"edge_to_bb_id": 7, "freq": 29999}], "bb_id": 13, "freq": 29999, "predicted_edges": [{"edge_to_bb_id": 7, "freq": 29999}]}, {"actual_edges": [{"edge_to_bb_id": 15, "freq": 0}], "bb_id": 14, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 15, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 17, "freq": 0}, {"edge_to_bb_id": 16, "freq": 0}], "bb_id": 15, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 17, "freq": 0}, {"edge_to_bb_id": 16, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 17, "freq": 0}], "bb_id": 16, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 17, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 6, "freq": 0}], "bb_id": 17, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 6, "freq": 0}]}]} +2024-12-04 19:45:38 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 4, 'freq': 1}]}, {'bb_id': 4, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 11432, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}, {'edge_to_bb_id': 8, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 5716}, {'edge_to_bb_id': 8, 'freq': 5716}]}, {'bb_id': 8, 'freq': 5716, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 5716}]}, {'bb_id': 9, 'freq': 5716, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 5716}]}, {'bb_id': 10, 'freq': 11432, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 11431}, {'edge_to_bb_id': 11, 'freq': 0}]}, {'bb_id': 11, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 0}]}, {'bb_id': 12, 'freq': 11431, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 11431}]}, {'bb_id': 13, 'freq': 11431, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 11431}]}, {'bb_id': 14, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-04 19:45:50 - {"cfg_bbs": [{"actual_edges": [{"edge_to_bb_id": 2, "freq": 1}, {"edge_to_bb_id": 1, "freq": 0}], "bb_id": 0, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 2, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 3, "freq": 0}], "bb_id": 1, "freq": 0, "predicted_edges": []}, {"actual_edges": [{"edge_to_bb_id": 3, "freq": 1}], "bb_id": 2, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 3, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 4, "freq": 1}], "bb_id": 3, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 4, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 5, "freq": 1}, {"edge_to_bb_id": 4, "freq": 0}], "bb_id": 4, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 5, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 6, "freq": 1}], "bb_id": 5, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 6, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 15, "freq": 0}, {"edge_to_bb_id": 7, "freq": 1}], "bb_id": 6, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 7, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 9, "freq": 5716}, {"edge_to_bb_id": 8, "freq": 5716}], "bb_id": 7, "freq": 11432, "predicted_edges": [{"edge_to_bb_id": 9, "freq": 5716}, {"edge_to_bb_id": 8, "freq": 5716}]}, {"actual_edges": [{"edge_to_bb_id": 10, "freq": 5716}], "bb_id": 8, "freq": 5716, "predicted_edges": [{"edge_to_bb_id": 10, "freq": 5716}]}, {"actual_edges": [{"edge_to_bb_id": 10, "freq": 5716}], "bb_id": 9, "freq": 5716, "predicted_edges": [{"edge_to_bb_id": 10, "freq": 5716}]}, {"actual_edges": [{"edge_to_bb_id": 12, "freq": 11431}, {"edge_to_bb_id": 11, "freq": 0}], "bb_id": 10, "freq": 11432, "predicted_edges": [{"edge_to_bb_id": 12, "freq": 11431}]}, {"actual_edges": [{"edge_to_bb_id": 12, "freq": 0}], "bb_id": 11, "freq": 0, "predicted_edges": []}, {"actual_edges": [{"edge_to_bb_id": 14, "freq": 0}, {"edge_to_bb_id": 13, "freq": 11431}], "bb_id": 12, "freq": 11431, "predicted_edges": [{"edge_to_bb_id": 13, "freq": 11431}]}, {"actual_edges": [{"edge_to_bb_id": 7, "freq": 11431}], "bb_id": 13, "freq": 11431, "predicted_edges": [{"edge_to_bb_id": 7, "freq": 11431}]}, {"actual_edges": [{"edge_to_bb_id": 15, "freq": 0}], "bb_id": 14, "freq": 0, "predicted_edges": []}, {"actual_edges": [{"edge_to_bb_id": 17, "freq": 0}, {"edge_to_bb_id": 16, "freq": 0}], "bb_id": 15, "freq": 0, "predicted_edges": []}, {"actual_edges": [{"edge_to_bb_id": 17, "freq": 0}], "bb_id": 16, "freq": 0, "predicted_edges": []}, {"actual_edges": [{"edge_to_bb_id": 6, "freq": 0}], "bb_id": 17, "freq": 0, "predicted_edges": []}, {"actual_edges": [], "bb_id": 18, "freq": 0, "predicted_edges": []}]} +2024-12-04 19:45:50 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 4, 'freq': 1}]}, {'bb_id': 4, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 30000, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}, {'edge_to_bb_id': 8, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 15000}, {'edge_to_bb_id': 8, 'freq': 15000}]}, {'bb_id': 8, 'freq': 15000, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 15000}]}, {'bb_id': 9, 'freq': 15000, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 15000}]}, {'bb_id': 10, 'freq': 30000, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 30000}, {'edge_to_bb_id': 11, 'freq': 0}]}, {'bb_id': 11, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 0}]}, {'bb_id': 12, 'freq': 30000, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 1}, {'edge_to_bb_id': 13, 'freq': 29999}]}, {'bb_id': 13, 'freq': 29999, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 29999}]}, {'bb_id': 14, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-04 19:46:03 - {"cfg_bbs": [{"actual_edges": [{"edge_to_bb_id": 2, "freq": 1}, {"edge_to_bb_id": 1, "freq": 0}], "bb_id": 0, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 2, "freq": 1}, {"edge_to_bb_id": 1, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 3, "freq": 0}], "bb_id": 1, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 3, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 3, "freq": 1}], "bb_id": 2, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 3, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 4, "freq": 1}], "bb_id": 3, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 4, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 5, "freq": 1}, {"edge_to_bb_id": 4, "freq": 0}], "bb_id": 4, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 5, "freq": 1}, {"edge_to_bb_id": 4, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 6, "freq": 1}], "bb_id": 5, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 6, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 15, "freq": 0}, {"edge_to_bb_id": 7, "freq": 1}], "bb_id": 6, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 15, "freq": 0}, {"edge_to_bb_id": 7, "freq": 1}]}, {"actual_edges": [{"edge_to_bb_id": 9, "freq": 15000}, {"edge_to_bb_id": 8, "freq": 15000}], "bb_id": 7, "freq": 30000, "predicted_edges": [{"edge_to_bb_id": 9, "freq": 15000}, {"edge_to_bb_id": 8, "freq": 15000}]}, {"actual_edges": [{"edge_to_bb_id": 10, "freq": 15000}], "bb_id": 8, "freq": 15000, "predicted_edges": [{"edge_to_bb_id": 10, "freq": 15000}]}, {"actual_edges": [{"edge_to_bb_id": 10, "freq": 15000}], "bb_id": 9, "freq": 15000, "predicted_edges": [{"edge_to_bb_id": 10, "freq": 15000}]}, {"actual_edges": [{"edge_to_bb_id": 12, "freq": 30000}, {"edge_to_bb_id": 11, "freq": 0}], "bb_id": 10, "freq": 30000, "predicted_edges": [{"edge_to_bb_id": 12, "freq": 30000}, {"edge_to_bb_id": 11, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 12, "freq": 0}], "bb_id": 11, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 12, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 14, "freq": 1}, {"edge_to_bb_id": 13, "freq": 29999}], "bb_id": 12, "freq": 30000, "predicted_edges": [{"edge_to_bb_id": 14, "freq": 1}, {"edge_to_bb_id": 13, "freq": 29999}]}, {"actual_edges": [{"edge_to_bb_id": 7, "freq": 29999}], "bb_id": 13, "freq": 29999, "predicted_edges": [{"edge_to_bb_id": 7, "freq": 29999}]}, {"actual_edges": [{"edge_to_bb_id": 15, "freq": 0}], "bb_id": 14, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 15, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 17, "freq": 0}, {"edge_to_bb_id": 16, "freq": 0}], "bb_id": 15, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 17, "freq": 0}, {"edge_to_bb_id": 16, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 17, "freq": 0}], "bb_id": 16, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 17, "freq": 0}]}, {"actual_edges": [{"edge_to_bb_id": 6, "freq": 0}], "bb_id": 17, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 6, "freq": 0}]}]} +2024-12-04 19:47:02 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 4, 'freq': 1}]}, {'bb_id': 4, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 12672, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}, {'edge_to_bb_id': 8, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 6336}, {'edge_to_bb_id': 8, 'freq': 6336}]}, {'bb_id': 8, 'freq': 6336, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 6336}]}, {'bb_id': 9, 'freq': 6336, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 6336}]}, {'bb_id': 10, 'freq': 12672, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 12672}, {'edge_to_bb_id': 11, 'freq': 0}]}, {'bb_id': 11, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 0}]}, {'bb_id': 12, 'freq': 12672, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 12671}]}, {'bb_id': 13, 'freq': 12671, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 12671}]}, {'bb_id': 14, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-04 19:47:08 - Based on the provided bytecode and execution trace, here's a prediction of the control flow graph edges at iteration 4. The key is understanding the loop involving `bb7`, `bb8`, `bb9`, `bb10`, `bb12`, and `bb13`. + +**Understanding the Loop:** + +The loop continues as long as `a < 30000`. Inside the loop: + +* `bb7` checks if `a % 2 == 0`. +* `bb8` (if even) adds `a + b + 7` and stores it in `c`. +* `bb9` (if odd) adds `2 + c` and stores it in `b`. +* `bb10` increments `a` ( `a += 1`). +* `bb12` checks again if `a < 30000`. +* `bb13` jumps back to `bb7`. + +**Iteration 4 Prediction:** + +At offset 490, we have `a = 18960`, `b = 89946240`, `c = 89965207`. Let's trace iteration 4: + +1. **bb7:** `a % 2 == 0` (true) +2. **bb8:** `c = 18960 + 89946240 + 7 = 90000207` +3. **bb10:** `a = 18961` +4. **bb12:** `a < 30000` (true) +5. **bb13:** Jumps back to `bb7` + +**Therefore, the predicted edges at iteration 4 are:** + +* `bb7 -> bb8` (because a is even) +* `bb8 -> bb10` +* `bb10 -> bb12` +* `bb12 -> bb13` (because a < 30000) +* `bb13 -> bb7` + + +**predicted_edges:** + +``` +bb7 -> bb8 +bb8 -> bb10 +bb10 -> bb12 +bb12 -> bb13 +bb13 -> bb7 +``` + +2024-12-04 19:47:08 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 4, 'freq': 1}]}, {'bb_id': 4, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 30000, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}, {'edge_to_bb_id': 8, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 15000}, {'edge_to_bb_id': 8, 'freq': 15000}]}, {'bb_id': 8, 'freq': 15000, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 15000}]}, {'bb_id': 9, 'freq': 15000, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 15000}]}, {'bb_id': 10, 'freq': 30000, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 30000}, {'edge_to_bb_id': 11, 'freq': 0}]}, {'bb_id': 11, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 0}]}, {'bb_id': 12, 'freq': 30000, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 1}, {'edge_to_bb_id': 13, 'freq': 29999}]}, {'bb_id': 13, 'freq': 29999, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 29999}]}, {'bb_id': 14, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-04 19:47:17 - Based on the provided program structure, frequencies, and instruction details, here's a prediction of the `predicted_edges` at iteration 4. The key is understanding the loop between bb7, bb8, bb9, bb10, bb12, and bb13. + +**Understanding the Loop:** + +The core loop iterates based on the value of `a`. It continues as long as `a < 30000`. Inside the loop, `a` is incremented by 1 each time (bb10), and `b` and `c` are updated based on conditional logic (bb8 and bb9). The loop terminates when `a` reaches 30000. + +**Iteration Prediction:** + +Let's trace the iterations: + +* **Iteration 1:** `a` starts at 0. The loop executes. +* **Iteration 2:** `a` becomes 1. The loop executes. +* **Iteration 3:** `a` becomes 2. The loop executes. +* **Iteration 4:** `a` becomes 3. The loop continues to execute. + +**Predicted Edges (Iteration 4):** + +To accurately predict edges, we need to know the exact path taken within the loop at each iteration. Given that the loop's behavior depends on `a % 2 == 0`, let's assume the values of `a` modulo 2 to predict the path taken: + + +* **bb6:** (freq=1) -> bb7 (Always true at the beginning) +* **bb7:** (freq=n) -> bb8 (if a % 2 == 0, n=15000; else n=15000 at iteration 4) +* **bb7:** (freq=n) -> bb9 (if a % 2 != 0, n=15000; else n=0 at iteration 4) +* **bb8:** (freq=n) -> bb10 (Always true) +* **bb9:** (freq=n) -> bb10 (Always true) +* **bb10:** (freq=n) -> bb12 (Always true) +* **bb12:** (freq=n) -> bb13 (because 29999 > 1) +* **bb13:** (freq=n) -> bb7 (Always true) + + +Given that `a` is 3 (odd) at iteration 4, the predicted frequencies would be: + +* **bb7:** (freq=1) -> bb9 (freq=1) +* **bb9:** (freq=1) -> bb10 (freq=1) + + +**The other edges:** + +* **bb0:** (freq=1) -> bb2 (freq=1) +* **bb2:** (freq=1) -> bb3 (freq=1) +* **bb3:** (freq=1) -> bb4 (freq=1) +* **bb4:** (freq=1) -> bb5 (freq=1) +* **bb5:** (freq=1) -> bb6 (freq=1) +* **bb6:** (freq=1) -> bb7 (freq=1) (at least once, maybe more) +* **bb10:** (freq=1) -> bb12 (freq=1) +* **bb12:** (freq=1) -> bb13 (freq=1) +* **bb13:** (freq=1) -> bb7 (freq=1) +* **bb12:** (freq=1)-> bb14 (freq=0, this path is not followed) +* **bb14:** (freq=0)-> bb15 (freq=0, this path is not followed) +* **bb15:** (freq=0)-> bb17 (freq=0, this path is not followed) +* **bb15:** (freq=0)-> bb16 (freq=0, this path is not followed) +* **bb16:** (freq=0)-> bb17 (freq=0, this path is not followed) +* **bb17:** (freq=0)-> bb6 (freq=0, this path is not followed) +* **bb1:** (freq=0)-> bb3 (freq=0, this path is not followed) + + +The exact frequencies for bb7, bb8, bb9, bb10, bb12 and bb13 depend on how many times the loop has run, and the condition a%2==0 + + +**In summary:** A precise prediction requires running the code or simulating the loop execution up to iteration 4 to determine exactly how many times each branch within the loop is taken. However, the above analysis provides a structured approach to making that prediction. + +2024-12-04 19:47:59 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 4, 'freq': 1}]}, {'bb_id': 4, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 12832, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}, {'edge_to_bb_id': 8, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 6416}, {'edge_to_bb_id': 8, 'freq': 6416}]}, {'bb_id': 8, 'freq': 6416, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 6416}]}, {'bb_id': 9, 'freq': 6416, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 6416}]}, {'bb_id': 10, 'freq': 12832, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 12832}, {'edge_to_bb_id': 11, 'freq': 0}]}, {'bb_id': 11, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 0}]}, {'bb_id': 12, 'freq': 12832, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 12831}]}, {'bb_id': 13, 'freq': 12831, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 12831}]}, {'bb_id': 14, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-04 19:48:12 - {"cfg_bbs": [{"actual_edges": [{"edge_to_bb_id": 2, "freq": 1}, {"edge_to_bb_id": 1, "freq": 0}], "bb_id": 0, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 2, "freq": 87}, {"edge_to_bb_id": 1, "freq": 12}]}, {"actual_edges": [{"edge_to_bb_id": 3, "freq": 0}], "bb_id": 1, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 3, "freq": 54}]}, {"actual_edges": [{"edge_to_bb_id": 3, "freq": 1}], "bb_id": 2, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 3, "freq": 92}]}, {"actual_edges": [{"edge_to_bb_id": 4, "freq": 1}], "bb_id": 3, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 4, "freq": 26}]}, {"actual_edges": [{"edge_to_bb_id": 5, "freq": 1}, {"edge_to_bb_id": 4, "freq": 0}], "bb_id": 4, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 5, "freq": 33}, {"edge_to_bb_id": 4, "freq": 75}]}, {"actual_edges": [{"edge_to_bb_id": 6, "freq": 1}], "bb_id": 5, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 6, "freq": 17}]}, {"actual_edges": [{"edge_to_bb_id": 15, "freq": 0}, {"edge_to_bb_id": 7, "freq": 1}], "bb_id": 6, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 15, "freq": 61}, {"edge_to_bb_id": 7, "freq": 44}]}, {"actual_edges": [{"edge_to_bb_id": 9, "freq": 6416}, {"edge_to_bb_id": 8, "freq": 6416}], "bb_id": 7, "freq": 12832, "predicted_edges": [{"edge_to_bb_id": 9, "freq": 81}, {"edge_to_bb_id": 8, "freq": 58}]}, {"actual_edges": [{"edge_to_bb_id": 10, "freq": 6416}], "bb_id": 8, "freq": 6416, "predicted_edges": [{"edge_to_bb_id": 10, "freq": 84}]}, {"actual_edges": [{"edge_to_bb_id": 10, "freq": 6416}], "bb_id": 9, "freq": 6416, "predicted_edges": [{"edge_to_bb_id": 10, "freq": 19}]}, {"actual_edges": [{"edge_to_bb_id": 12, "freq": 12832}, {"edge_to_bb_id": 11, "freq": 0}], "bb_id": 10, "freq": 12832, "predicted_edges": [{"edge_to_bb_id": 12, "freq": 50}, {"edge_to_bb_id": 11, "freq": 59}]}, {"actual_edges": [{"edge_to_bb_id": 12, "freq": 0}], "bb_id": 11, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 12, "freq": 97}]}, {"actual_edges": [{"edge_to_bb_id": 14, "freq": 0}, {"edge_to_bb_id": 13, "freq": 12831}], "bb_id": 12, "freq": 12832, "predicted_edges": [{"edge_to_bb_id": 14, "freq": 21}, {"edge_to_bb_id": 13, "freq": 37}]}, {"actual_edges": [{"edge_to_bb_id": 7, "freq": 12831}], "bb_id": 13, "freq": 12831, "predicted_edges": [{"edge_to_bb_id": 7, "freq": 71}]}, {"actual_edges": [{"edge_to_bb_id": 15, "freq": 0}], "bb_id": 14, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 15, "freq": 6}]}, {"actual_edges": [{"edge_to_bb_id": 17, "freq": 0}, {"edge_to_bb_id": 16, "freq": 0}], "bb_id": 15, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 17, "freq": 28}, {"edge_to_bb_id": 16, "freq": 41}]}, {"actual_edges": [{"edge_to_bb_id": 17, "freq": 0}], "bb_id": 16, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 17, "freq": 77}]}, {"actual_edges": [{"edge_to_bb_id": 6, "freq": 0}], "bb_id": 17, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 6, "freq": 2}]}]} +2024-12-04 19:48:13 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 4, 'freq': 1}]}, {'bb_id': 4, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 30000, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}, {'edge_to_bb_id': 8, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 15000}, {'edge_to_bb_id': 8, 'freq': 15000}]}, {'bb_id': 8, 'freq': 15000, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 15000}]}, {'bb_id': 9, 'freq': 15000, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 15000}]}, {'bb_id': 10, 'freq': 30000, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 30000}, {'edge_to_bb_id': 11, 'freq': 0}]}, {'bb_id': 11, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 0}]}, {'bb_id': 12, 'freq': 30000, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 1}, {'edge_to_bb_id': 13, 'freq': 29999}]}, {'bb_id': 13, 'freq': 29999, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 29999}]}, {'bb_id': 14, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-04 19:48:25 - {"cfg_bbs": [{"actual_edges": [{"edge_to_bb_id": 2, "freq": 1}, {"edge_to_bb_id": 1, "freq": 0}], "bb_id": 0, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 2, "freq": 87}, {"edge_to_bb_id": 1, "freq": 23}]}, {"actual_edges": [{"edge_to_bb_id": 3, "freq": 0}], "bb_id": 1, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 3, "freq": 56}]}, {"actual_edges": [{"edge_to_bb_id": 3, "freq": 1}], "bb_id": 2, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 3, "freq": 12}]}, {"actual_edges": [{"edge_to_bb_id": 4, "freq": 1}], "bb_id": 3, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 4, "freq": 94}]}, {"actual_edges": [{"edge_to_bb_id": 5, "freq": 1}, {"edge_to_bb_id": 4, "freq": 0}], "bb_id": 4, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 5, "freq": 73}, {"edge_to_bb_id": 4, "freq": 18}]}, {"actual_edges": [{"edge_to_bb_id": 6, "freq": 1}], "bb_id": 5, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 6, "freq": 34}]}, {"actual_edges": [{"edge_to_bb_id": 15, "freq": 0}, {"edge_to_bb_id": 7, "freq": 1}], "bb_id": 6, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 15, "freq": 65}, {"edge_to_bb_id": 7, "freq": 41}]}, {"actual_edges": [{"edge_to_bb_id": 9, "freq": 15000}, {"edge_to_bb_id": 8, "freq": 15000}], "bb_id": 7, "freq": 30000, "predicted_edges": [{"edge_to_bb_id": 9, "freq": 23}, {"edge_to_bb_id": 8, "freq": 57}]}, {"actual_edges": [{"edge_to_bb_id": 10, "freq": 15000}], "bb_id": 8, "freq": 15000, "predicted_edges": [{"edge_to_bb_id": 10, "freq": 83}]}, {"actual_edges": [{"edge_to_bb_id": 10, "freq": 15000}], "bb_id": 9, "freq": 15000, "predicted_edges": [{"edge_to_bb_id": 10, "freq": 15}]}, {"actual_edges": [{"edge_to_bb_id": 12, "freq": 30000}, {"edge_to_bb_id": 11, "freq": 0}], "bb_id": 10, "freq": 30000, "predicted_edges": [{"edge_to_bb_id": 12, "freq": 51}, {"edge_to_bb_id": 11, "freq": 92}]}, {"actual_edges": [{"edge_to_bb_id": 12, "freq": 0}], "bb_id": 11, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 12, "freq": 6}]}, {"actual_edges": [{"edge_to_bb_id": 14, "freq": 1}, {"edge_to_bb_id": 13, "freq": 29999}], "bb_id": 12, "freq": 30000, "predicted_edges": [{"edge_to_bb_id": 14, "freq": 27}, {"edge_to_bb_id": 13, "freq": 89}]}, {"actual_edges": [{"edge_to_bb_id": 7, "freq": 29999}], "bb_id": 13, "freq": 29999, "predicted_edges": [{"edge_to_bb_id": 7, "freq": 44}]}, {"actual_edges": [{"edge_to_bb_id": 15, "freq": 0}], "bb_id": 14, "freq": 1, "predicted_edges": [{"edge_to_bb_id": 15, "freq": 11}]}, {"actual_edges": [{"edge_to_bb_id": 17, "freq": 0}, {"edge_to_bb_id": 16, "freq": 0}], "bb_id": 15, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 17, "freq": 78}, {"edge_to_bb_id": 16, "freq": 54}]}, {"actual_edges": [{"edge_to_bb_id": 17, "freq": 0}], "bb_id": 16, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 17, "freq": 39}]}, {"actual_edges": [{"edge_to_bb_id": 6, "freq": 0}], "bb_id": 17, "freq": 0, "predicted_edges": [{"edge_to_bb_id": 6, "freq": 62}]}]} +2024-12-04 19:49:48 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 4, 'freq': 1}]}, {'bb_id': 4, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 11253, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}, {'edge_to_bb_id': 8, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 5626}, {'edge_to_bb_id': 8, 'freq': 5626}]}, {'bb_id': 8, 'freq': 5626, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 5626}]}, {'bb_id': 9, 'freq': 5626, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 5626}]}, {'bb_id': 10, 'freq': 11252, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 11252}, {'edge_to_bb_id': 11, 'freq': 0}]}, {'bb_id': 11, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 0}]}, {'bb_id': 12, 'freq': 11252, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 11252}]}, {'bb_id': 13, 'freq': 11252, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 11252}]}, {'bb_id': 14, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-04 19:50:03 - {"cfg_bbs": [{"actual_edges": [{"edge_to_bb_id": 2, "freq": 1}, {"edge_to_bb_id": 1, "freq": 0}], "actual_freq": 1, "bb_id": 0, "predicted_edges": [{"edge_to_bb_id": 2, "freq": 87}, {"edge_to_bb_id": 1, "freq": 23}], "predicted_freq": 110}, {"actual_edges": [{"edge_to_bb_id": 3, "freq": 0}], "actual_freq": 0, "bb_id": 1, "predicted_edges": [{"edge_to_bb_id": 3, "freq": 54}], "predicted_freq": 54}, {"actual_edges": [{"edge_to_bb_id": 3, "freq": 1}], "actual_freq": 1, "bb_id": 2, "predicted_edges": [{"edge_to_bb_id": 3, "freq": 12}], "predicted_freq": 12}, {"actual_edges": [{"edge_to_bb_id": 4, "freq": 1}], "actual_freq": 1, "bb_id": 3, "predicted_edges": [{"edge_to_bb_id": 4, "freq": 95}], "predicted_freq": 95}, {"actual_edges": [{"edge_to_bb_id": 5, "freq": 1}, {"edge_to_bb_id": 4, "freq": 0}], "actual_freq": 1, "bb_id": 4, "predicted_edges": [{"edge_to_bb_id": 5, "freq": 63}, {"edge_to_bb_id": 4, "freq": 17}], "predicted_freq": 80}, {"actual_edges": [{"edge_to_bb_id": 6, "freq": 1}], "actual_freq": 1, "bb_id": 5, "predicted_edges": [{"edge_to_bb_id": 6, "freq": 55}], "predicted_freq": 55}, {"actual_edges": [{"edge_to_bb_id": 15, "freq": 0}, {"edge_to_bb_id": 7, "freq": 1}], "actual_freq": 1, "bb_id": 6, "predicted_edges": [{"edge_to_bb_id": 15, "freq": 56}, {"edge_to_bb_id": 7, "freq": 22}], "predicted_freq": 78}, {"actual_edges": [{"edge_to_bb_id": 9, "freq": 5626}, {"edge_to_bb_id": 8, "freq": 5626}], "actual_freq": 11253, "bb_id": 7, "predicted_edges": [{"edge_to_bb_id": 9, "freq": 12}, {"edge_to_bb_id": 8, "freq": 45}], "predicted_freq": 57}, {"actual_edges": [{"edge_to_bb_id": 10, "freq": 5626}], "actual_freq": 5626, "bb_id": 8, "predicted_edges": [{"edge_to_bb_id": 10, "freq": 87}], "predicted_freq": 87}, {"actual_edges": [{"edge_to_bb_id": 10, "freq": 5626}], "actual_freq": 5626, "bb_id": 9, "predicted_edges": [{"edge_to_bb_id": 10, "freq": 23}], "predicted_freq": 23}, {"actual_edges": [{"edge_to_bb_id": 12, "freq": 11252}, {"edge_to_bb_id": 11, "freq": 0}], "actual_freq": 11252, "bb_id": 10, "predicted_edges": [{"edge_to_bb_id": 12, "freq": 94}, {"edge_to_bb_id": 11, "freq": 65}], "predicted_freq": 159}, {"actual_edges": [{"edge_to_bb_id": 12, "freq": 0}], "actual_freq": 0, "bb_id": 11, "predicted_edges": [{"edge_to_bb_id": 12, "freq": 34}], "predicted_freq": 34}, {"actual_edges": [{"edge_to_bb_id": 14, "freq": 0}, {"edge_to_bb_id": 13, "freq": 11252}], "actual_freq": 11252, "bb_id": 12, "predicted_edges": [{"edge_to_bb_id": 14, "freq": 12}, {"edge_to_bb_id": 13, "freq": 86}], "predicted_freq": 98}, {"actual_edges": [{"edge_to_bb_id": 7, "freq": 11252}], "actual_freq": 11252, "bb_id": 13, "predicted_edges": [{"edge_to_bb_id": 7, "freq": 76}], "predicted_freq": 76}, {"actual_edges": [{"edge_to_bb_id": 15, "freq": 0}], "actual_freq": 0, "bb_id": 14, "predicted_edges": [{"edge_to_bb_id": 15, "freq": 11}], "predicted_freq": 11}, {"actual_edges": [{"edge_to_bb_id": 17, "freq": 0}, {"edge_to_bb_id": 16, "freq": 0}], "actual_freq": 0, "bb_id": 15, "predicted_edges": [{"edge_to_bb_id": 17, "freq": 34}, {"edge_to_bb_id": 16, "freq": 54}], "predicted_freq": 88}, {"actual_edges": [{"edge_to_bb_id": 17, "freq": 0}], "actual_freq": 0, "bb_id": 16, "predicted_edges": [{"edge_to_bb_id": 17, "freq": 23}], "predicted_freq": 23}, {"actual_edges": [{"edge_to_bb_id": 6, "freq": 0}], "actual_freq": 0, "bb_id": 17, "predicted_edges": [{"edge_to_bb_id": 6, "freq": 65}], "predicted_freq": 65}, {"actual_edges": [], "actual_freq": 0, "bb_id": 18, "predicted_edges": [], "predicted_freq": 0}]} +2024-12-04 19:50:04 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 4, 'freq': 1}]}, {'bb_id': 4, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 30000, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}, {'edge_to_bb_id': 8, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 15000}, {'edge_to_bb_id': 8, 'freq': 15000}]}, {'bb_id': 8, 'freq': 15000, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 15000}]}, {'bb_id': 9, 'freq': 15000, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 15000}]}, {'bb_id': 10, 'freq': 30000, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 30000}, {'edge_to_bb_id': 11, 'freq': 0}]}, {'bb_id': 11, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 12, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 12, 'freq': 0}]}, {'bb_id': 12, 'freq': 30000, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 1}, {'edge_to_bb_id': 13, 'freq': 29999}]}, {'bb_id': 13, 'freq': 29999, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 29999}]}, {'bb_id': 14, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-04 19:50:19 - {"cfg_bbs": [{"actual_edges": [{"edge_to_bb_id": 2, "freq": 1}, {"edge_to_bb_id": 1, "freq": 0}], "actual_freq": 1, "bb_id": 0, "predicted_edges": [{"edge_to_bb_id": 2, "freq": 87}, {"edge_to_bb_id": 1, "freq": 23}], "predicted_freq": 110}, {"actual_edges": [{"edge_to_bb_id": 3, "freq": 0}], "actual_freq": 0, "bb_id": 1, "predicted_edges": [{"edge_to_bb_id": 3, "freq": 54}], "predicted_freq": 54}, {"actual_edges": [{"edge_to_bb_id": 3, "freq": 1}], "actual_freq": 1, "bb_id": 2, "predicted_edges": [{"edge_to_bb_id": 3, "freq": 12}], "predicted_freq": 12}, {"actual_edges": [{"edge_to_bb_id": 4, "freq": 1}], "actual_freq": 1, "bb_id": 3, "predicted_edges": [{"edge_to_bb_id": 4, "freq": 91}], "predicted_freq": 91}, {"actual_edges": [{"edge_to_bb_id": 5, "freq": 1}, {"edge_to_bb_id": 4, "freq": 0}], "actual_freq": 1, "bb_id": 4, "predicted_edges": [{"edge_to_bb_id": 5, "freq": 34}, {"edge_to_bb_id": 4, "freq": 17}], "predicted_freq": 51}, {"actual_edges": [{"edge_to_bb_id": 6, "freq": 1}], "actual_freq": 1, "bb_id": 5, "predicted_edges": [{"edge_to_bb_id": 6, "freq": 65}], "predicted_freq": 65}, {"actual_edges": [{"edge_to_bb_id": 15, "freq": 0}, {"edge_to_bb_id": 7, "freq": 1}], "actual_freq": 1, "bb_id": 6, "predicted_edges": [{"edge_to_bb_id": 15, "freq": 21}, {"edge_to_bb_id": 7, "freq": 76}], "predicted_freq": 97}, {"actual_edges": [{"edge_to_bb_id": 9, "freq": 15000}, {"edge_to_bb_id": 8, "freq": 15000}], "actual_freq": 30000, "bb_id": 7, "predicted_edges": [{"edge_to_bb_id": 9, "freq": 11235}, {"edge_to_bb_id": 8, "freq": 18765}], "predicted_freq": 30000}, {"actual_edges": [{"edge_to_bb_id": 10, "freq": 15000}], "actual_freq": 15000, "bb_id": 8, "predicted_edges": [{"edge_to_bb_id": 10, "freq": 12000}], "predicted_freq": 12000}, {"actual_edges": [{"edge_to_bb_id": 10, "freq": 15000}], "actual_freq": 15000, "bb_id": 9, "predicted_edges": [{"edge_to_bb_id": 10, "freq": 13000}], "predicted_freq": 13000}, {"actual_edges": [{"edge_to_bb_id": 12, "freq": 30000}, {"edge_to_bb_id": 11, "freq": 0}], "actual_freq": 30000, "bb_id": 10, "predicted_edges": [{"edge_to_bb_id": 12, "freq": 28000}, {"edge_to_bb_id": 11, "freq": 2000}], "predicted_freq": 30000}, {"actual_edges": [{"edge_to_bb_id": 12, "freq": 0}], "actual_freq": 0, "bb_id": 11, "predicted_edges": [{"edge_to_bb_id": 12, "freq": 1500}], "predicted_freq": 1500}, {"actual_edges": [{"edge_to_bb_id": 14, "freq": 1}, {"edge_to_bb_id": 13, "freq": 29999}], "actual_freq": 30000, "bb_id": 12, "predicted_edges": [{"edge_to_bb_id": 14, "freq": 1234}, {"edge_to_bb_id": 13, "freq": 28766}], "predicted_freq": 30000}, {"actual_edges": [{"edge_to_bb_id": 7, "freq": 29999}], "actual_freq": 29999, "bb_id": 13, "predicted_edges": [{"edge_to_bb_id": 7, "freq": 27000}], "predicted_freq": 27000}, {"actual_edges": [{"edge_to_bb_id": 15, "freq": 0}], "actual_freq": 1, "bb_id": 14, "predicted_edges": [{"edge_to_bb_id": 15, "freq": 500}], "predicted_freq": 500}, {"actual_edges": [{"edge_to_bb_id": 17, "freq": 0}, {"edge_to_bb_id": 16, "freq": 0}], "actual_freq": 0, "bb_id": 15, "predicted_edges": [{"edge_to_bb_id": 17, "freq": 100}, {"edge_to_bb_id": 16, "freq": 200}], "predicted_freq": 300}, {"actual_edges": [{"edge_to_bb_id": 17, "freq": 0}], "actual_freq": 0, "bb_id": 16, "predicted_edges": [{"edge_to_bb_id": 17, "freq": 300}], "predicted_freq": 300}, {"actual_edges": [{"edge_to_bb_id": 6, "freq": 0}], "actual_freq": 0, "bb_id": 17, "predicted_edges": [{"edge_to_bb_id": 6, "freq": 400}], "predicted_freq": 400}, {"actual_edges": [], "actual_freq": 0, "bb_id": 18, "predicted_edges": [], "predicted_freq": 0}]} +2024-12-05 15:27:39 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 549, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 179}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 179, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 179}]}, {'bb_id': 13, 'freq': 179, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 178}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 178, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 178}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:27:46 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 738, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 368}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 368, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 368}]}, {'bb_id': 13, 'freq': 368, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 367}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 367, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 367}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:27:52 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 904, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 534}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 534, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 534}]}, {'bb_id': 13, 'freq': 534, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 533}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 533, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 533}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:28:16 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 525, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 155}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 155, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 155}]}, {'bb_id': 13, 'freq': 155, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 154}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 154, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 154}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:28:23 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 722, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 352}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 352, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 352}]}, {'bb_id': 13, 'freq': 352, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 351}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 351, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 351}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:28:30 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 892, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 522}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 522, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 522}]}, {'bb_id': 13, 'freq': 522, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 521}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 521, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 521}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:28:37 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 1001, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 1}, {'edge_to_bb_id': 12, 'freq': 630}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 630, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 630}]}, {'bb_id': 13, 'freq': 630, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 630}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 630, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 630}]}, {'bb_id': 15, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 1}]}, {'bb_id': 16, 'freq': 6305, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 6304}]}, {'bb_id': 17, 'freq': 6304, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 6304}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:28:40 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 1001, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 1}, {'edge_to_bb_id': 12, 'freq': 630}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 630, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 630}]}, {'bb_id': 13, 'freq': 630, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 630}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 630, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 630}]}, {'bb_id': 15, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 1}]}, {'bb_id': 16, 'freq': 43557, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 1}, {'edge_to_bb_id': 17, 'freq': 43556}]}, {'bb_id': 17, 'freq': 43556, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 43556}]}, {'bb_id': 18, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:30:56 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 664, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 294}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 294, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 294}]}, {'bb_id': 13, 'freq': 294, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 293}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 293, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 293}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:31:12 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 1001, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 1}, {'edge_to_bb_id': 12, 'freq': 630}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 630, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 630}]}, {'bb_id': 13, 'freq': 630, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 630}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 630, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 630}]}, {'bb_id': 15, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 1}]}, {'bb_id': 16, 'freq': 43557, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 1}, {'edge_to_bb_id': 17, 'freq': 43556}]}, {'bb_id': 17, 'freq': 43556, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 43556}]}, {'bb_id': 18, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:32:15 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 673, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 303}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 303, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 303}]}, {'bb_id': 13, 'freq': 303, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 302}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 302, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 302}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:49:40 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 584, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 214}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 214, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 214}]}, {'bb_id': 13, 'freq': 214, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 213}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 213, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 213}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:49:44 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 767, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 397}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 397, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 397}]}, {'bb_id': 13, 'freq': 397, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 396}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 396, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 396}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:50:26 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 388, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 18}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 18, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 18}]}, {'bb_id': 13, 'freq': 18, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 17}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 17, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 17}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:54:22 - list index out of range +2024-12-05 15:54:22 - Error: list index out of range + 115 | self.curr_variables_lock.acquire() + 116 | for var_name in frame.f_locals["__annotations__"]: + 117 | if var_name == "input_val" and frame.f_locals[var_name] != self.inputs[-1]: + | ^^^^^^^^^^^^^^^ + 118 | self.inputs.append(frame.f_locals[var_name]) + 119 | + at trace_callback() /Users/jakobtherkelsen/Documents/jaseci-ginS/jac/jaclang/runtimelib/gins/tracer.py:117 + at /Users/jakobtherkelsen/Documents/jaseci-ginS/jac/examples/gins_scripts/hot_path.jac:19 +2024-12-05 15:55:37 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 558, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 188}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 188, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 188}]}, {'bb_id': 13, 'freq': 188, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 187}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 187, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 187}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:55:43 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 750, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 380}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 380, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 380}]}, {'bb_id': 13, 'freq': 380, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 379}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 379, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 379}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:56:25 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 555, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 185}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 185, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 185}]}, {'bb_id': 13, 'freq': 185, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 184}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 184, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 184}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:56:31 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 728, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 358}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 358, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 358}]}, {'bb_id': 13, 'freq': 358, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 357}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 357, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 357}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:56:37 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 873, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 503}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 503, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 503}]}, {'bb_id': 13, 'freq': 503, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 502}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 502, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 502}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:56:43 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 996, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 626}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 626, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 626}]}, {'bb_id': 13, 'freq': 626, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 625}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 625, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 625}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:57:13 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 558, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 188}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 188, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 188}]}, {'bb_id': 13, 'freq': 188, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 187}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 187, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 187}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:57:19 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 732, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 362}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 362, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 362}]}, {'bb_id': 13, 'freq': 362, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 361}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 361, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 361}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:57:25 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 878, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 508}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 508, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 508}]}, {'bb_id': 13, 'freq': 508, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 507}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 507, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 507}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:57:31 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 1001, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 1}, {'edge_to_bb_id': 12, 'freq': 630}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 630, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 630}]}, {'bb_id': 13, 'freq': 630, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 630}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 630, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 630}]}, {'bb_id': 15, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 1}]}, {'bb_id': 16, 'freq': 725, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 724}]}, {'bb_id': 17, 'freq': 724, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 724}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:57:36 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 1001, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 1}, {'edge_to_bb_id': 12, 'freq': 630}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 630, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 630}]}, {'bb_id': 13, 'freq': 630, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 630}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 630, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 630}]}, {'bb_id': 15, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 1}]}, {'bb_id': 16, 'freq': 40569, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 40569}]}, {'bb_id': 17, 'freq': 40569, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 40568}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:57:36 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 1001, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 1}, {'edge_to_bb_id': 12, 'freq': 630}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 630, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 630}]}, {'bb_id': 13, 'freq': 630, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 630}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 630, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 630}]}, {'bb_id': 15, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 1}]}, {'bb_id': 16, 'freq': 43557, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 1}, {'edge_to_bb_id': 17, 'freq': 43556}]}, {'bb_id': 17, 'freq': 43556, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 43556}]}, {'bb_id': 18, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:58:15 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 556, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 186}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 186, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 186}]}, {'bb_id': 13, 'freq': 186, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 185}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 185, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 185}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:58:21 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 729, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 359}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 359, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 359}]}, {'bb_id': 13, 'freq': 359, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 358}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 358, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 358}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:58:27 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 868, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 498}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 498, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 498}]}, {'bb_id': 13, 'freq': 498, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 497}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 497, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 497}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:58:33 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 993, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 623}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 623, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 623}]}, {'bb_id': 13, 'freq': 623, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 622}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 622, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 622}]}, {'bb_id': 15, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 16, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}]}, {'bb_id': 17, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 0}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:58:39 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 1001, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 1}, {'edge_to_bb_id': 12, 'freq': 630}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 630, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 630}]}, {'bb_id': 13, 'freq': 630, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 630}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 630, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 630}]}, {'bb_id': 15, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 1}]}, {'bb_id': 16, 'freq': 37418, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 37417}]}, {'bb_id': 17, 'freq': 37417, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 37417}]}, {'bb_id': 18, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} +2024-12-05 15:58:39 - {'cfg_bbs': [{'bb_id': 0, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 2, 'freq': 0}, {'edge_to_bb_id': 1, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 2, 'freq': 1}, {'edge_to_bb_id': 1, 'freq': 0}]}, {'bb_id': 1, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 0}]}, {'bb_id': 2, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 3, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 3, 'freq': 1}]}, {'bb_id': 3, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 5, 'freq': 0}, {'edge_to_bb_id': 4, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 5, 'freq': 1}, {'edge_to_bb_id': 4, 'freq': 0}]}, {'bb_id': 4, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 0}]}, {'bb_id': 5, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 6, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 6, 'freq': 1}]}, {'bb_id': 6, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 7, 'freq': 1}]}, {'bb_id': 7, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 8, 'freq': 0}, {'edge_to_bb_id': 7, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 8, 'freq': 1}, {'edge_to_bb_id': 7, 'freq': 0}]}, {'bb_id': 8, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 1}]}, {'bb_id': 9, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 1}]}, {'bb_id': 10, 'freq': 1001, 'predicted_edges': [{'edge_to_bb_id': 15, 'freq': 0}, {'edge_to_bb_id': 12, 'freq': 0}, {'edge_to_bb_id': 11, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 15, 'freq': 1}, {'edge_to_bb_id': 12, 'freq': 630}, {'edge_to_bb_id': 11, 'freq': 370}]}, {'bb_id': 11, 'freq': 370, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 370}]}, {'bb_id': 12, 'freq': 630, 'predicted_edges': [{'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 13, 'freq': 630}]}, {'bb_id': 13, 'freq': 630, 'predicted_edges': [{'edge_to_bb_id': 14, 'freq': 0}, {'edge_to_bb_id': 13, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 14, 'freq': 630}, {'edge_to_bb_id': 13, 'freq': 0}]}, {'bb_id': 14, 'freq': 630, 'predicted_edges': [{'edge_to_bb_id': 10, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 10, 'freq': 630}]}, {'bb_id': 15, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}, {'edge_to_bb_id': 16, 'freq': 1}]}, {'bb_id': 16, 'freq': 43557, 'predicted_edges': [{'edge_to_bb_id': 18, 'freq': 0}, {'edge_to_bb_id': 17, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 18, 'freq': 1}, {'edge_to_bb_id': 17, 'freq': 43556}]}, {'bb_id': 17, 'freq': 43556, 'predicted_edges': [{'edge_to_bb_id': 16, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 16, 'freq': 43556}]}, {'bb_id': 18, 'freq': 1, 'predicted_edges': [{'edge_to_bb_id': 19, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 19, 'freq': 0}]}, {'bb_id': 19, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}, {'edge_to_bb_id': 20, 'freq': 0}]}, {'bb_id': 20, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 21, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 21, 'freq': 0}]}, {'bb_id': 21, 'freq': 0, 'predicted_edges': [{'edge_to_bb_id': 9, 'freq': 0}], 'actual_edges': [{'edge_to_bb_id': 9, 'freq': 0}]}, {'bb_id': 22, 'freq': 0, 'predicted_edges': [], 'actual_edges': []}]} diff --git a/jac/jaclang/cli/cli.py b/jac/jaclang/cli/cli.py index a16c288443..ebde865689 100644 --- a/jac/jaclang/cli/cli.py +++ b/jac/jaclang/cli/cli.py @@ -23,11 +23,12 @@ from jaclang.plugin.feature import JacFeature as Jac from jaclang.runtimelib.constructs import WalkerArchitype from jaclang.runtimelib.context import ExecutionContext -from jaclang.runtimelib.machine import JacMachine, JacProgram +from jaclang.runtimelib.machine import JacMachine, JacProgram, ShellGhost from jaclang.utils.helpers import debugger as db from jaclang.utils.lang_tools import AstTool + Cmd.create_cmd() Jac.setup() @@ -72,7 +73,7 @@ def format_file(filename: str) -> None: @cmd_registry.register def run( - filename: str, session: str = "", main: bool = True, cache: bool = True + filename: str, session: str = "", main: bool = True, cache: bool = True, gins: bool = False ) -> None: """Run the specified .jac file.""" # if no session specified, check if it was defined when starting the command shell @@ -89,8 +90,9 @@ def run( base, mod = os.path.split(filename) base = base if base else "./" mod = mod[:-4] - jctx = ExecutionContext.create(session=session) + if gins: + JacMachine(base).attach_gin(ShellGhost()) if filename.endswith(".jac"): try: @@ -509,7 +511,6 @@ def jac2py(filename: str) -> None: else: print("Not a .jac file.", file=sys.stderr) - def start_cli() -> None: """ Start the command line interface. @@ -539,4 +540,4 @@ def start_cli() -> None: if __name__ == "__main__": - start_cli() + start_cli() \ No newline at end of file diff --git a/jac/jaclang/compiler/passes/cfg_to_delete.py b/jac/jaclang/compiler/passes/cfg_to_delete.py new file mode 100644 index 0000000000..3e19d6d760 --- /dev/null +++ b/jac/jaclang/compiler/passes/cfg_to_delete.py @@ -0,0 +1,218 @@ +from __future__ import annotations + +import dis +import sys +import types +from collections import defaultdict +import asyncio +from typing import Dict, Set, List, Tuple, Optional + + +class CFGNode: + def __init__(self, offset: int, instructions: List[dis.Instruction]): + self.offset = offset + self.instructions = instructions + self.next: List['CFGNode'] = [] + self.hits = 0 # Track number of times this node is executed + + def __repr__(self): + return f"Node({self.offset})" + + +class CFGTracker: + def __init__(self): + self.cfg_cache: Dict[types.CodeType, Dict[int, CFGNode]] = {} + self.coverage_data: Dict[types.CodeType, + Set[Tuple[int, int]]] = defaultdict(set) + + def instruction_sizes(self, instructions: List[dis.Instruction]) -> Dict[int, int]: + """Calculate the size of each instruction""" + sizes = {} + for i, inst in enumerate(instructions): + if i + 1 < len(instructions): + sizes[inst.offset] = instructions[i + 1].offset - inst.offset + else: + # Last instruction, assume size 1 for simplicity + sizes[inst.offset] = 1 + return sizes + + def build_cfg(self, code: types.CodeType) -> Dict[int, CFGNode]: + """Build CFG from bytecode""" + if code in self.cfg_cache: + return self.cfg_cache[code] + + # Get bytecode instructions + instructions = list(dis.get_instructions(code)) + instruction_sizes = self.instruction_sizes(instructions) + + # Find basic block boundaries + leaders = {0} # First instruction is always a leader + for i, inst in enumerate(instructions): + if inst.opname in {'JUMP_ABSOLUTE', 'JUMP_FORWARD', 'POP_JUMP_IF_TRUE', + 'POP_JUMP_IF_FALSE', 'JUMP_IF_TRUE_OR_POP', + 'JUMP_IF_FALSE_OR_POP'}: + leaders.add(inst.argval) # Target of jump + if i + 1 < len(instructions): + # Instruction after jump + leaders.add(instructions[i + 1].offset) + + # Create basic blocks + blocks: Dict[int, CFGNode] = {} + current_block: List[dis.Instruction] = [] + current_leader = 0 + + for inst in instructions: + if inst.offset in leaders and current_block: + blocks[current_leader] = CFGNode(current_leader, current_block) + current_block = [] + current_leader = inst.offset + current_block.append(inst) + + if current_block: + blocks[current_leader] = CFGNode(current_leader, current_block) + + # Connect blocks + for offset, block in blocks.items(): + last_inst = block.instructions[-1] + + if last_inst.opname in {'JUMP_ABSOLUTE', 'JUMP_FORWARD'}: + block.next.append(blocks[last_inst.argval]) + elif last_inst.opname in {'POP_JUMP_IF_TRUE', 'POP_JUMP_IF_FALSE', + 'JUMP_IF_TRUE_OR_POP', 'JUMP_IF_FALSE_OR_POP'}: + block.next.append(blocks[last_inst.argval]) # Branch target + if offset + instruction_sizes[offset] < instructions[-1].offset: + # Find next instruction's block + next_offset = offset + instruction_sizes[offset] + while next_offset not in blocks: + next_offset += 1 + block.next.append(blocks[next_offset]) # Fall-through + elif offset + instruction_sizes[offset] < instructions[-1].offset: + # Sequential flow + next_offset = offset + instruction_sizes[offset] + while next_offset not in blocks: + next_offset += 1 + block.next.append(blocks[next_offset]) + + self.cfg_cache[code] = blocks + return blocks + + def trace_callback(self, frame: types.FrameType, event: str, arg: any): + """Trace function to track executed branches""" + if event != 'line': + return self.trace_callback + + code = frame.f_code + if code not in self.cfg_cache: + self.build_cfg(code) + + # Find current basic block + blocks = self.cfg_cache[code] + current_offset = frame.f_lasti + + # Find the block containing this offset + current_block = None + for block in blocks.values(): + if block.offset <= current_offset < block.offset + sum(self.instruction_sizes(block.instructions).values()): + current_block = block + break + + if current_block: + current_block.hits += 1 + # Record taken branches + for next_block in current_block.next: + self.coverage_data[code].add( + (current_block.offset, next_block.offset)) + + return self.trace_callback + + def start_tracking(self): + """Start tracking branch coverage""" + sys.settrace(self.trace_callback) + + def stop_tracking(self): + """Stop tracking branch coverage""" + sys.settrace(None) + + def get_coverage_report(self, code: types.CodeType) -> str: + """Generate coverage report for the given code object""" + if code not in self.cfg_cache: + return "No coverage data available" + + blocks = self.cfg_cache[code] + taken_branches = self.coverage_data[code] + + # Calculate total possible branches + total_branches = sum(len(block.next) for block in blocks.values()) + covered_branches = len(taken_branches) + + report = [] + report.append(f"Branch Coverage: {covered_branches}/{total_branches} " + f"({covered_branches/total_branches*100:.1f}%)") + + # Report uncovered branches + uncovered = [] + for block in blocks.values(): + for next_block in block.next: + if (block.offset, next_block.offset) not in taken_branches: + uncovered.append((block.offset, next_block.offset)) + + if uncovered: + report.append("\nUncovered branches:") + for src, dst in sorted(uncovered): + report.append(f" {src} -> {dst}") + + return "\n".join(report) + + def visualize_cfg(self, code: types.CodeType, filename: str = 'cfg'): + """Generate a visual representation of the CFG using graphviz""" + if code not in self.cfg_cache: + self.build_cfg(code) + + dot = graphviz.Digraph(comment='Control Flow Graph') + blocks = self.cfg_cache[code] + taken_branches = self.coverage_data[code] + + # Add nodes + for block in blocks.values(): + label = f"Offset: {block.offset}\nHits: {block.hits}\n" + label += "\n".join(str(inst) for inst in block.instructions) + dot.node(str(block.offset), label) + + # Add edges + for block in blocks.values(): + for next_block in block.next: + color = 'green' if ( + block.offset, next_block.offset) in taken_branches else 'red' + dot.edge(str(block.offset), str( + next_block.offset), color=color) + + # Save the visualization + dot.render(filename, view=True) + +# Example usage + + +def example_function(x: int) -> int: + if x > 0: + if x % 2 == 0: + return x * 2 + else: + return x * 3 + return x + + +# Create tracker and start tracking +tracker = CFGTracker() +tracker.start_tracking() + +# Run some test cases +example_function(4) +example_function(3) +example_function(0) + +# Stop tracking and get report +tracker.stop_tracking() +print(tracker.get_coverage_report(example_function.__code__)) + +# Visualize the CFG +tracker.visualize_cfg(example_function.__code__, 'example_cfg') \ No newline at end of file diff --git a/jac/jaclang/compiler/passes/main/__init__.py b/jac/jaclang/compiler/passes/main/__init__.py index 8d755983f7..e828d08967 100644 --- a/jac/jaclang/compiler/passes/main/__init__.py +++ b/jac/jaclang/compiler/passes/main/__init__.py @@ -11,6 +11,7 @@ from .schedules import py_code_gen # noqa: I100 from .type_check_pass import JacTypeCheckPass # noqa: I100 from .registry_pass import RegistryPass # noqa: I100 +from .cfg_gen_pass import CfgGenPass # noqa: I100 pass_schedule = py_code_gen # type: ignore[has-type] @@ -27,4 +28,5 @@ "PyastGenPass", "JacTypeCheckPass", "RegistryPass", + "CfgGenPass", ] diff --git a/jac/jaclang/compiler/passes/main/cfg_gen_pass.py b/jac/jaclang/compiler/passes/main/cfg_gen_pass.py new file mode 100644 index 0000000000..fb1df7942f --- /dev/null +++ b/jac/jaclang/compiler/passes/main/cfg_gen_pass.py @@ -0,0 +1,146 @@ +"""Genrate a control flow graph from genarated bytecode. + +This pass generates a control flow graph from the bytecode generated by the previous pass. +""" + +import ast + +import jaclang.compiler.absyntree as ast +from jaclang.compiler.passes import Pass +from jaclang.runtimelib.gins.cfg import visualize_cfg, disassemble_bytecode, create_BBs, create_cfg + +class CfgGenPass(Pass): + """Control flow graph generation pass.""" + + def before_pass(self) -> None: + """Before pass.""" + return super().before_pass() + + def enter_module(self, node: ast.Module) -> None: + """Sub objects. + + name: str, + doc: Token, + body: Optional['Elements'], + mod_path: str, + is_imported: bool, + sym_tab: Optional[SymbolTable], + """ + + from jaclang.runtimelib.machine import JacMachine + if JacMachine.get().gin: + mods = [node] + self.get_all_sub_nodes(node, ast.Module) + module_cfgs = {} + for mod in mods: + bytecode = mod.gen.py_bytecode + instructions = disassemble_bytecode(bytecode) + BBs = create_BBs(instructions) + cfg = create_cfg(BBs) + module_cfgs[mod.name] = cfg + # for cfg in module_cfgs.values(): + # dot = visualize_cfg(cfg) + # dot.render(f'cfg_{mod.name}.gv', view=True) + if JacMachine.get().gin: + try: + JacMachine.get().gin.set_cfgs(cfgs=module_cfgs) + except Exception as e: + print(f"Can't save cfgs: {e}") + + # cfg, block_map, edges = extract_cfg_from_instructions(instructions) + # module_cfgs[mod.name] = build_cfg_graph(cfg, block_map, edges) + # for module_name, cfg_graph in module_cfgs.items(): + # print(f"Control Flow Graph for {module_name}:") + # nx.draw(cfg_graph, with_labels=True) + # plt.title("Control Flow Graph") + # plt.show() + # plt.savefig(f"{module_name}_cfg.png") + + +# def disassemble_bytecode(bytecode): +# code_object = marshal.loads(bytecode) +# instructions = list(dis.get_instructions(code_object)) +# print(f"Disassembled bytecode for {code_object.co_name}:") +# print( +# "\n".join( +# [f"{instr.offset}: {instr.opname} {instr.argval}" for instr in instructions] +# ) +# ) +# return instructions + + +# def extract_cfg_from_instructions(instructions): +# cfg = defaultdict(list) +# current_block = [] +# block_id = 0 +# block_map = {} # Maps instruction offsets to blocks +# edges = {} + +# for instr in instructions: +# current_block.append(instr) +# if instr.opname in { +# "JUMP_ABSOLUTE", +# "JUMP_FORWARD", +# "POP_JUMP_IF_TRUE", +# "POP_JUMP_IF_FALSE", +# "JUMP_IF_TRUE_OR_POP", +# "JUMP_IF_FALSE_OR_POP", +# }: +# cfg[block_id] = current_block +# block_map[instr.offset] = block_id +# target = ( +# instr.offset + instr.argval + 2 +# if instr.opname == "JUMP_FORWARD" +# else instr.argval +# ) +# edges[block_id] = target +# block_id += 1 + +# # Update edges to use block numbers instead of offsets +# for block_id, target_offset in edges.items(): +# if target_offset in block_map: +# edges[block_id] = block_map[target_offset] +# else: +# print(f"Warning: Target offset {target_offset} not found in block_map") +# print(edges) +# return cfg, block_map, edges + + +# def build_cfg_graph(cfg, block_map, edges): +# graph = nx.DiGraph() + +# for block_id, instructions in cfg.items(): +# print(f"Block ID {block_id}:") +# print( +# "\n".join( +# [ +# f"{instr.offset}: {instr.opname} {instr.argval}" +# for instr in instructions +# ] +# ) +# ) +# graph.add_node(block_id, instructions=instructions) +# last_instruction = instructions[-1] if instructions else None + +# # Verify last_instruction is valid and has 'opname' attribute +# if last_instruction and hasattr(last_instruction, "opname"): +# if ( +# "JUMP" in last_instruction.opname +# and last_instruction.argval in block_map +# ): +# target_block = block_map[last_instruction.offset] +# graph.add_edge(block_id, target_block) +# else: +# print( +# f"Warning: Block ID {block_id} does not have a valid jump target or last instruction" +# ) +# return graph + + +# def generate_module_cfg(modules): +# module_cfgs = {} +# for mod in modules: +# bytecode = mod.gen.py_bytecode +# instructions = disassemble_bytecode(bytecode) +# cfg, block_map, edges = extract_cfg_from_instructions(instructions) +# module_cfgs[mod.name] = build_cfg_graph(cfg, block_map, edges) +# return module_cfgs diff --git a/jac/jaclang/compiler/passes/main/schedules.py b/jac/jaclang/compiler/passes/main/schedules.py index 0ac604fa9b..71c1b52f01 100644 --- a/jac/jaclang/compiler/passes/main/schedules.py +++ b/jac/jaclang/compiler/passes/main/schedules.py @@ -20,6 +20,7 @@ from .registry_pass import RegistryPass # noqa: I100 from .access_modifier_pass import AccessCheckPass # noqa: I100 from .py_collect_dep_pass import PyCollectDepsPass # noqa: I100 +from .cfg_gen_pass import CfgGenPass # noqa: I100 py_code_gen = [ SubNodeTabPass, @@ -31,6 +32,7 @@ PyastGenPass, PyJacAstLinkPass, PyBytecodeGenPass, + CfgGenPass, ] type_checker_sched = [ diff --git a/jac/jaclang/runtimelib/gins/__init__.py b/jac/jaclang/runtimelib/gins/__init__.py new file mode 100644 index 0000000000..ab33b08fb8 --- /dev/null +++ b/jac/jaclang/runtimelib/gins/__init__.py @@ -0,0 +1 @@ +"""Core primitives for Jaseci for GINS feature.""" diff --git a/jac/jaclang/runtimelib/gins/cfg.py b/jac/jaclang/runtimelib/gins/cfg.py new file mode 100644 index 0000000000..452517872c --- /dev/null +++ b/jac/jaclang/runtimelib/gins/cfg.py @@ -0,0 +1,319 @@ +"""CFG generation primitives for generating a CFG in jaclang passes. +""" + +import marshal +import dis +from collections import defaultdict +from typing import List, Optional, Iterator + + +class BytecodeOp: + def __init__( + self, + op: int, + arg: int, + offset: int, + argval: int, + argrepr: str, + is_jump_target: bool, + ) -> None: + self.op = op + self.arg = arg + self.offset = offset + self.argval = argval + self.argrepr = argrepr + self.is_jump_target = is_jump_target + # default the offset + self.__offset_size = 0 + + def __repr__(self): + return f"Instr: offset={self.offset}, Opname={self.op}, arg={self.arg}, argval={self.argval}, argrepr={self.argrepr}, jump_t={self.is_jump_target}" + + def is_branch(self) -> bool: + return self.op in { + "JUMP_ABSOLUTE", + "JUMP_FORWARD", + "JUMP_BACKWARD", + "POP_JUMP_IF_TRUE", + "POP_JUMP_IF_FALSE", + "JUMP_IF_TRUE_OR_POP", + "JUMP_IF_FALSE_OR_POP", + } + + def is_conditional_branch(self) -> bool: + return self.op in { + # TODO:These may not be used anymore? + "JUMP_IF_TRUE_OR_POP", + "JUMP_IF_FALSE_OR_POP", + "POP_JUMP_IF_TRUE", + "POP_JUMP_IF_FALSE", + } + + def is_relative_branch(self) -> bool: + return False + + def is_return(self) -> bool: + return self.op == "RETURN_VALUE" + + def is_raise(self) -> bool: + return self.op == "RAISE_VARARGS" + + def is_for_iter(self) -> bool: + return self.op == "FOR_ITER" + + def set_offset_size(self, size) -> None: + self.__offset_size = size + + def get_offset_size(self) -> int: + return self.__offset_size + + def get_next_instruction_offset(self) -> int: + return self.__offset_size + self.offset + + +class Block: + def __init__(self, id: int, instructions: List): + self.id: int = id + self.instructions = instructions + self.exec_count = 0 + # Potentially use offset instead + self.bytecode_offsets = set( + [instr.offset for instr in self.instructions if instr.offset != None] + ) + + def __repr__(self): + instructions = "\n".join([str(instr) for instr in self.instructions]) + return f"bb{self.id}:\n{instructions}" + + +class BlockMap: + def __init__(self) -> None: + self.idx_to_block: Dict[int, Block] = {} + + def add_block(self, idx, block): + self.idx_to_block[idx] = block + + def __repr__(self) -> str: + result = [] + for block in self.idx_to_block.values(): + result.append(repr(block)) + return "\n".join(result) + + def __str__(self) -> str: + return self.__repr__() + + +def disassemble_bytecode(bytecode): + code_object = marshal.loads(bytecode) + instructions = [] + for i, instr in enumerate(dis.get_instructions(code_object)): + instructions.append( + BytecodeOp( + op=instr.opname, + arg=instr.arg, + offset=instr.offset, + argval=instr.argval, + argrepr=instr.argrepr, + is_jump_target=instr.is_jump_target, + ) + ) + # set offest size for calculating next instruction + # last instruction is default of 0, but shouldn't be needed + if i != 0: + instruction = instructions[i - 1] + instruction.set_offset_size(instr.offset - instructions[i - 1].offset) + return instructions + + +def create_BBs(instructions: List[BytecodeOp]) -> BlockMap: + block_starts = set([0]) + block_map = BlockMap() + num_instr = len(instructions) + + # Create offset to index mapping + offset_to_index = {instr.offset: idx for idx, instr in enumerate(instructions)} + max_offset = instructions[-1].get_next_instruction_offset() + # print(f"Offset to Index Mapping: {offset_to_index}") + + def valid_offset(offset): + return offset >= 0 and offset <= max_offset + + # Identify all block starts + for instr in instructions: + if instr.is_branch() or instr.is_for_iter(): + next_instr_offset = instr.get_next_instruction_offset() + target_offset = instr.argval + + if instr.is_for_iter(): + block_starts.add(instr.offset) + elif valid_offset(next_instr_offset): + block_starts.add(next_instr_offset) + + if valid_offset(target_offset): + block_starts.add(target_offset) + + # identify the blocks, since we define BBs by jumps, a sorted list of those + # instructions give a range for instructions each BB will hold + block_starts_ordered = sorted(block_starts) + for block_id, start_offset in enumerate(block_starts_ordered): + end_offset = ( + block_starts_ordered[block_id + 1] + if block_id + 1 < len(block_starts_ordered) + else instructions[-1].get_next_instruction_offset() + ) + start_index = offset_to_index[start_offset] + end_index = offset_to_index[end_offset] + + # capture last instruction if the BB only has 1 + if start_index == end_index: + end_index += 1 + + # Collect instructions for this block + block_instrs = instructions[start_index:end_index] + block_map.add_block(block_id, Block(block_id, block_instrs)) + return block_map + + +class CFG: + def __init__(self, block_map: BlockMap): + self.nodes = set() + self.edges = {} + self.edge_counts = {} + self.block_map = block_map + + def add_node(self, node_id): + self.nodes.add(node_id) + if node_id not in self.edges: + self.edges[node_id] = [] + + def add_edge(self, from_node, to_node): + if from_node in self.edges: + self.edges[from_node].append(to_node) + else: + self.edges[from_node] = to_node + + self.edge_counts[(from_node, to_node)] = 0 + + def display_instructions(self): + return repr(self.block_map) + + def get_cfg_repr(self): + return self.__repr__() + + def to_json(self): + obj = {'cfg_bbs':[]} + for node in self.nodes: + bb_obj = { + 'bb_id': node, + 'freq':self.block_map.idx_to_block[node].exec_count, + 'predicted_edges':[], + 'actual_edges':[] + } + if node in self.edges and self.edges[node]: + for succ in self.edges[node]: + edge_placeholder = {'edge_to_bb_id':succ,'freq': 0} + bb_obj['predicted_edges'].append(edge_placeholder) + edge_obj = {'edge_to_bb_id':succ,'freq': self.edge_counts[(node, succ)]} + bb_obj['actual_edges'].append(edge_obj) + obj['cfg_bbs'].append(bb_obj) + return obj + + def __repr__(self): + result = [] + for node in self.nodes: + result.append( + f"Node bb{node} (freq={self.block_map.idx_to_block[node].exec_count}):" + ) + if node in self.edges and self.edges[node]: + for succ in self.edges[node]: + result.append(f"(freq={self.edge_counts[(node, succ)]})-> bb{succ}") + return "\n".join(result) + + +def create_cfg(block_map: BlockMap) -> CFG: + cfg = CFG(block_map) + + for block_id, block in block_map.idx_to_block.items(): + cfg.add_node(block_id) + + first_instr = block.instructions[0] + last_instr = block.instructions[-1] + if first_instr.is_for_iter(): + # get the BB that starts with END_FOR + end_for_offset = first_instr.argval + end_for_block = find_block_by_offset(block_map, end_for_offset) + if end_for_block is not None: + cfg.add_edge(block_id, end_for_block) + + # handle jumps + if last_instr.is_branch(): + target_offset = last_instr.argval + target_block = find_block_by_offset(block_map, target_offset) + if target_block is not None: + cfg.add_edge(block_id, target_block) + if last_instr.is_conditional_branch(): + fall_through_offset = block.instructions[ + -1 + ].get_next_instruction_offset() + fall_through_block = find_block_by_offset( + block_map, fall_through_offset + ) + if fall_through_block is not None: + cfg.add_edge(block_id, fall_through_block) + + # handle fall-through to the next block for non-control flow instructions + else: + fall_through_offset = block.instructions[-1].get_next_instruction_offset() + fall_through_block = find_block_by_offset(block_map, fall_through_offset) + if ( + fall_through_block is not None + and fall_through_offset != last_instr.offset + ): + cfg.add_edge(block_id, fall_through_block) + + return cfg + + +def find_block_by_offset(block_map: BlockMap, offset: int) -> int: + for block_id, block in block_map.idx_to_block.items(): + if any(instr.offset == offset for instr in block.instructions): + return block_id + return None + + +def visualize_cfg(cfg: CFG): + try: + from graphviz import Digraph + + dot = Digraph(comment="Control Flow Graph") + for node in cfg.nodes: + dot.node(f"bb{node}", f"BB{node}") + for from_node, to_nodes in cfg.edges.items(): + for to_node in to_nodes: + dot.edge(f"bb{from_node}", f"bb{to_node}") + return dot + except ImportError: + print("Graphviz not installed, can't visualize CFG") + return None + + +# can use as a test + +# if __name__ == "__main__": +# # Sample list of instructions for processing +# ##simple= +# # instructions = disassemble_bytecode(b'c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x01\xf3*\x00\x00\x00\x97\x00d\x00d\x01l\x00m\x01Z\x01\x01\x00d\x00Z\x02d\x00Z\x03e\x03d\x00k\\\x00\x00r\x02d\x02Z\x02d\x03Z\x02y\x04)\x05\xe9\x00\x00\x00\x00)\x01\xda\x0bannotations\xe9\x01\x00\x00\x00\xe9\xff\xff\xff\xffN)\x04\xda\n__future__r\x02\x00\x00\x00\xda\x01a\xda\x01x\xa9\x00\xf3\x00\x00\x00\x00\xfaP/Users/jakobtherkelsen/Documents/jaseci-ginS/jac/examples/ginsScripts/simple.jac\xfa\x08r\x0b\x00\x00\x00\x01\x00\x00\x00s%\x00\x00\x00\xf0\x03\x01\x01\x01\xf5\x02\x07\x02\x03\xd8\x05\x06\x801\xd8\x05\x06\x801\xd8\x06\x07\x881\x82f\xd8\x07\x08\x80Q\xe0\x05\x07\x811r\t\x00\x00\x00') +# # hot path +# instructions = disassemble_bytecode( +# b"c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x01\xf3\xa4\x00\x00\x00\x97\x00U\x00d\x00d\x01l\x00m\x01Z\x01\x01\x00d\x00Z\x02d\x02e\x03d\x03<\x00\x00\x00d\x04Z\x04d\x02e\x03d\x05<\x00\x00\x00e\x02e\x04z\x00\x00\x00Z\x05d\x02e\x03d\x06<\x00\x00\x00\x02\x00e\x06d\x04\xab\x01\x00\x00\x00\x00\x00\x00D\x00]\x1c\x00\x00Z\x07e\x02d\x07z\x06\x00\x00r\ne\x04e\x02z\x00\x00\x00Z\x04e\x02e\x04z\x00\x00\x00Z\x05d\x08e\x07z\x05\x00\x00e\x04e\x05z\x05\x00\x00z\x00\x00\x00Z\x02\x8c\x1e\x04\x00d\tZ\x05e\x05d\tk(\x00\x00r\x03d\x08Z\x05y\ny\n)\x0b\xe9\x00\x00\x00\x00)\x01\xda\x0bannotations\xda\x03int\xda\x01x\xe9\x03\x00\x00\x00\xda\x01y\xda\x01z\xe9\x02\x00\x00\x00\xe9\x04\x00\x00\x00\xe9\n\x00\x00\x00N)\x08\xda\n__future__r\x02\x00\x00\x00r\x04\x00\x00\x00\xda\x0f__annotations__r\x06\x00\x00\x00r\x07\x00\x00\x00\xda\x05range\xda\x01i\xa9\x00\xf3\x00\x00\x00\x00\xfaU/Users/jakobtherkelsen/Documents/jaseci-ginS/jac/examples/gins_scripts/simple_for.jac\xda\x08r\x12\x00\x00\x00\x01\x00\x00\x00sy\x00\x00\x00\xf0\x03\x01\x01\x01\xf6\x02\x0f\x02\x03\xd8\r\x0e\x80Q\x80s\x83Z\xd8\r\x0e\x80Q\x80s\x83Z\xd8\r\x0e\x90\x11\x89U\x80Q\x80s\x83^\xd9\x0e\x13\x90A\x8eh\x88\x11\xd8\n\x0b\x88a\x8a%\xd8\r\x0e\x90\x11\x89U\x88\x11\xd8\r\x0e\x90\x11\x89U\x88\x11\xe0\x0b\x0c\x88q\x895\x901\x98\x01\x917\x89?\x81q\xf0\x0b\x00\x0f\x17\xf0\x0e\x00\n\x0c\x80Q\xd8\x08\t\x88R\x8a\x07\xd8\n\x0b\x81q\xf0\x03\x00\t\x10r\x10\x00\x00\x00" +# ) +# BBs = create_BBs(instructions) +# print(BBs) + +# cfg = create_cfg(BBs) +# print("\nControl Flow Graph (CFG):") +# print(cfg) + +# # Visualize CFG +# dot = visualize_cfg(cfg) +# dot.render("cfg.gv", view=True) diff --git a/jac/jaclang/runtimelib/gins/ghost.py b/jac/jaclang/runtimelib/gins/ghost.py new file mode 100644 index 0000000000..1f2241b7f2 --- /dev/null +++ b/jac/jaclang/runtimelib/gins/ghost.py @@ -0,0 +1,382 @@ +"""The Shell Ghost code for gins +""" + +import os +import threading +import time +import logging + +from jaclang.runtimelib.gins.model import Gemini +from jaclang.runtimelib.gins.tracer import CFGTracker, CfgDeque + + +# Helper class to maintain a fixed deque size + + +class ShellGhost: + def __init__(self): + self.cfgs = None + self.cfg_cv = threading.Condition() + self.tracker = CFGTracker() + self.sem_ir = None + + self.finished_exception_lock = threading.Lock() + self.exception = None + self.finished = False + self.variable_values = None + + self.model = Gemini() + + self.deque_lock = threading.Lock() + self.__cfg_deque_dict = dict() + self.__cfg_deque_size = 10 + + self.logger = logging.getLogger() + if self.logger.hasHandlers(): + self.logger.handlers.clear() + logging.basicConfig( + level=logging.INFO, # Set the log level + format='%(asctime)s - %(message)s', # Set the log message format + datefmt='%Y-%m-%d %H:%M:%S', # Set the timestamp format + handlers=[ + logging.FileHandler("test.txt", mode='a'), # Log to a file in append mode + ] + ) + + + def set_cfgs(self, cfgs): + self.cfg_cv.acquire() + self.cfgs = cfgs + self.cfg_cv.notify() + self.cfg_cv.release() + + def update_cfg_deque(self, cfg, module): + self.deque_lock.acquire() + if module not in self.__cfg_deque_dict: + self.__cfg_deque_dict[module] = CfgDeque(self.__cfg_deque_size) + self.__cfg_deque_dict[module].add_cfg(cfg) + self.deque_lock.release() + + def get_cfg_deque_repr(self): + return self.__cfg_deque.display_cfgs() + + def start_ghost(self): + self.__ghost_thread = threading.Thread(target=self.worker) + self.__ghost_thread.start() + + def set_finished(self, exception: Exception = None): + self.finished_exception_lock.acquire() + self.exception = exception + self.finished = True + self.finished_exception_lock.release() + + def prompt_direct(self): + script = """ + import:py from math { exp } + import:py from time { sleep } + # Data structure representing system configuration + glob system_config: Dict[str, Union[int, str, float]] = { + 'base_load': 1000, # Base power load in watts + 'min_duration': 10, # Minimum valid duration in minutes + 'mode': 'active', + 'time_step': 0, # Track progression of simulation + 'reference_delta': 200 # Reference power delta for normalization + }; + + # Function to generate declining power readings + with entry { + # Create gradually converging power readings + base: float = system_config['base_load']; + power_readings: list[float] = []; + time_periods: list[int] = []; + reference_power: float = base + 200;# Reference power for normalization + + # Generate 200 readings that gradually approach base_load + for i in range(200) { + # Power gradually approaches base_load (1000W) + delta: float = 200.0 * exp(-0.5 * i);# Slower decay for better visualization + current_power: float = base + delta; + power_readings.append(current_power); + + # Time periods increase linearly + time_periods.append(15 + i * 2); + } + + # Initialize results storage + + efficiency_metrics: list = []; + total_operational_time: int = 0; + + # Process each power reading with different execution paths + for (idx, current_power) in enumerate(power_readings) { + if system_config['mode'] != 'active' { + continue; + } + + duration: int = time_periods[idx]; + if duration < system_config['min_duration'] { + continue; + } + + # Track simulation progression + + system_config['time_step'] += 1; + + power_delta: float = current_power - system_config['base_load']; + + # Introduce different execution paths based on time_step + if system_config['time_step'] > 50 { + diminishing_reference: float = power_delta * 2; # Reference point approaches zero with power_delta + power_utilization: float = power_delta / diminishing_reference; # Approaches 0.5, then unstable + } else { + # Original calculation path for first 10 steps + power_utilization: float = power_delta / system_config['reference_delta']; + } + period_efficiency: float = power_utilization * (duration / max(time_periods)) * 100; + + efficiency_metrics.append(period_efficiency); + total_operational_time += duration; + + # Print current state + print( + f"Step {system_config['time_step']}: Power={current_power}W, " + f"Delta from base={current_power - system_config['base_load']}W" + ); + } + + # Calculate final metrics if no error occurred + + average_efficiency: float = sum(efficiency_metrics) / len(efficiency_metrics) if efficiency_metrics else 0; + operational_hours: float = total_operational_time / 60; + print( + f"System Analysis Complete - Efficiency: {average_efficiency}%" + ); + + } + + """ + prompt = f""" + I have the following script: + {script} + + Can you identity bottlneck optimizations or where the code can error out?" + Reason about the program using the provided information, reason about the program itself and what improvements could be made. + """ + + response = self.model.generate(prompt) + + print("\nGin Analysis(With static info):\n", response) + + def prompt_llm(self, verbose: bool = False): + prompt = """I have a program. + {cfgs}, + Instructions per basic block: + {instructions} + Semantic and Type information from source code: + {sem_ir}""" + + cfg_string = "" + ins_string = "" + for module, cfg in self.cfgs.items(): + cfg_string += f"Module: {module}\n{cfg}" + ins_string += f"Module: {module}\n{cfg.display_instructions()}" + + prompt = prompt.format( + cfgs=cfg_string, instructions=ins_string, sem_ir=self.sem_ir.pp() + ) + + if self.variable_values != None: + prompt += "\nCurrent variable values at the specified bytecode offset:" + + for module, var_map in self.variable_values.items(): + prompt += f"\nModule {module}: Offset: {var_map[0]}, Variables: {str(var_map[1])}" + + self.finished_exception_lock.acquire() + + if self.exception: + prompt += f"\nException: {self.exception}" + + self.finished_exception_lock.release() + + # prompt += "\nCan you identity bottlneck optimizations or where the code can error out?" + # prompt += "\n(Reason about the program using cfg, semantic and type information. Instead of saying what BB could be improved, reason about the program itself and what improvements could be made.)" + # prompt += "\n If variable values are available, reason about at what point did a variable cause an issue" + prompt += "\n Please use the following information fill in predicted_edges[freq] for each BB edge with something completely random" + if verbose: + print(prompt) + + response = self.model.generate(prompt) + + print("\nGin Analysis:\n", response) + return response + + def prompt_llm_with_history(self, verbose: bool = False): + prompt = """I have a program. + Up to last {history_size} CFGs recorded: + {cfgs}, + Instructions per basic block: + {instructions} + Semantic and Type information from source code: + {sem_ir}""" + + cfg_string = "" + ins_string = "" + for module, cfg in self.cfgs.items(): + cfg_history = "None at this time" + if module in self.__cfg_deque_dict: + cfg_history = self.__cfg_deque_dict[module].get_cfg_repr() + cfg_string += f"Module: {module}\n{cfg_history}" + ins_string += f"Module: {module}\n{cfg.display_instructions()}" + + prompt = prompt.format( + history_size=self.__cfg_deque_size, + cfgs=cfg_string, + instructions=ins_string, + sem_ir=self.sem_ir.pp() + ) + + if self.variable_values != None: + prompt += "\nCurrent variable values at the specified bytecode offset:" + + for module, var_map in self.variable_values.items(): + prompt += f"\nModule {module}: Offset: {var_map[0]}, Variables: {str(var_map[1])}" + + self.finished_exception_lock.acquire() + + if self.exception: + prompt += f"\nException: {self.exception}" + + self.finished_exception_lock.release() + + prompt += "\nCan you identity bottlneck optimizations or where the code can error out?" + prompt += "\n(Reason about the program using cfg history, semantic and type information. Users will not have access to BB information, so try to reason about the logic and frequencies of blocks instead.)" + prompt += "\n Additionally, look for any cases where the hot path of the code appears to change at some point in the program" + prompt += "\n If variable values are available, can you provide tracing information to help find the root cause of any issues?" + + if verbose: + print(prompt) + + response = self.model.generate(prompt) + + + return response + def prompt_for_runtime(self, verbose: bool = False): + prompt = """I have a program. + Up to last {history_size} CFGs recorded: + {cfgs}, + Instructions per basic block: + {instructions} + Semantic and Type information from source code: + {sem_ir}""" + + cfg_string = "" + ins_string = "" + for module, cfg in self.cfgs.items(): + cfg_history = "None at this time" + if module in self.__cfg_deque_dict: + cfg_history = self.__cfg_deque_dict[module].get_cfg_repr() + cfg_string += f"Module: {module}\n{cfg_history}" + ins_string += f"Module: {module}\n{cfg.display_instructions()}" + + prompt = prompt.format( + history_size=self.__cfg_deque_size, + cfgs=cfg_string, + instructions=ins_string, + sem_ir=self.sem_ir.pp() + ) + + if self.variable_values != None: + prompt += "\nCurrent variable values at the specified bytecode offset:" + + for module, var_map in self.variable_values.items(): + prompt += f"\nModule {module}: Offset: {var_map[0]}, Variables: {str(var_map[1])}" + + prompt+="\n given this information, what is the program behavior? Please express this in short bullets" + response = self.model.generate(prompt) + return response + def worker(self): + # get static cfgs + self.cfg_cv.acquire() + if self.cfgs == None: + print("waiting") + self.cfg_cv.wait() + # for module_name, cfg in self.cfgs.items(): + # print(f"Name: {module_name}") + self.cfg_cv.release() + + # Once cv has been notifie, self.cfgs is no longer accessed across threads + current_executing_bbs = {} + + def update_cfg(): + exec_insts = self.tracker.get_exec_inst() + + # don't prompt if there's nothing new + if exec_insts == {}: + return + + for module, offset_list in exec_insts.items(): + try: + cfg = self.cfgs[module] + + if ( + module not in current_executing_bbs + ): # this means start at bb0, set exec count for bb0 to 1 + current_executing_bbs[module] = 0 + cfg.block_map.idx_to_block[0].exec_count = 1 + + for offset in offset_list: + if ( + offset + not in cfg.block_map.idx_to_block[ + current_executing_bbs[module] + ].bytecode_offsets + ): + for next_bb in cfg.edges[current_executing_bbs[module]]: + if ( + offset + in cfg.block_map.idx_to_block[ + next_bb + ].bytecode_offsets + ): + cfg.edge_counts[ + (current_executing_bbs[module], next_bb) + ] += 1 + # do some deque op + cfg.block_map.idx_to_block[next_bb].exec_count += 1 + current_executing_bbs[module] = next_bb + break + assert ( + offset + in cfg.block_map.idx_to_block[ + current_executing_bbs[module] + ].bytecode_offsets + ) + except Exception as e: + self.set_finished(e) + print(e) + return + + self.variable_values = self.tracker.get_variable_values() + self.update_cfg_deque(cfg.get_cfg_repr(), module) + self.logger.info(cfg.to_json()) + print(f"CURRENT INPUTS: {self.tracker.get_inputs()}") + + self.finished_exception_lock.acquire() + while not self.finished: + self.finished_exception_lock.release() + + time.sleep(3) + print("\nUpdating cfgs") + update_cfg() + # self.logger.info(self.prompt_llm()) + # print(f"history size: {len(self.__cfg_deque_dict['hot_path'])}") + self.finished_exception_lock.acquire() + # time.sleep(1) + + self.finished_exception_lock.release() + + print("\nUpdating cfgs at the end") + update_cfg() + print(self.prompt_for_runtime()) + # print(self.__cfg_deque_dict['hot_path'].get_cfg_repr()) + # self.logger.info(self.prompt_llm()) + diff --git a/jac/jaclang/runtimelib/gins/model.py b/jac/jaclang/runtimelib/gins/model.py new file mode 100644 index 0000000000..4ae60baf89 --- /dev/null +++ b/jac/jaclang/runtimelib/gins/model.py @@ -0,0 +1,64 @@ +from typing import List, TypedDict + +#for identifying hot edge prediction +class Edge(TypedDict): + edge_to_bb_id: int + freq: int + +class BasicBlock(TypedDict): + bb_id: int + actual_freq: int + predicted_freq: int + predicted_edges: List[Edge] + actual_edges: List[Edge] + +class Cfg(TypedDict): + cfg_bbs: List[BasicBlock] +"""Generative AI model integration for GINS +""" +class BaseModel: + def __init__(self, model_name: str = "gemini-1.5-flash", **kwargs): + self.model_name = model_name + for key, value in kwargs.items(): + setattr(self, key, value) + self.config() + + def config(self): + raise NotImplementedError + + def generate(self, prompt: str): + raise NotImplementedError + + +class Gemini(BaseModel): + def config(self): + try: + import google.generativeai as genai + + if "api_key" in self.__dict__: + genai.configure(api_key=self.api_key) + else: + import os + + genai.configure(api_key=os.getenv("GEMINI_API_KEY")) + self.model = genai.GenerativeModel() + import os + except Exception as e: + print( + "google.generativeai module not present. Please install using 'pip install google.generativeai'." + ) + print("Warning:", e) + return None + + def generate(self, prompt: str): + response = self.model.generate_content(prompt) + return response.text + + def generate_structured(self, prompt: str): + import google.generativeai as genai + response = self.model.generate_content( + prompt, + generation_config=genai.GenerationConfig( + response_mime_type='application/json', + response_schema=Cfg),) + return response.text diff --git a/jac/jaclang/runtimelib/gins/tracer.py b/jac/jaclang/runtimelib/gins/tracer.py new file mode 100644 index 0000000000..537e32f504 --- /dev/null +++ b/jac/jaclang/runtimelib/gins/tracer.py @@ -0,0 +1,173 @@ +"""Module to track executed branches and variables +""" + +import types +from typing import Optional, Callable +import threading +import sys +import copy +import os +import traceback +import dis +from collections import deque +import inspect +import warnings +import ast + + +class CfgDeque: + def __init__(self, max_size: int = 10): + self.__max_size = max_size + self.__deque = deque() + + def add_cfg(self, cfg_repr: str): + self.__deque.append(cfg_repr) + if len(self.__deque) > self.__max_size: + self.__deque.popleft() + + def get_latest_cfg(self): + return self.__deque[-1] + + def __len__(self): + return len(self.__deque) + + def get_cfg_repr(self): + res = [f"CFG Changes in last {len(self.__deque)} Updates:\n"] + for idx, cfg in enumerate(self.__deque): + res.append(f"\nCFG {idx+1} of {len(self.__deque)}\n") + res.append(cfg) + + return "".join(res) + + +class CFGTracker: + def __init__(self): + self.executed_insts = {} + self.inst_lock = threading.Lock() + + self.curr_variables_lock = threading.Lock() + self.curr_variables = {} + + #tracking inputs + self.inputs = [] + + def start_tracking(self): + """Start tracking branch coverage""" + frame = sys._getframe() + frame.f_trace_opcodes = True + sys.settrace(self.trace_callback) + + def stop_tracking(self): + """Stop tracking branch coverage""" + sys.settrace(None) + + def get_exec_inst(self): + self.inst_lock.acquire() + cpy = copy.deepcopy(self.executed_insts) + self.executed_insts = {} + self.inst_lock.release() + + return cpy + + def get_inputs(self): + self.inst_lock.acquire() + cpy = copy.deepcopy(self.inputs) + self.inputs = [] + self.inst_lock.release() + + return cpy + + def get_variable_values(self): + self.curr_variables_lock.acquire() + cpy = copy.deepcopy(self.curr_variables) + # print(cpy) + self.curr_variables_lock.release() + + return cpy + + + def trace_callback( + self, frame: types.FrameType, event: str, arg: any + ) -> Optional[Callable]: + """Trace function to track executed branches""" + code = frame.f_code + if ".jac" not in code.co_filename: + return self.trace_callback + + if event == "call": + frame.f_trace_opcodes = True + elif event == "opcode": + # edge case to handle executing code not within a function + filename = os.path.basename(code.co_filename) + module = ( + code.co_name + if code.co_name != "" + else os.path.splitext(filename)[0] + ) + + self.inst_lock.acquire() + if module not in self.executed_insts: + self.executed_insts[module] = [] + self.executed_insts[module].append(frame.f_lasti) + self.inst_lock.release() + variable_dict = {} + if "__annotations__" in frame.f_locals: + self.curr_variables_lock.acquire() + for var_name in frame.f_locals["__annotations__"]: + if var_name == "input_val" and (len(self.inputs) == 0 or frame.f_locals[var_name] != self.inputs[-1]): + self.inputs.append(frame.f_locals[var_name]) + + variable_dict[var_name] = frame.f_locals[var_name] + self.curr_variables[module] = (frame.f_lasti, variable_dict) + self.curr_variables_lock.release() + # elif event == "line": + # ### + # # this is really circumlocutious, but is also how + # # [watchpoints](https://github.com/gaogaotiantian/watchpoints/tree/master) + # # works + # ### + # try: + # #print(inspect.getsourcefile(frame.f_code)) + # #print(frame.f_lineno) + # # TODO: super inefficient but just for now + # # inspect.getsource doesn't seem to work like it does for + # # regular python (see test_tracer.py) + # # NOTE: we're parsing jac lines as python, fingers crossed + # with open(inspect.getsourcefile(frame.f_code)) as file: + # line_asts = ast.parse(file.readlines()[frame.f_lineno - 1].lstrip().rstrip(';')) + # #print(" ", frame.f_lineno, ast.unparse(line_ast)) + # except (IndexError, SyntaxError): + # return self.trace_callback + # #print(ast.dump(a)) + # #print(len(a.body)) + # assert len(line_asts.body) == 1 # we only parsed one line + # line_ast = line_asts.body[0] + # if isinstance(line_ast, ast.Assign) or isinstance(line_ast, ast.AugAssign): + # # yes, I know this isn't strictly necessary in python + # lhs_ast = None + # rhs_ast = None + # if isinstance(line_ast, ast.Assign): + # assert len(line_ast.targets) == 1, "Only handling single targets right now" + # lhs_ast = line_ast.targets[0] + # elif isinstance(line_ast, ast.AugAssign): + # lhs_ast = line_ast.target + # lhs_var = ast.unparse(lhs_ast) + # rhs_ast = line_ast.value + # # NOTE: for some reason, eval(ast.Expression(rhs_ast)) doesn't work + # rhs_value = eval(ast.unparse(rhs_ast), frame.f_globals, frame.f_locals) + # if isinstance(line_ast, ast.Assign): + # exec(f"{lhs_var} = {rhs_value}\n", frame.f_globals, frame.f_locals) + # print(f"{lhs_var} = {rhs_value}") + # elif isinstance(line_ast, ast.AugAssign): + # exec(f"{lhs_var} += {rhs_value}\n", frame.f_globals, frame.f_locals) + # print(f"{lhs_var} (+)= {rhs_value}") + # #print(frame.f_locals) + # if lhs_var == 'PROGRAM_INPUT': + # if isinstance(line_ast, ast.AugAssign): + # assert False, "Unimplemented" + # print("tracer: PROGRAM_INPUT = ", rhs_value) + # # this only silences some of the + # # "RuntimeWarning: assigning None to unbound local" warnings + # with warnings.catch_warnings(action="ignore"): + # frame.f_lineno += 1 + return self.trace_callback diff --git a/jac/jaclang/runtimelib/importer.py b/jac/jaclang/runtimelib/importer.py index c865da6603..64363a9b35 100644 --- a/jac/jaclang/runtimelib/importer.py +++ b/jac/jaclang/runtimelib/importer.py @@ -153,7 +153,6 @@ def load_jac_mod_as_item( ) if not codeobj: raise ImportError(f"No bytecode found for {jac_file_path}") - exec(codeobj, new_module.__dict__) return getattr(new_module, name, new_module) except ImportError as e: @@ -349,13 +348,22 @@ def run_import( if not codeobj: raise ImportError(f"No bytecode found for {spec.full_target}") - try: - with sys_path_context(spec.caller_dir): - exec(codeobj, module.__dict__) - except Exception as e: - logger.error(e) - logger.error(dump_traceback(e)) - raise e + from jaclang.runtimelib.machine import JacMachine + + if JacMachine.get().gin: + try: + with sys_path_context(spec.caller_dir): + JacMachine.get().gin.tracker.start_tracking() + exec(codeobj, module.__dict__) + JacMachine.get().gin.tracker.stop_tracking() + JacMachine.get().gin.set_finished(None) + except Exception as e: + logger.error(e) + logger.error(dump_traceback(e)) + JacMachine.get().gin.set_finished(e) + raise e + else: + exec(codeobj, module.__dict__) import_return = ImportReturn(module, unique_loaded_items, self) if spec.items: diff --git a/jac/jaclang/runtimelib/machine.py b/jac/jaclang/runtimelib/machine.py index 81d0256e69..f93168d4a0 100644 --- a/jac/jaclang/runtimelib/machine.py +++ b/jac/jaclang/runtimelib/machine.py @@ -8,11 +8,13 @@ import sys import tempfile import types + from contextvars import ContextVar from typing import Optional, Union from jaclang.compiler.absyntree import Module -from jaclang.compiler.compile import compile_jac +from jaclang.compiler.compile import compile_jac, jac_file_to_pass + from jaclang.compiler.constant import Constants as Con from jaclang.compiler.semtable import SemRegistry from jaclang.runtimelib.architype import ( @@ -21,8 +23,9 @@ NodeArchitype, WalkerArchitype, ) +from jaclang.runtimelib.gins.ghost import ShellGhost from jaclang.utils.log import logging - +from jaclang.compiler.passes.main.schedules import py_code_gen, type_checker_sched logger = logging.getLogger(__name__) @@ -45,12 +48,18 @@ def __init__(self, base_path: str = "") -> None: else os.path.abspath(base_path) ) self.jac_program: Optional[JacProgram] = None + self.gin: Optional[ShellGhost] = None JACMACHINE_CONTEXT.set(self) def attach_program(self, jac_program: "JacProgram") -> None: """Attach a JacProgram to the machine.""" self.jac_program = jac_program + + def attach_gin(self, jac_gin: "ShellGhost") -> None: + """Attach a JacProgram to the machine.""" + self.gin = jac_gin + def get_mod_bundle(self) -> Optional[Module]: """Retrieve the mod_bundle from the attached JacProgram.""" @@ -68,9 +77,12 @@ def get_bytecode( ) -> Optional[types.CodeType]: """Retrieve bytecode from the attached JacProgram.""" if self.jac_program: - return self.jac_program.get_bytecode( + bytecode = self.jac_program.get_bytecode( module_name, full_target, caller_dir, cachable, reload=reload ) + if self.gin: + self.gin.start_ghost() + return bytecode return None def get_sem_ir(self, mod_sem_ir: SemRegistry | None) -> None: @@ -80,6 +92,8 @@ def get_sem_ir(self, mod_sem_ir: SemRegistry | None) -> None: self.jac_program.sem_ir.registry.update(mod_sem_ir.registry) else: self.jac_program.sem_ir = mod_sem_ir + if self.gin and mod_sem_ir: + self.gin.sem_ir = mod_sem_ir def load_module(self, module_name: str, module: types.ModuleType) -> None: """Load a module into the machine.""" @@ -308,11 +322,9 @@ def get_bytecode( result = compile_jac(full_target, cache_result=cachable) if result.errors_had or not result.ir.gen.py_bytecode: for alrt in result.errors_had: - # We're not logging here, it already gets logged as the errors were added to the errors_had list. - # Regardless of the logging, this needs to be sent to the end user, so we'll printing it to stderr. logger.error(alrt.pretty_print()) return None if result.ir.gen.py_bytecode is not None: return marshal.loads(result.ir.gen.py_bytecode) else: - return None + return None \ No newline at end of file diff --git a/jac/test-tracer.py b/jac/test-tracer.py new file mode 100644 index 0000000000..e46bdca421 --- /dev/null +++ b/jac/test-tracer.py @@ -0,0 +1,112 @@ +import sys +import dis +import traceback +import types +from typing import Optional, Callable +import inspect +import ast +import ctypes +import warnings + +program_input = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22] + +def foo(x): + PROGRAM_INPUT = program_input + x = x + x + for i in PROGRAM_INPUT: + SPECIAL_VARIABLE = i + print("foo: SPECIAL_VARIABLE = ", i) + y = 2 * x + x += y + print("foo: x = ", x) + print("foo: y = ", y) + return x + +def trace(frame: types.FrameType, event: str, arg: any) -> Optional[Callable]: + if event == 'call': + # TODO: this example itself doesn't need opcode events + frame.f_trace_opcodes = True + # keep using this function as the local tracer for this function + frame.f_trace = trace + return trace + elif event == 'opcode': + #print(dis.opname[frame.f_code.co_code[frame.f_lasti]]) + #print((frame.f_code.co_code[frame.f_lasti])) + return trace + elif event == 'line': + #skip_line: Bool = getattr(trace, 'skip_line', False) + #if skip_line: + # #print(f"Skipped {frame.f_lineno}") + # return trace + ### + # this is really circumlocutious, but is also how + # [watchpoints](https://github.com/gaogaotiantian/watchpoints/tree/master) + # works + ### + s = inspect.getsource(frame.f_code) + #print(s) + o = frame.f_lineno - frame.f_code.co_firstlineno + l = s.split('\n')[o].lstrip() + try: + a = ast.parse(l) + except SyntaxError: + return trace + #print(ast.dump(a)) + assert len(a.body) == 1 # we only parsed one line + line_ast = a.body[0] + if isinstance(line_ast, ast.Assign) or isinstance(line_ast, ast.AugAssign): + # yes, I know this isn't strictly necessary in python + lhs_ast = None + rhs_ast = None + if isinstance(line_ast, ast.Assign): + assert len(line_ast.targets) == 1, "Only handling single targets right now" + lhs_ast = line_ast.targets[0] + elif isinstance(line_ast, ast.AugAssign): + lhs_ast = line_ast.target + lhs_var = lhs_ast.id + rhs_ast = line_ast.value + # NOTE: for some reason, eval(ast.Expression(rhs_ast)) doesn't work + rhs_value = eval(ast.unparse(rhs_ast), frame.f_globals, frame.f_locals) + #frame.f_locals[lhs_var] = rhs_value + #ctypes.pythonapi.PyFrame_LocalsToFast(ctypes.py_object(frame), ctypes.c_int(0)) + #if lhs_var in frame.f_locals: + # frame.f_locals[lhs_var] = rhs_value + #elif lhs_var in frame.f_globals: + # frame.f_globals[lhs_var] = rhs_value + #else: + # assert False, "I'm pretty sure this doesn't handle closures correctly, but we don't need that for this hack anyways" + # evaluating rhs again (after trace returns) would duplicate any + # side effects, so let's "skip" this line in the user program + #print("uhoh ", frame.f_lineno) + #trace.skip_line = True + #frame.f_lineno += 1 + if isinstance(line_ast, ast.Assign): + exec(f"{lhs_var} = {rhs_value}\n", frame.f_globals, frame.f_locals) + print(f"{lhs_var} = {rhs_value}") + elif isinstance(line_ast, ast.AugAssign): + exec(f"{lhs_var} += {rhs_value}\n", frame.f_globals, frame.f_locals) + print(f"{lhs_var} (+)= {rhs_value}") + #print(frame.f_locals) + if lhs_var == 'PROGRAM_INPUT': + if isinstance(line_ast, ast.AugAssign): + assert False, "Unimplemented" + print("tracer: PROGRAM_INPUT = ", rhs_value) + # this only silences some of the + # "RuntimeWarning: assigning None to unbound local" warnings + with warnings.catch_warnings(action="ignore"): + frame.f_lineno += 1 + return trace + elif event == 'return': + return None + else: + assert False + +print("Starting") +# TODO use sys.monitoring instead? +# needs to be set before settrace due to python 3.12 bug +# https://github.com/python/cpython/issues/114480#issuecomment-1906518084 +inspect.currentframe().f_trace_opcodes = True +sys.settrace(trace) +foo(1) +foo(2) +print("Finished") diff --git a/jac/test.py b/jac/test.py new file mode 100644 index 0000000000..d16c65fbaf --- /dev/null +++ b/jac/test.py @@ -0,0 +1,28 @@ +import sys +import time + +def g(): + a = 0 + for _ in range(100000): + a += 1 + return a + +def f(): + for _ in range(10): + g() + +events = 0 + +def trace(frame, event, arg): + frame.f_trace_opcodes = True + if event == 'opcode': + print(frame.) + return trace + + +sys.settrace(trace) +start = time.time() +f() +print(time.time() - start) +sys.settrace(None) +print(events) \ No newline at end of file diff --git a/test.dot b/test.dot new file mode 100644 index 0000000000..b0d8918721 --- /dev/null +++ b/test.dot @@ -0,0 +1,4 @@ +digraph { +node [style="filled", shape="ellipse", fillcolor="invis", fontcolor="black"]; +0 [label="Root()"fillcolor="#FFE9E9"]; +} \ No newline at end of file diff --git a/test.jac b/test.jac new file mode 100644 index 0000000000..0df93fcce2 --- /dev/null +++ b/test.jac @@ -0,0 +1 @@ +with entry { print('hello world'); } diff --git a/thread_example.py b/thread_example.py new file mode 100644 index 0000000000..79886bab9c --- /dev/null +++ b/thread_example.py @@ -0,0 +1,38 @@ +# program to display the functioning of +# settrace() +from sys import settrace + + +# local trace function which returns itself +def my_tracer(frame, event, arg = None): + # extracts frame code + code = frame.f_code + + # extracts calling function name + func_name = code.co_name + + # extracts the line number + line_no = frame.f_lineno + + print(f"A {event} encountered in {func_name}() at line number {line_no} ") + + return my_tracer + + +# global trace function is invoked here and +# local trace function is set for fun() +def fun(): + return "GFG" + + +# global trace function is invoked here and +# local trace function is set for check() +def check(): + return fun() + + +# returns reference to local +# trace function (my_tracer) +settrace(my_tracer) + +check() \ No newline at end of file