11 proshadePath = cwd +
"/../install/python";
13 sys.path.append ( proshadePath );
18 def parseDVecFromProshade ( cSyms ):
23 if vecIt == len ( cSyms ):
25 if cSyms [ vecIt ] == -999.999:
26 myAxes.append ( myAxis )
30 myAxis.append ( cSyms[vecIt] );
34 def parseDVecDVecFromProshade ( dSym ):
40 if vecIt == len ( dSym ):
42 if dSym [ vecIt ] == -999.999:
43 myAxes.append ( myAxis );
46 elif dSym [ vecIt ] == -777.777:
47 mySymmetry.append ( myAxes );
52 myAxis.append ( dSym[vecIt] );
58 setUp = proshade.ProSHADE_settings ();
62 setUp.mapResolution = 6.0;
64 setUp.glIntegOrder = 0;
69 setUp.bFactorValue = 80.0;
70 setUp.bFactorChange = 0.0;
73 setUp.noIQRsFromMap = 4.0;
76 setUp.shellSpacing = 0.0;
77 setUp.manualShells = 0;
81 setUp.maskBlurFactor = 500.0;
82 setUp.maskBlurFactorGiven =
False;
85 setUp.extraSpace = 8.0;
88 setUp.peakHeightNoIQRs = 3.0;
89 setUp.peakDistanceForReal = 0.20;
90 setUp.peakSurroundingPoints = 1;
93 setUp.aaErrorTolerance = 0.1;
94 setUp.symGapTolerance = 0.3;
97 setUp.taskToPerform = proshade.Symmetry;
100 setUp.symmetryFold = 0;
101 setUp.symmetryType =
"";
105 setUp.htmlReport =
False;
108 if len(sys.argv) < 2:
109 print (
"Usage: python getSymmetry.py [filename1] to get symmetry information for structure in [filename1]." );
112 setUp.appendStructure ( str( sys.argv[ 1 ] ) );
116 runProshade = proshade.ProSHADE ( setUp );
120 cyclicSymmetries = runProshade.getCyclicSymmetriesPy ( );
121 dihedralSymmetries = runProshade.getDihedralSymmetriesPy ( );
122 tetrahedralSymmetries = runProshade.getTetrahedralSymmetriesPy ( );
123 octahedralSymmetries = runProshade.getOctahedralSymmetriesPy ( );
124 icosahedralSymmetries = runProshade.getIcosahedralSymmetriesPy ( );
125 symElemsRecommended = runProshade.getRecommendedSymmetryElementsPy ( );
126 symElemsRequested = runProshade.getSpecificSymmetryElementsPy (
"C", 4 );
130 sys.stdout.write (
"ProSHADE module version: " + runProshade.getProSHADEVersion ( ) +
"\n" );
131 sys.stdout.write (
"\n" );
132 sys.stdout.flush ( );
135 sys.stdout.write (
"Cyclic symmetry axes detected:\n" );
136 sys.stdout.write (
"-----------------------------------------------------------\n" );
137 sys.stdout.write (
"Symmetry Fold x y z Angle Peak \n" );
138 sys.stdout.write (
" Type (rad) height \n" );
139 sys.stdout.write (
"-----------------------------------------------------------\n" );
141 myAxes = parseDVecFromProshade ( cyclicSymmetries );
142 for it
in range ( 0, len ( myAxes ) ):
143 sys.stdout.write (
" C %d %+1.3f %+1.3f %+1.3f %+1.3f %+1.3f" % ( myAxes[it][0], myAxes[it][1], myAxes[it][2], myAxes[it][3], 6.282 / myAxes[it][0], myAxes[it][4] ) +
"\n" );
144 sys.stdout.write (
"\n" );
145 sys.stdout.flush ( );
148 sys.stdout.write (
"Dihedral symmetry axes detected:\n" );
149 sys.stdout.write (
"-----------------------------------------------------------\n" );
150 sys.stdout.write (
"Symmetry Fold x y z Angle Peak \n" );
151 sys.stdout.write (
" Type (rad) height \n" );
152 sys.stdout.write (
"-----------------------------------------------------------\n" );
154 mySymmetry = parseDVecDVecFromProshade ( dihedralSymmetries );
155 for sym
in range ( 0, len( mySymmetry ) ):
156 myAxes = mySymmetry[sym];
157 sys.stdout.write (
" D %d %+1.3f %+1.3f %+1.3f %+1.3f %+1.3f" % ( myAxes[0][0], myAxes[0][1], myAxes[0][2], myAxes[0][3], 6.282 / myAxes[0][0], myAxes[0][4] ) +
"\n" );
158 for subAx
in range ( 1, len( mySymmetry[sym] ) ):
159 sys.stdout.write (
" %d %+1.3f %+1.3f %+1.3f %+1.3f %+1.3f" % ( myAxes[subAx][0], myAxes[subAx][1], myAxes[subAx][2], myAxes[subAx][3], 6.282 / myAxes[subAx][0], myAxes[subAx][4] ) +
"\n" );
160 sys.stdout.write (
"\n" );
161 sys.stdout.flush ( );
164 sys.stdout.write (
"Tetrahedral symmetry axes detected:\n" );
165 sys.stdout.write (
"-----------------------------------------------------------\n" );
166 sys.stdout.write (
"Symmetry Fold x y z Angle Peak \n" );
167 sys.stdout.write (
" Type (rad) height \n" );
168 sys.stdout.write (
"-----------------------------------------------------------\n" );
170 myAxes = parseDVecFromProshade ( tetrahedralSymmetries );
171 for it
in range ( 0, len ( myAxes ) ):
172 sys.stdout.write (
" T %d %+1.3f %+1.3f %+1.3f %+1.3f %+1.3f" % ( myAxes[it][0], myAxes[it][1], myAxes[it][2], myAxes[it][3], 6.282 / myAxes[it][0], myAxes[it][4] ) +
"\n" );
173 sys.stdout.write (
"\n" );
174 sys.stdout.flush ( );
177 sys.stdout.write (
"Octahedral symmetry axes detected:\n" );
178 sys.stdout.write (
"-----------------------------------------------------------\n" );
179 sys.stdout.write (
"Symmetry Fold x y z Angle Peak \n" );
180 sys.stdout.write (
" Type (rad) height \n" );
181 sys.stdout.write (
"-----------------------------------------------------------\n" );
183 myAxes = parseDVecFromProshade ( octahedralSymmetries );
184 for it
in range ( 0, len ( myAxes ) ):
185 sys.stdout.write (
" O %d %+1.3f %+1.3f %+1.3f %+1.3f %+1.3f" % ( myAxes[it][0], myAxes[it][1], myAxes[it][2], myAxes[it][3], 6.282 / myAxes[it][0], myAxes[it][4] ) +
"\n" );
186 sys.stdout.write (
"\n" );
187 sys.stdout.flush ( );
190 sys.stdout.write (
"Icosahedral symmetry axes detected:\n" );
191 sys.stdout.write (
"-----------------------------------------------------------\n" );
192 sys.stdout.write (
"Symmetry Fold x y z Angle Peak \n" );
193 sys.stdout.write (
" Type (rad) height \n" );
194 sys.stdout.write (
"-----------------------------------------------------------\n" );
196 myAxes = parseDVecFromProshade ( icosahedralSymmetries );
197 for it
in range ( 0, len ( myAxes ) ):
198 sys.stdout.write (
" I %d %+1.3f %+1.3f %+1.3f %+1.3f %+1.3f" % ( myAxes[it][0], myAxes[it][1], myAxes[it][2], myAxes[it][3], 6.282 / myAxes[it][0], myAxes[it][4] ) +
"\n" );
199 sys.stdout.write (
"\n" );
200 sys.stdout.flush ( );
203 sys.stdout.write (
"-----------------------------------------------------------\n" );
204 sys.stdout.write (
"-----------------------------------------------------------\n" );
205 sys.stdout.write (
"Recommended symmetry: " );
206 if len ( parseDVecFromProshade ( icosahedralSymmetries ) ) > 0:
207 sys.stdout.write (
"ICOSAHEDRAL\n" );
208 elif len ( parseDVecFromProshade ( octahedralSymmetries ) ) > 0:
209 sys.stdout.write (
"OCTAHEDRAL\n" );
210 elif len ( parseDVecFromProshade ( tetrahedralSymmetries ) ) > 0:
211 sys.stdout.write (
"TETRAHEDRAL\n" );
212 elif len ( parseDVecDVecFromProshade ( dihedralSymmetries ) ) > 0:
213 sys.stdout.write (
"DIHEDRAL\n" );
214 elif len ( parseDVecFromProshade ( cyclicSymmetries ) ) > 0:
215 sys.stdout.write (
"CYCLIC\n" );
216 sys.stdout.write (
"-----------------------------------------------------------\n" );
217 sys.stdout.write (
"-----------------------------------------------------------\n\n" );
218 sys.stdout.write (
"Recommended symmetry elements table: \n" );
219 sys.stdout.write (
"-----------------------------------------------------------\n" );
220 sys.stdout.write (
"Symmetry x y z Angle \n" );
221 sys.stdout.write (
" Type (rad) \n" );
222 sys.stdout.write (
"-----------------------------------------------------------\n" );
224 myElems = parseDVecFromProshade ( symElemsRecommended );
225 if len ( myElems ) > 0:
226 sys.stdout.write (
" E %+1.3f %+1.3f %+1.3f %+1.3f" % ( myElems[0][1], myElems[0][2], myElems[0][3], myElems[0][4] ) +
"\n" );
227 for elem
in range ( 1, len( myElems ) ):
228 sys.stdout.write (
" C%d %+1.3f %+1.3f %+1.3f %+1.3f" % ( myElems[elem][0], myElems[elem][1], myElems[elem][2], myElems[elem][3], myElems[elem][4] ) +
"\n" );
229 sys.stdout.write (
"\n" );
230 sys.stdout.flush ( );
233 sys.stdout.write (
"Requested symmetry elements table: \n" );
234 sys.stdout.write (
"-----------------------------------------------------------\n" );
235 sys.stdout.write (
"Symmetry x y z Angle \n" );
236 sys.stdout.write (
" Type (rad) \n" );
237 sys.stdout.write (
"-----------------------------------------------------------\n" );
239 myElems = parseDVecFromProshade ( symElemsRequested );
240 if len ( myElems ) > 0:
241 sys.stdout.write (
" E %+1.3f %+1.3f %+1.3f %+1.3f" % ( myElems[0][1], myElems[0][2], myElems[0][3], myElems[0][4] ) +
"\n" );
242 for elem
in range ( 1, len( myElems ) ):
243 sys.stdout.write (
" C%d %+1.3f %+1.3f %+1.3f %+1.3f" % ( myElems[elem][0], myElems[elem][1], myElems[elem][2], myElems[elem][3], myElems[elem][4] ) +
"\n" );
244 sys.stdout.write (
"\n" );
245 sys.stdout.flush ( );