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)