-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmake_table.py
53 lines (48 loc) · 1.82 KB
/
make_table.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import os
from collections import defaultdict
import pickle
envs = ["simple_navigation", "simple_vision", "simple_namo", "complex", "subgoal_obstructed", "attachment_obstructed"]
algs = ["a_star", "namo", "vamp", "lamb", "snowplow"]
alg_name_map = {
"A*":"a_star",
"NAMO": "namo",
"AC-NAMO":"snowplow" ,
"VAMP": "vamp",
"LaMB" : "lamb"
}
env_name_map = {
"Simple Navigation": "simple_navigation",
"Visibility":"simple_vision",
"Movable Obstacles": "simple_namo",
"Obstructed Visibility": "subgoal_obstructed",
"Occluding Obstacles": "complex",
"Obstructed Affordance": "attachment_obstructed"
}
filenames = []
results_dir = "/Users/aidancurtis/movo_manipulation/results/"
for file in os.listdir(results_dir):
if file.endswith(".pkl"):
filenames.append(os.path.join(results_dir, file))
results_dict = {}
for env in envs:
results_dict[env] = defaultdict(list)
for alg in algs:
for filename in filenames:
if("env={}".format(env) in filename and "algo={}".format(alg) in filename):
with open(filename, 'rb') as handle:
data = pickle.load(handle)
results_dict[env][alg].append(data)
print("\\toprule")
print("&{} \\\\ \\midrule".format("&".join(env_name_map.keys())))
for (r_alg, v_alg) in alg_name_map.items():
env_results = []
for (r_env, v_env) in env_name_map.items():
# print(v_env)
# for q in results_dict[v_env][v_alg]:
# if("plan_time" in q.keys()):
# print(q["plan_time"])
num_success = sum([int(q["success"]) for q in results_dict[v_env][v_alg]])
num_total = len(results_dict[v_env][v_alg])
env_results.append("{}/{}".format(num_success, num_total))
print("{} & {}\\\\".format(r_alg, " & ".join(env_results)))
print("\\bottomrule")