Search range in Local Refinement (Legacy)

Hi, I have a question about the search range in Local Refinement (Legacy).
For example, if I set Local shift search extent (pix) to 10 pixels, and Local rotation search extent (degrees) to 10 degrees, at each iteration, will cryosparc search within the (10,10) range compared to the pose from the previous iteration, or always the initial pose (the starting point of the job)?

Please see my plots after iter0 and iter12. Obviously they don’t look healthy, but the resulting resolution is still decent (4.0 Å). I wonder if I should further increase the search extent (didn’t seem to help) or try other tricks.

This is iteration 0:

This is iteration 12:

1 Like

Hi @zhangrui_wustl,

The search extents are defined around the initial poses – they don’t change each iteration in the Legacy job. It’s somewhat normal to see values clustered around the highest magnitude shift/poses in early iterations. The later iteration plots look healthier in that sense as they are smoother. If you’re worried about increasing the search ranges too much, the new job also allows you to set a gaussian prior over the pose/shift magnitudes, so that poses/shifts are penalized according to their distance from their initial values. This helps when you don’t have that much signal to work with, e.g. high SNR or small proteins. The job can also be sensitive to the fulcrum choice, which in the new job is set to the COM of the mask by default (empirically this performs the best).

Let me know if this helps,

Dear Michael,

Thank you so much for the explanation!
I’ve also tried the Local Refine (New beta) with “Use pose/shift gaussian prior during alignment” on. The plot looks much better (see below). However, the achieved resolution is significantly lower. For example, I can get 4.1 Å with the legacy one, but 5.0 Å for the new one.

Any suggestion to tweak the parameters would be greatly appreciated!
The parameters I used for the new job is like this:

1 Like

Hi @zhangrui_wustl,

The functionality of the new job should basically be a superset of the legacy job, with the exception of cross-validation regularization. If you see better resolution in the legacy job, you should be able to reproduce the behaviour of the legacy job using the new one by:

  • Changing the search extents “Rotation search extent (deg)” and “Shift search extent (A)” to the same values as the legacy job
  • Turning off the re-center rotations/shifts each iteration
  • Turning off the pose/shift gaussian prior
  • Turning on dynamic masking, and setting all the dynamic mask parameters to the same values as the legacy job
  • Using the same fulcrum location

The gaussian prior is only recommended in cases where there isn’t enough signal to align independently. If this isn’t the case, it can potentially cause “underfitting” leading to a lower resolution. We added it because in practice many users have datasets at the threshold of alignability.


1 Like

Hi @mmclean Thank you so much for the suggestions! I will try it immediately and report it here.