Shifted volume after local refinement with fulcrum


After doing local refinement around a fulcrum point using dynamic masking, my volume got shifted, which I’m assuming is by design. Now I wish to do further processing and classification on it both inside and outside of cryosparc. I wonder do I need to create a new mask centered on the new shifted volume? Should I specify a new fulcrum point that accommodates the shift?!


1 Like

Hi @ahmadkhalifa,

This a good question - the fulcrum-shifting done by local refinement can complicate further processing and hopefully sometime soon, we plan on releasing a local refinement update that makes it such that there is no shifting done.

To answer your question, yes, if you want to use the refined volume in future processing, you will need a new mask that covers the shifted volume. However, my only reservation in this recommendation is that the particles’ alignments unfortunately aren’t consistent with this frame of reference - they are actually in the original frame of reference. I am not entirely confident that the alignments that local refinement outputs are correct however, as we do some internal conversion in order to undo the effect of fulcrum shifting, and I don’t believe that this exactly preserves the alignments. Perhaps users with more experience running local refinements can provide some insight on interoperability / subsequent post-processing in different programs. One thing I can suggest is that you try the following:

In cryoSPARC v3.0, you can try to take:

  • particles outputted from the local refinement job, and;
  • the mask that was input into the refinement (this was probably from a Import Volumes or Volume Tools job)

And input these both into a “Homogeneous Reconstruction Only” job. This job will output a volume that should give your locally-refined volume in the original reference frame, that is also aligned with the input mask. If the reconstructed volume looks lower resolution than the one outputted from the local refinement, I would be wary about directly using the particles’ alignments in future processing.

If the above doesn’t work, then the only workaround currently would be to re-run the local refinement with no fulcrum. In that case, the output alignments will be entirely correct, no shifting is done, and you don’t have to worry about re-generating a mask.

Apologies if any of this was confusing! Please feel free to ask for clarification / ask me any additional questions.


1 Like

You can use from pyem to transform the volume back to the original position. --target=x,y,z --invert local.mrc local_inv.mrc

where x,y,z are your fulcrum coordinates in Angstroms.

1 Like