I run homogeneous refinement with optimize per-group ctf parameters and find TILT optimization is crucial for my dataset with one optics group. The difference is 3.0 without tilt optimization v <2.0 Å with.
I convert to star file with csparc2star.py and manually insert the same values for _rlnBeamTiltX and _rlnBeamTiltY into the end of every particle line. This value is obtained by the cryosparc final iteration, under fitting parameters
New group params:
Tilt (mrad): [x y]
I have to use --inverty during csparc2star for relion-extract to get the particle coordinates, but NOT --flipy or my reconstruction is 8 Å (it is 3.1 Å with --flipy).
How can I force cryosparc to apply the same beamtilt as identified in the original refinement to the relion-extracted particles?
Say for example I want to share a particle stack with a collaborator and they will work with the alignments and shifts identified in my refinement, but it can’t reconstruct to the same resolution without beamtilt refinement. How can I do this and play nicely with conversion between relion?
Short answer is you can’t at present - and in terms of converting beam tilt (& trefoil etc) between relion and cryosparc, I’m not sure it is as simple as just directly transposing them - both due to coordinate system issues (flipy/inverty etc) and differences in how the higher order params are specified. There is an open issue on the pyem github requesting conversion of higher order CTF params in csparc2star.py, but it does not yet have the capacity to do so.
Presently, if I need to do this, I just re-rerun CTFrefine in relion, which is usually pretty quick and gives comparable results to global CTF refinement in CS (and is actually more flexible in a lot of ways).
I agree it would be great to be able to convert them though - also for comparing CTF refinement approaches in the two software packages.
Then export the particle sets job and make a tarball from it, which is relatively compact as it only has the particles and associated metadata, and can then be directly imported on another CS instance.
Hi Oli, I want to make sure I have this pathway down correct. To get comparable resolution in relion if higher order ctf optimization was activated and useful in cryosparc refinement, I need to run relion reconstruct followed by potentially multiple iterations of ctf refine, auto refine, and postprocess until resolution does not increase. Is that right, or is there a simplified version? Also testing whether relion_reconstruct can substitute for autorefine assuming relion can optimize ctf parameters along the same path taken by cs for the same highres alignments.
Any way to speed up the auto refine step without increasing MPI/GPU? I tend to give an initial resolution 0.5 to 1 Å worse than the post-process input, but it’s still multiple hours per iteration and a few days long process just to get cryosparc particle into relion with high-resolution reconstruction angles/shifts.
It depends how severe the beam tilt etc is. Usually I would just run relion_reconstruct & postprocess, followed by CTFrefine, potentially with multiple cycles (as the resolution should improve after a second relion_reconstruct with updated CTF params).
If you do need to update particle alignments, then hopefully you should only have to start from local searches (not redo alignment completely). In auto-refine with default settings, that would mean starting form 1.8deg searches with local searches enabled, but the appropriate refinement strategy will vary case by case. For speeding up auto-refine in general, you can usually skip padding, which will usually give a speedup assuming you didn’t already have it enabled.