def processAndSaveFFT(self, imgdata, fftpath): if os.path.isfile(fftpath): print "FFT file found" if fftpath in self.freqdict.keys(): print "Freq found" return False print "Freq not found" print "creating FFT file: ", fftpath ### downsize and filter leginon image if self.params['uncorrected']: imgarray = imagefilter.correctImage(imgdata, params) else: imgarray = imgdata['image'] ### calculate power spectra apix = apDatabase.getPixelSize(imgdata) fftarray, freq = ctfpower.power(imgarray, apix, mask_radius=0.5, fieldsize=self.params['fieldsize']) #fftarray = imagefun.power(fftarray, mask_radius=1) fftarray = ndimage.median_filter(fftarray, 2) ## preform a rotational average and remove peaks rotfftarray = ctftools.rotationalAverage2D(fftarray) stdev = rotfftarray.std() rotplus = rotfftarray + stdev*4 fftarray = numpy.where(fftarray > rotplus, rotfftarray, fftarray) ### save to jpeg self.freqdict[fftpath] = freq mrc.write(fftarray, fftpath) self.saveFreqFile() return True
def powerSpectraToOuterResolution(image, outerresolution, apix): """ apix and outerresolution must have same units (e.g., Anstroms or meters) """ if debug is True: print "Computing power spectra..." fieldsize = ctfpower.getFieldSize(image.shape) binning = max(image.shape)/fieldsize #data = imagefun.power(image) data, freq = ctfpower.power(image, apix, fieldsize) #data = numpy.exp(data) data = data.astype(numpy.float64) powerspec = trimPowerSpectraToOuterResolution(data, outerresolution, freq) return powerspec, freq
def powerSpectraToOuterResolution(image, outerresolution, apix): """ apix and outerresolution must have same units (e.g., Anstroms or meters) """ if debug is True: print "Computing power spectra..." fieldsize = ctfpower.getFieldSize(image.shape) binning = max(image.shape) / fieldsize #data = imagefun.power(image) data, freq = ctfpower.power(image, apix, fieldsize) #data = numpy.exp(data) data = data.astype(numpy.float64) powerspec = trimPowerSpectraToOuterResolution(data, outerresolution, freq) return powerspec, freq
def processAndSaveFFT(self, imgdata, fftpath): if os.path.isfile(fftpath): print "FFT file found" if fftpath in self.freqdict.keys(): print "Freq found" return False print "Freq not found" print "creating FFT file: ", fftpath ### downsize and filter leginon image if self.params['uncorrected']: imgarray = imagefilter.correctImage(imgdata, params) else: imgarray = imgdata['image'] ### calculate power spectra apix = apDatabase.getPixelSize(imgdata) fftarray, freq = ctfpower.power(imgarray, apix, mask_radius=0.5, fieldsize=self.params['fieldsize']) #fftarray = imagefun.power(fftarray, mask_radius=1) fftarray = ndimage.median_filter(fftarray, 2) ## preform a rotational average and remove peaks rotfftarray = ctftools.rotationalAverage2D(fftarray) stdev = rotfftarray.std() rotplus = rotfftarray + stdev * 4 fftarray = numpy.where(fftarray > rotplus, rotfftarray, fftarray) ### save to jpeg self.freqdict[fftpath] = freq mrc.write(fftarray, fftpath) self.saveFreqFile() return True