I have a question about the different outputs from a non-uniform refinement job. Specifically, how is the map_filtered.mrc file generated? I had assumed this was a map filtered by local-resolution but I wanted to check if this was the case and if so what settings in the cryoSPARC local resolution estimation and local filtering jobs would reproduce this map from the non-uniform refinement half-maps?
I have not been able to find anywhere in the documentation where this is discussed but please point me to the relevant location if I have missed something.
The map_filtered output in non-uniform refinement is generated as follows, after refinement has converged:
both raw, unfiltered halfmaps are averaged together
the raw map is filtered using the Gold-Standard FSC curve
the filtered map is sharpened using the Guinier-plot estimated b-factor
the sharpened map is outputted as _map_sharp_local.mrc (confusing filename… sorry)
the sharpened map is locally filtered using a local resolution estimate computed from the half-maps
the locally filtered map is outputted as _map_filtered.mrc
You can replicate these steps by doing:
compute local resolution using the volume output of the nu-refine job, in a local resolution estimation job (with default parameters)
create a local filtering job. Using the low-level results interface of the job builder (i.e. expand the input slots to edit individual connections) to connect the map_filtered output from the nu-refine job and the map_locres output from the local resolution estimation job
leave all local filtering parameters as default, and run the job
So the fsc threshold for the local resolution calculation will be 0.5. I’m guessing this is also the same for the global filtering of the _map_sharp_local.mrc. Why did cryoSPARC decide to default to a 0.5 threshold rather than 0.143 as used by programs like RELION?
@samhaysom It’s filtered using the FSC curve, not a single resolution. Still, I find the _sharp_local.mrc is less sharpened than a Relion post-process map with a lower b-factor, which I don’t understand.
@DanielAsarnow this is likely because the _map_sharp_local.mrc is in a sense filtered twice: first with the global FSC curve, then sharpened, then filtered again locally.
@samhaysom The FSC threshold used generally to define nominal resolutions for local resolution estimation must be different from the 0.143 that is used for global FSC resolution estimation. This is because once masking is applied, especially with windows as small as necessary for local resolution estimation, the assumptions behind the derivation of the 0.143 threshold are no longer met. With smaller windows, the FSC is less trustworthy, and we use 0.5 by default for all local resolution estimates. There is a recent paper about this issue that illuminates the issue:
@apunjani Is the _sharp_local.mrc map filtered locally? Based on your previous message it seemed the _sharp_local.mrc map was the sharpened map to be locally filtered, and it’s only the _filtered.mrc map that is filtered twice.
The postprocess.mrc map from Relion is also filtered by the FSC, there must be some implementation detail that’s responsible for the difference.
The map output result will contain the unsharpened map, with no B-factor applied
The map_sharp output result will contain a sharpened map, with a B-factor estimated during the refinement. The value of the B-factor can be seen in the “Guinier Plot”, or in the streamlog, where it will print Estimated Bfactor: x immediately prior to plotting