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)
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)
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
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 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_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)
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]
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]
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
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
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
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
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
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