Dear PyTom developers,
I noticed that there might be a redundant multiplication with wedgePart in wedgeParticle in gpuStructures.py.
When performing alignment, the bestAlignmentGPU function in alignmentFunctions.py will do
in which
|
self.volume_fft = self.fftnP(self.volume.astype(self.cp.complex64),plan=self.fftplan) * self.wedgePart |
the particle will be fourier transformed and multiplied with 3DCTF (wedgePart array in the code),
However, in
wedgeRotatedRef
|
self.simulatedVolume = self.ifftnP(self.fftnP(self.rotatedRef.astype(self.cp.complex64), plan=self.fftplan) * self.wedgePart, |
the reference is also fourier transformed and multiplied with 3DCTF,
Since the particle is comprised of images which have been corrupted by CTF, I think the multiplication with 3DCTF in wedgeParticle seems to be redundant.
Let the FT of reference be $V$, and the FT of particle be $X$, we should have $X = V\times CTF$. We can then match $X$ with $V\times CTF$,
but the current implementation matches $X\times CTF$ with $V\times CTF$.
However, this will only make a difference only when the true CTF volume is used in generating rotated ref. If the wedgePart is a fourier mask where the region covered by tilting are set to 1, the implementation in wedgeParticle is fine since multiplying with 1 is an identity oepration.