Beispiel #1
0
def create_meaned_amp_pred_corrs(
    prefix='',
    folder='data/models/paper/ours/cnt/deep4/car/',
    params='default',
    perturb_names=('no_dev', 'rand_mad', 'rand_std')):
    """This takes computed cov_vars and transforms them to corrs 
    and saves corrs."""
    if params == 'default':
        params = dict(cnt_preprocessors="$cz_zero_resample_car_demean",
                      trial_start=1500,
                      trial_stop=4000)
    res_pool = ResultPool()
    res_pool.load_results(folder, params=params)
    result_file_names = res_pool.result_file_names()
    results = res_pool.result_objects()

    # sort by dataset filename
    sort_order = np.argsort(
        [r.parameters['dataset_filename'] for r in results])

    result_file_names = np.array(result_file_names)[sort_order]
    results = np.array(results)[sort_order]

    all_base_names = [
        name.replace('.result.pkl', '') for name in result_file_names
    ]
    if prefix != '':
        prefix = '.' + prefix
    for i_file, base_name in enumerate(all_base_names):
        log.info("Loading {:s}".format(
            results[i_file].parameters['dataset_filename']))
        create_meaned_amp_pred_corrs_for_file(base_name, prefix, perturb_names)
Beispiel #2
0
 def _collect_parameters_and_results(self, start, stop, params):
     self._result_pool = ResultPool()
     self._result_pool.load_results(self._folder_name, start, stop, params)
     if (self._result_pool.have_varying_datasets()
             or self._result_pool.have_varying_leave_out()):
         self._dataset_averaged_results = DatasetAveragedResults()
         self._dataset_averaged_results.extract_results(self._result_pool)
def create_all_amplitude_perturbation_corrs(folder_name,
                                            params,
                                            start,
                                            stop,
                                            with_square,
                                            with_square_cov,
                                            after_softmax,
                                            n_samples,
                                            perturbations='default'):
    if perturbations == 'default':
        perturbations = (
            (
                'no_dev',
                FuncAndArgs(
                    rand_diff,
                    with_blocks=False,  #just return 1
                    deviation_func=lambda arr, axis, keepdims: 1)),
            ('rand_mad',
             FuncAndArgs(rand_diff,
                         with_blocks=False,
                         deviation_func=median_absolute_deviation)),
            ('rand_std',
             FuncAndArgs(rand_diff, with_blocks=False, deviation_func=np.std)),
        )
    elif perturbations == 'simple_no_scale':
        perturbations = (
            (
                'no_dev',
                FuncAndArgs(
                    rand_diff,
                    with_blocks=False,  #just return 1
                    deviation_func=lambda arr, axis, keepdims: 1)), )
    assert not (with_square and with_square_cov)
    res_pool = ResultPool()
    res_pool.load_results(folder_name, params=params)
    res_file_names = res_pool.result_file_names()
    all_base_names = [
        name.replace('.result.pkl', '') for name in res_file_names
    ]
    start = start or 0
    stop = stop or len(all_base_names)
    for i_file, base_name in enumerate(all_base_names[start:stop]):
        log.info("Running {:s} ({:d} of {:d})".format(base_name,
                                                      i_file + start + 1,
                                                      stop))
        create_amplitude_perturbation_corrs(base_name,
                                            with_square=with_square,
                                            with_square_cov=with_square_cov,
                                            after_softmax=after_softmax,
                                            n_samples=n_samples,
                                            perturbations=perturbations)
Beispiel #4
0
def load_data_frame(folder, params=None, shorten_headers=True):
    res_pool = ResultPool()
    res_pool.load_results(folder, params=params)
    result_objs = res_pool.result_objects()
    varying_params = res_pool.varying_params()
    constant_params = res_pool.constant_params()
    file_names = res_pool.result_file_names()
    data_frame = to_data_frame(file_names,
                               result_objs,
                               varying_params,
                               constant_params,
                               shorten_headers=shorten_headers)
    data_frame.attrs = {'folder': folder, 'params': params}
    return data_frame
def create_unit_output_class_corrs_for_files(folder_name, params, start, stop,
                                             i_all_layers):
    res_pool = ResultPool()
    res_pool.load_results(folder_name, params=params)
    res_file_names = res_pool.result_file_names()
    all_base_names = [
        name.replace('.result.pkl', '') for name in res_file_names
    ]
    start = start or 0
    stop = stop or len(all_base_names)
    for i_file, basename in enumerate(all_base_names[start:stop]):
        log.info("Running {:s} ({:d} of {:d})".format(basename,
                                                      i_file + start + 1,
                                                      stop))
        create_unit_output_class_corrs(basename, i_all_layers)
