How to choose a fulcrum for local refinement?




What is the most convenient way to use eg UCSF Chimera to choose a fulcrum for local refinement? That is, is there some conversion needed for the coordinates reported by Chimera?

Also, in the guide it is stated that the default fulcrum is the center of the structure. Does this mean the center of the original box, or the center of mass of the local mask? I’m guessing the latter but just want to confirm.



Hi Oli,

The MRC files from cryoSPARC do not have origin shifts so they are quite straightforward to deal with - what you get should be what you want.

I think the easiest way to find the coordinate of a point in the map is: open the map in COOT, navigate to the point of interest (control-drag if there is no PDB to click on), place a water over it, middle click at the water and read the coordinate at the bottom of the screen.

For question 2, I can always see a one-voxel peak near the centre of the map, not necessarily the geometric centre of the unit cell (can be a few Angstroms off). If I get its coordinate and use it as the centre for symmetry operations it seems to give very good result. So I guess the answer is to look at the center of the map and find that little peak.



Easiest way to get arbitrary coordinate in Chimera is:

  1. Open volume eraser
  2. Set volume eraser sphere size to ~3A
  3. Move eraser sphere to desired location
  4. Note volume eraser sphere model number from model pane
  5. measure center #N where N is the volume eraser model number

You can also use measure center directly on a volume or atomic model (including arbitrary atom selection). However, be aware that the coordinates are in Angstroms for the volume eraser* and atomic model based methods, but are in voxels when measuring the center of mass of a regular volume.

*Unless the pixel size is not set in the map headers, check by opening the Volume viewer -> Features -> Coordinates and see if the pixel size is right.


Thank you both that is very helpful!


Hi @olibclarke ,

The default fulcrum is at the center of the original box.



Hi @olibclarke - just a quick note: I believe Chimera reports coordinates in Angstroms, but the local refinement job expects fulcrum coordinates in voxels, so you would have to divide the reported values by the pixel size.



Thanks @ali.h!

I notice that the fulcrum used is specified differently from the one I entered - is this normal? E.g., I entered 212,212,141 and cryosparc reports in the log that it is using 11,11,-60.

Also, there does not seem to be an option for the use of symmetry. Is this just taken from the input refinement? Or is C1 assumed?



Also - it seems to be that it would be more generally useful to default the fulcrum to the center of mass of the mask, or am I missing something?



Hi @olibclarke,

Yes, the reported fulcrum is indexed at the center of the volume. So, if your box size is 400, the reported coordinates would be offset by N/2 + 1, as it is in your case. And yes, C1 is assumed - I believe Ali P. addressed the question about local symmetry in another thread.

You’re right, defaulting the fulcrum to the center of mass of the mask might work better. From our understanding, the ideal fulcrum placement is actually at the intersection point of the local refinement mask and the remaining density, as the masked region would rotate around that point.

We are working on a new algorithm for optimizing fulcrum positioning, as well as methods of mask optimization in local or multi-part refinements.



Thanks - yes Ali addressed the question about symmetry expansion - but the lack of enforced symmetry means that one also cannot use this for example for performing a masked refinement of the TM region of a symmetric ion channel then (where the local symmetry axis is the same as the global symmetry axis), which is a shame.

Agreed the optimal position would be at a “hinge”, but I think the center of the mask would be a lot better than the center of the box (for a peripheral domain).



@olibclarke fair enough, we’ve added global symmetry enforcement in local refinement to our feature planner, so it should be implemented sometime in the future.

Thanks for the input!


Hi @ali.h,
Can I also suggest marking the fulcrum position on the map slices in the output? This would help to quickly identify if a mistake has been made, or if optimization of the fulcrum position is unstable (when this option is switched on).



Also, I think it might be better to label the output “change in angle plot” in degrees, rather than radians, given that the user specified search extent is given in degrees.



Hi @olibclarke @ali.h, I just want to add my perspective, having done a lot of multi-body refinements by hand using the programs in pyem.

First, I disagree the optimal location is at a hinge. The optimal rotation center for a subparticle refinement is the center of mass of the subparticle. A given angular accuracy results in the best positional accuracy near the center of the box. That’s why every (very) high resolution structure has the highest resolution at the center of box, and a major reason particles with cavities in the center can be troublesome.

I agree the CoM of the mask is a very good approximation to the CoM of the particle and is easier to compute stably (although see phase_cog() in EMAN2 which solves the problem elegantly by determining the phase of the DC component).

The cryoSPARC paper supplemental says a uniform prior over shifts is used (is this true? IMHO no prior is better than a uninformative one), but Relion and cisTEM both have alignment probabilities affected by the shift magnitude (Relion uses a Gaussian prior centered at the origin). Thus, it is desirable to obtain particles with shifts normally distributed around zero, by targeting the center of the subparticle and re-rextracting after subtracting shifts from the particle coordinates and setting shifts to the remaining subpixel values. All these additional transformations just need to be memoized so you can undo them at the end to aid the user in putting humpty dumpty together again.

