First of all I just want to say thanks for expanding cryoSPARC’s functionality to do helical refinement. Very useful feature to have!
Now I’m wondering if it is possible to do a masked helical refinement and how to do it? I’ve attempted it using masks made from refined maps, refined sym maps, and from the mask_refine but I always get the below. This is both with edited maps (by chimera) and even if I take the unmodified mask_refine from a previous helical refinement run
CPU: 930.1 MB] Traceback (most recent call last):
File “cryosparc_worker/cryosparc_compute/run.py”, line 84, in cryosparc_compute.run.main
File “cryosparc_worker/cryosparc_compute/jobs/helix/run_refine.py”, line 265, in cryosparc_compute.jobs.helix.run_refine.run
AssertionError: Mask must have the same shape as volume. Use vop resample command on the mask in Chimera to ensure shapes match.
I’m not sure why it gives this warning as I do not get it if I do a standard refinement. Has any one else come across this and solved it? It may be because my particles are an odd example of a filament as my sample consists of a filamentous central domain with highly flexible domains budding off. The issue I face is that the flexible buddings are larger than the central filament and along with their flexibility probably make helical refinement difficult. So ideally I wish to do a masked helical refinement on the central filamentous region (Two representative classes below).
It’s just odd that I get the same error with just using an unmodified mask_refine from a previous job, but maybe I’m missing something?
I realized the error: I have to use ab-initio model generation initially due to the weird shape of the filament. This is what I’ve been trying to use as my input map for masked refinement however if I use the generated map from a previous helical refinement job instead it runs successfully.
It’s not overly clear in the examples or the explanations of helical refinement in CryoSparc that Ab-Initio maps are not compatible with masks from a helical refinement job, but I guess I am the first to find out.
Thanks for reporting this – I suspected that the problem was that the initial model was taken from ab-initio, as ab-initio downsamples the volume and so is sampled on a different grid than the mask. There is a workaround that will let you use the volume from ab-initio:
Take the output volume from ab-initio and run it through a “Volume Tools” job. Set the parameter “Resample to box size (pix)” to the same box size as the mask (for example, if the mask is output from a Helical Refinement job as the mask_refine, it should have the same box size as the input particles).
Take the output from this volume tools job and connect it to a new Helical Refinement job, along with the desired mask
Apologies for this inconvenience – we have tracked the bug now and this resampling should be able to be done automatically within the helical refinement job in future releases. I believe that in order to have the mask not modified at each iteration, you also need to set the “Mask (dynamic, static)” parameter to “static” (rather than the “dynamic” default), and you may also need to set the “Align input structure to helical (z) axis” parameter as “never”.
We have released a v3.1.0 update to cryoSPARC that should resolve this issue, allowing masks to be resampled onto the correct grid regardless of their initial size. Once you have connected your mask to the helical refinement job, the only parameter you have to change is to set the “Mask (dynamic, static)” parameter to static, and this mask will be used throughout the job.