Beispiel #6
0
def create_env_class_corrs(folder, params, start, stop):
    res_pool = ResultPool()
    res_pool.load_results(folder, params=params)
    res_file_names = res_pool.result_file_names()

    all_base_names = [
        name.replace('.result.pkl', '') for name in res_file_names
    ]
    start = start or 0
    stop = stop or len(all_base_names)

    with_square = True
    for i_exp, base_name in enumerate(all_base_names[start:stop]):
        log.info("Running {:s} ({:d} of {:d})".format(base_name,
                                                      i_exp + start + 1, stop))
        create_env_class_corr_file(base_name, with_square)
Beispiel #7
0
def create_envelopes(folder_name, params, start, stop):
    res_pool = ResultPool()
    res_pool.load_results(folder_name, params=params)
    res_file_names = res_pool.result_file_names()
    log.info("{:d} files found.".format(len(res_file_names)))
    yaml_file_names = [name.replace('.result.pkl', '.yaml')
        for name in res_file_names]
    stop = stop or len(yaml_file_names)
    i_file = start
    for i_file in xrange(start, stop):
        file_name = yaml_file_names[i_file]
        log.info("Running {:s} ({:d} of {:d})".format(
            file_name, i_file+1, stop))
        log.info("Parameters {:s}".format(
            str(res_pool.result_objects()[i_file].parameters)))
        create_envelopes_for_experiment(file_name)
Beispiel #8
0
def dataset_to_env_file(wanted_dataset_filename):
    """ For any dataset filename, give envelope filename
    These experiments are, where envelopes were calculated from originally"""
    res_pool= ResultPool()
    res_pool.load_results('data/models-backup/paper/ours/cnt/deep4/car/',
             params=dict(cnt_preprocessors="$cz_zero_resample_car_demean",
                 trial_start=1500, trial_stop=4000))

    dataset_to_env_file_name = dict()
    
    for result, res_file_name in zip(res_pool.result_objects(), res_pool.result_file_names()):
        dataset_file_name = result.parameters['dataset_filename']
        envelope_file_name = res_file_name.replace('.result.pkl', '.env.npy')
        assert os.path.isfile(envelope_file_name)
        dataset_to_env_file_name[dataset_file_name] = envelope_file_name
    return dataset_to_env_file_name[wanted_dataset_filename]
Beispiel #9
0
def create_env_corrs(folder_name, params, start, stop):
    from braindecode.analysis.create_env_class_corrs import create_env_class_corr_file
    res_pool = ResultPool()
    res_pool.load_results(folder_name, params=params)
    res_file_names = res_pool.result_file_names()
    all_base_names = [name.replace('.result.pkl', '')
        for name in res_file_names]
    start = start or 0
    stop = stop or len(all_base_names) 
    # Hackhack hardcoded layers, since I know this is correct layers atm
    i_all_layers = [8,14,20,26,28] #for shallow [3, 4, 5, 7]
    for i_file, base_name in enumerate(all_base_names[start:stop]):
        with_square = True
        log.info("Running {:s} ({:d} of {:d})".format(
            base_name, i_file+start+1, stop))
        create_topo_env_corrs_files(base_name, i_all_layers, with_square)
        create_env_class_corr_file(base_name, with_square)
Beispiel #10
0
def load_amp_corrs(with_square, with_square_corr, cov_or_corr):
    assert not (with_square and with_square_corr)
    assert cov_or_corr == 'cov' or cov_or_corr == 'corr'
    res_pool = ResultPool()
    res_pool.load_results('data/models/paper/ours/cnt/deep4/car/',
                          params=dict(sensor_names="$all_EEG_sensors",
                                      batch_modifier="null",
                                      low_cut_off_hz="null",
                                      first_nonlin="$elu"))
    result_file_names = res_pool.result_file_names()
    results = res_pool.result_objects()

    # sort by dataset filename
    sort_order = np.argsort(
        [r.parameters['dataset_filename'] for r in results])

    result_file_names = np.array(result_file_names)[sort_order]
    results = np.array(results)[sort_order]

    all_base_names = [
        name.replace('.result.pkl', '') for name in result_file_names
    ]
    clean_mask = []
    all_corrs = dict()
    for i_file, base_name in enumerate(all_base_names):
        if any(s in results[i_file].parameters['dataset_filename']
               for s in unclean_sets):
            clean_mask.append(False)
        else:
            clean_mask.append(True)
        for perturb_name in ('rand_mad', 'rand_std', 'no_dev'):
            file_name_end = '.{:s}.amp_{:s}s.npy'.format(
                perturb_name, cov_or_corr)
            if with_square:
                file_name_end = '.square' + file_name_end
            if with_square_corr:
                file_name_end = ".corrtosquare" + file_name_end
            file_name = base_name + file_name_end
            assert os.path.isfile(file_name), "Expect {:s} to exist".format(
                file_name)
            this_arr = all_corrs.pop(perturb_name, [])
            this_arr.append(np.load(file_name))
            all_corrs[perturb_name] = this_arr

    clean_mask = np.array(clean_mask)
    return all_corrs, clean_mask
