def __init__(self,filter_function): self._filter_function = filter_function @property def ff(self): return self._filter_function def __getitem__(self,item): """Calls method of other class, filters the return value. Make sure you also inherit from MemoryMappedBinaryDataFile!""" return self.ff(MemoryMappedBinaryDataFile.__getitem__(self,item)) if __name__=="__main__": print "Test speed for moving_windows with and without multithreading" import time eeg = eegpy.F32("/media/story/SchlafGed/iEEG/data/canseven_bp.f32") num_windows = eeg.moving_windows_num(size=4096,overlap=1000) start1 = time.time() for i,(w,start) in enumerate(eeg.moving_windows(size=4096,overlap=1000)): print "%i / %i" %(i,num_windows) time.sleep(0.01) t_normal = time.time()-start1 start2 = time.time() for i,(w,start) in enumerate(eeg.moving_windows(size=4096,overlap=1000,threads=True)): print "%i / %i" %(i,num_windows) time.sleep(0.01) t_threads = time.time()-start2 print t_normal, t_threads
def getChannelNames(self,fn): eeg = eegpy.F32(os.path.join(self._dirname,fn)) rv = eeg.channel_names eeg.close() return rv
def freqfilt_eeg(fn_in, fn_out, btype="lp", fl=None, fh=None, border=3, windowed=False): eeg = eegpy.open_eeg(fn_in) out = eegpy.F32(fn_out, "w+", shape=eeg.shape, cNames=eeg.channel_names, Fs=eeg.Fs) if btype == "lp": if not windowed: out[:, :] = filtfilt_low(fl, eeg[:, :], Fs=eeg.Fs, border=border) else: for i in range(0, out.num_datapoints, 100000): out[i:min(i + 100000, out.num_datapoints), :] = filtfilt_low( fl, eeg[i:min(i + 100000, out.num_datapoints), :], Fs=eeg.Fs, border=border) elif btype == "hp": #for i_c in range(eeg.num_channels): if not windowed: out[:, :] = filtfilt_high(fh, eeg[:, :], Fs=eeg.Fs, border=border) else: for i in range(0, out.num_datapoints, 100000): out[i:min(i + 100000, out.num_datapoints), :] = filtfilt_high( fh, eeg[i:min(i + 100000, out.num_datapoints), :], Fs=eeg.Fs, border=border) elif btype == "bp": if not windowed: out[:, :] = filtfilt_band(fl, fh, eeg[:, :], Fs=eeg.Fs, border=border) else: for i in range(0, out.num_datapoints, 100000): out[i:min(i + 100000, out.num_datapoints), :] = filtfilt_band( fl, fh, eeg[i:min(i + 100000, out.num_datapoints), :], Fs=eeg.Fs, border=border) elif btype == "bs": if not windowed: out[:, :] = filtfilt_bandstop(fl, fh, eeg[:, :], Fs=eeg.Fs, border=border) else: for i in range(0, out.num_datapoints, 100000): out[i:min(i + 100000, out.num_datapoints), :] = filtfilt_bandstop( fl, fh, eeg[i:min(i + 100000, out.num_datapoints), :], Fs=eeg.Fs, border=border)