project/log_analyzer.py

51 lines
1.5 KiB
Python

from load import LOADERS
from typing import List
from analyzers import get_renderer, Analyzer
from analyzers.settings import LogSettings, load_settings
import analyzers
def process_log(log_id: str, settings: LogSettings) -> List[Analyzer]:
logfile = "data/inst_{id}/instance_log.sqlite".format(id=log_id)
loader = LOADERS[settings.log_format]()
try:
loader.load(logfile)
except BaseException as e:
raise RuntimeError(e)
analyzers = []
for analyzer in settings.analyzers:
analyzers.append(analyzer(settings))
for entry in loader.get_entry():
for analyzer in analyzers:
if analyzer.process(entry):
break
return analyzers
if __name__ == '__main__':
settings = load_settings("biogames2.json")
log_ids = ["56d9b64144ab44e7b90bf766f3be32e3", "85a9ad58951e4fbda26f860c9b66f567"]
results = []
for log_id in log_ids:
for analysis in process_log(log_id, settings):
print("* Result for " + analysis.name())
# print(analysis.result())
# print(analysis.render())
if analysis.name() in ("LocomotionAction"):
results.append(analysis.result())
for r in get_renderer(analyzers.LocomotionActionAnalyzer):
r().render(results)
# for analyzers in analyzers:
# if analyzers.name() in ["LogEntryCount", "ActionSequenceAnalyzer"]:
# print(json.dumps(analyzers.result(), indent=2))
# for analyzers in analyzers:
# if analyzers.name() in ["BoardDuration"]:
# print(json.dumps(analyzers.result(), indent=2))
# print(analyzers.render())
# coords = analyzers[1].render()
# with open("test.js", "w") as out:
# out.write("coords = "+coords)