def append_suffix_to_files(dict, suffix, legend_suffix):
    d = OrderedDict()
    for key,value in dict.iteritems():
        f = helper_functions.remove_suffix(key, '.pkl')
        f += suffix + '.pkl'
        d[f] = value + legend_suffix
    return d
Example #2
0
def _run_experiment_args(self, results_file, data_and_splits, method_results, i_labels, split):
    num_labels = self.configs.num_labels[i_labels]
    s = str(num_labels) + '-' + str(split)
    curr_results = _load_temp_split_file(results_file, num_labels, split)
    if curr_results:
        return curr_results
    if mpi_utility.is_master():
        timer.tic()
    #print 'num_labels-split: ' + s
    temp_file_name = _temp_split_file_name(results_file, num_labels, split)
    temp_dir_root = helper_functions.remove_suffix(temp_file_name, '.pkl')
    temp_dir = temp_dir_root + '/CV-temp/'
    curr_data = data_and_splits.get_split(split, num_labels)
    learner = self.configs.learner
    curr_learner = copy.deepcopy(learner)
    curr_learner.split_idx_str = s
    curr_learner.temp_dir = temp_dir
    curr_results = curr_learner.train_and_test(curr_data)
    if mpi_utility.is_group_master():
        helper_functions.save_object(_temp_split_file_name(results_file,num_labels,split),curr_results)
        helper_functions.delete_dir_if_exists(temp_dir_root)
    instance_subset = learner.configs.instance_subset
    results_features = learner.configs.results_features
    test_error_to_print = 'is_train'
    if mpi_utility.is_group_master():
        if hasattr(curr_learner, 'best_params'):
            print s + '-' + str(curr_learner.best_params) + ' Error: ' + \
                  str(curr_results.compute_error(self.configs.loss_function, results_features, test_error_to_print))
        else:
            print s + ' Done'
    if mpi_utility.is_master():
        timer.toc()
    return curr_results
def _run_experiment_args(self, results_file, data_and_splits, method_results, i_labels, split):
    num_labels = self.configs.num_labels[i_labels]
    s = str(num_labels) + '-' + str(split)
    curr_results = _load_temp_split_file(results_file, num_labels, split)
    if curr_results:
        return curr_results
    #print 'num_labels-split: ' + s
    temp_file_name = _temp_split_file_name(results_file, num_labels, split)
    temp_dir_root = helper_functions.remove_suffix(temp_file_name, '.pkl')
    temp_dir = temp_dir_root + '/CV-temp/'
    curr_data = data_and_splits.get_split(split, num_labels)
    learner = self.configs.learner
    curr_learner = copy.deepcopy(learner)
    curr_learner.split_idx_str = s
    curr_learner.temp_dir = temp_dir
    curr_results = curr_learner.train_and_test(curr_data)
    if mpi_utility.is_group_master():
        helper_functions.save_object(_temp_split_file_name(results_file,num_labels,split),curr_results)
        helper_functions.delete_dir_if_exists(temp_dir_root)
    if mpi_utility.is_group_master():
        if hasattr(curr_learner, 'best_params'):
            print s + '-' + str(curr_learner.best_params) + ' Error: ' + str(curr_results.compute_error(self.configs.loss_function))
        else:
            print s + ' Done'
    return curr_results
def append_suffix_to_files(dict, suffix, legend_suffix):
    d = OrderedDict()
    for key, value in dict.iteritems():
        f = helper_functions.remove_suffix(key, '.pkl')
        f += suffix + '.pkl'
        d[f] = value + legend_suffix
    return d
def append_suffix_to_files(dict, suffix, legend_suffix, keys_to_skip=None):
    d = OrderedDict()
    for key, value in dict.iteritems():
        if keys_to_skip is not None and key in keys_to_skip:
            f = key
        else:
            f = helper_functions.remove_suffix(key, '.pkl')
            f += suffix + '.pkl'
        d[f] = value + legend_suffix
    return d
Example #6
0
def get_sized_results(file_name):
    file_name_no_suffix = os.path.basename(helper_functions.remove_suffix(file_name, '.pkl'))
    dir_name = os.path.dirname(file_name)
    all_files = os.listdir(dir_name)
    sized_file_name = file_name_no_suffix + '-num_labels='
    files = []
    results = []
    for s in all_files:
        if sized_file_name in s:
            files.append(dir_name + '/' + s)
            results.append(helper_functions.load_object(dir_name + '/' + s))
    return results
