def preWhitenCube(**kwargs): ''' Pre-whitenening using noise estimates from a cube taken from the difference map. Returns a the pre-whitened volume and various spectra. (Alp Kucukelbir, 2013) ''' print '\n= Pre-whitening the Cubes' tStart = time() n = kwargs.get('n', 0) vxSize = kwargs.get('vxSize', 0) elbowAngstrom = kwargs.get('elbowAngstrom', 0) rampWeight = kwargs.get('rampWeight', 1.0) dataF = kwargs.get('dataF', 0) dataBGF = kwargs.get('dataBGF', 0) dataBGSpect = kwargs.get('dataBGSpect', 0) epsilon = 1e-10 pWfilter = createPreWhiteningFilter(n=n, spectrum=dataBGSpect, elbowAngstrom=elbowAngstrom, rampWeight=rampWeight, vxSize=vxSize) # Apply the pre-whitening filter to the inside cube dataF = np.multiply(pWfilter['pWfilter'], dataF) dataPWFabs = np.abs(dataF) dataPWFabs = dataPWFabs - np.min(dataPWFabs) dataPWFabs = dataPWFabs / np.max(dataPWFabs) dataPWSpect = sphericalAverage(dataPWFabs**2) + epsilon dataPW = np.real(fftpack.ifftn(fftpack.ifftshift(dataF))) del dataF # Apply the pre-whitening filter to the outside cube dataBGF = np.multiply(pWfilter['pWfilter'], dataBGF) dataPWBGFabs = np.abs(dataBGF) dataPWBGFabs = dataPWBGFabs - np.min(dataPWBGFabs) dataPWBGFabs = dataPWBGFabs / np.max(dataPWBGFabs) dataPWBGSpect = sphericalAverage(dataPWBGFabs**2) + epsilon dataBGPW = np.real(fftpack.ifftn(fftpack.ifftshift(dataBGF))) del dataBGF m, s = divmod(time() - tStart, 60) print " :: Time elapsed: %d minutes and %.2f seconds" % (m, s) return { 'dataPW': dataPW, 'dataBGPW': dataBGPW, 'dataPWSpect': dataPWSpect, 'dataPWBGSpect': dataPWBGSpect, 'peval': pWfilter['peval'], 'pcoef': pWfilter['pcoef'] }
def preWhitenVolumeSoftBG(**kwargs): ''' Pre-whitenening using noise estimates from a soft mask of the background. Returns a the pre-whitened volume and various spectra. (Alp Kucukelbir, 2013) ''' print '\n= Pre-whitening' tStart = time() n = kwargs.get('n', 0) elbowAngstrom = kwargs.get('elbowAngstrom', 0) dataBGSpect = kwargs.get('dataBGSpect', 0) dataF = kwargs.get('dataF', 0) softBGmask = kwargs.get('softBGmask', 0) vxSize = kwargs.get('vxSize', 0) rampWeight = kwargs.get('rampWeight', 1.0) epsilon = 1e-10 pWfilter = createPreWhiteningFilter(n=n, spectrum=dataBGSpect, elbowAngstrom=elbowAngstrom, rampWeight=rampWeight, vxSize=vxSize) # Apply the pre-whitening filter dataF = np.multiply(pWfilter['pWfilter'], dataF) dataPWFabs = np.abs(dataF) dataPWFabs = dataPWFabs - np.min(dataPWFabs) dataPWFabs = dataPWFabs / np.max(dataPWFabs) dataPWSpect = sphericalAverage(dataPWFabs**2) + epsilon dataPW = np.real(fftpack.ifftn(fftpack.ifftshift(dataF))) del dataF dataPWBG = np.multiply(dataPW, softBGmask) dataPWBG = np.array(fftpack.fftshift( fftpack.fftn(dataPWBG, overwrite_x=True)), dtype='complex64') dataPWBGFabs = np.abs(dataPWBG) del dataPWBG dataPWBGFabs = dataPWBGFabs - np.min(dataPWBGFabs) dataPWBGFabs = dataPWBGFabs / np.max(dataPWBGFabs) dataPWBGSpect = sphericalAverage(dataPWBGFabs**2) + epsilon m, s = divmod(time() - tStart, 60) print " :: Time elapsed: %d minutes and %.2f seconds" % (m, s) return { 'dataPW': dataPW, 'dataPWSpect': dataPWSpect, 'dataPWBGSpect': dataPWBGSpect, 'peval': pWfilter['peval'] }
def preWhitenCube(**kwargs): ''' Pre-whitenening using noise estimates from a cube taken from the difference map. Returns a the pre-whitened volume and various spectra. (Alp Kucukelbir, 2013) ''' print '\n= Pre-whitening the Cubes' tStart = time() n = kwargs.get('n', 0) vxSize = kwargs.get('vxSize', 0) elbowAngstrom = kwargs.get('elbowAngstrom', 0) rampWeight = kwargs.get('rampWeight',1.0) dataF = kwargs.get('dataF', 0) dataBGF = kwargs.get('dataBGF', 0) dataBGSpect = kwargs.get('dataBGSpect', 0) epsilon = 1e-10 pWfilter = createPreWhiteningFilter(n = n, spectrum = dataBGSpect, elbowAngstrom = elbowAngstrom, rampWeight = rampWeight, vxSize = vxSize) # Apply the pre-whitening filter to the inside cube dataF = np.multiply(pWfilter['pWfilter'],dataF) dataPWFabs = np.abs(dataF) dataPWFabs = dataPWFabs-np.min(dataPWFabs) dataPWFabs = dataPWFabs/np.max(dataPWFabs) dataPWSpect = sphericalAverage(dataPWFabs**2) + epsilon dataPW = np.real(fftpack.ifftn(fftpack.ifftshift(dataF))) del dataF # Apply the pre-whitening filter to the outside cube dataBGF = np.multiply(pWfilter['pWfilter'],dataBGF) dataPWBGFabs = np.abs(dataBGF) dataPWBGFabs = dataPWBGFabs-np.min(dataPWBGFabs) dataPWBGFabs = dataPWBGFabs/np.max(dataPWBGFabs) dataPWBGSpect = sphericalAverage(dataPWBGFabs**2) + epsilon dataBGPW = np.real(fftpack.ifftn(fftpack.ifftshift(dataBGF))) del dataBGF m, s = divmod(time() - tStart, 60) print " :: Time elapsed: %d minutes and %.2f seconds" % (m, s) return {'dataPW':dataPW, 'dataBGPW':dataBGPW, 'dataPWSpect': dataPWSpect, 'dataPWBGSpect': dataPWBGSpect, 'peval': pWfilter['peval'], 'pcoef': pWfilter['pcoef'] }
def preWhitenVolumeSoftBG(**kwargs): ''' Pre-whitenening using noise estimates from a soft mask of the background. Returns a the pre-whitened volume and various spectra. (Alp Kucukelbir, 2013) ''' print '\n= Pre-whitening' tStart = time() n = kwargs.get('n', 0) elbowAngstrom = kwargs.get('elbowAngstrom', 0) dataBGSpect = kwargs.get('dataBGSpect', 0) dataF = kwargs.get('dataF', 0) softBGmask = kwargs.get('softBGmask', 0) vxSize = kwargs.get('vxSize', 0) rampWeight = kwargs.get('rampWeight',1.0) epsilon = 1e-10 pWfilter = createPreWhiteningFilter(n = n, spectrum = dataBGSpect, elbowAngstrom = elbowAngstrom, rampWeight = rampWeight, vxSize = vxSize) # Apply the pre-whitening filter dataF = np.multiply(pWfilter['pWfilter'],dataF) dataPWFabs = np.abs(dataF) dataPWFabs = dataPWFabs-np.min(dataPWFabs) dataPWFabs = dataPWFabs/np.max(dataPWFabs) dataPWSpect = sphericalAverage(dataPWFabs**2) + epsilon dataPW = np.real(fftpack.ifftn(fftpack.ifftshift(dataF))) del dataF dataPWBG = np.multiply(dataPW,softBGmask) dataPWBG = np.array(fftpack.fftshift(fftpack.fftn(dataPWBG,overwrite_x=True)), dtype='complex64') dataPWBGFabs = np.abs(dataPWBG) del dataPWBG dataPWBGFabs = dataPWBGFabs-np.min(dataPWBGFabs) dataPWBGFabs = dataPWBGFabs/np.max(dataPWBGFabs) dataPWBGSpect = sphericalAverage(dataPWBGFabs**2) + epsilon m, s = divmod(time() - tStart, 60) print " :: Time elapsed: %d minutes and %.2f seconds" % (m, s) return {'dataPW':dataPW, 'dataPWSpect': dataPWSpect, 'dataPWBGSpect': dataPWBGSpect, 'peval': pWfilter['peval'] }
def calculatePowerSpectrum(data): epsilon = 1e-10 dataF = np.array(fftpack.fftshift(fftpack.fftn(data)), dtype='complex64') dataFabs = np.abs(dataF) dataFabs = dataFabs - np.min(dataFabs) dataFabs = dataFabs / np.max(dataFabs) dataPowerSpectrum = sphericalAverage(dataFabs**2) + epsilon del dataFabs return (dataF, dataPowerSpectrum)
def calculatePowerSpectrum(data): epsilon = 1e-10 dataF = np.array(fftpack.fftshift(fftpack.fftn(data)), dtype='complex64') dataFabs = np.abs(dataF) dataFabs = dataFabs-np.min(dataFabs) dataFabs = dataFabs/np.max(dataFabs) dataPowerSpectrum = sphericalAverage(dataFabs**2) + epsilon del dataFabs return (dataF, dataPowerSpectrum)