User Tools

This is an old revision of the document!


Sliding window time histogram

Given the spike time, plot the event rate within a sliding window.

def sliding_window(ts,wsz=10):
    '''calculate sliding window time histogram
 
    Parameters
    ----------
    ts:  array time points
    wsz: window size
    '''
    tw = ts[0]-wsz
    i0 = 0
    i1 = 0
    lt = len(ts)
    tts = [tw]
    rrs = [0]
    while i0<lt:
        if i1<lt and ts[i1]<ts[i0]+wsz:
            if tw<ts[i1]-wsz: # output only when window moves
                tn = ts[i1]-wsz
                if rrs[-1]==i1-i0: tts[-1]=tn # merge with previous interval
                else:
                    tts.extend((tw,tn))
                    rrs.extend((i1-i0,i1-i0))
                tw = tn
            i1 += 1
        else:
            if tw<ts[i0]: # output only when window moves
                tn = ts[i0]
                if rrs[-1]==i1-i0: tts[-1]=tn # merge with previous interval
                else:
                    tts.extend((tw,tn))
                    rrs.extend((i1-i0,i1-i0))
                tw = tn
            i0 += 1
    tts.append(tw)
    rrs.append(0)
    return np.array(tts)+wsz/2,np.array(rrs)/bsize

Example

a = np.array([1,3,6,11,24,33,36,44,44,52,54,55,55,55,59,64])
tts,rrs = sliding_window(a)
plt.plot(tts,rrs,'-')
plt.plot(a,np.zeros_like(a),'x')

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also, you acknowledge that you have read and understand our Privacy Policy. If you do not agree, please leave the website.

More information