Also let me note again that Chimera reports values in either voxels or Angstroms depending on how the coordinate is measured (see my previous post). It’s easy to check if you have correct coordinates using shape sphere center x,y,z color red radius 3 to place a little sphere at <x,y,z> (in Angstroms). If you do a re-targeting and then reconstruct the retargeting particles, you should also find the correct part of the particle in the center of the map.

To expand on this idea of validation by reconstruction, I’ve found that targeting and subtraction are extremely prone to user error. Performing reconstructions of targeted/subtracted particles is critical in achieving a correct result. In fact, I claim that most practitioners who have found no benefit from subtraction have actually made an error somewhere that would be identified in a reconstruction. CryoSPARC is so fast at reconstructions that there would be almost no cost in always producing a downloadable reconstruction for localized refinements or subtractions.

Oli’s suggestion of marking the point in slices is also a good one.

Second, IMHO symmetry expansion is always preferable to enforced symmetry for multi-body refinements. One can simply apply the symmetry expansion step before the target transform as I’ve done in I’ve found no loss in resolution for strictly symmetric parts of a map, and huge gains in resolution for regions with broken symmetry.

In any event, all of our claims and observations would be best supported by large scale benchmarking efforts on multiple datasets. Hopefully we’ll eventually have truly quantitative answers about the best way of doing these things.



Agreed on all points Dan. I just realized that the center of the shown slices during local refinement is the fulcrum - you can see this if you set the fulcrum to the center of the mask. Still might be worth putting a white dot in the center of the slice as an indicator.


And just for fun here’s an example of an improvement I’ve seen with local refinement (this is just local refinement in cryosparc, no subtraction) - would love to be able apply this to symmetric systems! :slight_smile:


Hi @ali.h, I’m curious - there are parameters for dynamic masking in local refinement, but as far as I can tell local refinement only uses the provided static mask (and does not run if one is not provided). Am I missing something?



Actually I think I understand this now. By default it is making a “dynamic” mask, but based on the input static mask. That it is taking the input static mask, thresholding at 0.2 and applying the default soft edge parameters. Is this right? I figure this is what is going on because when I provide my own mask with an exaggerated soft edge (18 pixels), the resulting masked slices do not appear to reflect this (see below comparison of mask and masked slice). Is this what is going on?




Hi @olibclarke, @DanielAsarnow,

Thank you very much for your comments - we really appreciate your feedback! I’ll try to address everything that was brought up but please let me know if I miss anything:

Fulcrum in the Local Refinement Job: @olibclarke you are right, the map in local refinement is shifted so that the fulcrum is at the center of the box. It definitely is a good idea to mark this point in the slices, we’ll add it to our list of improvements.

Fulcrum Positioning: The model we are working with assumes that in every image, the relative positioning of two bodies (V1 and V2) will be related by a rotation around a connection point (fulcrum). This is a simple approximation to the bending of the structure around the interface between the two bodies. From this model, it seems that in each particle image, the center of mass of the secondary volume will be in a different location with respect to the primary volume. However, the fulcrum position will be in the same location (or at least close) wrt the primary volume. This is why we think of the fulcrum as the hinge point in our model, as that will minimize the amount of shift required to align each image. Though, we are looking into the radial blurring @DanielAsarnow mentioned to see how significant the effect is in cryoSPARC to see if we can mitigate it. In the future, the fulcurm optimization will be done automatically which should give us a more concrete answer.

Masking: The static mask provided is used to create a dynamic mask around the area of interest. At each iteration, the volume is multiplied by the static mask the user inputted, and the remaining volume is thresholded and padded (using the Dynamic mask threshold/near/far parameters in the refinement section. Currently, setting the Mask parameter to “static” still defaults to a dynamic mask - this will be fixed in an upcoming release. For now, if you want to use a static mask (not recommended) you can set a very low threshold and small padding, which should almost be the same (you’ll likely get an error if you set them all to 0, but something on the order of 0.01 for the threshold and 1 or 2 for the padding extents should work). I should note that the FSC calculation is done without the use of the dynamic mask or the input static mask - the reconstruction from the re-aligned particles is passed directly to the FSC calculation, and the FSC masks are calculated exactly the same way they are done in homogenous refinement.

Hope that helps! Let me know if I can clarify anything else.



Thanks @ali.h, that is very helpful, particularly as regards masking. If I understand correctly then, the dynamic mask which is generated has a quite sharp edge by default - 3 Å? Given that the default “near” parameter is 3Å and the default “far” parameter is 6Å? I was trying to vary how soft the mask was by changing the width of the soft edge in relion (because I was seeing some ringing artefacts near the edge of the mask that I suspected were caused by the mask being too sharp-edged) and it wasn’t working - I can see why now. I can see now how to test that theory, by just increasing the “far” parameter of the dynamic mask.