def runFilter(filterCoeffs,data): filteredData = scipy.signal.fftconvolve(data[np.newaxis,:],filterCoeffs[np.newaxis,:],mode='valid') criticalFreq = 200. #Hz sampleRate=1.e6 f=2*np.sin(np.pi*criticalFreq/sampleRate) Q=.7 q=1./Q hpSvf = IirFilter(sampleFreqHz=sampleRate,numCoeffs=np.array([1,-2,1]),denomCoeffs=np.array([1+f**2, f*q-2,1-f*q])) filteredData = hpSvf.filterData(filteredData) return filteredData
def hpFilter(rawData, criticalFreq=20, sampleRate = 1e6): ''' High pass filters the raw phase timestream INPUTS: rawData - data to be filtered criticalFreq - cutoff frequency of filter (in Hz) sampleRate - sample rate of rawData OUTPUTS: data - filtered data ''' f=2*np.sin(np.pi*criticalFreq/sampleRate) Q=.7 q=1./Q hpSvf = IirFilter(sampleFreqHz=sampleRate,numCoeffs=np.array([1,-2,1]),denomCoeffs=np.array([1+f**2, f*q-2,1-f*q])) data = hpSvf.filterData(rawData) return data
def hpFilter(rawData, criticalFreq=20, sampleRate=1e6): """ High pass filters the raw phase timestream INPUTS: rawData - data to be filtered criticalFreq - cutoff frequency of filter (in Hz) sampleRate - sample rate of rawData OUTPUTS: data - filtered data """ f = 2 * np.sin(np.pi * criticalFreq / sampleRate) Q = 0.7 q = 1.0 / Q hpSvf = IirFilter( sampleFreqHz=sampleRate, numCoeffs=np.array([1, -2, 1]), denomCoeffs=np.array([1 + f ** 2, f * q - 2, 1 - f * q]), ) data = hpSvf.filterData(rawData) return data
data = scipy.signal.lfilter(filter,1,rawdata) #quietData = np.correlate(filter,quietRawdata,mode='same')[::-1] quietData = scipy.signal.lfilter(filter,1,quietRawdata) print 'filtering done' sys.stdout.flush() else: data = np.array(sample) quietData = np.array(quietSample) criticalFreq = 200 #Hz hpSos = IirFilter(sampleFreqHz=sampleRate,criticalFreqHz=criticalFreq,btype='highpass') f=2*np.sin(np.pi*criticalFreq/sampleRate) Q=.7 q=1./Q hpSvf = IirFilter(sampleFreqHz=sampleRate,numCoeffs=np.array([1,-2,1]),denomCoeffs=np.array([1+f**2, f*q-2,1-f*q])) baselines = data - hpSvf.filterData(data) print 'baselines done' threshold = calcThreshold(quietData,Nsigma=thresholdSigma) print 'threshold done' sys.stdout.flush() endIdx = 1000*thresholdLength if bPlotPeaks: ax=fig.add_subplot(NAxes,1,iAxes) ax.plot(rawdata[0:endIdx],'.-',color='gray',label='raw phase') ax.plot(data[0:endIdx],'k.-',label='optimal filtered phase') ax.plot(baselines[0:endIdx],'b',label='lpf baseline') ax.plot(baselines[0:endIdx]+threshold,'y--',label='threshold')
qdrPhaseValues = np.array(qdrValues,dtype=np.float32)*360./2**16*4/np.pi #convert from adc units to degrees nPhaseValues=len(qdrValues) print nPhaseValues,'us' rawdata = np.array(qdrPhaseValues)* -np.pi/180. #in radians, and flip sign #create a highpass filter, then apply it to the data to take out the low frequency baseline sampleRate=1e6 # samples per second criticalFreq = 20 #Hz f=2*np.sin(np.pi*criticalFreq/sampleRate) Q=.7 q=1./Q hpSvf = IirFilter(sampleFreqHz=sampleRate,numCoeffs=np.array([1,-2,1]),denomCoeffs=np.array([1+f**2, f*q-2,1-f*q])) data = hpSvf.filterData(rawdata) #data = scipy.signal.lfilter(filter,1,rawdata) trigDict = sigmaTrigger(data) peakIndices = trigDict['peakIndices'] peaks = trigDict['peakHeights'] nPeaksDetected = len(peaks) print len(peaks),'peaks detected' print 1.*nPeaksDetected/secs, 'cps' bPlotPeakHist = False if bPlotPeakHist: figHist,axHist = plt.subplots(1,1)