Example #7
0
    def __init__(self, data_set=None, **kwargs):
        super(VisualizationConfigs, self).__init__()
        pc = ProjectConfigs(data_set, **kwargs)
        self.copy_fields(pc, pc_fields_to_copy)
        self.max_rows = 2
        self.vis_table = vis_table
        self.size_to_vis = size_to_vis
        self.sizes_to_use = sizes_to_use
        if pc.data_set in data_set_sizes_to_use:
            self.sizes_to_use = data_set_sizes_to_use[pc.data_set]
        for key, value in kwargs.iteritems():
            setattr(self, key, value)
        self.fontsize = fontsize
        '''
        self.files = [
            'TargetTransfer+NW.pkl',
            'HypothesisTransfer.pkl',
            'LocalTransferDelta_C3=0_radius.pkl',
            'LocalTransferDelta_C3=0.pkl',
            'LocalTransferDelta_radius.pkl',
            'LocalTransferDelta.pkl',
            'LocalTransferDeltaSMS.pkl',
        ]
        '''

        self.files = {
            'TargetTransfer+NW.pkl': 'Target Only',
            'LocalTransferDelta_C3=0.pkl': 'Our Method, alpha=0',
            'LocalTransferDelta.pkl': 'Our Method',
            'LocalTransferDelta_C3=0_cons.pkl': None,
            'LocalTransferDelta_cons.pkl': None,
            'LocalTransferDelta_C3=0_radius.pkl':
            'Our Method, ball graph, alpha=0',
            'LocalTransferDelta_radius.pkl': 'Our Method, ball graph'
        }

        self.files = OrderedDict()

        if plot_idx == PLOT_PARAMETRIC:
            self.files = OrderedDict()
            self.files['TargetTransfer+NW.pkl'] = 'Target Only'
            #self.files['StackTransfer+SKL-RidgeReg.pkl'] = 'Stacking'
            #self.files['SLL-NW.pkl'] = 'LLGC'
            #self.files['CovShift.pkl'] = 'Reweighting'
            #self.files['LocalTransferDeltaSMS_scale'] = 'SMS'
            #
            #self.files['OffsetTransfer-jointCV.pkl'] = 'Offset Transfer'
            self.files['LocalTransferNew-grad-bounds.pkl'] = 'Ours'
            self.files[
                'LocalTransferNew-grad-bounds-opt_ft.pkl'] = 'Our Method: Optimize Target'
            #self.files['LocalTransferNew-grad-bounds-loo.pkl'] = 'Local Transfer New: LOO'
            self.files[
                'LocalTransferNew-grad-bounds-scaleB.pkl'] = 'Our Method: Scale'
            #self.files['LocalTransferNew-grad-bounds-loo-noTransform.pkl'] = 'Local Transfer New: LOO, no Transform'
            #self.files['LocalTransferNew-grad.pkl'] = 'Local Transfer New: No Bounds'
            self.files[
                'LocalTransferNew-bounds-linearB.pkl'] = 'Our Method: Linear'
        elif plot_idx == PLOT_VALIDATION:
            self.files = OrderedDict()
            self.files['TargetTransfer+NW.pkl'] = 'Target Only'
            self.files['SLL-NW.pkl'] = 'LLGC'
            self.files[
                'LocalTransferDelta_radius_l2_linear-b_clip-b_use-val.pkl'] = 'Ours: Linear, validation'
            self.files[
                'LocalTransferDelta_radius_l2_use-val_lap-reg.pkl'] = 'Ours: Nonparametric, validation'
        elif plot_idx == PLOT_CONSTRAINED:
            self.files = OrderedDict()
            self.files['TargetTransfer+NW.pkl'] = 'Target Only'
            self.files['LocalTransferNew-grad-bounds.pkl'] = 'Our Method'
            #self.files['LocalTransferNew-grad-bounds-boundB'] = 'Ours Method: Bounds'
            #self.files['LocalTransferNew-grad-bounds-boundPerc=80'] = 'Our Method: Bounds 80%'
            #self.files['LocalTransferNew-grad-bounds-boundUpper=80'] = 'Our Method: Bound Upper 80%'
            self.files[
                'LocalTransferNew-grad-bounds-boundPerc=[10, 90].pkl'] = 'Our Method: Bound Constraints'
            #self.files['LocalTransferNew-grad-bounds-boundPerc=[0, 100].pkl'] = 'Our Method: Bound Constraints [0, 100]'
        elif plot_idx == PLOT_SMS:
            self.files = OrderedDict()
            self.files['TargetTransfer+NW.pkl'] = 'Target Only'
            self.files['SLL-NW.pkl'] = 'LLGC'
            self.files['LocalTransferDeltaSMS_scale.pkl'] = 'SMS scale'
            self.files['LocalTransferDeltaSMS.pkl'] = 'SMS no scale'
            #self.files['LocalTransferDelta_C3=0_radius_l2_constant-b.pkl'] = 'Constant b, alpha=0'
        elif plot_idx == PLOT_COMPETING_METHODS:
            self.files = OrderedDict()
            self.files['LocalTransferNew-grad-bounds-opt_ft.pkl'] = 'Ours'
            #self.files['TargetTransfer+NW.pkl'] = 'Target Only'
            self.files['StackTransfer+SKL-RidgeReg-jointCV.pkl'] = 'Stacking'
            #self.files['SLL-NW.pkl'] = 'LLGC'
            #self.files['CovShift.pkl'] = 'Reweighting'
            self.files['OffsetTransfer-jointCV.pkl'] = 'Offset'
            #self.files['LocalTransferDeltaSMS_scale'] = 'SMS'
        elif plot_idx == PLOT_TABLE_COMPETING_METHODS:
            self.baseline_idx = 1
            self.data_names_for_table = names_for_table
            self.method_names_for_table = [
                'Ours', 'Target Only', 'Stacking', 'LLGC', 'Reweighting',
                'Offset', 'SMS'
            ]
            self.files = OrderedDict()

            #self.files['LocalTransferNew-grad-bounds.pkl'] = 'Local Transfer New'
            self.files[
                'LocalTransferNew-grad-bounds-opt_ft.pkl'] = 'Local Transfer New: Opt f_t'
            #self.files['LocalTransferNew-grad-bounds-scaleB.pkl'] = 'Local Transfer New: Scale'
            #self.files['LocalTransferNew-bounds-linearB.pkl'] = 'Local Transfer New: Linear B'

            self.files['TargetTransfer+NW.pkl'] = 'Target Only'
            self.files['StackTransfer+SKL-RidgeReg-jointCV.pkl'] = 'Stacking'
            self.files['SLL-NW.pkl'] = 'LLGC'
            self.files['CovShift.pkl'] = 'Reweighting'
            self.files['OffsetTransfer-jointCV.pkl'] = 'Offset Transfer'
            self.files['LocalTransferDeltaSMS_scale'] = 'SMS'
        elif plot_idx == PLOT_TABLE_OUR_METHODS:
            self.baseline_idx = 0
            self.data_names_for_table = names_for_table
            self.method_names_for_table = [
                'Ours', 'Ours: Fixed $f_T$', 'Ours: Fixed $f_T$+Scaling',
                'Ours: Fixed $f_T$+linear $b$', 'Ours: Bound Constraints'
            ]
            self.files = OrderedDict()

            self.files[
                'LocalTransferNew-grad-bounds-opt_ft.pkl'] = 'Local Transfer New: Opt f_t'
            self.files[
                'LocalTransferNew-grad-bounds.pkl'] = 'Local Transfer New'
            self.files[
                'LocalTransferNew-grad-bounds-scaleB.pkl'] = 'Local Transfer New: Scale'
            self.files[
                'LocalTransferNew-bounds-linearB.pkl'] = 'Local Transfer New: Linear B'
            self.files[
                'LocalTransferNew-grad-bounds-boundPerc=[10, 90].pkl'] = 'Our Method: Bound Constraints'

        elif plot_idx == PLOT_TABLE_VAL:
            self.files = OrderedDict()
            self.files[
                'LocalTransferDelta_radius_l2_linear-b_clip-b_use-val-stacking.pkl'] = 'Ours: Linear, Stacking, VAL'
            self.files[
                'LocalTransferDelta_radius_l2_linear-b_clip-b_use-val-stacking-sourceLOO.pkl'] = 'Ours: Linear, Stacking, LOO, VAL'
            self.files['StackTransfer+SKL-RidgeReg-VAL.pkl'] = 'Stacking, VAL'
        elif plot_idx == PLOT_ALPHA:
            self.files = OrderedDict()
            self.files[
                'LocalTransferDelta_radius_l2_linear-b_clip-b.pkl'] = 'Ours: Linear'
            self.files[
                'LocalTransferDelta_C3=0_radius_l2_linear-b.pkl'] = 'Ours: Linear, alpha=0'
        elif plot_idx == PLOT_TABLE_CONSTRAINED:
            self.baseline_idx = 1
            self.data_names_for_table = names_for_table
            self.method_names_for_table = [
                'Ours: Fixed $f_T$', 'Ours: Fixed $F_T$, Constraints'
            ]
            self.files = OrderedDict()
            self.files['LocalTransferNew-grad-bounds.pkl'] = 'Our Method'
            self.files[
                'LocalTransferNew-grad-bounds-boundPerc=[10, 90].pkl'] = 'Our Method: Bound Constraints'

        if use_validation:
            test_files = OrderedDict()
            for f, leg in self.files.iteritems():
                f = helper_functions.remove_suffix(f, '.pkl')
                if f == 'OffsetTransfer-jointCV' or f.find(
                        'LocalTransferNew') == 0:
                    f += '-VAL.pkl'
                elif f == 'LocalTransferDelta_l2_lap-reg':
                    f = 'LocalTransferDelta_l2_use-val_lap-reg.pkl'
                elif f == 'TargetTransfer+NW':
                    f += '.pkl'
                elif f == 'StackTransfer+SKL-RidgeReg':
                    f += '-VAL.pkl'
                else:
                    #f += '_use-val.pkl'
                    f += '-VAL.pkl'
                #leg = 'VALIDATION: ' + leg
                test_files[f] = leg
            self.files = test_files

        if use_sms_plot_data_sets:
            if max_rows == 3:
                self.figsize = (4, 10)
                self.borders = (.15, .9, .95, .05)
            else:
                self.figsize = (6, 6)
                self.borders = (.1, .95, .95, .1)

            if data_set == bc.DATA_SYNTHETIC_STEP_LINEAR_TRANSFER:
                self.ylims = (0, 10)
            elif data_set == bc.DATA_SYNTHETIC_DELTA_LINEAR:
                self.ylims = (0, 200)
            elif data_set == bc.DATA_SYNTHETIC_CROSS:
                self.ylims = (0, 20)
        elif use_1d_data:
            self.borders = (.05, .95, .95, .05)
            if plot_idx in {PLOT_CONSTRAINED, PLOT_VALIDATION}:
                self.borders = (.1, .95, .95, .05)
            if max_rows == 3:
                self.figsize = (12, 10)
            else:
                self.figsize = (14, 6)
                self.borders = (.05, .95, .95, .1)
        else:
            if max_rows == 3:
                self.figsize = (4, 4)
                self.borders = (.15, .9, .95, .05)
            else:
                self.figsize = (14, 6)
                self.borders = (.05, .95, .95, .08)

        self.data_set_to_use = pc.data_set
        self.title = bc.data_name_dict.get(self.data_set_to_use,
                                           'Unknown Data Set')
        self.show_legend_on_all = show_legend_on_all
        self.show_legend_on_missing_files = False
        self.crash_on_missing_files = crash_on_missing_files
        if self.use_1d_data and self.data_set_to_use < bc.DATA_SYNTHETIC_START:
            self.title += ' 1D'
        self.x_axis_string = 'Number of labeled target instances'
    def generate_file_names(self, pc):
        self.files = OrderedDict()
        base_file_name = 'RelReg-cvx-constraints-%s=%s'
        use_test = other_method_configs['use_test_error_for_model_selection']
        use_val = other_method_configs['use_validation']

        #self.files['Mixed-feats_QuadFeatsFew_method=HardConstraints_signs=20.pkl'] = 'Mixed: Hard Constraints, Quad Feats Few, 20 signs'
        #self.files['SKL-RidgeReg-QuadFeatsFew.pkl'] = 'SKL Ridge Regression, Quad Feats Few'
        #self.files['SLL-NW.pkl'] = 'LLGC'
        #self.files['NW.pkl'] = 'NW'

        if other_method_configs['use_nonneg']:
            self.files['Mixed-feats_method=Ridge_nonneg.pkl'] = 'Mixed: Ridge, nonneg'
            self.files['Mixed-feats_method=Rel_pairs=10_corr_nonneg.pkl'] = 'Mixed: Relative, corr, 10 pairs, nonneg'
            self.files['Mixed-feats_method=Rel_pairs=1000_corr_nonneg.pkl'] = 'Mixed: Relative, corr, 1000 pairs, nonneg'
            self.files['Mixed-feats_method=Ridge_nonneg_stacked.pkl'] = 'Mixed: Ridge, nonneg, stacked'
            self.files['Mixed-feats_method=Rel_pairs=10_corr_nonneg_stacked.pkl'] = 'Mixed: Relative, corr, nonneg, stacked, 10 pairs'
        else:
            '''
            self.files['SKL-RidgeReg.pkl'] = 'SKL Ridge Regression'
            self.files['Mixed-feats_method=Ridge.pkl'] = 'Mixed: Ridge'
            self.files['Mixed-feats_method=Rel_signs=10_corr_CVXOPT.pkl'] = 'Mixed: Relative, corr, 10 signs'
            self.files['Mixed-feats_method=Rel_pairs=10_corr_CVXOPT.pkl'] = 'Mixed: Relative, corr, 10 pairs'
            self.files['Mixed-feats_method=Rel_signs=1000_corr_CVXOPT.pkl'] = 'Mixed: Relative, corr, 1000 signs'
            '''
            self.files['Mixed-feats_method=Ridge_CVXOPT.pkl'] = 'Mixed: Ridge'
            self.files['Mixed-feats_method=Rel_signs=10_corr_CVXOPT.pkl'] = 'Mixed: Relative, corr, 10 signs'
            self.files['Mixed-feats_method=Rel_signs=50_corr_CVXOPT.pkl'] = 'Mixed: Relative, corr, 50 signs'
            #self.files['Mixed-feats_method=Ridge_stacked.pkl'] = 'Mixed: Ridge, stacked'
            self.files['Mixed-feats_method=Rel_pairs=10_corr_CVXOPT.pkl'] = 'Mixed: Relative, corr, 10 pairs'
            #self.files['Mixed-feats_method=Rel_pairs=10_corr_CVXOPT_l1.pkl'] = 'Mixed: Relative, corr, 10 pairs, l1'
            #self.files['Mixed-feats_method=Rel_signs=10_corr_CVXOPT_l1.pkl'] = 'Mixed: Relative, corr, 10 signs, l1'
            #self.files['Mixed-feats_method=Rel_signs=10_corr_stacked.pkl'] = 'Mixed: Relative, corr, stacked, 10 signs'
        '''
        self.files['Mixed-feats_method=Ridge.pkl'] = 'Mixed: Ridge'
        self.files['Mixed-feats_method=HardConstraints_pairs=5.pkl'] = 'Mixed: Hard Constraints, 5 pairs'
        self.files['Mixed-feats_method=HardConstraints_pairs=10.pkl'] = 'Mixed: Hard Constraints, 10 pairs'
        self.files['Mixed-feats_method=HardConstraints_pairs=20.pkl'] = 'Mixed: Hard Constraints, 20 pairs'
        self.files['Mixed-feats_method=HardConstraints_signs=5.pkl'] = 'Mixed: Hard Constraints, 5 signs'
        self.files['Mixed-feats_method=HardConstraints_signs=10.pkl'] = 'Mixed: Hard Constraints, 10 signs'
        self.files['Mixed-feats_method=HardConstraints_signs=25.pkl'] = 'Mixed: Hard Constraints, 25 signs'
        '''
        #self.files['SKL-DumReg.pkl'] = 'Predict Mean'
        sizes = []
        suffixes = OrderedDict()
        #suffixes['mixedCV'] = [None,'']
        if not use_test:
            suffixes['nCV'] = [None, '10']

        #suffixes['numFeats'] = [str(num_feat)]

        ordered_keys = [
            'nCV',
        ]

        if use_test or use_val:
            test_files = {}
            for f, leg in self.files.iteritems():
                f = helper_functions.remove_suffix(f, '.pkl')
                if data_set_to_use == bc.DATA_DROSOPHILIA:
                    f += '_50'
                if use_test:
                    f += '-TEST.pkl'
                    leg = 'TEST: ' + leg
                else:
                    f += '-VAL.pkl'
                    leg = 'VALIDATION: ' + leg
                test_files[f] = leg
            self.files = test_files

        methods = []
        #methods.append(('numRandPairs','RelReg, %s pairs', 'Our Method: %s relative'))
        self.title = 'Test'

        all_params = list(grid_search.ParameterGrid(suffixes))
        for file_suffix, legend_name, legend_name_paper in methods:
            for size in sizes:
                for params in all_params:
                    file_name = base_file_name
                    file_name = file_name % (file_suffix, str(size))
                    legend = legend_name
                    if viz_for_paper:
                        legend = legend_name_paper
                    legend %= str(size)
                    for key in ordered_keys:
                        if not params.has_key(key):
                            continue
                        value = params[key]
                        if value is None:
                            continue
                        if value == '':
                            file_name += '-' + key
                            if not viz_for_paper:
                                legend += ', ' + key
                        else:
                            file_name += '-' + key + '=' + str(value)
                            if not viz_for_paper:
                                legend += ', ' + str(value) + ' ' + key
                    if use_test:
                        file_name += '-TEST'
                        legend = 'TEST: ' + legend
                    file_name += '.pkl'
                    self.files[file_name] = legend
        self.files['SKL-DumReg.pkl'] = 'Predict Mean'
