Different resolution between relion postprocess and NU refinement

I download the map_half_A and map_half_B and mask_refine of the final round of NU refinement and let them be the input of relion_postprocess:

relion_postprocess --i cryosparc_P39_J36_009_volume_map_half_A.mrc --i2 cryosparc_P39_J36_009_volume_map_half_B.mrc --o 10330_refined --angpix 1.035 --mask cryosparc_P39_J36_009_volume_mask_refine.mrc --auto_bfac true

the output of RELION masked-corrected FSC resolution is 3.88125A, while the resolution of cryosparc is (figures of outputs of NU Refinement):

FSC Iteration 009

FSC Iteration 009, after FSC-mask auto-tightening

The corrected masked resolution of both figures above is not 3.88125A, but I am using the same half map and mask.

Any advice would help!

The mask_refine is not used for FSC calculation - you want to try the fsc_mask_auto in order to match the “corrected” curve.

Thank you!
I try to download the mask_fsc_auto of the final round and do relion_postprocess:

relion_postprocess --i cryosparc_P39_J36_009_volume_map_half_A.mrc --i2 cryosparc_P39_J36_009_volume_map_half_B.mrc --o 10330_refined --angpix 1.035 --mask cryosparc_P39_J36_009_volume_mask_fsc_auto.mrc --auto_bfac true

the output of RELION masked-corrected FSC resolution is 3.61046A, but this is still different from the corrected resolution (3.5A) of “the FSC Iteration 009, after FSC-mask auto-tightening”:


I also tried to download particles alignments 3D, use csparc2star to transform into a star file and do relion reconstruction to get the corresponding half maps, with mask mask_fsc_auto by cryosparc and half maps reconstructed by relion(alignments are from NU Refinement of cryosparc), the relion postprocess reported masked-corrected FSC resolution 3.69643A, which is 0.2A less than the corresponding job of 3.5A in cryosparc.

I wonder what might be wrong.

Hi @Joey,

Thank you for the detailed post :slight_smile:

Edit: apologies for the incorrect response – I stand corrected by @DanielAsarnow. It’s true that NU-refinement does marginalization but that doesn’t matter here because we’re just looking at the half-maps. CryoSPARC starts the phase-randomization at frequency shell of 75% of the 0.143 threshold value, rather than at the point where FSC drops to 0.8.

Your analysis and expectations are all in-line, however, there is one step that NU-refinement does differently than regular refinements that is the source of the resolution discrepancy.

Local & Non-uniform refinements have options to “marginalize” over pose during backprojection; in simple terms, this means that each image contributes to the output volume at multiple poses, each contribution being weighted by the probability of that pose. This is on by default for those jobs. Note other 3D refinements and classifications don’t do this. When writing out the particle stacks each refinement iteration, it would be unwieldy to store the probability weights on every pose for each particle. Thus we only store the maximum-probability pose for each particle. RELION postprocess (and Homogeneous Reconstruction Only) take the single maximum-probability pose, and reconstruct the volume by considering that pose only (we can call this “maximization” as opposed to “marginalization”). Thus, to get a fully apples-to-apples comparison, you could use the “Homogeneous Reconstruct Only” job type (with the mask_fsc_auto) and compare the outputted FSC curve to RELION postprocess. In general we’ve seen that marginalization can boost the FSC curve compared to maximization, which is in agreement with your findings.

Let me know if there is still a discrepancy after comparing Homogeneous Reconstruct Only to RELION postprocess with the same masks! It may also be worth looking at the non-phase randomized FSC resolution number, just to remove that as another source of (potentially small) variability in the FSC.

Best, Michael


@mmclean Relion postprocess doesn’t do a reconstruction at all, it only looks at the pair of half maps and the mask. I think small differences in resolution are expected because the correction starts at a slightly different resolution shell. (--randomize-at-fsc 0.8 is the default in Relion).