Beispiel #11
0
def load_patterns(folder='data/models/paper/ours/csp/car/'):
    res_pool = ResultPool()
    res_pool.load_results(folder)

    result_file_names = res_pool.result_file_names()
    results = res_pool.result_objects()

    # sort by dataset filename
    sort_order = np.argsort([r.parameters['dataset_filename'] for r in results])

    result_file_names = np.array(result_file_names)[sort_order]
    results = np.array(results)[sort_order]

    # now sorted
    dataset_names = [r.parameters['dataset_filename'] for r in results]
    all_patterns = []
    clean_mask = []
    all_exps = []
    for file_name, dataset in zip(result_file_names, dataset_names):
        log.info("Loading for {:s}".format(dataset))
        model_file_name = file_name.replace('.result.pkl', '.pkl')
        csp_exp = np.load(model_file_name)
        patterns = csp_exp.binary_csp.patterns
        pattern_arr = patterns_to_single_array(patterns)
        pattern_arr = pattern_arr.squeeze()
        assert not np.any(np.isnan(pattern_arr))
        all_patterns.append(pattern_arr)
        all_exps.append(csp_exp)
        
        if any([s in dataset for s in unclean_sets]):
            clean_mask.append(False)
        else:
            clean_mask.append(True)

    all_patterns = np.array(all_patterns)
    clean_mask = np.array(clean_mask)
    return all_patterns, clean_mask, all_exps
Beispiel #12
0
def load_analysis_results(folder, params, file_name_end):
    result_pool = ResultPool()
    result_pool.load_results(folder, params=params)
    result_file_names = result_pool.result_file_names()
    results = result_pool.result_objects()  # sort by dataset filename
    sort_order = np.argsort(
        [r.parameters['dataset_filename'] for r in results])
    result_file_names = np.array(result_file_names)[sort_order]
    results = np.array(results)[sort_order]
    analysis_result_per_person = []
    clean_mask = []
    for file_name, result in zip(result_file_names, results):
        analysis_result_file = file_name.replace('.result.pkl', file_name_end)
        assert os.path.isfile(analysis_result_file)
        analysis_result = np.load(analysis_result_file)
        if any(s in result.parameters['dataset_filename']
               for s in unclean_sets):
            clean_mask.append(False)
        else:
            clean_mask.append(True)
        analysis_result_per_person.append(analysis_result)
    analysis_result_per_person = np.array(analysis_result_per_person)
    clean_mask = np.array(clean_mask)
    return analysis_result_per_person, clean_mask
Beispiel #13
0
def load_meaned_amp_pred_corrs(prefix='',
                               folder='data/models/paper/ours/cnt/deep4/car/',
                               params='default',
                               perturb_names=('no_dev', 'rand_mad',
                                              'rand_std')):
    if params == 'default':
        params = dict(cnt_preprocessors="$cz_zero_resample_car_demean",
                      trial_start=1500,
                      trial_stop=4000)
    res_pool = ResultPool()
    res_pool.load_results(folder, params=params)
    result_file_names = res_pool.result_file_names()
    results = res_pool.result_objects()
    if prefix != '':
        prefix = '.' + prefix

    # sort by dataset filename
    sort_order = np.argsort(
        [r.parameters['dataset_filename'] for r in results])

    result_file_names = np.array(result_file_names)[sort_order]
    results = np.array(results)[sort_order]

    all_base_names = [
        name.replace('.result.pkl', '') for name in result_file_names
    ]
    clean_mask = []
    all_corrs = dict()
    for i_file, base_name in enumerate(all_base_names):
        # Check that all perturbations exist
        all_perturbations_exist = True
        for perturb_name in perturb_names:
            filename_end = '{:s}.{:s}.amp_cov_var_corrs.npy'.format(
                prefix, perturb_name)
            filename = base_name + filename_end
            if not os.path.isfile(filename):
                all_perturbations_exist = False
                log.warn("{:s} does not exist".format(filename))
        if not all_perturbations_exist:
            log.warn("Skipping {:s} since not all perturbations exist".format(
                base_name))
            continue

        # Check that all exist for subject
        if any(s in results[i_file].parameters['dataset_filename']
               for s in unclean_sets):
            clean_mask.append(False)
        else:
            clean_mask.append(True)
        for perturb_name in perturb_names:
            filename_end = '{:s}.{:s}.amp_cov_var_corrs.npy'.format(
                prefix, perturb_name)
            filename = base_name + filename_end
            assert os.path.isfile(filename), (
                "Expect {:s} to exist".format(filename))
            this_arr = all_corrs.pop(perturb_name, [])
            this_corrs = np.load(filename)
            this_arr.append(this_corrs)
            all_corrs[perturb_name] = this_arr

    clean_mask = np.array(clean_mask)
    return all_corrs, clean_mask