28 #ifndef _CORE_SYMMETRIES_HH 29 #define _CORE_SYMMETRIES_HH 53 #define sym_undefined -1 55 #define sym_P2 3//c-axis, b-axis 60 #define sym_P22_12 1717 62 #define sym_P22_12_1 18 72 #define SYM_ACCURACY 1e-6 88 #define pg_I 214 //default xmipp icosahedaral symmetry 91 #define pg_I1 216 //no crowther 222 92 #define pg_I2 217 //crowther 222-> default in xmipp 93 #define pg_I3 218 //52 as used by spider 94 #define pg_I4 219 //another 52 95 #define pg_I5 220 //another another 52 (used by EMBL-matfb) 97 #define pg_I1H 221 //no crowther 222, + mirror plane 98 #define pg_I2H 222 //crowther 222-> default in xmipp+ mirror plane 99 #define pg_I3H 223 //52 as used by spider+ mirror plane 100 #define pg_I4H 224 //another 52+ mirror plane 101 #define pg_I5H 225 //another another 52 (used by EMBL-matfb)+ mirror plane 110 #define SYMINDEX(SL, sym_no, i, numIMG) \ 111 numIMG+SL.__L.mdimy/4*i+sym_no 164 __sym_elements = true_symNo = space_group = 0;
183 std::vector<std::string> &fileContent);
200 bool homogeneous=
true)
const;
297 double ang_a2b_deg)
const;
314 double psi1,
double &rot2,
double &tilt2,
double &psi2,
315 bool projdir_mode,
bool check_mirrors,
bool object_rotation=
false,
316 bool write_mirrors =
true);
346 bool projdir_mode,
bool check_mirrors,
347 bool object_rotation=
false);
352 double &rot2,
double &tilt2,
double &psi2
double nonRedundantProjectionSphere(int pgGroup, int pgOrder)
void getMatrices(int i, Matrix2D< double > &L, Matrix2D< double > &R, bool homogeneous=true) const
int readSymmetryFile(FileName fn_sym, double accuracy=SYM_ACCURACY)
bool isSymmetryGroup(FileName fn_sym, int &pgGroup, int &pgOrder)
void getShift(int i, Matrix1D< double > &shift) const
Matrix1D< int > __chain_length
Matrix2D< double > __shift
void computeSubgroup(double accuracy=SYM_ACCURACY)
void fillSymmetryClass(const FileName &symmetry, int pgGroup, int pgOrder, std::vector< std::string > &fileContent)
void setMatrices(int i, const Matrix2D< double > &L, const Matrix2D< double > &R)
int crystallographicSpaceGroup(double mag_a, double mag_b, double ang_a2b_deg) const
double computeDistance(double rot1, double tilt1, double psi1, double &rot2, double &tilt2, double &psi2, bool projdir_mode, bool check_mirrors, bool object_rotation=false, bool write_mirrors=true)
void addMatrices(const Matrix2D< double > &L, const Matrix2D< double > &R, int chain_length)
void addShift(const Matrix1D< double > &shift)
void breakSymmetry(double rot1, double tilt1, double psi1, double &rot2, double &tilt2, double &psi2)
void setShift(int i, const Matrix1D< double > &shift)
SymList(const FileName &fn_sym, double accuracy=SYM_ACCURACY)