Continuous vs Discrete motion in 3DVA

Hi all,

Through processing a recent dataset of mine I got a 3.2A map (660k particles) and then performed 3DVA. In the 3rd component there is some nice variability that I would like to model. However, the clustering procedure seems to not be able to pull out discrete classes which makes me think that this motion is continuous. Would it be appropriate to construct a model of the 1st and last (19th) frame to have models of the beginning and end state?

Clustering (monomodal):

Movie of motion I would like to better understand:


After further messing around and reading the tutorial multiple times, its seems I should be using the intermediate option for 3DVA Display and optimizing the frame/window count to obtain independent reconstructions for a given set of particles along the trajectory. Are these gold standard reconstructions? Can I model into these reconstructions just as I would a homogenous/NU refinement?


The intermediates output just reprojects the particles with the alignments from the prior refinement used as input for 3DVA and filters the maps to a resolution set by the user (Not gold standard). In my tests I have seen some modestly improved maps by running another refinement following curation of particle subsets by 3DVA.

Thanks for the response @Ablakely!

I read the tutorial wrong and you’re right about the intermediate frames being projections.

I have tried to cluster the particles in 2-5 clusters, but the refinement I get out of those highly resembles the consensus refinement and they were not able to accurately capture what is seen from the “simple” output that I put above.

If you want to get clusters similar to those used for the GIF you posted you can try the script DanielAsarnow posted here.

That script is written to split particles based on their latent coordinates for 3 modes of variability but I think you will want to try using just 1 mode to begin with. I made a modified version that filters on 1 dimension. If you use this, just change component_mode_2 to whichever mode you are interested in and then change the range from (x > -30) & (x < 30) to whatever latent coordinate space you’d like to use.

You then need to use an edited .csg file to import those particles per the discussion on the original post I referenced above. If you have to do this for 20 frames this could get quite tedious, so maybe this isn’t your best way forward. Hopefully the “intermediates” mode will output particle clusters, as intended, soon.

Script for extracting a cluster from a single mode of variability:

import numpy as np
cs = np.load(“P1/J942/cryosparc_P1_J942_particles.cs”)
pt = np.load(“P1/J942/P1_J942_passthrough_particles.cs”)
x = cs[‘components_mode_2/value’]
idx = (x > -30) & (x < 30)“cryosparc_P1_J942_particles_center.cs”, cs[idx], allow_pickle=True, fix_imports=True)“P1_J942_passthrough_particles_center.cs”, pt[idx], allow_pickle=True, fix_imports=True)


Hi - what you can do it is a phenix refine using your starting model, and volumes corresponding to first, and 19th frame. Then, if you do morphing of the two models you should see the movements in your atomic model. if you have maps at high resolution it will work