import json import logging from typing import List import analyzers from analyzers import get_renderer, Analyzer, render, Store from analyzers.analyzer import ResultStore from analyzers.settings import LogSettings, load_settings from loaders import LOADERS logging.basicConfig(format='%(levelname)s %(name)s:%(message)s', level=logging.DEBUG) log: logging.Logger = logging.getLogger(__name__) requests_log = logging.getLogger('requests') requests_log.setLevel(logging.WARN) def process_log(log_id: str, settings: LogSettings) -> List[Analyzer]: logfile: str = "data/urach/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: List[Analyzer] = [] 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: LogSettings = load_settings("biogames2.json") log_ids: List[str] = [ "0ff5e4d75a7c4c5683dd025aaac7de0d", "1d80340985c7411aa78f9629aef91351", "02c537ce1a514cb09eb387e7993f51a4", "2cf1f8a490ac45e7bb035acc2de6bbc9", "2f1f7713a6324fe580dbc67d4254bda5", "3b5e4a43472f468196cc6b6a26c984a5", "4a6e165e1e85421aaa681a68b6448f6b", "4a2079607e9f41e9a070b32bf5a6b321", "4ad0de379b36424e91bc709139a2538f", "4b52635a0473424da7f9593098a38b11", "04bf6dbbf5f846ad8d505faea8be7f45", "5a1ae8dfa1f34469b14e910f8794285d", "5ca377951ae440c7b3c479dc6786da52", "5dd7e3d04dce41279b14d32f42c2052d", "6f6f2edb053b409197f77b0322fc2c10", "7a5f314c866f4413ae3a9eb5a0bd544a", "7b25d0c0d2a44d31a93b8c8a84ea9cbb", "7b697ac0aa1a480698261b62807cd447", "7c7e3b819ec44b2994dadfad40508d56", "7c7860ecf8904a57ad8829298570382e", "7d96db101a254161b30078b421e5c4e2", "09a641efdb6e47a4b7be5ef697d57cee", "9c08fb690c5e42ec8add80305c78476a", "9c699184e5314c5192000b998912f9c3", "34eff87a077a45cdb64a0b1001098d16", "35a755e2c73c48dda77f32c1e65c16c5", "36c686cc3493405c8ce3df9f0b9e9f0b", "36e350a44a744e08b491cef368c92aae", "39e9e1625a7a426f81b387e56a142ea3", "46d18a1237e34e689eeb47a24bd1f1a7", "46fdee17dffe4e4b9ac3dd9dee7d3860", "52ded2824b6c40559a923fc772148a8d", "59bcafe4041d4c919585bac2be39fbe4", "63e1a33bb1bd474bb8cffe6af54f6fe2", "63fb0ee5bdd74c9d8d1a11958e6cbcc0", "74f47e7694cf4bd2b965790479d5c4e6", "76a20e83af5d4edab295f4f93d436c1c", "0080e8e0364d4ed69fb349f95810ca4e", "122a2dbc4aa94fd9a5535385a4c5c624", "173c95bca9024eb5897d6f196d7b35e3", "203f9b1e3113486c87dee0cc7ab2ec3e", "292cf93f6ad147b5babbe9fd0842672d", "510f86e65deb43bdad3f30ca55366fa7", "683a0ab03fee437790ea06770e850f0d", "698a03dca3ab41969c5ba91c4ac95012", "788ddde1fa5e49498363907f54ab525f", "798a8620c6aa4a369d31cf07357176e8", "974c98d5426446c9af6be608d69e8cea", "977cd2ae146e4b5cb53b284c5b58bee6", "1887ed68b88f49a686d8d433b7f439a0", "1307199d0d4f4f8f8dd019fa7e4dc9a8", "58865640dc73482984f08b5ef728683c", "83150656b4cf47409c2a8c971d78c359", "a17f6affa68140aaaaded61c7dd310e0", "a39c7ff84f624237a8e649b56577aedc", "a85e76d834d64fc4986e6eea45cf48cf", "a3549e5a2f5e4bcea5af97af0e86ea60", #"a57903d4d27b47a0afa4f198a7bf9741", "b1cf964e987f4387a3c377c329623a89", "b59d67957ea946ecab7ce57ba395f825", "b606f8c1c00e4edb8fe8e3afc6b790cb", "b55222002dff47afb9cde94deb2d776f", "b845757019654c20bf4f11a8aa2964f4", "bac9268aca25471587a274baa8cb0aef", "c999941878a04ca4b96b00308fdf1d47", "d0e41604aa1c4a50a06fdc867e3e0883", "d2c2a43cce4a4ebfa7008423e108fff4", "d20c062e155147af9aaaee477e68e209", "d31b742005d04f8e85845ad0fb9582fc", "d6821c791abd40cf9d90ebf01ce287b8", "d49515a15647455db263a5b1a963bb5d", "da2ecef74b0b42dfb4599aa231580dcf", "dbb281fdff3849eeb7ff61d343172dd9", "dbd5e5ea53bf4f5db3dd99582322f915", "de8a9a1996934ae98daa93dc2425509f", "e0c802e9e50146fc93346d0f6e865612", "e6b34adce1534ae08af70613c0ef729d", "e55630984dcb4b87aa13080d0ef23e15", "eed665d75dfa4a619d5a74a6cc104341", "f7d0033ee7124baf974f171a571e5e0a", "f303f2c550704a178b7c56417d44c329", "f1106d463759429e8a4dda41fda512f8", "f8045427e89349deb279d3c12e9c0462", "feb8cf484f604e4a8137a8d00e7226b8", "ff935be0480c4c6cac56ebff9021895f", "ffae0d9d78124b6f808cef1771e78179", ] #log_ids: List[str] = [ #"34fecf49dbaca3401d745fb467", # "44ea194de594cd8d63ac0314be", # "57c444470dbf88605433ca935c", # "78e0c545b594e82edfad55bd7f", # "91abfd4b31a5562b1c66be37d9", # "597b704fe9ace475316c345903", # "e01a684aa29dff9ddd9705edf8", # "fbf9d64ae0bdad0de7efa3eec6", # "fe1331481f85560681f86827ec", # "fe1331481f85560681f86827ec"] #"fec57041458e6cef98652df625", ] store: ResultStore = ResultStore() for log_id in log_ids: log.debug(log_id) for analysis in process_log(log_id, settings): log.info("* Result for " + analysis.name()) # print(analysis.result()) # print(analysis.render()) analysis.result(store) if False: for r in get_renderer(analyzers.LocomotionActionAnalyzer): r().render(store.get_all()) if False: render(analyzers.LocationAnalyzer, store.get_all()) #print(json.dumps(store.serializable(), indent=1)) if False: render(analyzers.ActivityMapper, store.get_all()) render(analyzers.ProgressAnalyzer, store.get_all()) if True: for a in [analyzers.BiogamesCategorizer, analyzers.ActivityMapper, analyzers.LogEntrySequenceAnalyzer, analyzers.ActionSequenceAnalyzer, analyzers.BoardDurationAnalyzer, analyzers.LocomotionActionAnalyzer, analyzers.SimulationRoundsAnalyzer, analyzers.ProgressAnalyzer]: print(str(a)) render(a, store.get_all()) # 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)