CryoSPARC using wrong mask for CTF refinement? [Bug?]


Local and global CTF refinement are supposed to use the refinement mask by default for local CTF refinement, but the FSC in the log file seems to correspond to the FSC mask, not the refinement mask.

See attached FSC curves from a NU refinement, subsequent CTF refinement using default mask, and CTF refinement manually replacing the mask with the volume_mask_fsc blob.

The weird thing is that even if I manually replace the mask with volume_mask_refine, the FSC curve calculated in the log file still doesn’t seem consistent with that expected for the refinement mask - it seems the same no matter what I do.

EDIT: I am assuming that the “loose” mask in the refinement log is the same as the refinement mask - is this the case?


Hi @olibclarke,

In a refinement, the “tight” mask in the FSC plots is output as the volume.mask_fsc result (rather than the “loose” mask). This mask is auto-generated by thresholding and padding. The mask used to suppress noise before alignment is output as volume.mask_refine but it’s not used for FSC computation in the refinement. CTF Refinement uses the input mask group to suppress noise and compute FSC, and if not present, will use the volume.mask_refine result instead.

I believe this should explain the discrepancy – if you manually input the volume.mask_fsc to the mask input group of a CTF refinement, you should observe the FSCs looking the same as the tight mask red curve in a refinement, which agrees with the plots


Ah got it - thanks, makes sense now!