-
Notifications
You must be signed in to change notification settings - Fork 1
/
generate_updated_manifest.py
53 lines (43 loc) · 1.71 KB
/
generate_updated_manifest.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
import yaml
import sys
import os
from build_csv import get_rate
"""
For now using this as build_csv from manifest and run
Original use case was to have a manifest embedded with ground truth.
"""
# def run_experiment(name):
# cwd = os.getcwd()
# run_script = os.path.join(cwd, 'run_experiment.sh')
# with open('run.log', 'w') as f:
# subprocess.call([run_script, '54', name], stdout=f, stderr=f)
# rate = int(get_rate(os.path.join('./runs', name + '.log')))
# # if(rate == -1):
# # return run_experiment(name)
# return rate
manifests_file = sys.argv[1]
with open(manifests_file) as f:
manifests = yaml.safe_load(f)
manifests_file_name = os.path.basename(manifests_file)[:-4]
ground_truth_path = os.path.join('./runs', manifests_file_name)
idx = 1
for num, manifest in enumerate(manifests):
# print("{}: ".format(idx), end="")
try:
name = manifests_file_name + "_{}.log".format(num+1)
rate = int(get_rate(os.path.join(ground_truth_path, name)))
manifest['ground_truth_ns'] = rate
# CSV print for modeling
if('levels' in manifest['sketches'][0]):
print("{}, {}, {}, {}".format(manifest['sketches'][0]['rows'],
manifest['sketches'][0]['cols'],
manifest['sketches'][0]['levels'],
manifest['ground_truth_ns']))
else:
print("{}, {}, {}".format(manifest['sketches'][0]['rows'],
manifest['sketches'][0]['cols'],
manifest['ground_truth_ns']))
except:
pass
idx += 1
# yaml.dump(manifests, sys.stdout)