-
Notifications
You must be signed in to change notification settings - Fork 11
Description
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
PyTom/pytom/alignment/alignmentFunctions.py
Line 915 in 4089d5d
| plan.wedgeParticle() |
in which
PyTom/pytom/gpu/gpuStructures.py
Line 385 in 4089d5d
| 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
wedgeRotatedRefPyTom/pytom/gpu/gpuStructures.py
Line 381 in 4089d5d
| 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
but the current implementation matches
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.