def __init__(self):
        runs = ContextVAETrainingRuns(check_commit=False)
        super(ContextVAETrainingRunsViewer, self).__init__(runs)

        meta = lambda paths: JSONSelector('metadata.txt', paths)
        two_digits = lambda x: round(x, 2)

        # list different formats in which stats were logged
        legacy = lambda name, high_or_low: [
                ('{}_valid'.format(name),),
                ('stats', 'big', name, 'valid'),
                ('stats', 'big', name, 'valid', high_or_low),
                ('stats', 'big', name, high_or_low, 'valid'),
            ]

        self.add('#', run_name)
        self.add('owner', Owner({}))
        self.add('dset', meta(('config', 'dataset', 'path')))
        self.add('enc dropout', meta(('config', 'model', 'encoder_dropout_prob')))
        self.add('dec dropout', meta(('config', 'model', 'decoder_dropout_prob')))
        self.add('steps', NumSteps())

        # best scores on the big validation set
        self.add('bleu', meta(legacy('bleu', 'high') + legacy('avg_bleu', 'high')), two_digits)
        self.add('edit dist', meta(legacy('edit_dist', 'low')), two_digits)
        self.add('exact match', meta(legacy('exact_match', 'high') + legacy('exact_match_prob', 'high')), two_digits)
        self.add('loss', meta(legacy('loss', 'low')), two_digits)

        self.add('last seen', meta(('last_seen',)))
        self.add('commit', Commit())
    def __init__(self):
        runs = RetrieverTrainingRuns(check_commit=False)
        super(RetrieverTrainingRunViewer, self).__init__(runs)

        metadata = lambda keys: JSONSelector('metadata.txt', keys)

        self.add('name', run_name)
        self.add('commit', Commit(), lambda s: s[:8])
        self.add('dataset', metadata(['config', 'dataset', 'path']))
        self.add('steps', NumSteps())
        self.add('host', metadata(['host']), lambda s: s[:10])
        self.add('last seen', metadata(['last_seen']))

        two_decimal = lambda f: '{:.2f}'.format(f)
        self.add('valid loss (small)', metadata(['loss_small_valid']), two_decimal)
        self.add('train loss (small)', metadata(['loss_small_train']), two_decimal)
        self.add('valid rank (small)', metadata(['mean_rank_small_valid']), two_decimal)