Flipping hand causes strange issues

I have been encountering a bug, or have some sort of blind spot to a problem that I keep running into. I have a tetrahedral dodecameric structure that goes to ~2 Å. The entire workflow was done in CryoSPARC the traditional way: pick particles, 2D, Ab initio, homogenous refinement, download and inspect map.

At 2 Å, there really is no ambiguity that I can tell. The structure seems, to me, quite clearly to have inverted handedness. Running the CryoSPARC job to flip the hand, or flipping it in ChimeraX (volume #n flip) makes a map that fits the model, has right-handed ɑ-helices, etc.

The strange behavior is when I try to run phenix.map_symmetry to get a NCS spec file. On the non-flipped map, this results:

   3.32   0.97    12          T (c)
   1.69   0.98     3          C3
   0.00   0.27    28          D14 (a)
   0.00   0.27    28          D14 (b)
   0.00   0.55     6          D3 (b)
   0.00   0.28    60          I (b)
   0.00   0.23    60          I (d)
   0.00   0.19    60          I (f)
   0.00   0.22    60          I (a)
   0.00   0.20    60          I (c)
   0.00   0.25    60          I (e)
   0.00   0.15    24          O (a)
   0.00   0.17    24          O (b)
   0.00   0.28    12          T (a)
   0.00   0.31    12          T (b)

However, after flipping in either CryoSPARC, or ChimeraX, running the same command on the flipped map results in:

   1.69   0.98     3          C3
   0.00   0.24    26          D13 (a)
   0.00   0.26    26          D13 (b)
   0.00   0.27    28          D14 (a)
   0.00   0.27    28          D14 (b)
   0.00   0.18    60          I (b)
   0.00   0.21    60          I (d)
   0.00   0.25    60          I (f)
   0.00   0.15    60          I (a)
   0.00   0.28    60          I (c)
   0.00   0.18    60          I (e)
   0.00   0.18    24          O (a)
   0.00   0.13    24          O (b)
   0.00   0.59    12          T (a)
   0.00   0.28    12          T (b)
   0.00   0.42    12          T (c)

This is very odd. Flipped is clearly correct, the structure is clearly tetrahedral, and yet Phenix only finds C3? I was ready to fire off an email to the Phenix mailing list, asking them what is going on and if I found a bug in their software, but then I realized something. I ran a 3D volume alignment job in CryoSPARC, on just the flipped map, asking it to please align to the T symmetry axes. That alignment job spit out both a translation and rotation matrix it needed to get the volume aligned:

Aligning with T point group symmetry enforced

Aligning rotation matrix: 
[[-0.5004003   0.29090047  0.8154609 ]
 [-0.86579347 -0.16691318 -0.47174335]
 [-0.0011192  -0.9420812   0.33538303]]

Aligning shift: 
[ 0.0390625 -0.0390625  0.9765625]

At least to me that doesn’t make any sense. Why would flipping the map cause it to move away from the symmetry axes? And why only the two-fold axes?

If I take that flipped, but re-aligned map and feed it into phenix.map_symmetry again, I get back the expected output:

   3.28   0.96    12          T (c)
   1.68   0.97     3          C3
   0.00   0.28    28          D14 (a)
   0.00   0.28    28          D14 (b)
   0.00   0.58     6          D3 (b)
   0.00   0.19    60          I (b)
   0.00   0.21    60          I (d)
   0.00   0.31    60          I (f)
   0.00   0.24    60          I (a)
   0.00   0.22    60          I (c)
   0.00   0.30    60          I (e)
   0.00   0.29    24          O (a)
   0.00   0.27    24          O (b)
   0.00   0.53    12          T (a)
   0.00   0.16    12          T (b)

OK, well I sort of know why it wasn’t working, and now I want to use phenix.voyager.em_placement in ChimeraX to dock my model in, and for that I need half maps. I thought about running the Volume Tools job to flip the half maps, but I figured it’d be cleaner to do a Homogenous Reconstruction with the map hand flipped, instead. Here are the settings I chose for that reconstruction:

I connected only a previous best, non-flipped (so wrong hand) refinement volume, and particles. I did not connect a mask. Unfortunately, the reconstruction particle has drastically declined in quality.

Here’s the volume I put it (unflipped):

Here’s the volume manually flipped, with the model coarsely docked, that I believe shows the flipped version is the proper hand:

Here is the Homogenous Reconstruction output that I told to reconstruct with a flipped hand:

I’m very confused on two things:

  1. Why does flipping the hand move the volume slightly off the rotation axis?
  2. Why does reconstruction the volume with a flipped hand dramatically alter map quality (even though the FSC goes to near the same resolution)?

Is there some part of this I’m not considering?

Is the docked model above offset intentionally? It looks like the pixel size of the map is too small?

Yes, for visibility in ChimeraX I dragged it just slightly away from the density.

Dear @ccgauvin94,

Thanks for the very detailed post. This is indeed a bug, and thank you for bringing it to our attention. The hand-flip feature in the homogeneous reconstruction job does not correctly deal with symmetry-enforced volumes. This is because the hand flip is implemented as a reflection through the xy plane, and this has the effect of also reflecting all of the symmetry axes through that plane. Since the particle alignments have been flipped through that plane (and are no longer aligned to the correct symmetry axes convention), when the T symmetry is later enforced in that job, you end up with the distorted volume shown in your final image.

This definitely needs to be fixed – thanks for reporting it! :slight_smile:

Currently, this can be worked around by doing the following (as noted):

  • Taking the particles + volume from the wrong-hand refinement, and connecting them to a Homogeneous reconstruct only job with the “Flip the reconstruction hand” parameter activated but C1 symmetry specified
  • Taking the output particles + volume, connecting them to a Volume Alignment Tools job with “Symmetry Alignment” activated and the desired symmetry group specified (here T).
  • Finally, taking the output particles + volume and connecting them to a second homogeneous reconstruction job with flip hand off (Since the hand has already been corrected) but the desired symmetry specified (here T).



Thanks so much for the quick reply, @mmclean! Most of that makes sense to me, and I will give that workaround a try.

One thing I’m still confused about is why flipping just the map (not doing a reconstruction) using Volume Tools results in it being off from the symmetry axis. If I take my map from the Homogeneous Refinement, flip it with Volume Tools, and then go straight into a Vol Align Tools job with these parameters:

And no particle inputs, I still get a calculated rotation:


I’d say it must not be centered on the symmetry axis in the homogeneous refinement, but Phenix detects that symmetry axis with 0.98 correlation, so that can’t be. Unless maybe the origins are slightly different or something between the two jobs? Or am I completely misunderstanding what’s happening here?

EDIT: If I take the volume right from refinement (which had T symmetry enforced), it also spits out a matrix, albeit different than the flipped one:

Is the alignment job actually rotating by that matrix, or is it some other kind of output?

1 Like

Hi @ccgauvin94,

To answer your second question, its possible for Volume Alignment Tools to find a non-identity rotation matrix that aligns the volume to the symmetry axes even when the input volume is coming straight from a symmetry-enforced refinement – in this case, the rotation matrix it finds will just be one of the N symmetry transforms of the group, because by definition the volume is invariant under rotation by any of its group members. The volume alignment tools does indeed rotate by that matrix before outputting the transformed volume.

To your first question – the current implementation for the hand-flip causes the volume to be reflected through the xy plane, which reflects all of the symmetry axes through the xy plane. For symmetry axes that lie in the xy plane, or are coincident with the z-axes, these will be unaffected by the reflection. However, for symmetry axes with any other orientation, these will end up reflected. This is internally inconsistent because CryoSPARC’s symaxis conventions are fixed — so when symmetry is enforced during reconstruction, the particles are no longer aligned to the conventional symmetry axes which causes the distortion you saw. (This likely also explains why phenix found a C3 symmetry instead of a T symmetry on the flipped map, because the 3-fold rot axis of our T symmetry is coincident with the z-axis, so was unaffected by the reflection in the xy plane).

The planned fix currently is to change convention from reflection through the xy plane into reflection through the origin, which should preserve all symmetry axes and avoid all of this chaos!

Let me know if this makes sense, and best regards,


Thanks for the explanation - this makes a lot more sense to me now. I was indeed operating on the assumption that it was operating on the origin.

This makes sense as well. Thanks again!

1 Like

Hi @ccgauvin94

As of v4.4, we have changed the convention that “Flip hand” uses, in such a way that symmetry axes orientations should be preserved before and after the hand-flip. If you re-run a homogeneous reconstruction job in v4.4 as originally done in your first post, can you confirm that the volume coming out of it has symmetry correctly applied?

Many thanks,

Flipping the hand in CryoSPARC now preserves the tetrahedral symmetry!


Thank you very much for this fix!

1 Like