16 #include "../proshade/ProSHADE.h" 74 std::cout << std::endl <<
"Usage: getSymmetry [filename1] to get symmetry information for structure in [filename1]." << std::endl << std::endl;
79 setUp->
structFiles.emplace_back ( std::string ( argv[1] ) );
97 printf (
"Cyclic symmetry axes detected:\n" );
98 printf (
"-----------------------------------------------------------\n" );
99 printf (
"Symmetry Fold x y z Angle Peak\n" );
100 printf (
" Type height\n" );
101 printf (
"-----------------------------------------------------------\n" );
102 for (
unsigned int iter = 0; iter < static_cast<unsigned int> ( cSyms.size() ); iter++ )
104 printf (
" C %d %+.2f %+.2f %+.2f 2pi / %d %+.3f\n", static_cast<int> ( cSyms.at(iter)[0] ), cSyms.at(iter)[1], cSyms.at(iter)[2], cSyms.at(iter)[3],
static_cast<int> ( cSyms.at(iter)[0] ), static_cast<double> ( cSyms.at(iter)[4] ) );
108 printf (
"Dihedral symmetry axes table:\n" );
109 printf (
"-----------------------------------------------------------\n" );
110 printf (
"Symmetry Fold x y z Angle Peak\n" );
111 printf (
" Type height\n" );
112 printf (
"-----------------------------------------------------------\n" );
113 for (
unsigned int iter = 0; iter < static_cast<unsigned int> ( dSyms.size() ); iter++ )
115 printf (
" D %d %+.2f %+.2f %+.2f 2pi / %d %+.3f\n", static_cast<int> ( dSyms.at(iter).at(0)[0] ), dSyms.at(iter).at(0)[1], dSyms.at(iter).at(0)[2], dSyms.at(iter).at(0)[3],
static_cast<int> ( dSyms.at(iter).at(0)[0] ), dSyms.at(iter).at(0)[4] );
116 for (
unsigned int it = 1; it < static_cast<unsigned int> ( dSyms.at(iter).size() ); it++ )
118 printf (
" %d %+.2f %+.2f %+.2f 2pi / %d %+.3f\n", static_cast<int> ( dSyms.at(iter).at(it)[0] ), dSyms.at(iter).at(it)[1], dSyms.at(iter).at(it)[2], dSyms.at(iter).at(it)[3],
static_cast<int> ( dSyms.at(iter).at(it)[0] ), dSyms.at(iter).at(it)[4] );
124 printf (
"Tetrahedral symmetry axes table:\n" );
125 printf (
"-----------------------------------------------------------\n" );
126 printf (
"Symmetry Fold x y z Angle Peak\n" );
127 printf (
" Type height\n" );
128 printf (
"-----------------------------------------------------------\n" );
129 if ( tetSym.size() > 0 )
131 printf (
" T %d %+.2f %+.2f %+.2f 2pi / %d %+.3f\n", static_cast<int> ( tetSym.at(0)[0] ), tetSym.at(0)[1], tetSym.at(0)[2], tetSym.at(0)[3],
static_cast<int> ( tetSym.at(0)[0] ), static_cast<double> ( tetSym.at(0)[4] ) );
132 for (
unsigned int iter = 1; iter < static_cast<unsigned int> ( tetSym.size() ); iter++ )
134 printf (
" %d %+.2f %+.2f %+.2f 2pi / %d %+.3f\n", static_cast<int> ( tetSym.at(iter)[0] ), tetSym.at(iter)[1], tetSym.at(iter)[2], tetSym.at(iter)[3],
static_cast<int> ( tetSym.at(iter)[0] ), static_cast<double> ( tetSym.at(iter)[4] ) );
139 printf (
"Octahedral symmetry axes table:\n" );
140 printf (
"-----------------------------------------------------------\n" );
141 printf (
"Symmetry Fold x y z Angle Peak\n" );
142 printf (
" Type height\n" );
143 printf (
"-----------------------------------------------------------\n" );
144 if ( octSym.size() > 0 )
146 printf (
" O %d %+.2f %+.2f %+.2f 2pi / %d %+.3f\n", static_cast<int> ( octSym.at(0)[0] ), octSym.at(0)[1], octSym.at(0)[2], octSym.at(0)[3],
static_cast<int> ( octSym.at(0)[0] ), static_cast<double> ( octSym.at(0)[4] ) );
147 for (
unsigned int iter = 1; iter < static_cast<unsigned int> ( octSym.size() ); iter++ )
149 printf (
" %d %+.2f %+.2f %+.2f 2pi / %d %+.3f\n", static_cast<int> ( octSym.at(iter)[0] ), octSym.at(iter)[1], octSym.at(iter)[2], octSym.at(iter)[3],
static_cast<int> ( octSym.at(iter)[0] ), static_cast<double> ( octSym.at(iter)[4] ) );
154 printf (
"Icosahedral symmetry axes table:\n" );
155 printf (
"-----------------------------------------------------------\n" );
156 printf (
"Symmetry Fold x y z Angle Peak\n" );
157 printf (
" Type height\n" );
158 printf (
"-----------------------------------------------------------\n" );
159 if ( icoSym.size() > 0 )
161 printf (
" I %d %+.2f %+.2f %+.2f 2pi / %d %+.3f\n", static_cast<int> ( icoSym.at(0)[0] ), icoSym.at(0)[1], icoSym.at(0)[2], icoSym.at(0)[3],
static_cast<int> ( icoSym.at(0)[0] ), static_cast<double> ( icoSym.at(0)[4] ) );
162 for (
unsigned int iter = 1; iter < static_cast<unsigned int> ( icoSym.size() ); iter++ )
164 printf (
" %d %+.2f %+.2f %+.2f 2pi / %d %+.3f\n", static_cast<int> ( icoSym.at(iter)[0] ), icoSym.at(iter)[1], icoSym.at(iter)[2], icoSym.at(iter)[3],
static_cast<int> ( icoSym.at(iter)[0] ), static_cast<double> ( icoSym.at(iter)[4] ) );
169 printf (
"-----------------------------------------------------------\n" );
170 printf (
"-----------------------------------------------------------\n" );
171 printf (
"Recommended symmetry: " );
172 if ( icoSym.size() > 0 ) { printf (
"ICOSAHEDRAL\n" ); }
173 else if ( octSym.size() > 0 ) { printf (
"OCTAHEDRAL\n" ); }
174 else if ( tetSym.size() > 0 ) { printf (
"TETRAHEDRAL\n" ); }
175 else if ( dSyms.size() > 0 ) { printf (
"DIHEDRAL\n" ); }
176 else if ( cSyms.size() > 0 ) { printf (
"CYCLIC\n" ); }
177 printf (
"-----------------------------------------------------------\n" );
178 printf (
"-----------------------------------------------------------\n\n" );
179 printf (
"Recommended symmetry elements table:\n" );
180 printf (
"-----------------------------------------------------------\n" );
181 printf (
"Symmetry x y z Angle \n" );
182 printf (
" Type (rad) \n" );
183 printf (
"-----------------------------------------------------------\n" );
184 if ( symRecom.size() > 0 )
186 printf (
" E %+.2f %+.2f %+.2f %+.3f \n", symRecom.at(0)[1], symRecom.at(0)[2], symRecom.at(0)[3], symRecom.at(0)[4] );
187 for (
unsigned int iter = 1; iter < static_cast<unsigned int> ( symRecom.size() ); iter++ )
189 printf (
" C%d %+.2f %+.2f %+.2f %+.3f \n", static_cast<int> ( symRecom.at(iter)[0] ), symRecom.at(iter)[1], symRecom.at(iter)[2], symRecom.at(iter)[3], symRecom.at(iter)[4] );
194 printf (
"Requested symmetry elements table:\n" );
195 printf (
"-----------------------------------------------------------\n" );
196 printf (
"Symmetry x y z Angle \n" );
197 printf (
" Type (rad) \n" );
198 printf (
"-----------------------------------------------------------\n" );
199 if ( symSpecElems.size() > 0 )
201 printf (
" E %+.2f %+.2f %+.2f %+.3f \n", symSpecElems.at(0)[1], symSpecElems.at(0)[2], symSpecElems.at(0)[3], symSpecElems.at(0)[4] );
202 for (
unsigned int iter = 1; iter < static_cast<unsigned int> ( symSpecElems.size() ); iter++ )
204 printf (
" C%d %+.2f %+.2f %+.2f %+.3f \n", static_cast<int> ( symSpecElems.at(iter)[0] ), symSpecElems.at(iter)[1], symSpecElems.at(iter)[2], symSpecElems.at(iter)[3], symSpecElems.at(iter)[4] );
double aaErrorTolerance
The tolerance parameter on matching axes for the angle-axis representation of rotations.
std::vector< std::array< double, 5 > > getRecommendedSymmetry(void)
Accessor function for the recommended symmetry elements list.
std::string symmetryType
The required symmetry type. If no symmetry is required, leave empty. Possible values are: C...
double mapResolution
This is the internal resolution at which the calculations are done, not necessarily the resolution of...
double noIQRsFromMap
This is the number of interquartile distances from mean that is used to threshold the map masking...
unsigned int theta
This parameter is the longitude of the spherical grid mapping. It should be 2 * bandwidth unless ther...
double bFactorValue
This is the value to which all B-factors of PDB files will be changed to.
std::vector< std::array< double, 5 > > getIcosahedralSymmetries(void)
Accessor function for the icosahedral symmetries list.
unsigned int bandwidth
This parameter determines the angular resolution of the spherical harmonics decomposition.
bool htmlReport
Should HTML report for the run be created?
int verbose
Should the software report on the progress, or just be quiet? Value between 0 (quiet) and 4 (loud) ...
std::string getProSHADEVersion(void)
Miscellanous function allowing the user to get the ProSHADE version.
std::vector< std::array< double, 5 > > getCyclicSymmetries(void)
Accessor function for the cyclic symmetries list.
bool maskBlurFactorGiven
Was a specific value of the blurring factor requested by the user?
int peakSurroundingPoints
For a peak to exist, how many points in every direction need to be smalled than the middle value...
double shellSpacing
This parameter determines how far the radial shells should be from each other.
std::vector< std::array< double, 5 > > getSpecificSymmetryElements(std::string symType, int symFold=0)
Accessor function for the given symmetry elements list.
double peakDistanceForReal
Threshold for determining 'missing peaks' existence.
unsigned int phi
This parameter is the latitudd of the spherical grid mapping. It should be 2 * bandwidth unless there...
unsigned int symmetryFold
The required fold of the sought symmetry. Applicable to C and D symmetries, otherwise leave 0...
std::vector< std::array< double, 5 > > getTetrahedralSymmetries(void)
Accessor function for the tetrahedral symmetries list.
double bFactorChange
This value will be used to change the B-factors if required by the user.
double peakHeightNoIQRs
How many interquartile ranges should be used to distinguish 'false' peaks from the true ones...
std::vector< std::array< double, 5 > > getOctahedralSymmetries(void)
Accessor function for the octahedral symmetries list.
double symGapTolerance
For C-symmetries - if there are many, only those with average peak height - parameter * top symmetry ...
This class stores all the settings and is passed to the executive classes instead of multitude of par...
unsigned int manualShells
Should the user require so, the maximum number of radial shells can be set.
bool useCOM
Should the Centre of Mass (COM) be used to center the structure in the cell?
double maskBlurFactor
The is the amount of blurring to be used to create masks for maps.
std::vector< std::string > structFiles
This vector should contain all the structures that are being dealt with, but this does not yet work! ...
Task taskToPerform
This custom type variable determines which task to perfom (i.e. symmetry detection, distances computation or map features extraction).
double extraSpace
What should be the distance added on both sides to the structure, so that the next cell density would...
std::vector< std::vector< std::array< double, 6 > > > getDihedralSymmetries(void)
Accessor function for the dihedral symmetries list. These will be sorted using the fold and peak heig...
unsigned int glIntegOrder
This parameter controls the Gauss-Legendre integration order and so the radial resolution.