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
예제 #2
0
파일: ctftools.py 프로젝트: vossman/ctfeval
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
예제 #3
0
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
예제 #4
0
    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