Easy template picking

I’m sure many of you have appreciated cryoSPARC’s excellent semi-manual template picking feature. However, a frustration of mine is the lack of a fully automated picker using e.g. a Gaussian blob. I’m sure the team has something like this in the works, but here is my solution for the meantime.

Simply import the attached image - a circular blob - as a template!

This approach has worked for every negative stain and cryo dataset I’ve tested so far. The diameter is controlled by setting the pixel size during import. For example, for a 160 px diameter template, the pixel size can be set to 5 A (the image is 32 px across).


PS the source of the image is an empty class from a negative stain project.
PPS if someone has a better single template to share, please do!



I made a better one myself. Here’s a Gaussian with mean 0 and standard deviation 4 on a 32x32 size grid. The whole blob is about 16 pixels across so again just choose a pixel size to get the desired template diameter or standard deviation in Å.

E.g. if you want standard deviation 100 Å, use pixel size 25 Å. If you want the blob to be about 100 Å diameter, use pixel size 6.25.

Convert back to MRC format by e2proc2d.py <input.png> <output.mrc>.


Thanks for sharing! @DanielAsarnow

@DanielAsarnow Thanks for sharing this easy method!

When I tried to use the template to autopick the particles from negative stain images, it seems like cryoSPARC ignores the white particles and picked the dark background. Do you know what might be the problem?

Hi @ruiruigo, cryosparc is assuming you have cryo data and inverting the templates. Here’s a dark version of the template you can try (and then select “negative stain images” during particle extraction), however I found that cryosparc doesn’t work as well with the dark template and the options for data sign are confusing or buggy.

What I do is to simply invert my micrographs before I import, and treat them like cryo data throughout the cryosparc processing. Here’s my full negative stain pipeline, I do this mechanically for new datasets and it basically works well.

  1. for i in *.mrc; do e2proc2d.py --mult=-1 $i ${i%.mrc}_inv.mrc; done OR parallel -j 8 e2proc2d.py --mult=-1 {} {.}_inv.mrc ::: *.mrc
  2. Import the _inv.mrc files to cryosparc.
  3. CTF estimation, set amplitude contrast 0.15 - 0.4.
  4. Template pick with the imported white Gaussian, set particle diameter as desired and angular sampling to 360 deg. (no reason to rotate isotropic template).
  5. Extract particles with desired box size and bin to ~6 A / px (e.g. 200 px -> 64 px for 2 - 3 A/px from T12 at 46kx mag), or use low magnification so pixel size is already ~6 A.
  6. Run 2D classification, set desired no. classes and resolution limit 12 - 20 A.



Thank you so much! @DanielAsarnow