-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathmaster.py
More file actions
46 lines (41 loc) · 1.76 KB
/
master.py
File metadata and controls
46 lines (41 loc) · 1.76 KB
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
import argparse
import os
import sys
import json
from utils.general_utils import str_to_bool,params_to_tune,generate_pars_dict
from pythia_space.pythia_functions import get_objective_func
import numpy as np
def main(args):
paramVals_str = args.params
names = args.names
paramValsAll = np.array([float(s.replace('"', '')) for s in paramVals_str.split(',')])
paramNames = [s.strip() for s in names.split(',')]
paramValsAll = np.reshape(paramValsAll, (len(paramValsAll)//len(paramNames), len(paramNames)))
WorkHOME = os.environ['WorkHOME']
generate_pars_dict()
set = 0
for paramVals in paramValsAll:
params = {}
i = 0
for p in paramNames:
params[p] = paramVals[i]
i += 1
print 'params' + str(params)
print 'metric' + str(args.metric)
print 'events' + str(args.n_events)
print 'cores' + str(args.n_cores)
fitness = get_objective_func(params, args.metric, args.n_events, args.n_cores)
f = open(args.id + str(set) + '.txt', 'w+')
f.write(str(fitness))
f.close()
set += 1
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('-c', '--n-cores', help='number of cores to use', type=int, default=8)
parser.add_argument('-p', '--params', help='comma-separated matrix of parameter values')
parser.add_argument('-n', '--names', help='comma-separated parameter names')
parser.add_argument('-m', '--metric', help='metric for fitness function')
parser.add_argument('-e', '--n-events', help='maximum number of pythia events to evaluate per parameter set', type=int, default=250000)
parser.add_argument('-i', '--id', help='id to save in filename')
args = parser.parse_args()
main(args)