This is an interesting idea for sure.
There isn’t a simple way within cryoSPARC to do this, but you can get the before and after pose and shift alignment parameters directly and compare them to do this manually as you suggested.
I’m not sure if you’ve already worked with cryoSPARC
.cs files that contain all the particle data, but you can easily read and work with them using the
icli shell, you can
from cryosparc2_compute import dataset
and then you can open up cs files like so:
dset = dataset.Dataset().from_file('/path/to/.cs/file')
There is more information about the .cs files here: https://cryosparc.com/docs/tutorials/data-management#use-case-modify
Once you’ve opened both datasets, you can compare the
alignments3D/pose columns to look for changes. The poses are encoded in axis-angle format, so you will have to convert them to rotation matrices to measure the angle change (and this may get more complicated if you have symmetry). For converting, you can use:
from cryosparc2_compute import geometry
R = geometry.expmap(axis_angle_vector)
axis_angle_vector = geometry.logmap(R)
And to measure the pose change, you can convert the before and after poses to rotation matrix, and then multiply the first by the inverse of the second, and then use the logmap to get back to axis angle. The length (euclidean norm) of the resulting axis-angle vector is the pose change in radians between the two poses.