project/analyzers/__init__.py

56 lines
1.5 KiB
Python

from typing import List
from .analyzer import Analyzer, Result
from .analyzer.biogames import BoardDurationAnalyzer, SimulationRoundsAnalyzer, ActivationSequenceAnalyzer, \
BiogamesCategorizer
from .analyzer.default import LogEntryCountAnalyzer, LocationAnalyzer, LogEntrySequenceAnalyzer, ActionSequenceAnalyzer, \
CategorizerStub
from .analyzer.locomotion import LocomotionActionAnalyzer, CacheSequenceAnalyzer
from .analyzer.mask import MaskSpatials
from .render import Render
from .render.biogames import SimulationRoundsRender, BoardDurationHistRender, BoardDurationBoxRender
from .render.default import PrintRender, JSONRender, TrackRender, HeatMapRender
from .render.locomotion import LocomotionActionRelativeRender, LocomotionActionAbsoluteRender, \
LocomotionActionRatioRender
__FALLBACK__ = PrintRender
__MAPPING__ = {
LocomotionActionAnalyzer: [
LocomotionActionAbsoluteRender,
LocomotionActionRelativeRender,
LocomotionActionRatioRender, ],
LogEntryCountAnalyzer: [
JSONRender,
],
SimulationRoundsAnalyzer: [
JSONRender,
SimulationRoundsRender,
],
BoardDurationAnalyzer: [
BoardDurationHistRender,
BoardDurationBoxRender,
],
ActivationSequenceAnalyzer: [
JSONRender,
],
LocationAnalyzer: [
TrackRender,
HeatMapRender,
],
}
def get_renderer(cls: type) -> [type]:
if cls not in __MAPPING__:
return [__FALLBACK__]
return __MAPPING__[cls]
def render(cls: type, results: List[Result]):
for r in get_renderer(cls):
p = r()
p.result_types.append(cls)
rendered = p.render(results)
if rendered:
print(str(r))