From a09559e65231cd4b2864803d0d8e9518ee0691a9 Mon Sep 17 00:00:00 2001
From: Joerg Martin <joerg.martin@ptb.de>
Date: Wed, 5 Jan 2022 11:01:52 +0000
Subject: [PATCH] Allowed for incomplete entries create_tabular

---
 Experiments/create_tabular.py | 29 +++++++++++++++++++++++------
 Experiments/train_eiv.py      |  2 +-
 Experiments/train_noneiv.py   |  2 +-
 3 files changed, 25 insertions(+), 8 deletions(-)

diff --git a/Experiments/create_tabular.py b/Experiments/create_tabular.py
index bd7f323..15e4f82 100644
--- a/Experiments/create_tabular.py
+++ b/Experiments/create_tabular.py
@@ -1,9 +1,10 @@
 import os
 import glob
+import argparse
 import json
 
-metrics_to_display = ['rmse','logdens','bias','coverage_normalized']
-
+metrics_to_display = ['rmse','logdens','bias','true_coverage_numerical']
+show_incomplete = True
 
 list_of_result_files = glob.glob(os.path.join('results','*.json'))
 results = {}
@@ -12,6 +13,16 @@ for filename in list_of_result_files:
     with open(filename,'r') as f:
        results[data] = json.load(f)
 
+def save_readout(dictionary, key):
+    """
+    Returns the value of the `dictionary` for `key`, unless
+    the later doesn't exist, in which case (None,None) is returned.
+    """
+    try:
+        return dictionary[key]
+    except KeyError:
+        return (None,None)
+
 ## header
 header_string = 'DATA                '
 offset = 20
@@ -21,19 +32,25 @@ print(header_string)
 print(offset * '_' + 70 * '_')
 ## results
 for data in results.keys():
-    noneiv_results = [results[data]['noneiv'][metric]
+    noneiv_results = [save_readout(results[data]['noneiv'], metric)
             for metric in metrics_to_display]
     noneiv_row_name  = f'{data} - nonEiV:'
     noneiv_results_string = noneiv_row_name + (offset - len(noneiv_row_name)) * ' '
     for [metric_mean, metric_std] in noneiv_results:
-        noneiv_results_string += f'  {metric_mean:.3f} ({metric_std:.3f})'
+        if metric_mean is None:
+            noneiv_results_string += '  None (None)'
+        else:
+            noneiv_results_string += f'  {metric_mean:.3f} ({metric_std:.3f})'
     print(noneiv_results_string)
-    eiv_results = [results[data]['eiv'][metric]
+    eiv_results = [save_readout(results[data]['eiv'],metric)
             for metric in metrics_to_display]
     eiv_row_name  = f'{data} - EiV:'
     eiv_results_string = eiv_row_name + (offset - len(eiv_row_name)) * ' '
     for [metric_mean, metric_std] in eiv_results:
-        eiv_results_string += f'  {metric_mean:.3f} ({metric_std:.3f})'
+        if metric_mean is None:
+            eiv_results_string += '  None (None)'
+        else:
+            eiv_results_string += f'  {metric_mean:.3f} ({metric_std:.3f})'
     print(eiv_results_string)
     print(offset * '_' + 70 * '_')
 
diff --git a/Experiments/train_eiv.py b/Experiments/train_eiv.py
index 6822946..116408f 100644
--- a/Experiments/train_eiv.py
+++ b/Experiments/train_eiv.py
@@ -19,7 +19,7 @@ from EIVTrainingRoutines import train_and_store, loss_functions
 
 # read in data via --data option
 parser = argparse.ArgumentParser()
-parser.add_argument("--data", help="Loads data", default='california')
+parser.add_argument("--data", help="Loads data", default='linear')
 parser.add_argument("--no-autoindent", help="",
         action="store_true") # to avoid conflics in IPython
 args = parser.parse_args()
diff --git a/Experiments/train_noneiv.py b/Experiments/train_noneiv.py
index ee5687b..a585ce6 100644
--- a/Experiments/train_noneiv.py
+++ b/Experiments/train_noneiv.py
@@ -19,7 +19,7 @@ from EIVTrainingRoutines import train_and_store, loss_functions
 
 # read in data via --data option
 parser = argparse.ArgumentParser()
-parser.add_argument("--data", help="Loads data", default='california')
+parser.add_argument("--data", help="Loads data", default='linear')
 parser.add_argument("--no-autoindent", help="",
         action="store_true") # to avoid conflics in IPython
 args = parser.parse_args()
-- 
GitLab