IMP logo
IMP Reference Guide  develop.63b38c487d,2024/12/22
The Integrative Modeling Platform
symmetry_utils.h
Go to the documentation of this file.
1 /**
2  * \file IMP/cnmultifit/symmetry_utils.h
3  * \brief Symmetry utilities.
4  *
5  * Copyright 2007-2022 IMP Inventors. All rights reserved.
6  *
7  */
8 
9 #ifndef IMPCNMULTIFIT_SYMMETRY_UTILS_H
10 #define IMPCNMULTIFIT_SYMMETRY_UTILS_H
11 
12 #include <IMP/atom/Hierarchy.h>
13 #include "CnSymmAxisDetector.h"
15 #include <IMP/em/rigid_fitting.h>
16 #include <IMP/core/LeavesRefiner.h>
18 #include <IMP/cnmultifit/cnmultifit_config.h>
19 #include "AlignSymmetric.h"
20 
21 IMPCNMULTIFIT_BEGIN_NAMESPACE
22 
23 IMPCNMULTIFITEXPORT
24 algebra::Transformation3Ds generate_cn_transformations(atom::Hierarchies mhs,
25  int symm_deg);
26 
27 IMPCNMULTIFITEXPORT
28 algebra::Transformation3Ds generate_translations_along_symm_axis(
29  atom::Hierarchies mhs, int symm_deg);
30 
31 IMPCNMULTIFITEXPORT
32 em::FittingSolutions symmetry_local_fitting(atom::Hierarchies mhs,
33  int cn_symm_deg, int dn_symm_deg,
34  em::DensityMap *dmap,
35  int num_of_trans_to_consider);
36 
37 IMPCNMULTIFITEXPORT
38 em::DensityMap *build_cn_dens_assembly(
39  em::DensityMap *subunit_dens, const em::DensityHeader &asmb_dens_header,
40  algebra::Transformation3D monomer_t, int symm_deg);
41 
42 IMPCNMULTIFITEXPORT
43 void transform_cn_assembly(atom::Hierarchies mhs,
44  algebra::Transformation3D monomer_t);
45 
46 //! Fit a symmetric model to its density
47 IMPCNMULTIFITEXPORT
48 em::FittingSolutions fit_cn_assembly(atom::Hierarchies mhs, int dn_symm_deg,
49  em::DensityMap *dmap, float threshold,
50  const AlignSymmetric &aligner,
51  bool sample_translation = false,
52  bool fine_rotational_sampling =
53  true); // todo - should be a parameter
54 
55 IMPCNMULTIFITEXPORT
56 em::FittingSolutions fit_cn_assembly(em::DensityMap *asmb_map,
57  const MolCnSymmAxisDetector &symm_mol,
58  em::DensityMap *dmap,
59  const CnSymmAxisDetector &symm_map,
60  int symm_deg, float threshold);
61 
62 IMPCNMULTIFITEXPORT
63 bool pca_matching(const algebra::PrincipalComponentAnalysis &pca1,
64  const algebra::PrincipalComponentAnalysis &pca2,
65  float resolution);
66 
67 //! scores an input vector as a symmetry axis
68 IMPCNMULTIFITEXPORT
69 float cn_symm_score(atom::Hierarchies mhs, const algebra::Vector3D &center,
70  const algebra::Vector3D &direction, int symm_deg);
71 
72 IMPCNMULTIFITEXPORT
74  const std::string &param_fn, const multifit::FittingSolutionRecords &sols,
75  int dn = 1);
76 
77 IMPCNMULTIFITEXPORT
78 // The axis is defined by points a and b
79 algebra::Transformation3D calc_transformation_around_axis(algebra::Vector3D a,
81  float angle_rad);
82 
83 //! Find correspondence between the two rings and calculate rmsd
84 IMPCNMULTIFITEXPORT
85 float get_cn_rmsd(atom::Hierarchies mh1, atom::Hierarchies mh2);
86 
87 IMPCNMULTIFIT_END_NAMESPACE
88 
89 #endif /* IMPCNMULTIFIT_SYMMETRY_UTILS_H */
molecule symmetry detector
IMP::Vector< FittingSolutionRecord > FittingSolutionRecords
handles reading and writing MultiFit fitting solutions file
Fast alignment of a cyclic model to its density.
Detect cn symmetry in proteins and density maps.
Return the hierarchy leaves under a particle.
Decorator for helping deal with a hierarchy of molecules.
float cn_symm_score(atom::Hierarchies mhs, const algebra::Vector3D &center, const algebra::Vector3D &direction, int symm_deg)
scores an input vector as a symmetry axis
float get_cn_rmsd(atom::Hierarchies mh1, atom::Hierarchies mh2)
Find correspondence between the two rings and calculate rmsd.
IMP::Vector< Transformation3D > Transformation3Ds
VectorD< 3 > Vector3D
Definition: VectorD.h:408
em::FittingSolutions fit_cn_assembly(atom::Hierarchies mhs, int dn_symm_deg, em::DensityMap *dmap, float threshold, const AlignSymmetric &aligner, bool sample_translation=false, bool fine_rotational_sampling=true)
Fit a symmetric model to its density.
Performs rigid fitting between a set of particles and a density map.