This is an old revision of the document!
Compare re-projections : Compare re-projections to class averages.
Usage in command line
sp_proj_compare.py stack input_volume outdir --mode=viper --classangles=angles_file --classselect=img_selection_file --prjmethod=interpolation_method --delta=angular_increment --matchshift=shift_range --matchrad=outer_radius --matchstep=ring_step --symmetry=optional_symmetry --partangles=refinement_params --partselect=substack_select --refineshift=shift_range --outliers=max_angle_diff --refinerad=outer_radius --refinestep=ring_step --align=2d_alignment_method --display --verbose
sp_proj_compare compares re-projections of a 3D reconstruction to 2D images, typically class averages. There are three methods for this comparison:
1. Use projections angles from VIPER/RVIPER :
sp_proj_compare.py Class2D/best.hdf Initial3D/main001/run002/rotated_volume.hdf Compare --mode viper --classangles Initial3D/main001/run002/rotated_reduced_params.txt --classselect Initial3D/main001/index_keep_images.txt
Note 1: The projection angles are not required if present in the image header. When in doubt, include this file explicitly.
Note 2: RVIPER, if it finds a stable solution, may exclude some images, and thus their projection angles will be excluded from the parameters file. The file containing the list of included images will have a name like main003/index_keep_images.txt.
2. Run a simple iteration of projection-matching:
sp_proj_compare.py Class2D/best.hdf Initial3D/main001/average_volume.hdf Compare/ProjMatch --mode=projmatch --delta 7.5
3. Use the orientation parameters from refinement:
sp_proj_compare.py Class2D/best.hdf Initial3D/main001/average_volume.hdf Compare/Meridien --mode=meridien --partangles Refine3D/final_params_037.txt --partselect Substack/isac_substack_particle_id_list.txt --outliers=15
The projection angle for a class will be calculated by taking the vector sum of the projection angles of the particles belonging to that class.
The set of classified particles may be different from the set of refined particles – for example when a substack is generated from a selection of good class averages – and thus the particle numbers will not match. The particle-selection file – e.g., Substack/isac_substack_particle_id_list.txt – will allow mapping of the particle number during classification to that during refinement.
Some particles may have been erroneously assigned to a class, as indiciated by a large angular distance between their projection angles and the average. Such particles can be excluded from the calculation of the average angles with the –outliers option. Furthermore, a list of the remaining included particles will be written to the files OUTPUT_DIRECTORY/Byclass/goodpartsclass###.txt.
As an input_volume, RVIPER's main003/average_volume.hdf also worked for me.
VIPER (as opposed to RVIPER) includes all class averages, so an image selection file shouldn't be needed.
Tapu Shaikh
Category 1:: APPLICATIONS
sphire/bin/sp_proj_compare.py
Beta:: Under evaluation and testing. Please let us know if there are any bugs.
2019/06/18 Strange behavior when the volume/image dimension is odd. In the meantime, will pad by 1.