From d65a4f6067f5b32c4a483acdb909ff88cc6475b4 Mon Sep 17 00:00:00 2001
From: Franck Dary <franck.dary@lis-lab.fr>
Date: Wed, 27 Oct 2021 09:11:16 +0200
Subject: [PATCH] Improved latex tab generator

---
 outputs/pvalues/res2latex.py | 93 +++++++++++++++++++-----------------
 outputs/stats2latex.py       | 14 ++++--
 2 files changed, 60 insertions(+), 47 deletions(-)

diff --git a/outputs/pvalues/res2latex.py b/outputs/pvalues/res2latex.py
index 7712509..b1957b5 100755
--- a/outputs/pvalues/res2latex.py
+++ b/outputs/pvalues/res2latex.py
@@ -2,63 +2,70 @@
 
 import sys
 
-metrics = []
 
 def toIgnore(model) :
   return "bt2" in model
 
 def modelName(model) :
   if "bt1" in model.lower() :
-    return "RL_BT1"
+    return "RL\_BT1"
   if "no" in model.lower() :
-    return "RL_NOBT"
+    return "RL\_NOBT"
   if "oracle" in model.lower() :
-    return "SUPERVISED"
+    return "SL"
+  print("ERROR %s not found"%model)
+  exit(1)
   return "NOT FOUND"
 
 def nicePValue(p) :
   if p == "_" :
-    return p
+    return "\_"
   return "%.3f"%p
 
-for line in open(sys.argv[1]) :
-  line = line.strip()
-  if len(line) == 0 :
-    continue
-  splited = line.split()
-  if len(splited) == 1 :
-    metrics.append([splited[0], []])
-    continue
-  metrics[-1][1].append([])
-  metrics[-1][1][-1].append(splited[1])
-  metrics[-1][1][-1].append(splited[2])
-  metrics[-1][1][-1].append(splited[4])
-  if len(splited) == 9 :
-    metrics[-1][1][-1].append(splited[8].split('=')[-1])
-  else :
-    metrics[-1][1][-1].append("_")
+for filename in sys.argv[1:] :
+  metrics = []
+  for line in open(filename) :
+    line = line.strip()
+    if len(line) == 0 or "------" in line :
+      continue
+    splited = line.split()
+    if len(splited) == 1 :
+      metrics.append([splited[0], []])
+      continue
+    metrics[-1][1].append([])
+    metrics[-1][1][-1].append(splited[1])
+    metrics[-1][1][-1].append(splited[2])
+    metrics[-1][1][-1].append(splited[4])
+    if len(splited) == 9 :
+      metrics[-1][1][-1].append(splited[8].split('=')[-1])
+    else :
+      metrics[-1][1][-1].append("\_")
+    
+  asTab = [["\\textbf{Model}"] + ["\\textbf{%s}"%[m[0],"p"][i] for m in metrics for i in [0,1]]]
+  models = {}
+  for metric in metrics :
+    for i in range(len(metric[1])) :
+      model = metric[1][i][0]
+      if model not in models :
+        models[model] = []
+      models[model].append([metric[1][i][1:]])
+  for model in models :
+    if toIgnore(model) :
+      continue
+    asTab.append([modelName(model)])
+    asTab[-1] += [models[model][i][0][j] for i in range(len(metrics)) for j in [0,2]]
   
-asTab = [["\\textbf{Model}"] + ["\\textbf{%s}"%[m[0],"p"][i] for m in metrics for i in [0,1]]]
-models = {}
-for metric in metrics :
-  for i in range(len(metric[1])) :
-    model = metric[1][i][0]
-    if model not in models :
-      models[model] = []
-    models[model].append([metric[1][i][1:]])
-for model in models :
-  if toIgnore(model) :
-    continue
-  asTab.append([modelName(model)])
-  asTab[-1] += [models[model][i][0][j] for i in range(len(metrics)) for j in [0,2]]
-
-print("""\\begin{table}[]
-\\begin{tabular}{|l|l|l|l|}
+  print("""\\begin{table}
+\centering
+\\tabcolsep=0.8mm
+\\begin{tabular}{|l|l|l|l|l|}
 \hline""")
-for line in asTab :
-  print(" & ".join(line), "\\\\ \hline")
-print("""\end{tabular}
-\caption{}
-\label{tab:my-table}
-\end{table}""")
+  for line in asTab :
+    print(" & ".join(line), "\\\\ \hline")
+  print("""\end{tabular}
+\caption{%s on UD\_French-GSD}
+\label{tab:res_%s}
+\end{table}
+
+"""%(filename.split('.')[0],filename.split('.')[0]))
 
diff --git a/outputs/stats2latex.py b/outputs/stats2latex.py
index 575ad60..288ef9e 100755
--- a/outputs/stats2latex.py
+++ b/outputs/stats2latex.py
@@ -8,6 +8,12 @@ def toIgnore(model) :
   return "bt2" in model
 
 def modelName(model) :
+  if "tagger" in model.lower() :
+    return "TAGGER"
+  if "tagparser" in model.lower() :
+    return "TAPARSER"
+  if "parser" in model.lower() :
+    return "PARSER"
   if "bt1" in model.lower() :
     return "RL\_BT1"
   if "no" in model.lower() :
@@ -34,10 +40,10 @@ targetValues = {"nbActions" : ("\#Actions",prettyInt),
                 "nbBack" : ("\#Backs",prettyInt),
                 "backPrecision" : ("bPrec",percent),
                 "backRecall" : ("bRec",percent),
-                "nbRedoneCorrectCorrect" : ("\%C$\\rightarrow$C",percent),
-                "nbRedoneErrErr" : ("\%E$\\rightarrow$E",percent),
-                "nbRedoneCorrectErr" : ("\%C$\\rightarrow$E",percent),
-                "nbRedoneErrCorrect" : ("\%E$\\rightarrow$C",percent)}
+                "nbRedoneCorrectCorrect" : ("C$\\rightarrow$C",percent),
+                "nbRedoneErrErr" : ("E$\\rightarrow$E",percent),
+                "nbRedoneCorrectErr" : ("C$\\rightarrow$E",percent),
+                "nbRedoneErrCorrect" : ("E$\\rightarrow$C",percent)}
 for t in targetValues :
   old = targetValues[t]
   targetValues[t] = ("\\texttt{%s}"%old[0],old[1])
-- 
GitLab