def getTimeinCenterMulti(datasets, windowSize= None, tRange=None, stateRange=None): durations = [] if tRange is not None: endWindow = tRange[-1] else: for i in range(len(datasets)): tracking = datasets[i]['warpedTracking'] if stateRange is not None: _,et,_,_ = aba.state_to_time(datasets[i], stateRange[1]) durations.append(et-tracking[0,0]) else: durations.append(datasets[i]['warpedTracking'][-1,0]-datasets[i]['warpedTracking'][0,0]) endWindow = np.min(durations) windowsize = 30 if windowSize is not None: windowsize = windowSize ticks = np.arange(0,endWindow, windowsize) eTimeinCenter = np.zeros((len(datasets),len(ticks)-1)) for i in range(len(ticks)-1): startT = ticks[i] endT = ticks[i+1] for d in range(len(datasets)): eTimeinCenter[d,i] = aba.getPercentTimeinCenter(datasets[d], tRange=[startT, endT]) return eTimeinCenter
def plotFishPositionVsTime(jsonData, startState=1, endState=0, smooth=5, axis=0, fmt='b-',wid=1): state = jsonData['stateinfo'] midLine = (jsonData['tankSize_mm'][axis])/2.0 st,_,nS,_ = aba.state_to_time(jsonData,startState) _,et,_,nE = aba.state_to_time(jsonData,endState) tracking = aba.getTracking(jsonData) tracking = tracking[np.logical_and(tracking[:,0] > st, tracking[:,0] < et),:].copy() frametime = tracking[:,0] - st position = tracking[:,axis+1] if 'OMRinfo' in jsonData.keys(): results = aba.getOMRinfo(jsonData, tankLength =midLine*2) color = {-1:'red', 1:'blue'} hatch = {-1:'\\', 1:'/'} os = results['omrResults']['st'] oe = results['omrResults']['et'] od = results['omrResults']['dir'] for n in range(len(os)): p1 = mpl.patches.Rectangle((os[n]-st,0), width=oe[n]-os[n], height=midLine*2,alpha=0.5, color=[.5,1,.5],hatch=hatch[od[n]]) pyplot.gca().add_patch(p1) #pyplot.text(os[n]-st+(oe[n]-os[n])/3, 45, '%0.2f'%results['omrResults']['maxdist'][n]) pyplot.plot(frametime, position, fmt, lw=1) if smooth>0: import scipy pyplot.plot(frametime, scipy.convolve(position,np.ones(smooth)/smooth, mode='same')) pyplot.ylim([0,midLine*2]) pyplot.xlim([0,et-st]) if axis==0: pyplot.ylabel('') else: pyplot.ylabel('') pyplot.xlabel('Time (s)')