2

I have a signal from a (natural) neuron taken from a 16 bit ADC at 18.2 kHz. I'm trying to detect spikes in that signal. For those who are not familiar with this: when neurons fire, they give a specific signal: it starts with a steep rise (or fall, depending on the orientation of the neuron and the electrodes), most of the time follows with an even steeper fall, and then returns to normal. Of course the signal of just one neuron is tiny, so the noise is also significant:

Like this:

https://www.hindawi.com/journals/cin/2010/659050.fig.002.jpg

The publication I'n following suggests a Butterworth filter: https://www.hindawi.com/journals/cin/2010/659050/ "First, the signal is band-pass filtered with a 2nd order Butterworth filter (150 Hz–2,500 Hz)..." I've done that, but my signal did not improve. When I've played with the parameters, only made it worse. E.g. using 500-5000Hz filter, or some similar.

import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import butter, lfilter, lfilter_zi

#this is only for S.O. to get the data..
import base64
import zlib
input_as_str=b'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'
arr=np.array(str.split(zlib.decompress(base64.b64decode(input_as_str)).decode("utf-8"),"\n")[:-1],dtype=np.uint16)

def butter_bandpass(lowcut, highcut, fs, order):
    nyq = 0.5 * fs
    low = lowcut / nyq
    high = highcut / nyq
    b, a = butter(order, [low, high], btype='band')
    return b, a

def butter_bandpass_filter_zi(data, lowcut, highcut, fs, order=5):
    b, a = butter_bandpass(lowcut, highcut, fs, order=order)
    zi = lfilter_zi(b, a)
    y,zo = lfilter(b, a, data, zi=zi*data[0])
    return y

#apply the filter
filtered=butter_bandpass_filter_zi(arr, 150.0, 2500.0, 18200.0, 2)

#plot both the original and the filtered signal
fig=plt.figure()
ax1=fig.add_subplot(1,2,1)
ax2=fig.add_subplot(1,2,2)
ax1.plot(arr)
ax2.plot(filtered)
plt.show()

I've expected the noise to be smaller, to make the spikes stand out, and easier to detect. But it didn't. The filter seems to work (tested it on generated sinus inputs). What am I doing wrong?

Edit:

Input and output in time domain Input and output in time domain original and filtered signal with their spectrums original and filtered signal with their spectrums

SergV
  • 1,269
  • 8
  • 20
Nyos
  • 394
  • 5
  • 13
  • 1
    Can you post plots of filter input and output in time and freq domains? – fstop_22 Feb 15 '19 at 12:38
  • @fstop_22: Thanks for the suggestion, I've included an image about the time domain, and added a freq domain image as well. – Nyos Feb 15 '19 at 14:41
  • 1
    The filter is filtering. You can see attenuation in the higher and lower freqs. Have verified freq response of filter with freqz? – fstop_22 Feb 15 '19 at 16:13

0 Answers0