This is a GUI program containing tools for evaluating particle quality, identifying bad (or especially good) particles and extracting subsets, or marking bad particles.
This program takes no (useful) command-line arguments. Simply launch it from inside an EMAN2 project directory.
classes - Class-average based evaluation
This tab will allow you to explore the particles that are included in class-averages. This will work with results from e2refine2d.py and e2refine.py. After selecting a specific class-average file, 3 windows will appear:
- class-averages - all of the class-averages in the file
- included particles - the particles associated with this class average which were included in the final average
- excluded particles - the particles associated with this class average, but which were excluded from the final average due to quality metrics
Left click on one of the class-averages, and the other 2 windows will become populated with the appropriate raw (unaligned) particles.
Often during processing, you will use, for example, the phase flipped, or phase flipped high-pass filtered particles for class-averaging. While this produces very nice averages, if you are looking at the raw particles going into the average, it may be more useful to see, for example, the Wiener filtered particles instead. When you select a particular class-average file, by default it will show you the particles which actually went into the class average. If you would prefer, however, to look at the Wiener filtered version of the same particles use the pop-up menu labelled "Particle Data File". If you select something on this list, it will replace the original data source listed in the class-average file, and will show you the corresponding particles instead.
Warning : this option must be used with some caution. As a simple example, if you have 2 sets one called 'set-small' and one called 'set-all', each containing different particles. Say you then run e2refine2d.py on 2x shrunk particles from set-small. when you run e2evalparticles, you will see something like 'bdb:r2d_01#all2' in the 'Particle Data File' selector. If you instead selected 'bdb:sets#set-small', everything would be fine. However, if you selected 'bdb:sets#set-all', then the particles you observed would be incorrect, because the particle numbers it is using to identify the particles are using the particle ordering from set-small (via r2d_01#all2, which has the same ordering).
If you double-click on a class-average, that average will become selected (colored square will appear). You may also select/deselect class-averages using the buttons in the control panel:
- all - selects all averages
- none - deselects all averages
- invert - inverts the current selection
- range - allows you to specify a range of class-average numbers to select
- from 3D - Only works with class-averages from refine_xx directories. When pressed will look at the list of only those class-averages which were included in the corresponding 3-D reconstruction, and mark them. Use invert to mark the class-averages which were excluded from the 3-D reconstruction.
Once you have selected the class-averages you are interested in, the buttons under 'Process Results' give you a mechanism for manipulating the particles that went into the selected class averages:
- Mark as Bad - Locates the corresponding particles in the original micrographs they came from, and marks them as 'bad' in the 'build particle sets' stage in the single particle refinement workflow.
- Make New Set - Constructs new particle 'sets' containing only the particles in the selected class-averages
- Save Particle List - This will write a text file containing the particle numbers from the selected set as referenced in 'Particle Data File'. This file is not used in the workflow, but you may use it with other programs to process the particles in various ways.
- Save CCD-based List - This will write a text file containing particle references after dereferencing them back to their original micrographs. Each line will contain 'particle number' and 'micrograph name' for one particle.
One typical use of this program is for eliminating bad particles, such as ice contamination, without having to manually look at all of the particles in a project:
- Use e2refine2d.py on your full particle set to generate class-averages
- Run e2evalparticles.py and look at one of the resulting classes_xx files
- Select any class-averages which look anomalous. You may wish to visually verify that the majority of particles in each of these 'bad' class averages are also bad.
- Use 'Mark as Bad' to mark the corresponding raw particles as bad
- Go back to the 'Build particle sets' interface in the workflow, and construct new sets, now with fewer bad particles.
Another possible use-case is for particle sub-classification, for particle flexibility analysis:
- Use e2refine2d.py to generate a relatively small number of class-averages
- run e2evalparticles.py and find class-averages which appear to be in the same 3-D orientation, and select them
- use "Make New Set" to build a particle set containing only particles from these selected classes.
- run e2refine2d.py on this new set of particles, and look for variations within the particles in ~the same orientation (note, there will inevitably be a few misclassified particles in the original refine2d.py run, so expect to see a few outliers in the class averages in this second stage, representing different orientations, not just different conformations)
- Display the stack of class-averages, delete any that look 'bad', then save the good ones to a new stack file.
- use e2stacksort.py to sort the new stack file into pseudo-time sequence
- use e2stackanim.py to build an animated GIF of the final sorted stack
Finally, you can use this program to extract the particles associated with individual maps in a e2refinemulti.py run:
- Run e2refinemulti.py
- If, for example, you have 3 reference models in your refinemulti run, and each map has 100 projections associated with it, then the projections and class-averages files will each contain 300 images.
- each map is represented sequentially. ie, 0-99 represent map 1, 100-199 represent map 2 and 200-299 represent map 3
- if you specify different symmetries for the different maps, things can get more complicated. There is a 'model_id' item in the header of each image identifying which map it was derived from.
- In e2evalparticles.py, use the 'range' selection option to select all of the class-averages corresponding to a particular map.
- Decide whether you want to include all of the particles or exclude the particles that didn't go into the 3-D reconstruction at all.
- Use 'Make New Set' to create a new set representing the particles from each map. You will need to repeat this process for each input map you wish to extract particles for.
- Just like other sets, this will not make an actual copy of your data, so there is little cost in disk space, even if you make many such sets.