Hi @mjmcleod64! Let me see if I can elaborate on what a typical (for me) 3D cleaning workflow looks like. Thanks for this post — I’ve made a note to add a page on this to our guide!
Before I dive in, I’m a little curious about your ab initio results. In your case with particles of different sizes, ab initio should still do a pretty good job creating two good volumes, one for each particle. Could you show what your ab initio results look like and explain a bit more about how you set up the jobs?
3D Particle Cleaning
In general, @carlos’s workflow is also the one I’d follow:
First, perform 2D Classification only once or twice, removing only classes which are clearly 100% junk. I do acknowledge that it takes some time to decide what is and isn’t junk, since our SNR is so bad to begin with!
Here’s an example of a class I’d consider 100% junk and discard:
And here is a class that, although it definitely contains a lot of junky particles, I’d still keep:
And finally, here’s a clearly good class where I expect almost all of the particles are good views
Next, I would perform ab initio reconstruction once, requesting a class for each good construct I have and a few extra classes for junk. In your case, I’d probably try requesting 6 or so classes.
Here are examples of my ab initio classes from the same particle set as those 2D classes. Since I only expected one good class, I only requested 3. I end up getting one clear “good” class and two classes which look “bad”. They have no real resemblance to what I was seeing in 2D, lots of disconnected blobs of density, and when I contour them down they don’t obey my expectations of what density should disappear at what contours. This is another thing that, unfortunately, largely relies on intuition. I’ve made a note to add some discussion of this to the guide!
Now that I have a good 3D class, I’ll use one copy of the good map with several copies of a junk map (doesn’t matter which) in a Heterogeneous Refinement to try to pull out more junk which snuck into my good particle stack. This also has the advantage of pulling out low-contrast, blurry, partial, aggregated, or otherwise “bad” images of my particles.
This heterogeneous refinement kept 500k particles in my Good class, but pulled out 100k bad particles in the three bad classes (combined). I keep performing cleanup steps like this until all of my classes look good, and then consider that my “clean particle stack” for all future refinements.
I hope that helps explain a bit about a 3D cleanup pipeline, and I’m happy to answer any new questions you have!