Пример #1
0
def process_data(filename):
    data = RampExperiment.load_experiment(filename).data
    angle_map = {7: 12, 6: 17, 5: 22, 4: 27, 3: 33, 2: 39, 1: 45}
    data["angle"] = [angle_map[angle] for angle in data["angle"]]

    # workaround for timedelta since pandas can't take the mean of a timedelta:
    # http://stackoverflow.com/questions/20625982/
    # split-apply-combine-on-pandas-timedelta-column
    data["rt"] = [rt.total_seconds() if rt else None for rt in data["rt"]]

    # remove subject 4
    data = data.ix[1:3].append(data.ix[5:])

    # SEM function
    sem = lambda x: np.std(x, ddof=1) / np.sqrt(len(x))
    sem.__name__ = "sem"

    # split-apply-combine
    summary = data.groupby(["angle", "perception"]).aggregate([np.mean, sem])
    summary["can step"] *= 100

    return summary
Пример #2
0
#!/usr/bin/env python3.3
import numpy as np
import rpy2.robjects as r
import pandas.rpy.common as com

from ramp import RampExperiment

data = RampExperiment.load_experiment('exp1.dat').data
angle_map = {7: 12,
             6: 17,
             5: 22,
             4: 27,
             3: 33,
             2: 39,
             1: 45}
data['angle'] = [angle_map[angle] for angle in data['angle']]

#workaround for timedelta since pandas can't take the mean of a timedelta:
# http://stackoverflow.com/questions/20625982/split-apply-combine-on-pandas-timedelta-column
data['rt'] = [rt.total_seconds() if rt else None for rt in data['rt']]

# remove subject 4
data = data.ix[1:3].append(data.ix[5:])

# use int for response
data['response'] = data['can step'].astype(int)

# Means by subject
means = data.reset_index().groupby(['participant', 'perception', 'angle']).mean()

# arcsine transformation