def plot_data(datasets, datanames, plotTraces=False, startVel = 0.0): #initialize arrays and timing e_first_startshock = [] e_first_endshock = [] e_first_end = [] mean_line = [] trace_data =[] sm = 15 endWinLen = 5*60 #amount of tracking at end for i in range(0,len(datasets)): ndx =[] vel = aba.getMedianVelMulti(datasets[i], tRange=[0, 900], smoothWinLen = sm) for pos,sv in enumerate(vel): if sv<startVel: print "you lost a fish with starting velocity lower than {} in {}".format(startVel, datanames[i]) ndx.append(pos) startshock = aba.getMedianVelMulti(datasets[i], tRange=[0, 900], smoothWinLen = sm) endshock = aba.getMedianVelMulti(datasets[i], tRange=[50*60, 55*60], smoothWinLen = sm) end = aba.getMedianVelMulti(datasets[i], tRange=[-15*60, -0], smoothWinLen = sm) startshock=np.delete(startshock, ndx) endshock=np.delete(endshock, ndx) end=np.delete(end, ndx) e_first_startshock.append(startshock) e_first_endshock.append(endshock) e_first_end.append(end) #for i in range(len(datasets)): mean_line.append(np.transpose(np.hstack((np.mean(e_first_startshock[i]), np.mean(e_first_endshock[i]), np.mean(e_first_end[i]))))) if plotTraces: trace_data.append(np.vstack((e_first_startshock[i],e_first_endshock[i], e_first_end[i]))) print e_first_startshock, e_first_endshock, e_first_end #plot all the data together subx = len(datasets)/2 suby = 1 pylab.figure() for i in range(len(datasets)): ax=pylab.subplot(1,len(datasets),i+1) if plotTraces: print "plotting all fish traces" pylab.plot(trace_data[i],'grey') #yerr = (2*scipy.stats.sem(e_first_startshock[i]), 2*scipy.stats.sem(e_first_endshock[i]), 2*scipy.stats.sem(e_first_end[i])) pylab.plot([0,1,2],[np.mean(e_first_startshock[i]), np.mean(e_first_endshock[i]), np.mean(e_first_end[i])], lw=3, label=datanames[i]) # pylab.errorbar([0,1,2],[np.mean(e_first_startshock[i]), np.mean(e_first_endshock[i]), np.mean(e_first_end[i])], yerr = yerr, lw=3) ax.set_xticks((0,1,2)) ax.set_xticklabels(('first 15', 'last 5', '30m later')) pylab.xlim((-.25, 2.25)) pylab.ylim((0,2.0)) pylab.gca() pylab.plot(mean_line[i], lw=3) pylab.ylabel('Median speed (mm/s)') patch = mpl.patches.Rectangle((.25,0), .5, 10, color=[1,.5,.5], fill=True) pyplot.gca().add_patch(patch) handles, labels = ax.get_legend_handles_labels() ax.legend(handles, labels)
'/home/vburns/Dropbox/ConchisData/2013-05-17/f00446/f00446_2013-05-17-14-44-34.json', '/home/vburns/Dropbox/ConchisData/2013-05-17/f00447/f00447_2013-05-17-14-44-27.json', '/home/vburns/Dropbox/ConchisData/2013-05-17/f00448/f00448_2013-05-17-14-44-18.json', '/home/vburns/Dropbox/ConchisData/2013-05-17/f00449/f00449_2013-05-17-14-44-14.json', '/home/vburns/Dropbox/ConchisData/2013-05-17/f00450/f00450_2013-05-17-14-45-26.json', # '/home/vburns/Dropbox/ConchisData/2013-05-17/f00451/f00451_2013-05-17-14-45-33.json', '/home/vburns/Dropbox/ConchisData/2013-05-17/f00452/f00452_2013-05-17-14-45-36.json', '/home/vburns/Dropbox/ConchisData/2013-05-17/f00453/f00453_2013-05-17-14-45-41.json', ] e_safesafe_third = aba.loadMultipleDataFiles(e_safesafe_third) #velocity analysis sm = 15; #smooth over 15 frames. endWinLen = 5 * 60; #seconds eBaseVelSafe_1a = aba.getMedianVelMulti(e_safe_first, (0,900), smoothWinLen = sm) eBaseVelSafe_1b = aba.getMedianVelMulti(e_safe_first, (900,1800), smoothWinLen = sm) eBaseVelSafe_2a = aba.getMedianVelMulti(e_safe_sec, (0,900), smoothWinLen = sm) eBaseVelSafe_2b = aba.getMedianVelMulti(e_safe_sec, (900,1800), smoothWinLen = sm) eBaseVelSafe_3a = aba.getMedianVelMulti(e_safe_third, (0,900), smoothWinLen = sm) eBaseVelSafe_3b = aba.getMedianVelMulti(e_safe_third, (900,1800), smoothWinLen = sm) eBaseSafe = aba.getMedianVelMulti(e_safe_shock, (0, 900), smoothWinLen = sm) eEndVelSafe = aba.getMedianVelMulti(e_safe_shock, tRange=[-endWinLen,-0], smoothWinLen=sm) eBaseVelSafeShock_1a = aba.getMedianVelMulti(e_safeshock_first, (0,900), smoothWinLen = sm) eBaseVelSafeShock_1b = aba.getMedianVelMulti(e_safeshock_first, (900,1800), smoothWinLen = sm) eBaseVelSafeShock_2a = aba.getMedianVelMulti(e_safeshock_sec, (0,900), smoothWinLen = sm) eBaseVelSafeShock_2b = aba.getMedianVelMulti(e_safeshock_sec, (900,1800), smoothWinLen = sm) eBaseVelSafeShock_3a = aba.getMedianVelMulti(e_safeshock_third, (0,900), smoothWinLen = sm) eBaseVelSafeShock_3b = aba.getMedianVelMulti(e_safeshock_third, (900,1800), smoothWinLen = sm) eBaseSafeShock = aba.getMedianVelMulti(e_safeshock_shock, (0, 900), smoothWinLen = sm)
def plot_drug_data(datasets, datanames, sbplt=(2, 2)): suby = sbplt[0] subx = sbplt[1] if subx * suby != len(datasets) / 2: print "warning, wrong plotting or data lengths" # initialize arrays and timing e_first_startshock = [] e_first_endshock = [] e_sec_2a = [] e_sec_2b = [] mean_line = [] sm = 15 endWinLen = 5 * 60 # amount of tracking at end for i in range(0, len(datasets), 2): e_first_startshock.append(aba.getMedianVelMulti(datasets[i], (0, 900), smoothWinLen=sm)) e_first_endshock.append(aba.getMedianVelMulti(datasets[i], tRange=[-endWinLen, -0], smoothWinLen=sm)) e_sec_2a.append(aba.getMedianVelMulti(datasets[i + 1], (0, 900), smoothWinLen=sm)) e_sec_2b.append(aba.getMedianVelMulti(datasets[i + 1], (900, 1800), smoothWinLen=sm)) for i in range(len(datasets) / 2): mean_line.append( np.transpose( np.hstack( ( np.mean(e_first_startshock[i]), np.mean(e_first_endshock[i]), np.mean(e_sec_2a[i]), np.mean(e_sec_2b[i]), ) ) ) ) # plot data pylab.figure() pylab.suptitle("Drug Pilot Results") for i in range(subx * suby): ax = pylab.subplot(subx, suby, i + 1) pylab.plot(0, [e_first_startshock[i]], ".") pylab.plot(1, [e_first_endshock[i]], ".") pylab.plot(2, [e_sec_2a[i]], ".") pylab.plot(3, [e_sec_2b[i]], ".") yerr = ( 2 * scipy.stats.sem(e_first_startshock[i]), 2 * scipy.stats.sem(e_first_endshock[i]), 2 * scipy.stats.sem(e_sec_2a[i]), 2 * scipy.stats.sem(e_sec_2b[i]), ) pylab.plot( [0, 1, 2, 3], [np.mean(e_first_startshock[i]), np.mean(e_first_endshock[i]), np.mean(e_sec_2a[i]), np.mean(e_sec_2b[i])], "ok", lw=3, ) pylab.errorbar( [0, 1, 2, 3], [np.mean(e_first_startshock[i]), np.mean(e_first_endshock[i]), np.mean(e_sec_2a[i]), np.mean(e_sec_2b[i])], fmt="ok", yerr=yerr, lw=3, ) pylab.title(datanames[i]) ax.set_xticks((0, 1, 2, 3)) ax.set_xticklabels(("first 15", "last 5", "post 0-15", "post 15-30")) pylab.xlim((-0.25, 3.25)) pylab.ylim((0, 4)) pylab.plot(mean_line[i], "k", lw=3) pylab.ylabel("Median speed (mm/s)")
allfish = [ '/home/vburns/Dropbox/ConchisData/2013-04-21/f00350/f00350_2013-04-21-14-01-18.json', '/home/vburns/Dropbox/ConchisData/2013-04-21/f00351/f00351_2013-04-21-14-01-30.json', '/home/vburns/Dropbox/ConchisData/2013-04-21/f00352/f00352_2013-04-21-14-01-39.json', '/home/vburns/Dropbox/ConchisData/2013-04-21/f00353/f00353_2013-04-21-14-01-52.json', '/home/vburns/Dropbox/ConchisData/2013-04-21/f00354/f00354_2013-04-21-13-56-28.json', '/home/vburns/Dropbox/ConchisData/2013-04-21/f00355/f00355_2013-04-21-13-56-25.json', '/home/vburns/Dropbox/ConchisData/2013-04-21/f00356/f00356_2013-04-21-13-56-23.json', '/home/vburns/Dropbox/ConchisData/2013-04-21/f00357/f00357_2013-04-21-13-56-21.json' ] allfish = aba.loadMultipleDataFiles(allfish) sm = 15 sections = 15 fish_vel0 = aba.getMedianVelMulti(allfish, (0,900), smoothWinLen=sm) fish_vel1 = aba.getMedianVelMulti(allfish, (900,1800), smoothWinLen=sm) fish_vel2 = aba.getMedianVelMulti(allfish, (1800,2700), smoothWinLen=sm) fish_vel3 = aba.getMedianVelMulti(allfish, (2700,3600), smoothWinLen=sm) vel0 = np.array([np.array([fish_vel0[n]]) for n in range(len(fish_vel0))]) vel1 = np.array([np.array([fish_vel1[n]]) for n in range(len(fish_vel1))]) vel2 = np.array([np.array([fish_vel2[n]]) for n in range(len(fish_vel2))]) vel3 = np.array([np.array([fish_vel3[n]]) for n in range(len(fish_vel3))]) allvelocity = np.transpose(np.hstack((vel0, vel1, vel2, vel3))) pylab.figure() pylab.suptitle('Fish Velocity over 1 hour - no noise or shocking') ax = pylab.subplot(1,1,1) pylab.plot(allvelocity)
medVel.append(np.median(vel)) return medVel def getVelRaw(d, tRange=None): w = d['warpedTracking'] if tRange: bNdxWin = np.logical_and(w[:,0]>tRange[0]+w[0,0], w[:,0]<tRange[1]+w[0,0]) vel = np.sqrt(pow(np.diff(w[bNdxWin,1]),2) + pow(np.diff(w[bNdxWin,2]),2)) / np.diff(w[bNdxWin,0]) else: vel = np.sqrt(pow(np.diff(w[:,1]),2) + pow(np.diff(w[:,2]),2)) / np.diff(w[:,0]) return vel """ #velocity locomation analysis n = 15 # minutes to look at sm = 15; #smooth over 15 frames. eBaseVelN = aba.getMedianVelMulti(e_shockN, tRange=(0,900), smoothWinLen=sm) eStartShockVelN = aba.getMedianVelMulti(e_shockN, tRange=(900, 60*(15+n)), smoothWinLen=sm) eShockVelN = aba.getMedianVelMulti(e_shockN, tRange=(60*(45-n), 60*45), smoothWinLen=sm) eLHVelN = aba.getMedianVelMulti(e_RTN, smoothWinLen=sm) eVellate = aba.getMedianVelMulti(e_long, tRange=(2700,3600), smoothWinLen=sm) #eNovVel = aba.getMedianVelMulti(e_novel, (0,900)) eBaseVelR = aba.getMedianVelMulti(e_shockR, tRange=(0, 900), smoothWinLen=sm) eStartShockR = aba.getMedianVelMulti(e_shockR, tRange=(900, 60*(15+n)), smoothWinLen=sm) eShockR = aba.getMedianVelMulti(e_shockR, tRange=(60*(45-n), 60*45), smoothWinLen=sm) eLHVelR = aba.getMedianVelMulti(e_RTR, smoothWinLen=sm) #same context [tv, e_Base_RTN] = scipy.stats.ttest_ind(eBaseVelN, eLHVelN) [tv, e_Base_Nov] = scipy.stats.ttest_ind(eBaseVelN, eVellate) [tv, e_shockN_LH] = scipy.stats.ttest_ind(eShockVelN, eLHVelN) [tv, e_shockN_Nov] = scipy.stats.ttest_ind(eShockVelN, eVellate)
#cEndOMRstats = aba.getOMRScoreStatsMulti(c_omr, stateRange=[8,8], timePoint=tp) cEndOMRstats = aba.getOMRScoreStatsMulti(c_omr_last, stateRange=[8,8], timePoint=tp) cPostOMRstats_2a= aba.getOMRScoreStatsMulti(c_omr_post, stateRange=[3,3], timePoint=tp) cPostOMRstats_2b = aba.getOMRScoreStatsMulti(c_omr_post, stateRange=[8,8], timePoint=tp) #velocity stats sm=15 ''' ePreVel_1a = aba.getMedianVelMulti(e_omr_pre, tRange=[0,15*30], smoothWinLen = sm) ePreVel_1b = aba.getMedianVelMulti(e_omr_pre, tRange=[15*30,30*30], smoothWinLen = sm) eVel = aba.getMedianVelMulti(e_omr, stateRange=[3,3], smoothWinLen=sm) eEndVel = aba.getMedianVelMulti(e_omr, stateRange=[8,8], smoothWinLen=sm) ePostVel_2a = aba.getMedianVelMulti(e_omr_post, stateRange=[3,3], smoothWinLen = sm) ePostVel_2b = aba.getMedianVelMulti(e_omr_post, stateRange=[8,8], smoothWinLen = sm) ''' ePreVelSame_1a = aba.getMedianVelMulti(e_omr_same_pre, tRange=[0,15*30], smoothWinLen = sm) ePreVelSame_1b = aba.getMedianVelMulti(e_omr_same_pre, tRange=[15*30,30*30], smoothWinLen = sm) eVelSame = aba.getMedianVelMulti(e_omr_same, stateRange=[3,3], smoothWinLen=sm) #eEndVelSame = aba.getMedianVelMulti(e_omr_same, stateRange=[8,8], smoothWinLen=sm) eEndVelSame = aba.getMedianVelMulti(e_omr_same_last, stateRange=[8,8], smoothWinLen=sm) ePostVelSame_2a = aba.getMedianVelMulti(e_omr_same_post, stateRange=[3,3], smoothWinLen = sm) ePostVelSame_2b = aba.getMedianVelMulti(e_omr_same_post, stateRange=[8,8], smoothWinLen = sm) cPreVel_1a = aba.getMedianVelMulti(c_omr_pre, tRange=[0,15*30], smoothWinLen = sm) cPreVel_1b = aba.getMedianVelMulti(c_omr_pre, tRange=[15*30,30*30], smoothWinLen = sm) cVel = aba.getMedianVelMulti(c_omr, stateRange=[3,3], smoothWinLen=sm) #cEndVel = aba.getMedianVelMulti(c_omr, stateRange=[8,8], smoothWinLen=sm) cEndVel = aba.getMedianVelMulti(c_omr_last, stateRange=[8,8], smoothWinLen=sm) cPostVel_2a = aba.getMedianVelMulti(c_omr_post, stateRange=[3,3], smoothWinLen = sm) cPostVel_2b = aba.getMedianVelMulti(c_omr_post, stateRange=[8,8], smoothWinLen = sm) '''
import pylab import scipy import os ##make sure fish have been loaded if len(e_first) < 1: print "No fish" 1/0 else: print "Fish data found" #velocity analysis sm = 15; #smooth over 15 frames. endWinLen = 5 * 60; #seconds eBaseVel5_1a = aba.getMedianVelMulti(e_first, (0,900), smoothWinLen = sm) eBaseVel5_1b = aba.getMedianVelMulti(e_first, (900,1800), smoothWinLen = sm) cBaseVel_1a = aba.getMedianVelMulti(c_first, (0,900), smoothWinLen = sm) cBaseVel_1b = aba.getMedianVelMulti(c_first, (900,1800), smoothWinLen = sm) eBaseVel5_2a = aba.getMedianVelMulti(e_sec, (0,900), smoothWinLen = sm) eBaseVel5_2b = aba.getMedianVelMulti(e_sec, (900,1800), smoothWinLen = sm) cBaseVel_2a = aba.getMedianVelMulti(c_sec, (0,900), smoothWinLen = sm) cBaseVel_2b = aba.getMedianVelMulti(c_sec, (900,1800), smoothWinLen = sm) eBase5 = aba.getMedianVelMulti(e_shock, (0, 900), smoothWinLen = sm) cBase = aba.getMedianVelMulti(c_shock, (0, 900), smoothWinLen = sm) eEndVel5 = aba.getMedianVelMulti(e_shock, tRange=[-endWinLen,-0], smoothWinLen=sm) cEndVel = aba.getMedianVelMulti(c_shock, tRange=[-endWinLen,-0], smoothWinLen = sm) eBaseSame_1a = aba.getMedianVelMulti(e_same_first, (0, 900), smoothWinLen = sm) eBaseSame_1b = aba.getMedianVelMulti(e_same_first, (900, 1800), smoothWinLen = sm)
eStartShockVel.append(np.median(eshockvel)) c_shocktimemin = [] for n in range(len(c_shock)): cacclimate = c_shock[n]['parameters']['acclimate (m)']*60 c_shocktimemin.append(cacclimate) c_shocktimemax = [y + minutes for y in c_shocktimemin] cStartShockVel = [] for n in range(len(c_shock)): csvelocity = aba.getVelRaw(c_shock[n], tRange=(c_shocktimemin[n], c_shocktimemax[n]), smoothWinLen=sm) cStartShockVel.append(np.median(csvelocity)) """ #velocity locomation analysis eStartShockVel = aba.getMedianVelMulti(e_shock, tRange=[-mins,0], smoothWinLen=sm) eBaseVel = aba.getMedianVelMulti(e_shock, tRange=(0,900),smoothWinLen=sm) eShockVel = aba.getMedianVelMulti(e_shock, tRange=[-mins,0],smoothWinLen=sm) eLHVel = aba.getMedianVelMulti(e_RT,smoothWinLen=sm) eNovVel = aba.getMedianVelMulti(e_novel, tRange=(0,900),smoothWinLen=sm) eNovVellate = aba.getMedianVelMulti(e_novel, tRange=(2700,3600),smoothWinLen=sm) eNov = aba.getMedianVelMulti(e_novel,smoothWinLen=sm) #eLHVel2 = aba.getMedianVelMulti(e_RT2, tRange=(0,900),smoothWinLen=sm) #test = getVelRaw(e_shock[0]) cStartShockVel = aba.getMedianVelMulti(c_shock, tRange=[-mins,0], smoothWinLen=sm) cBaseVel = aba.getMedianVelMulti(c_shock, tRange=(0, 900),smoothWinLen=sm) cShockVel = aba.getMedianVelMulti(c_shock, tRange=[-mins,0],smoothWinLen=sm) cLHVel = aba.getMedianVelMulti(c_RT,smoothWinLen=sm) cNovVel = aba.getMedianVelMulti(c_novel,tRange=(0,900),smoothWinLen=sm) cNovVellate = aba.getMedianVelMulti(c_novel, tRange=(2700,3600),smoothWinLen=sm)
def plot_data(datasets, datanames, plotTraces=False, startVel = 0.0): #initialize arrays and timing e_first_startshock = [] e_first_endshock = [] e_second_start = [] e_second_end = [] e_second_pre_probe = [] e_second_post_probe = [] mean_line = [] trace_data =[] sm = 15 endWinLen = 5*60 #amount of tracking at end for i in range(0,len(datasets),2): ndx =[] vel = aba.getMedianVelMulti(datasets[i], tRange=[0, 900], smoothWinLen = sm) for pos,sv in enumerate(vel): if sv<startVel: print "you lost a fish with starting velocity lower than {} in {}".format(startVel, datanames[int(math.floor(i/2))]) ndx.append(pos) startshock = aba.getMedianVelMulti(datasets[i], tRange=[0, 900], smoothWinLen = sm) endshock = aba.getMedianVelMulti(datasets[i], tRange=[-5*60, -0], smoothWinLen = sm) end_first = aba.getMedianVelMulti(datasets[i+1], tRange=[0, 15*60], smoothWinLen = sm) end_second = aba.getMedianVelMulti(datasets[i+1], tRange=[15*60, 30*60], smoothWinLen = sm) end_start_probe = aba.getMedianVelMulti(datasets[i+1], tRange=[25*60, 30*60], smoothWinLen = sm) end_end_probe = aba.getMedianVelMulti(datasets[i+1], stateRange=[8, 8], smoothWinLen = sm) startshock=np.delete(startshock, ndx) endshock=np.delete(endshock, ndx) end_first=np.delete(end_first, ndx) end_second=np.delete(end_second, ndx) end_start_probe = np.delete(end_start_probe, ndx) end_end_probe = np.delete(end_end_probe, ndx) e_first_startshock.append(startshock) e_first_endshock.append(endshock) e_second_start.append(end_first) e_second_end.append(end_second) e_second_pre_probe.append(end_start_probe) e_second_post_probe.append(end_end_probe) for i in range(0,len(datasets)/2): mean_line.append(np.transpose(np.hstack((np.mean(e_first_startshock[i]), np.mean(e_first_endshock[i]), np.mean(e_second_start[i]), np.mean(e_second_end[i]), np.mean(e_second_pre_probe[i]), np.mean(e_second_post_probe[i]))))) if plotTraces: trace_data.append(np.vstack((e_first_startshock[i],e_first_endshock[i], e_second_start[i], e_second_end[i], e_second_pre_probe[i], e_second_post_probe[i]))) print e_first_startshock, e_first_endshock, mean_line #plot all the data together subx = len(datasets)/4 suby = 1 pylab.figure() for i in range(0,len(datasets)/2): ax=pylab.subplot(1,len(datasets)/2,i+1) if plotTraces: print "plotting all fish traces" pylab.plot(trace_data[i],'grey') pylab.plot([0,1,2,3,4,5],[np.mean(e_first_startshock[i]), np.mean(e_first_endshock[i]), np.mean(e_second_start[i]), np.mean(e_second_end[i]), np.mean(e_second_pre_probe[i]), np.mean(e_second_post_probe[i])], lw=3, label=datanames[i]) ax.set_xticks((0,1,2,3,4,5)) ax.set_xticklabels(('first 15', 'last 5', '15m new', '15-30', '30-45', '5m post probe')) pylab.xlim((-.25, 5.25)) pylab.ylim((0,3.5)) pylab.gca() pylab.plot(mean_line[i], lw=3) pylab.ylabel('Median speed (mm/s)') patch = mpl.patches.Rectangle((.25,0), .5, 10, color=[1,.5,.5], fill=True) patch2 = mpl.patches.Rectangle((4.25,0),.5, 10, color=[1,.5,.5], fill=True) pyplot.gca().add_patch(patch) pylab.gca().add_patch(patch2) handles, labels = ax.get_legend_handles_labels() ax.legend(handles, labels)
#omr analysis [eBaseMaxDist, eBaseTotalDist, eBaseFrac] = aba.getAvgOMRScoreMulti(e_omr, stateRange=[3,3]) [eEndMaxDist, eEndTotalDist, eEndFrac] = aba.getAvgOMRScoreMulti(e_omr, stateRange=[8,8]) [cBaseMaxDist, cBaseTotalDist, cBaseFrac] = aba.getAvgOMRScoreMulti(c_omr, stateRange=[3,3]) [cEndMaxDist, cEndTotalDist, cEndFrac] = aba.getAvgOMRScoreMulti(c_omr, stateRange=[8,8]) #get info for nonOMR times [cBaseMaxDistNon, cBaseTotalDistNon, cBaseFracNon] = aba.getAvgOMRScoreMulti(c_omr, stateRange=[3,3],useOMR=False) [cEndMaxDistNon, cEndTotalDistNon, cEndFracNon] = aba.getAvgOMRScoreMulti(c_omr, stateRange=[8,8], useOMR=False) [eBaseMaxDistNon, eBaseTotalDistNon, eBaseFracNon] = aba.getAvgOMRScoreMulti(e_omr, stateRange=[3,3],useOMR=False) [eEndMaxDistNon, eEndTotalDistNon, eEndFracNon] = aba.getAvgOMRScoreMulti(e_omr, stateRange=[8,8], useOMR=False) #velocity analysis sm = 15; #smooth over 15 frames. endWinLen = 5 * 60; #last five minutes eBaseVel = aba.getMedianVelMulti(e_omr, (0, 15*60), smoothWinLen = sm) eEndVel = aba.getMedianVelMulti(e_omr, tRange=[-endWinLen,-0], smoothWinLen=sm) cBaseVel = aba.getMedianVelMulti(c_omr, (0, 15*60), smoothWinLen = sm) cEndVel = aba.getMedianVelMulti(c_omr, tRange=[-endWinLen,-0], smoothWinLen=sm) #velocity comparisons [tv, exper_start_end] = scipy.stats.ttest_ind(eBaseVel, eEndVel) [tv, control_start_end] = scipy.stats.ttest_ind(cBaseVel, cEndVel) print 'Statistics comparing velocity between start and end velocity (experimental, control fish):', exper_start_end, control_start_end #fix #eEndVel25[2]= np.nan #convert to array eBV = np.array([np.array([eBaseVel[n]]) for n in range(len(eBaseVel))]) eEV = np.array([np.array([eEndVel[n]]) for n in range(len(eEndVel))])
# '~/Dropbox/ConchisData/2013-10-04/f00776/f00776_2013-10-04-11-12-36.json' ] e_omr_post = aba.loadMultipleDataFiles(e_omr_post) # omr stats tp = 12 cPreOMRstats = aba.getOMRScoreStatsMulti(c_omr, stateRange=[3, 3], timePoint=tp) cPostOMRstats = aba.getOMRScoreStatsMulti(c_omr, stateRange=[8, 8], timePoint=tp) ePreOMRstats = aba.getOMRScoreStatsMulti(e_omr, stateRange=[3, 3], timePoint=tp) ePostOMRstats = aba.getOMRScoreStatsMulti(e_omr, stateRange=[8, 8], timePoint=tp) esafePreOMRstats = aba.getOMRScoreStatsMulti(e_omr_post, stateRange=[3, 3], timePoint=tp) esafePostOMRstats = aba.getOMRScoreStatsMulti(e_omr_post, stateRange=[8, 8], timePoint=tp) # velocity stats sm = 15 cPreVel = aba.getMedianVelMulti(c_omr, stateRange=[3, 3], smoothWinLen=sm) cPostVel = aba.getMedianVelMulti(c_omr, stateRange=[8, 8], smoothWinLen=sm) ePreVel = aba.getMedianVelMulti(e_omr, stateRange=[3, 3], smoothWinLen=sm) ePostVel = aba.getMedianVelMulti(e_omr, stateRange=[8, 8], smoothWinLen=sm) esafePreVel = aba.getMedianVelMulti(e_omr_post, stateRange=[3, 3], smoothWinLen=sm) esafePostVel = aba.getMedianVelMulti(e_omr_post, stateRange=[8, 8], smoothWinLen=sm) # velocity comparisons [tv, exper_start_end] = scipy.stats.ttest_ind(ePreVel, ePostVel) [tv, exper_end_end] = scipy.stats.ttest_ind(esafePostVel, ePostVel) [tv, exper_start_end_post] = scipy.stats.ttest_ind(esafePreVel, esafePostVel) print "Stats (pre end vel, end end vel, start to end post):", exper_start_end, exper_end_end, exper_start_end_post def plotPairedConditions(states, statenames, color=[0.5, 0.5, 0.5], ylabel=None, title=None): pyplot.hold(True)
'/home/vburns/Dropbox/ConchisData/2013-04-29/f00383/f00383_2013-04-29-17-23-55.json', '/home/vburns/Dropbox/ConchisData/2013-04-29/f00384/f00384_2013-04-29-17-23-45.json', '/home/vburns/Dropbox/ConchisData/2013-04-29/f00385/f00385_2013-04-29-17-23-39.json', '/home/vburns/Dropbox/ConchisData/2013-04-29/f00386/f00386_2013-04-29-17-25-16.json', # '/home/vburns/Dropbox/ConchisData/2013-04-29/f00387/f00387_2013-04-29-17-25-08.json', '/home/vburns/Dropbox/ConchisData/2013-04-29/f00388/f00388_2013-04-29-17-25-00.json', # '/home/vburns/Dropbox/ConchisData/2013-04-29/f00389/f00389_2013-04-29-17-24-54.json', ] c_safe_sec = aba.loadMultipleDataFiles(c_safe_sec) #velocity analysis sm = 15; #smooth over 15 frames. endWinLen = 5 * 60; #seconds cBaseVel_1a = aba.getMedianVelMulti(c_safe_first, (0,900), smoothWinLen = sm) cBaseVel_1b = aba.getMedianVelMulti(c_safe_first, (900,1800), smoothWinLen = sm) cBaseVel_2a = aba.getMedianVelMulti(c_safe_sec, (0,900), smoothWinLen = sm) cBaseVel_2b = aba.getMedianVelMulti(c_safe_sec, (900,1800), smoothWinLen = sm) eBaseVelW_1a = aba.getMedianVelMulti(e_water_first, (0,900), smoothWinLen = sm) eBaseVelW_1b = aba.getMedianVelMulti(e_water_first, (900,1800), smoothWinLen = sm) eBaseVelW_2a = aba.getMedianVelMulti(e_water_sec, (0,900), smoothWinLen = sm) eBaseVelW_2b = aba.getMedianVelMulti(e_water_sec, (900,1800), smoothWinLen = sm) eBaseW = aba.getMedianVelMulti(e_water_shock, (0,900), smoothWinLen=sm) eEndVelW = aba.getMedianVelMulti(e_water_shock, tRange=[-endWinLen,-0], smoothWinLen=sm) eBaseVelWR_1a = aba.getMedianVelMulti(e_waterrotateS_first, (0,900), smoothWinLen = sm) eBaseVelWR_1b = aba.getMedianVelMulti(e_waterrotateS_first, (900,1800), smoothWinLen = sm) eBaseVelWR_2a = aba.getMedianVelMulti(e_waterrotateS_sec, (0,900), smoothWinLen = sm) eBaseVelWR_2b = aba.getMedianVelMulti(e_waterrotateS_sec, (900,1800), smoothWinLen = sm)
'/home/vburns/Dropbox/ConchisData/2013-03-30/f00259/f00259_2013-03-30-09-15-56.json', '/home/vburns/Dropbox/ConchisData/2013-03-30/f00260/f00260_2013-03-30-09-15-54.json', '/home/vburns/Dropbox/ConchisData/2013-03-30/f00261/f00261_2013-03-30-09-15-51.json', '/home/vburns/Dropbox/ConchisData/2013-03-30/f00262/f00262_2013-03-30-09-15-49.json', '/home/vburns/Dropbox/ConchisData/2013-04-29/f00382/f00382_2013-04-29-15-53-10.json', '/home/vburns/Dropbox/ConchisData/2013-04-29/f00383/f00383_2013-04-29-15-53-08.json', '/home/vburns/Dropbox/ConchisData/2013-04-29/f00384/f00384_2013-04-29-15-53-06.json', '/home/vburns/Dropbox/ConchisData/2013-04-29/f00385/f00385_2013-04-29-15-53-04.json', '/home/vburns/Dropbox/ConchisData/2013-04-29/f00386/f00386_2013-04-29-15-54-54.json', #has current when not supposed to? nothing else wrong '/home/vburns/Dropbox/ConchisData/2013-04-29/f00387/f00387_2013-04-29-15-54-52.json', #low starting velocity '/home/vburns/Dropbox/ConchisData/2013-04-29/f00388/f00388_2013-04-29-15-54-50.json', ] all_fish = aba.loadMultipleDataFiles(all_fish) #velocity analysis sm = 15; #smooth over 15 frames. endWinLen = 5 * 60; #seconds all_fish_vel = aba.getMedianVelMulti(all_fish, (0,900), smoothWinLen = sm) #convert to array pylab.figure() pylab.suptitle('Distribution of Starting Velocities') ax = pylab.subplot(1,1,1) pylab.hist(all_fish_vel, bins=len(all_fish)) pylab.ylabel('Number of Fish') pylab.xlabel('Velocity (mm/s)') #pylab.xticks(np.array(xrange(0,14))/2.0) pylab.show()
'/home/vburns/Dropbox/ConchisData/2013-04-19/f00334/f00334_2013-04-19-16-29-20.json', '/home/vburns/Dropbox/ConchisData/2013-04-19/f00335/f00335_2013-04-19-16-29-18.json', '/home/vburns/Dropbox/ConchisData/2013-04-19/f00336/f00336_2013-04-19-16-29-15.json', '/home/vburns/Dropbox/ConchisData/2013-04-19/f00337/f00337_2013-04-19-16-29-13.json', '/home/vburns/Dropbox/ConchisData/2013-04-19/f00338/f00338_2013-04-19-16-32-46.json', # '/home/vburns/Dropbox/ConchisData/2013-04-19/f00339/f00339_2013-04-19-16-32-52.json', '/home/vburns/Dropbox/ConchisData/2013-04-19/f00340/f00340_2013-04-19-16-32-59.json', # '/home/vburns/Dropbox/ConchisData/2013-04-19/f00341/f00341_2013-04-19-16-33-07.json', ] c_round_safe_sec = aba.loadMultipleDataFiles(c_round_safe_sec) #velocity analysis sm = 15; #smooth over 15 frames. endWinLen = 5 * 60; #seconds eEndVel5 = aba.getMedianVelMulti(e_shock5, tRange=[-endWinLen,-0], smoothWinLen=sm) eEndVel25 = aba.getMedianVelMulti(e_shock25, tRange=[-endWinLen,-0], smoothWinLen=sm) eEndVel8 = aba.getMedianVelMulti(e_shock8, tRange=[-endWinLen,-0], smoothWinLen=sm) cEndVel = aba.getMedianVelMulti(c_shock, tRange=[-endWinLen,-0], smoothWinLen = sm) eBaseVel25_1a = aba.getMedianVelMulti(e_safe25_first, (0,900), smoothWinLen = sm) eBaseVel25_1b = aba.getMedianVelMulti(e_safe25_first, (900,1800), smoothWinLen = sm) eBaseVel5_1a = aba.getMedianVelMulti(e_safe5_first, (0,900), smoothWinLen = sm) eBaseVel5_1b = aba.getMedianVelMulti(e_safe5_first, (900,1800), smoothWinLen = sm) eBaseVel8_1a = aba.getMedianVelMulti(e_safe8_first, (0,900), smoothWinLen = sm) eBaseVel8_1b = aba.getMedianVelMulti(e_safe8_first, (900,1800), smoothWinLen = sm) cBaseVel_1a = aba.getMedianVelMulti(c_safe_first, (0,900), smoothWinLen = sm) cBaseVel_1b = aba.getMedianVelMulti(c_safe_first, (900,1800), smoothWinLen = sm) eBaseVel25_2a = aba.getMedianVelMulti(e_safe25_sec, (0,900), smoothWinLen = sm) eBaseVel25_2b = aba.getMedianVelMulti(e_safe25_sec, (900,1800), smoothWinLen = sm)
#omr analysis [eBaseMaxDist, eBaseTotalDist, eBaseFrac] = aba.getAvgOMRScoreMulti(e_omr, stateRange=[3,3]) [eEndMaxDist, eEndTotalDist, eEndFrac] = aba.getAvgOMRScoreMulti(e_omr, stateRange=[8,8]) [cBaseMaxDist, cBaseTotalDist, cBaseFrac] = aba.getAvgOMRScoreMulti(c_omr, stateRange=[3,3]) [cEndMaxDist, cEndTotalDist, cEndFrac] = aba.getAvgOMRScoreMulti(c_omr, stateRange=[8,8]) #get info for nonOMR times [cBaseMaxDistNon, cBaseTotalDistNon, cBaseFracNon] = aba.getAvgOMRScoreMulti(c_omr, stateRange=[3,3],useOMR=False) [cEndMaxDistNon, cEndTotalDistNon, cEndFracNon] = aba.getAvgOMRScoreMulti(c_omr, stateRange=[8,8], useOMR=False) [eBaseMaxDistNon, eBaseTotalDistNon, eBaseFracNon] = aba.getAvgOMRScoreMulti(e_omr, stateRange=[3,3],useOMR=False) [eEndMaxDistNon, eEndTotalDistNon, eEndFracNon] = aba.getAvgOMRScoreMulti(e_omr, stateRange=[8,8], useOMR=False) #velocity analysis sm = 15; #smooth over 15 frames. endWinLen = 5 * 60; #last five minutes eBaseVel = aba.getMedianVelMulti(e_omr, (0, 15*60), smoothWinLen = sm) eEndVel = aba.getMedianVelMulti(e_omr, tRange=[-endWinLen,-0], smoothWinLen=sm) eEndVel_2a = aba.getMedianVelMulti(e_post_omr, (0,900), smoothWinLen=sm) eEndVel_2b = aba.getMedianVelMulti(e_post_omr, (900,1800), smoothWinLen=sm) cBaseVel = aba.getMedianVelMulti(c_omr, (0, 15*60), smoothWinLen = sm) cEndVel = aba.getMedianVelMulti(c_omr, tRange=[-endWinLen,-0], smoothWinLen=sm) cEndVel_2a = aba.getMedianVelMulti(c_post_omr, (0,900), smoothWinLen=sm) cEndVel_2b = aba.getMedianVelMulti(c_post_omr, (900,1800), smoothWinLen=sm) #velocity comparisons [tv, exper_start_end] = scipy.stats.ttest_ind(eBaseVel, eEndVel) [tv, control_start_end] = scipy.stats.ttest_ind(cBaseVel, cEndVel) print 'Statistics comparing velocity between start and end velocity (experimental, control fish):', exper_start_end, control_start_end #fix #eEndVel25[2]= np.nan
'/home/vburns/Dropbox/ConchisData/2013-03-30/f00288/f00288_2013-03-30-19-42-16.json', '/home/vburns/Dropbox/ConchisData/2013-03-30/f00289/f00289_2013-03-30-19-42-22.json', '/home/vburns/Dropbox/ConchisData/2013-03-30/f00290/f00290_2013-03-30-19-43-34.json', '/home/vburns/Dropbox/ConchisData/2013-03-30/f00291/f00291_2013-03-30-19-43-48.json', '/home/vburns/Dropbox/ConchisData/2013-03-30/f00292/f00292_2013-03-30-19-43-54.json', '/home/vburns/Dropbox/ConchisData/2013-03-30/f00293/f00293_2013-03-30-19-44-01.json', '/home/vburns/Dropbox/ConchisData/2013-03-30/f00294/f00294_2013-03-30-19-44-14.json' ] c_novel = aba.loadMultipleDataFiles(c_novel) #velocity analysis endWinLen = 5 * 60; #seconds sm = 15; #smooth over 15 frames. eEndVel5 = aba.getMedianVelMulti(e_shock5, tRange=[-endWinLen,-0], smoothWinLen=sm) eEndVel25 = aba.getMedianVelMulti(e_shock25, tRange=[-endWinLen,-0], smoothWinLen=sm) cEndVel = aba.getMedianVelMulti(c_shock, tRange=[-endWinLen,-0], smoothWinLen = sm) baseWinLen = 15*60 eBaseVel25 = aba.getVelMulti(e_shock25, tRange=(0,baseWinLen), smoothWinLen=sm) eBaseVel5 = aba.getVelMulti(e_shock5, tRange=(0,baseWinLen), smoothWinLen=sm) cBaseVel = aba.getVelMulti(c_shock, tRange=(0,baseWinLen), smoothWinLen=sm) eNovel25 = aba.getVelMulti(e_novel25, smoothWinLen=sm) eNovel5 = aba.getVelMulti(e_novel5, smoothWinLen=sm) cNovel = aba.getVelMulti(c_novel, smoothWinLen=sm) #same context [tv, e_statBase25] = scipy.stats.ttest_ind(eBaseVel25, cBaseVel) [tv, e_statBase5] = scipy.stats.ttest_ind(eBaseVel5, cBaseVel)
pyplot.ylabel('Prob in Center') pyplot.show() ####### getMedianVelocity whichndx = [0,1,2,3,4,5,6,7] compare = [[d_pre[whichndx],d_veh[whichndx]],[d_veh[whichndx], d_sch[whichndx]]] trange = [[[1000,1700],[0,360]], [[1000,1700],[0,360]]] titles = ['Vehicle','Schreckstoff'] labels = [['Baseline','Vehicle_Start'],['Vehicle_End','Schreckstoff_Start']] bins = np.linspace(0,300,50) f = pyplot.figure(6) f.set_facecolor('w') mmperpixel=35.0/300 for i,d in enumerate(compare): med_a = aba.getMedianVelMulti(d[0], trange[i][0], smoothWinLen=15) med_b = aba.getMedianVelMulti(d[1], trange[i][1], smoothWinLen=15) (t,p) = scipy.stats.ttest_rel(med_a,med_b) pyplot.subplot(1,len(compare),1+i) pyplot.plot([0,1],[med_a * mmperpixel,med_b * mmperpixel],'o-b') pyplot.xlim([-0.5,1.5]) pyplot.ylim([0,5]) pyplot.title('%s (paired t-test p=%f)'%(titles[i],p)) pyplot.gca().xaxis.set_ticks([0,1]) pyplot.gca().xaxis.set_ticklabels(labels[i]) pyplot.ylabel('Median Velocity (mm/s)') ######## PLOT PATHS whichndx = [1,2,3,5,6,7] trange = [[0,1700],[0,1700],[0,1700]] f = pyplot.figure(1)