Example #1
0
def descriptives(dm):

    """Prints descriptive statistics and perform some basic anovas."""

    pm = PivotMatrix(dm, ["cond"], ["subject_nr"], dv="saccEndX", func="size")
    pm.save("output/%s/cellCount.cond.csv" % exp)
    print pm

    quit()

    pm = PivotMatrix(dm, ["saccSide"], ["subject_nr"], dv="saccEndX")
    pm.save("output/%s/saccEndX.saccSide.csv" % exp)

    pm = PivotMatrix(dm, ["saccSide"], ["subject_nr"], dv="saccNormX")
    pm.save("output/%s/saccNormX.saccSide.csv" % exp)

    pm = PivotMatrix(dm, ["cond", "saccSide"], ["subject_nr"], dv="saccLat2")
    pm.save("output/%s/saccLat.cond.saccSide.csv" % exp)

    pm = PivotMatrix(dm, ["saccCol"], ["subject_nr"], dv="saccLat2")
    pm.save("output/%s/saccLat.saccCol.csv" % exp)

    pm = PivotMatrix(dm, ["cond"], ["subject_nr"], dv="saccLat2")
    pm.save("output/%s/saccLat.cond.csv" % exp)

    aov = AnovaMatrix(dm, ["cond"], "saccLat2", subject="subject_nr")
    aov.save("output/%s/aov.cond.saccLat.csv" % exp)

    print "Saccade latency: %.4f (%.4f)" % (dm["saccLat2"].mean(), dm["saccLat2"].std())
Example #2
0
def latencyCorr(dm):

    """
	Determines the correlation between saccade latency and the latency of the
	PLR.

	Arguments:
	dm		--	DataMatrix
	"""

    dm = dm.addField("saccLat2Bin", dtype=float)
    dm = dm.calcPerc("saccLat2", "saccLat2Bin", keys=["subject_nr"], nBin=10)
    # dm = dm.select('cond == "onset"')
    l = [["subject_nr", "cond", "bin", "saccLat", "t0"]]
    colors = TangoPalette.brightColors[:] * 10
    for _dm in dm.group(["subject_nr", "saccLat2Bin"]):
        for cond in ("constant", "onset"):
            __dm = _dm.select("cond == '%s'" % cond, verbose=False)
            dmWhite = __dm.select('saccCol == "white"', verbose=False)
            xAvg, yAvg, errAvg = TraceKit.getTraceAvg(
                __dm,
                signal="pupil",
                phase="postSacc",
                traceLen=postTraceLen,
                baseline=baseline,
                baselineLock=baselineLock,
            )
            xWhite, yWhite, errWhite = TraceKit.getTraceAvg(
                dmWhite,
                signal="pupil",
                phase="postSacc",
                traceLen=postTraceLen,
                baseline=baseline,
                baselineLock=baselineLock,
            )
            yWhite -= yAvg
            opts = fitCurve(xWhite, yWhite, plot=False)
            t0 = opts[0]
            subject = __dm["subject_nr"][0]
            col = colors[int(subject)]
            saccLat = __dm["saccLat2"].mean()
            _bin = __dm["saccLat2Bin"][0]
            plt.plot(saccLat, t0, "o", color=col)
            l.append([subject, cond, _bin, saccLat, t0])
            print subject, t0, saccLat
    dm = DataMatrix(l)
    dm.save("output/%s/latencyCorr.csv" % exp)
    print dm
    # plt.plot(dm['saccLat'], dm['t0'], '.')
    s, i, r, p, se = linregress(dm["saccLat"], dm["t0"])
    print "r = %.4f, p = %.4f" % (r, p)
    plt.plot(dm["saccLat"], i + s * dm["saccLat"])
    plt.show()

    newFig(size=(4.8, 2.4))
    plt.subplots_adjust(bottom=0.2)
    pmX = PivotMatrix(dm, ["cond", "bin"], ["subject_nr"], "saccLat", colsWithin=True, err="se")
    print pmX

    pmY = PivotMatrix(dm, ["cond", "bin"], ["subject_nr"], "t0", colsWithin=True, err="se")
    print pmY

    xM = np.array(pmX.m[-2, 2:-2], dtype=float)
    xErr = np.array(pmX.m[-1, 2:-2], dtype=float)
    xMConst = xM[: len(xM) / 2]
    xMOnset = xM[len(xM) / 2 :]
    xErrConst = xErr[: len(xErr) / 2]
    xErrOnset = xErr[len(xErr) / 2 :]

    yM = np.array(pmY.m[-2, 2:-2], dtype=float)
    yErr = np.array(pmY.m[-1, 2:-2], dtype=float)
    yMConst = yM[: len(yM) / 2]
    yMOnset = yM[len(yM) / 2 :]
    yErrConst = yErr[: len(yErr) / 2]
    yErrOnset = yErr[len(yErr) / 2 :]

    plt.errorbar(
        xMConst, yMConst, xerr=xErrConst, yerr=yErrConst, label="Constant", capsize=0, color=constColor, fmt="o-"
    )
    plt.errorbar(xMOnset, yMOnset, xerr=xErrOnset, yerr=yErrOnset, label="Onset", capsize=0, color=onsetColor, fmt="o-")
    plt.legend(frameon=False)
    plt.xlabel("Saccade latency (ms)")
    plt.ylabel("PLR latency (ms)")
    saveFig("latencyCorr")

    aov = AnovaMatrix(dm, ["cond", "bin"], "t0", "subject_nr")
    print aov
    aov.save("output/%s/aov.latencyCorr.csv" % exp)
