The “180+φ, 180-θ, -ψ” transformation mentioned by @sunch seemed to work. Not sure how to do with star.py
, but with awk:
awk -v s=180 '{print $1, $2, $3, $4, s+$5, s-$6, -$7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17}' particles_in.star > particles_out.star
Where columns 5-7 are the Euler angles, and the star file has 17 columns in total. Need to replace the header afterwards. There is probably a more elegant way of doing this, but this seems to do the trick!
Cheers
Oli
EDIT:
Hmm this still isn’t quite working. Relion reconstruct of the half maps from the transformed star file gives a reconstruction with a resolution of 5.7 Å, whereas the expected value is ~3Å with the same mask. With the non-transformed star file it is much worse - ~16Å. But normally, relion_reconstruct
from a star file imported from cryosparc gives comparable values to those originally determined in csparc, in my experience, so still feels like there is something missing here.
EDIT 2:
Ok, so the easiest way to do this I think is to:
- convert particle.cs to star using
csparc2star.py
(with--swapxy
&/or--inverty
as needed) - Extract in relion from relion motioncorrected mics (try a subset first and confirm particles are well centered)
- Import back into cryosparc, and associate with relion motion corrected mics
- Re-run global refinement.
- Export back to relion.
- Do all the usual things - symlink cryosparc job dir for particles, symlink mrc stacks to mrcs, adjust paths and opticsGroupName in star file as needed
- run relion_reconstruct for two halves
- run relion_postprocess using refinement mask
- CTFrefine if needed (and another round of relion_reconstruct if so)
- Polish.
After this, using relion_reconstruct
gives the expected resolution and everything seems to proceed smoothly.