def downsample_1way(in_memmap, out_memmap, ratio=16): b, a = butter(BUTTER_ORD, 1 / (2 * ratio), 'low') X_nc = in_memmap n_s, n_ch = X_nc.shape n_s2 = n_s // ratio Y_mc = out_memmap assert Y_mc.shape == (n_s2, n_ch) n_out_chunk = 10000 n_in_chunk = n_out_chunk * ratio t_warmup = max(a.size, b.size) * 3 pbar = ProgressBar(maxval=n_s).start() z = np.zeros((BUTTER_ORD, n_ch)) for i_ch in xrange(n_ch): _, z[:, i_ch] = lfilter(b, a, X_nc[t_warmup - 1::-1, i_ch], zi=lfilter_zi(b, a)) for (i_in, i_out) in zip(xrange(0, n_s, n_in_chunk), xrange(0, n_s2, n_out_chunk)): for i_ch in xrange(n_ch): Low_nc, z[:, i_ch] = lfilter(b, a, X_nc[i_in:i_in + n_in_chunk, i_ch], zi=z[:, i_ch]) Y_mc[i_out:i_out + n_out_chunk, i_ch] = Low_nc[::ratio] pbar.update(i_in) pbar.finish()
def filter_1way(b, a, in_memmap, out_memmap): X_nc = in_memmap n_s, n_ch = X_nc.shape Y_mc = out_memmap assert Y_mc.shape == (n_s, n_ch) n_out_chunk = 10000 n_in_chunk = n_out_chunk t_warmup = max(a.size, b.size) * 3 pbar = ProgressBar(maxval=n_s).start() z = np.zeros((max(a.size, b.size) - 1, n_ch)) for i_ch in xrange(n_ch): _, z[:, i_ch] = lfilter(b, a, X_nc[t_warmup - 1::-1, i_ch], zi=lfilter_zi(b, a)) for i_in, i_out in zip(xrange(0, n_s, n_in_chunk), xrange(0, n_s, n_in_chunk)): for i_ch in xrange(n_ch): Y_mc[i_out:i_out + n_out_chunk, i_ch], z[:, i_ch] = lfilter(b, a, X_nc[i_in:i_in + n_in_chunk, i_ch], zi=z[:, i_ch]) pbar.update(i_in) pbar.finish()
def filter_1way(b,a,in_memmap,out_memmap): X_nc = in_memmap n_s, n_ch = X_nc.shape Y_mc = out_memmap assert Y_mc.shape == (n_s,n_ch) n_out_chunk = 10000 n_in_chunk = n_out_chunk t_warmup = max(a.size,b.size)*3 pbar = ProgressBar(maxval = n_s).start() z = np.zeros((max(a.size,b.size)-1,n_ch)) for i_ch in xrange(n_ch): _,z[:,i_ch] = lfilter(b,a,X_nc[t_warmup-1::-1,i_ch],zi=lfilter_zi(b,a)) for i_in,i_out in zip(xrange(0,n_s,n_in_chunk),xrange(0,n_s,n_in_chunk)): for i_ch in xrange(n_ch): Y_mc[i_out:i_out+n_out_chunk,i_ch],z[:,i_ch] = lfilter(b,a,X_nc[i_in:i_in+n_in_chunk,i_ch],zi=z[:,i_ch]) pbar.update(i_in) pbar.finish()
def downsample_1way(in_memmap,out_memmap,ratio=16): b,a = butter(BUTTER_ORD,1/(2*ratio),'low') X_nc = in_memmap n_s, n_ch = X_nc.shape n_s2 = n_s//ratio Y_mc = out_memmap assert Y_mc.shape == (n_s2,n_ch) n_out_chunk = 10000 n_in_chunk = n_out_chunk*ratio t_warmup = max(a.size,b.size)*3 pbar = ProgressBar(maxval = n_s).start() z = np.zeros((BUTTER_ORD,n_ch)) for i_ch in xrange(n_ch): _,z[:,i_ch] = lfilter(b,a,X_nc[t_warmup-1::-1,i_ch],zi=lfilter_zi(b,a)) for (i_in,i_out) in zip(xrange(0,n_s,n_in_chunk),xrange(0,n_s2,n_out_chunk)): for i_ch in xrange(n_ch): Low_nc,z[:,i_ch] = lfilter(b,a,X_nc[i_in:i_in+n_in_chunk,i_ch],zi=z[:,i_ch]) Y_mc[i_out:i_out+n_out_chunk,i_ch] = Low_nc[::ratio] pbar.update(i_in) pbar.finish()