import logging from load import LOADERS from typing import List from analyzers import get_renderer, Analyzer, render from analyzers.settings import LogSettings, load_settings import analyzers logging.basicConfig(format='%(levelname)s %(name)s:%(message)s', level=logging.DEBUG) log = logging.getLogger(__name__) def process_log(log_id: str, settings: LogSettings) -> List[Analyzer]: logfile = "data/inst_{id}.{format}".format(id=log_id, format=settings.log_format) loader = LOADERS[settings.log_format]() try: loader.load(logfile) except BaseException as e: raise RuntimeError(e) analyzers = [] log.debug("build analyzers") for analyzer in settings.analyzers: analyzers.append(analyzer(settings)) log.debug("process entries") 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 = [ "20d4244719404ffab0ca386c76e4b112", "56d9b64144ab44e7b90bf766f3be32e3", "dc2cdc28ca074715b905e4aa5badff10", "e32b16998440475b994ab46d481d3e0c", ] log_ids = [ "34fecf49dbaca3401d745fb467", "44ea194de594cd8d63ac0314be", "57c444470dbf88605433ca935c", "78e0c545b594e82edfad55bd7f", "91abfd4b31a5562b1c66be37d9", "597b704fe9ace475316c345903", "e01a684aa29dff9ddd9705edf8", "fbf9d64ae0bdad0de7efa3eec6", "fe1331481f85560681f86827ec", "fec57041458e6cef98652df625", ] results = [] #TODO: capture session ID, dict for log_id in log_ids: for analysis in process_log(log_id, settings): log.info("* Result for " + analysis.name()) # print(analysis.result()) # print(analysis.render()) results.append(analysis.result()) if False: for r in get_renderer(analyzers.LocomotionActionAnalyzer): r().render(results) render(analyzers.LocationAnalyzer, 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)