The Gaudi Framework  v36r9p1 (5c15b2bb)
jsonFromLHCbLog.py
Go to the documentation of this file.
1 
11 from __future__ import print_function
12 
13 from pygraph.classes.graph import graph
14 
15 
16 def load_brunel_scenario(filename):
17  gr = graph()
18  algs = {}
19  timing = {}
20  objs = []
21  curr = None
22  order = 0
23  nodes = ("/Event", "/Event/Rec", "/Event/DAQ")
24  for l in open(filename).readlines():
25  if l.find("StoreTracer") == 0:
26  if l.find("Executing Algorithm") != -1:
27  alg = l.split()[-1]
28  if alg not in algs.keys():
29  algs[alg] = (order, set(), set())
30  curr = alg
31  order += 1
32  elif l.find("Done with Algorithm") != -1:
33  curr = None
34  elif l.find("[EventDataSvc]") != -1 and curr:
35  obj = l.split()[-1]
36  if obj in nodes:
37  continue
38  if obj.find("/Event/") == 0:
39  obj = obj[7:]
40  obj = obj.replace("/", "_")
41  if obj not in objs:
42  objs.append(obj)
43  talg = algs[curr]
44  if l.find("RETRIEVE") != -1:
45  if obj not in talg[1]:
46  talg[1].add(obj)
47  elif l.find("REGOBJ") != -1:
48  if obj not in talg[2]:
49  talg[2].add(obj)
50  if l.find("TimingAuditor") != -1:
51  algo = l.split()[2] # .rstrip("|")
52  index = 13
53  if algo.endswith("|"):
54  index = 12
55  algo = algo.rstrip("|")
56  if algo in algs.keys():
57  timing[algo] = l.split()[index]
58  else:
59  for name in algs.keys():
60  if name.startswith(algo):
61  timing[name] = l.split()[index]
62 
63  all_algos = []
64  for i, (alg, deps) in enumerate(algs.items()):
65  if alg in ["PatPVOffline", "PrsADCs"]:
66  continue
67  if deps[1] or deps[2]:
68  inputs = []
69  inputs = [
70  item
71  for item in deps[1]
72  if item not in ("DAQ_ODIN", "DAQ_RawEvent") and item not in deps[2]
73  ]
74  outputs = [item for item in deps[2]]
75  new_algo = {
76  "name": alg,
77  "inputs": inputs,
78  "outputs": outputs,
79  "runtimes_wall": [float(timing[alg])],
80  }
81  all_algos.append(new_algo)
82  return all_algos
83 
84 
85 
86 if __name__ == "__main__":
87  json = {}
88  json["algorithms"] = load_brunel_scenario("Brunel.TES.trace.log")
89  print(json)
jsonFromLHCbLog.load_brunel_scenario
def load_brunel_scenario(filename)
Definition: jsonFromLHCbLog.py:16
plotSpeedupsPyRoot.graph
graph
Definition: plotSpeedupsPyRoot.py:163
GaudiPython.Persistency.add
def add(instance)
Definition: Persistency.py:49