Example #3
0
def landOnHandle(trim = True, spacing = .5, exclOverlap = False, \
	exclY = False, colList = ["#ef2929", "#3465a4", "#f57900", "#73d216"],\
		lLegend = ["Exp1: relative to center", "Exp1: relative to CoG", \
		"Exp2: relative to CoG", "Exp3: relative to CoG"], yLim = [-.3, .3],\
		xLabels = ["1", "2", "3"], xTitle = "saccade", \
		yTitle = "normalised landings towards handle"):
	
	"""
	Landing position as a funciton of orientation, across or per object group.
	
	Arguments:
	
	Keyword arguments:
	trim			--- 
	exclOverlap		--- indicates whether or not to exclude gap-overlap trials
						in the simulation.
	"""
	
	fig = plt.figure(figsize = (5,10))
	title = "Average towards-handle landings - exclOverlap = %s - exclY = %s" \
		% (exclOverlap, exclY)
	plt.suptitle(title)
	copyColList = colList[:]
	
	dm_sim = getDM.getDM("004C")
	
##	for handle in ["right", "left"]:
##		handle_dm = dm_sim.select("handle_side == '%s'" % handle)
##		print handle_dm["endX1NormToHandle"].mean()
#
#	cm = dm_sim.collapse(['object'], 'endX1NormToHandle')
#	cm._print(sign=5)
#
#	dm_sim = dm_sim.select('object == "fork"')
#	for _dm in dm_sim:
#		print '%d: %.4f' % (_dm['count_trial_sequence'], \
#			_dm['endX1NormToHandle'])
#	cm = dm_sim.collapse(['gap', 'handle_side'], 'endX1NormToHandle')
#	cm._print(sign=5)
#	sys.exit()

	for exp in ["004A", "004B", "004C"]:
		
		if exp != "004B":
			continue
		
#		l = []
#		if exp != "004A":
#			continue
		
		dm = getDM.getDM(exp)
		for vf in dm.unique("visual_field"):
			_dm = dm.select("visual_field == '%s'" % vf)
			plt.hist(_dm["y_stim"], bins = 50)
			plt.show()
		
		sys.exit()
		
		if exp == "004A":
			dvList = ["abs", "corr"]
		else:
			dvList = ["abs"]
		
		for dvType in dvList:
			lMeans = []
			
			for sacc in ["1", "2", "3"]:

				sim_avg = float(dm_sim["endX%sNormToHandle" % sacc].mean())
				print sim_avg
				#raw_input()
				
				if dvType == "corr":
					dv = "endX%sCorrNormToHandle" % sacc
				else:
					dv = "endX%sNormToHandle" % sacc
			
				# dv must not contain ''s:
				on_dm = onObject.onObject(dm, sacc)
			
				if trim:
					trim_dm = on_dm.selectByStdDev(keys = ["file"], dv = dv)
				else:
					trim_dm = on_dm
					
				
				pm = PivotMatrix(trim_dm, ["catch_trial"], ["file"], dv, \
					colsWithin = False, err = 'se')
				a = pm.asArray()
#				print pm				
				M = float(a[-2][2])
				SE = float(a[-1][2])
#				print M
#				print SE
				#sys.exit()
				#M = cdm["mean"].mean()
				#SE = cdm["se"].mean()								
				#print M
				#print SE
				
				
				print "exp ", exp
				print "sacc = ", sacc
				print "dv = ", dv
				am = AnovaMatrix(trim_dm, ["handle_side"], "endX%sNorm" % \
					sacc, "file")#._print(ret=True)
#				print am
				p =  am.asArray()[2][3]
				p_corr = float(p) * 6
#				print p_corr
				
				print 'T test scipy'
				
				cm = trim_dm.collapse(["file"], dv)
				M = cm["mean"].mean()
				SE = cm['mean'].std() / np.sqrt(len(cm))
				ref = 0
				
				t, p = scipy.stats.ttest_1samp(cm['mean'], ref)				
				p_corr = min(1, float(p * 6.))
#				print p_corr
				print "M = %.3f, SE = %.3f, t(17) = %.2f, p = %6.4f" % \
					(M, SE, t, p_corr)
				raw_input()