예제 #1
0
파일: iobase.py 프로젝트: Jun-Lizst/eegpy
    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
예제 #2
0
 def getChannelNames(self,fn):
     eeg = eegpy.F32(os.path.join(self._dirname,fn))
     rv = eeg.channel_names
     eeg.close()
     return rv
예제 #3
0
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)