Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement Projector in Fourier Space (Slicing) #102

Open
8 tasks
ninamiolane opened this issue Apr 29, 2022 · 1 comment
Open
8 tasks

Implement Projector in Fourier Space (Slicing) #102

ninamiolane opened this issue Apr 29, 2022 · 1 comment
Assignees

Comments

@ninamiolane
Copy link
Contributor

ninamiolane commented Apr 29, 2022

What?

  • Implement the projection operation of the cryo-EM image formation model on a 3D array in Fourier space, which is a slicing operation.
  • Add details about the structure of the config input to the docstrings of the simSPI/linear_simulator/projector.py module.
  • Add corresponding unit-tests.
  • Use pre-commit (see README) to make sure that your code follows style guidelines.

Why?

Cryo-EM image formation model has different characteristics depending on whether it is formulated in image space (real space) or Fourier space (reciprocal space).

The community needs to be able to experiment with both formulations of the image formation model.

Where?

How?

  • Allow the config input to the Projector class to have a space key, where the value will be either image or fourier.
  • Rename current forward method into a private _forward_image method.
  • Create a _forward_fourier method, with the projection operation in fourier space.
  • Create a forward method that calls either _forward_image or _forward_fourier depending on the value in the self.config attribute.
  • [ ]
    Details on the cryo-EM image formation models can be found in Donnat et al 2022.
@mbrubake
Copy link
Collaborator

This is close to being complete but some additional features are suggested and likely to be needed:

  • Fourier space slicing with a specified resolution/radius in Fourier space, particularly in a circular region.
  • Handling of the Hermitian nature of this Fourier transform, i.e., with a real signal, only half of the Fourier coefficients are needed. The other half are complex conjugates of the original.
  • Need to specify conventions on FT for all of compSPI. For best interpolation performance when slicing assuming the volume is approximately centered in real space, DFT[I] = fft3(fftshift(I)). Also, the scaling factor of Fourier transform is important to identify clearly.
  • Support different interpolation methods in the Projector API. At a minimum nearest neighbour and trilinear. Also need to specify and document the defaults.

Can try to put these into issues at some point but wanted to do a brain dump here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Todo
Development

No branches or pull requests

3 participants