def test_extract_trial_features_real(): csvs = [ "./data/fh_pca_space_merge_Insula_rt_fast.csv", "./data/fh_pca_space_merge_Insula_rt_slow.csv" ] # load_dimreduce_data_fromcl(csvs, feature_cols, label_col, cv_col, trial_tr_col) feature_col = range(0,3) label_col = 5 cv_col = 6 trial_tr_col = 7 Xs, ys, indices, cvcodes = load_dimreduce_data_fromcl( csvs, feature_col, label_col, cv_col, trial_tr_col ) X = np.concatenate(Xs) y = create_y(np.concatenate(ys)) trials = np.concatenate(indices) windowstr = '0:10' window = range(*[int(i) for i in windowstr.split(':')]) Xfea, indexfea, otherfea = extract_trial_features( X, trials, window, [trials], None ) yea = otherfea[0] # Xmax, Xmin, Xdiff, Xmean, Xslope print("Xmax\n{0}".format(Xfea[:,0:3])) print("Xmin\n{0}".format(Xfea[:,3:6])) print("Xdiff\n{0}".format(Xfea[:,6:9])) print("Xmean\n{0}".format(Xfea[:,9:12])) print("Xslope\n{0}".format(Xfea[:,12:15]))
def test_extract_trial_features_simulated(): prng = np.random.RandomState(43) # Create data iti = 2 updown = range(1,4) + range(-2,0) l = len(updown) accum2 = np.asarray([0]*iti + updown + [0]*iti + updown) nullfea = prng.rand(accum2.shape[0]) X = np.vstack([accum2, nullfea]).T y = np.asarray([0]*iti + [1]*l + [0]*iti + [2]*l) trials = np.asarray([0]*iti + [1]*l + [0]*iti + [2]*l) assert y.shape == trials.shape, "y and trials do not match" assert X.shape[0] == y.shape[0], "y and X do not match" print("\n*** Test 1: Full window ***") window=range(l-1) Xfea, indexfea, otherfea = extract_trial_features( X, trials, window, [trials], 0 ) yea = otherfea[0] assert Xfea.shape[0] == 2, "Xfea nrow is wrong" assert Xfea.shape[1] == 2 * 5, "Xfea wrong feature number" assert len(yea) == 2, "yfea is off" assert len(indexfea) == 2, "trialfea is off" # Xmax, Xmin, Xdiff, Xmean, Xslope print("Xmax\n{0}".format(Xfea[:,0:2])) print("Xmin\n{0}".format(Xfea[:,2:4])) print("Xdiff\n{0}".format(Xfea[:,4:6])) print("Xmean\n{0}".format(Xfea[:,6:8])) print("Xslope\n{0}".format(Xfea[:,8:10]))
def _data(csvs, feature_index, window, label_col, trial_tr_col): """Data loading and feature selection helper.""" Xs, ys, indices, cvcodes = load_dimreduce_data_fromcl( csvs, feature_index, label_col, label_col, trial_tr_col ) X = np.concatenate(Xs) y = create_y(np.concatenate(ys)) index = np.concatenate(indices) cvcode = np.concatenate(cvcodes) X, index, othermeta = extract_trial_features(X, index, window, [y, cvcode], None ) y, _ = othermeta ## toss cvcode, not applicable return X, y
feature_index = range(*[int(i) for i in args.data.split(':')]) csvs = args.t # load_dimreduce_data_fromcl(csvs, feature_cols, label_col, cv_col, trial_tr_col) Xs, ys, indices, cvcodes = load_dimreduce_data_fromcl( csvs, feature_index, args.labels, args.cv, args.trial_tr ) X = np.concatenate(Xs) y = create_y(np.concatenate(ys)) index = np.concatenate(indices) cvcode = np.concatenate(cvcodes) window = range(*[int(i) for i in args.window.split(':')]) X, index, othermeta = extract_trial_features( X, index, window, [y, cvcode], None ) y, cvcode = othermeta assert X.shape[0] == y.shape[0], "X and y length mismatch" # ---- # Setup CV: # # Kfold splitting by label or by custom label # (probably by participant) n_fold = 3 if args.labels == args.cv: cv = KFold(y.shape[0], n_folds=n_fold, indices=True) else: uncvcode = np.unique(cvcode)