def word_summary(dm): """ desc: Plots the mean pupil size for dark and bright words as a bar plot. The time window is indicated by the PEAKWIN constant. This data is also written to a .csv file. arguments: dm: type: DataMatrix """ dm = (dm.type == "light") | (dm.type == "dark") x = np.arange(dm.pupil.depth) sm = DataMatrix(length=len(dm.word.unique)) sm.word = 0 sm.type = 0 sm.pupil_win = FloatColumn sm.pupil_win_se = FloatColumn sm.pupil_full = FloatColumn sm.pupil_full_se = FloatColumn for i, w in enumerate(dm.word.unique): _dm = dm.word == w sm.word[i] = w sm.type[i] = (dm.word == w).type[0] sm.pupil_win[i], sm.pupil_win_se[i] = size_se(_dm, PEAKWIN[0], PEAKWIN[1]) sm.pupil_full[i], sm.pupil_full_se[i] = size_se(_dm) sm = operations.sort(sm, sm.pupil_win) io.writetxt(sm, "%s/word_summary.csv" % OUTPUT_FOLDER) plot.new(size=(4, 3)) dx = 0 for color, type_ in ((orange[1], "light"), (blue[1], "dark")): sm_ = sm.type == type_ x = np.arange(len(sm_)) plt.plot(sm_.pupil_win, "o-", color=color) if type_ == "dark": yerr = (np.zeros(len(sm_)), sm_.pupil_win_se) else: yerr = (sm_.pupil_win_se, np.zeros(len(sm_))) plt.errorbar(x, sm_.pupil_win, yerr=yerr, linestyle="", color=color, capsize=0) plt.xlim(-1, 33) plt.ylabel("Pupil size (normalized)") plt.xlabel("Word") plt.xticks([]) plot.save("word_summary")