"""Liest ein Paper- oder Probe-Protokoll mit eigenem Code und fasst zusammen, was darin steht. Koordinator-Werkzeug zu Teil 10, nicht fuers Repo. Es tut etwas und beurteilt wenig: Die Zahlen liest der Koordinator selbst. Binaer gelesen, nur an b"\\n" getrennt. Aufruf: python lies_paper_protokoll.py """ import json import sys from collections import Counter from pathlib import Path zeilen = [json.loads(z) for z in Path(sys.argv[1]).read_bytes().split(b"\n") if z.strip()] arten = Counter(z.get("art") for z in zeilen) print("zeilen:", len(zeilen), dict(arten)) kopf = next(z for z in zeilen if z.get("art") == "kopf") print("kopf:", {k: kopf.get(k) for k in ("modus", "agent", "instrument", "fenster", "basis_menge", "feed", "glatt_vor_schluss_min")}) takte = [z for z in zeilen if z.get("art") == "takt"] print("takte:", len(takte), "phasen:", dict(Counter(t.get("phase") for t in takte))) print("killswitch in takten:", dict(Counter(t.get("killswitch") for t in takte))) print("frische kerze:", dict(Counter(t.get("frische_kerze") for t in takte))) erste_entscheidung = next((t for t in takte if t.get("aktion") is not None), None) if erste_entscheidung: print("erste entscheidung: schritt", erste_entscheidung["schritt"], "kerzen", erste_entscheidung["kerzen"], "letzte_kerze", erste_entscheidung["letzte_kerze"], "aktion", erste_entscheidung["aktion"], "ziel", erste_entscheidung["zielposition"]) print("aktionen:", dict(Counter(t.get("aktion") for t in takte))) print("positionen:", dict(Counter(t.get("position") for t in takte))) schliesst = [t for t in takte if t.get("phase") == "schliesst"] if schliesst: print("schlussphase: von", schliesst[0]["letzte_kerze"], "bis", schliesst[-1]["letzte_kerze"], "positionen", [t["position"] for t in schliesst]) for order in (z for z in zeilen if z.get("art") == "order"): print("order:", {k: order.get(k) for k in ("seite", "menge", "gefuellt", "status", "position_danach")}) for ereignis in (z for z in zeilen if z.get("art") == "ereignis"): print("ereignis:", ereignis.get("was"), "|", str(ereignis.get("text"))[:140]) ende = [z for z in zeilen if z.get("art") == "ende"] print("ende:", ende) hinweise = Counter(t.get("hinweis") for t in takte if t.get("hinweis")) print("hinweise in takten:", dict(hinweise))