import sys; from graph import Graph; def summarize(graphs, golds): ids = None; if golds is not None: ids = dict(); for gold in golds: language = gold.language(); if language not in ids: ids[language] = dict(); targets = gold.targets(); if targets is None: targets = [gold.framework]; for target in targets: if target not in ids[language]: ids[language][target] = set(); ids[language][target].add(gold.id); counts = dict(); seen = dict(); targets = dict(); targets["eng"] = ["eds", "ptg", "ucca", "amr", "drg"]; targets["ces"] = ["ptg"]; targets["deu"] = ["ucca", "drg"]; targets["zho"] = ["amr"]; for language in ["eng", "ces", "deu", "zho"]: counts[language] = dict(); seen[language] = dict(); for key in targets[language]: counts[language][key] = 0; seen[language][key] = set(); for graph in graphs: language = graph.language(); if language is None: language = "eng"; framework = graph.framework; if golds is None or \ language in ids and framework in ids[language] and \ graph.id in ids[language][framework]: counts[language][framework] += 1; if graph.id in seen[language][framework]: print("inspector.summarize(): ignoring duplicate {} {} graph #{}." "".format(language, framework, graph.id), file = sys.stderr); else: seen[language][framework].add(graph.id); complete = True; for language in ["eng", "ces", "deu", "zho"]: for key in targets[language]: if len(ids[language][key]) != counts[language][key]: complete = False; counts["complete"] = complete; return counts;