Example #9
0
def _delete_temp_folder(file):
    folder = helper_functions.remove_suffix(file, '.pkl')
    helper_functions.delete_dir_if_empty(folder)
Example #10
0
def _temp_experiment_file_name(final_file_name, num_labels):
    directory = helper_functions.remove_suffix(final_file_name, '.pkl')
    return directory + '/num_labels=' + str(num_labels) + '.pkl'
Example #11
0
def _temp_split_file_name(final_file_name, num_labels, split):
    directory = helper_functions.remove_suffix(final_file_name, '.pkl')
    return directory + '/num_labels=' + str(num_labels) + '_split=' + str(split) + '.pkl'
def _delete_temp_folder(file):
    folder = helper_functions.remove_suffix(file, '.pkl')
    helper_functions.delete_dir_if_empty(folder)
def _temp_experiment_file_name(final_file_name, num_labels):
    directory = helper_functions.remove_suffix(final_file_name, '.pkl')
    return directory + '/num_labels=' + str(num_labels) + '.pkl'
def _temp_split_file_name(final_file_name, num_labels, split):
    directory = helper_functions.remove_suffix(final_file_name, '.pkl')
    return directory + '/num_labels=' + str(num_labels) + '_split=' + str(split) + '.pkl'
Example #15
0
    def generate_file_names(self, pc):
        self.files = OrderedDict()
        base_file_name = 'RelReg-cvx-constraints-%s=%s'
        use_test = other_method_configs['use_test_error_for_model_selection']
        use_val = other_method_configs['use_validation']

        #self.files['Mixed-feats_QuadFeatsFew_method=HardConstraints_signs=20.pkl'] = 'Mixed: Hard Constraints, Quad Feats Few, 20 signs'
        #self.files['SKL-RidgeReg-QuadFeatsFew.pkl'] = 'SKL Ridge Regression, Quad Feats Few'
        #self.files['SLL-NW.pkl'] = 'LLGC'
        #self.files['NW.pkl'] = 'NW'

        if viz_type == VIZ_SAME_SIGN:
            self.files['Mixed-feats_method=Ridge.pkl'] = 'Ridge'
            self.files[
                'Mixed-feats_method=Rel_meanB-pairsSameSignPrimalHinge=1-use_sign_corr_l1.pkl'] = 'Our Method: 100% pairwise signs'
        elif viz_type == VIZ_DUAL:
            self.files['Mixed-feats_method=Ridge.pkl'] = 'Ridge'
            #self.files['Mixed-feats_method=Rel_meanB_signs=1-use_sign_corr_l1.pkl'] = 'Primal: Signs, meanB'
            ##self.files['Mixed-feats_method=Rel_dual_meanB_signs=1-use_sign_corr_l1.pkl'] = 'Dual: Signs, meanB'
            self.files[
                'Mixed-feats_method=Rel_dual_signs=1-use_sign_corr_l1.pkl'] = 'Dual: Signs'
            #self.files['Mixed-feats_method=Rel_meanB_pairsSameSignPrimal=0.25-use_sign_corr_l1.pkl'] = 'Same Sign Primal: meanB, 25% pairs'
            #self.files['Mixed-feats_method=Rel_meanB_pairsSameSignPrimal=0.5-use_sign_corr_l1.pkl'] = 'Same Sign Primal: meanB, 50% pairs'
            #self.files['Mixed-feats_method=Rel_meanB_pairsSameSignPrimal=1-use_sign_corr_l1.pkl'] = 'Same Sign Primal: meanB, 100% pairs'
            #self.files['Mixed-feats_method=Rel_meanB_pairsSameSignPrimal=2-use_sign_corr_l1.pkl'] = 'Same Sign Primal: meanB, 200% pairs'
            #self.files['Mixed-feats_method=Rel_meanB-pairsSameSignQCQP=1-use_sign_corr_l1.pkl'] =  'Same sign QCQP'
            self.files[
                'Mixed-feats_method=Rel_meanB-pairsSameSignPrimalHinge=1-use_sign_corr_l1.pkl'] = 'Same Sign Hinge'
            self.files[
                'Mixed-feats_method=Rel_meanB-pairsSameSignPrimalHinge=1-use_sign_corr_l1_fixC3'] = 'Same Sign Hinge: Fix C2'
        elif viz_type == VIZ_EXPERIMENT:
            self.files['Mixed-feats_method=Ridge.pkl'] = 'Mixed: Ridge'
            self.files['Mixed-feats_method=Lasso.pkl'] = 'Mixed: Lasso'
            '''
            self.files['Mixed-feats_method=Rel_nonneg_l1.pkl'] = 'Mixed: Nonneg'
            self.files['Mixed-feats_method=Rel_nonneg_not-relaxed_l1.pkl'] = 'Mixed: Nonneg, not relaxed'
            '''
            self.files[
                'Mixed-feats_method=Rel_signs=0.25-use_sign_corr_l1.pkl'] = 'Mixed: 25% signs'
            self.files[
                'Mixed-feats_method=Rel_signs=0.5-use_sign_corr_l1.pkl'] = 'Mixed: 50% signs'
            self.files[
                'Mixed-feats_method=Rel_signs=1-use_sign_corr_l1.pkl'] = 'Mixed: 100% signs'
            '''
            self.files['Mixed-feats_method=Rel_pairs=0.25-use_sign_corr_l1.pkl'] = 'Mixed: 25% pairs'
            self.files['Mixed-feats_method=Rel_pairs=0.5-use_sign_corr_l1.pkl'] = 'Mixed: 50% pairs'
            self.files['Mixed-feats_method=Rel_pairs=1-use_sign_corr_l1.pkl'] = 'Mixed: 100% pairs'
            '''
            self.files[
                'Mixed-feats_method=Rel_signs=1-use_sign_trainCorr_l1.pkl'] = 'Mixed: 100% signs, train correlation'
        elif viz_type == VIZ_PAPER_ERROR:
            self.files[
                'Mixed-feats_method=Rel-use_sign_nonneg_not-relaxed_l1.pkl'] = 'Nonnegative'
            self.files['Mixed-feats_method=Ridge.pkl'] = 'Ridge'
            self.files['Mixed-feats_method=Lasso.pkl'] = 'Lasso'
            self.files[
                'Mixed-feats_method=Rel_signs=1-use_sign_corr_l1.pkl'] = 'PSCR: $p$ signs'
            self.files[
                'Mixed-feats_method=Rel_pairs=1-use_sign_corr_l1.pkl'] = 'PRCR: $p$ pairs'
            self.files[
                'Mixed-feats_method=Rel_meanB-pairsSameSignPrimalHinge=1-use_sign_corr_l1.pkl'] = 'PPSCR: $p$ sign pairs'
        elif viz_type == VIZ_PAPER_SIGNS:
            self.files[
                'Mixed-feats_method=Rel_signs=0.25-use_sign_corr_l1.pkl'] = 'PSCR: $.25p$ signs'
            self.files[
                'Mixed-feats_method=Rel_signs=0.5-use_sign_corr_l1.pkl'] = 'PSCR: $.5p$ signs'
            self.files[
                'Mixed-feats_method=Rel_signs=1-use_sign_corr_l1.pkl'] = 'PSCR: $p$ signs'
        elif viz_type == VIZ_PAPER_RELATIVE:
            self.files[
                'Mixed-feats_method=Rel_pairs=0.25-use_sign_corr_l1.pkl'] = 'PRCR: $.25p$ pairs'
            self.files[
                'Mixed-feats_method=Rel_pairs=0.5-use_sign_corr_l1.pkl'] = 'PRCR: $.5p$ pairs'
            self.files[
                'Mixed-feats_method=Rel_pairs=1-use_sign_corr_l1.pkl'] = 'PRCR: $p$ pairs'
        elif viz_type == VIZ_PAPER_TRAINING_CORR:
            self.files[
                'Mixed-feats_method=Rel_signs=1-use_sign_corr_l1.pkl'] = 'PSCR: $p$ signs'
            self.files[
                'Mixed-feats_method=Rel_signs=1-use_sign_trainCorr_l1.pkl'] = 'PSCR: $p$ signs, Training Guidance'
        elif viz_type == VIZ_PAPER_TRANSFER:
            self.files['Mixed-feats_method=Ridge_transfer'] = 'Ridge: Transfer'
            self.files[
                'Mixed-feats_method=Rel_signs=1-use_sign_corr_l1.pkl'] = 'PSCR: $p$ signs'
            self.files[
                'Mixed-feats_method=Rel_signs=1-use_sign_corr_l1_transfer.pkl'] = 'Transfer PSCR: $p$ signs'
        elif viz_type == VIZ_PAPER_TRAINING_SINGLE:
            self.files[
                'Mixed-feats_method=Rel_signs=1-use_sign_corr_l1.pkl'] = 'With Outside Guidance'
            self.files[
                'Mixed-feats_method=Rel_signs=1-use_sign_trainCorr_l1.pkl'] = 'Without Outside Guidance'
        elif viz_type == VIZ_PAPER_HARD_CONSTRAINTS:
            self.files[
                'Mixed-feats_method=Rel_signs=1-use_sign_corr_l1.pkl'] = 'PSCR: $p$ signs'
            self.files[
                'Mixed-feats_method=Rel_signs=1-use_sign_corr_not-relaxed_l1.pkl'] = 'Signed Ridge: $p$'
        elif viz_type == VIZ_PAPER_TABLE:
            self.vis_table = True
            self.data_names_for_table = [
                'Synthetic', 'BH', 'Wine', 'Concrete', 'Housing', 'ITS',
                'Heart'
            ]
            self.method_names_for_table = [
                'Nonnegative', 'Ridge', 'Lasso', 'PSCR: $p$ Signs',
                'PRCR: $p$ Pairs', 'PPSCR: $p$ pairs'
            ]
            self.files = OrderedDict()

            self.files[
                'Mixed-feats_method=Rel-use_sign_nonneg_not-relaxed_l1.pkl'] = 'Nonnegative'
            self.files['Mixed-feats_method=Ridge.pkl'] = 'Ridge'
            self.files['Mixed-feats_method=Lasso.pkl'] = 'Lasso'
            self.files[
                'Mixed-feats_method=Rel_signs=1-use_sign_corr_l1.pkl'] = 'Our Method: 100% signs'
            self.files[
                'Mixed-feats_method=Rel_pairs=1-use_sign_corr_l1.pkl'] = 'Our Method: 100% pairs'
            self.files[
                'Mixed-feats_method=Rel_meanB-pairsSameSignPrimalHinge=1-use_sign_corr_l1.pkl'] = 'Our Method: 100% pairwise signs'
        elif viz_type == VIZ_PAPER_TABLE_TRANSFER:
            self.vis_table = True
            self.data_names_for_table = [
                'Synthetic', 'BH', 'Wine', 'Concrete', 'Housing', 'ITS',
                'Heart'
            ]
            self.method_names_for_table = [
                'Ridge', 'Lasso', 'Transfer Ridge', 'PSCR: $p$ Signs',
                'Transfer PSCR: $p$ Signs'
            ]
            self.files['Mixed-feats_method=Ridge.pkl'] = 'Ridge'
            self.files['Mixed-feats_method=Lasso.pkl'] = 'Lasso'
            self.files['Mixed-feats_method=Ridge_transfer'] = 'Ridge: Transfer'
            self.files[
                'Mixed-feats_method=Rel_signs=1-use_sign_corr_l1.pkl'] = 'Our Method'
            self.files[
                'Mixed-feats_method=Rel_signs=1-use_sign_corr_l1_transfer.pkl'] = 'Our Method: Transfer'
        elif viz_type == VIZ_PAPER_TABLE_TRAINING_CORR:
            self.vis_table = True
            self.data_names_for_table = [
                'Synthetic', 'BH', 'Wine', 'Concrete', 'Housing', 'ITS',
                'Heart'
            ]
            self.method_names_for_table = [
                'PSCR: $p$ Signs', 'PSCR: Training Set Guidance, $p$ Signs'
            ]
            self.files[
                'Mixed-feats_method=Rel_signs=1-use_sign_corr_l1.pkl'] = 'Our Method'
            self.files[
                'Mixed-feats_method=Rel_signs=1-use_sign_trainCorr_l1.pkl'] = 'Our Method: Training Set Signs'
        elif viz_type == VIZ_PAPER_TABLE_HARD_CONSTRAINTS:
            self.vis_table = True
            self.data_names_for_table = [
                'Synthetic', 'BH', 'Wine', 'Concrete', 'Housing', 'ITS',
                'Heart'
            ]
            self.method_names_for_table = ['PSCR: $p$ Signs', 'Signed Ridge']
            self.files[
                'Mixed-feats_method=Rel_signs=1-use_sign_corr_l1.pkl'] = 'Our Method: 100% signs'
            self.files[
                'Mixed-feats_method=Rel_signs=1-use_sign_corr_not-relaxed_l1.pkl'] = 'Signed Ridge'

        #self.files['SKL-DumReg.pkl'] = 'Predict Mean'

        if use_test or use_val:
            test_files = OrderedDict()
            for f, leg in self.files.iteritems():
                f = helper_functions.remove_suffix(f, '.pkl')
                if data_set_to_use == bc.DATA_DROSOPHILIA:
                    f += '_50'
                if use_test:
                    f += '-TEST.pkl'
                    leg = 'TEST: ' + leg
                else:
                    f += '-VAL.pkl'
                    #leg = 'VALIDATION: ' + leg
                test_files[f] = leg
            self.files = test_files

        self.title = self.results_dir
        if viz_type > VIZ_EXPERIMENT:
            self.title = bc.data_name_dict[pc.data_set]