@@ -213,7 +213,8 @@ public String getSymmGroup() {
213213 else
214214 symmGroup = "R" ;
215215 }
216- } else // case asymmetric
216+ } else
217+ // case asymmetric
217218 symmGroup = "C1" ;
218219 }
219220 return symmGroup ;
@@ -255,4 +256,60 @@ public void setStructureId(StructureIdentifier structureId) {
255256 this .structureId = structureId ;
256257 }
257258
259+ /**
260+ * Return a String describing the reasons for the CE-Symm final decision
261+ * in this particular result.
262+ *
263+ * @return String decision reason
264+ */
265+ public String getReason () {
266+ // Cases:
267+ // 1. Asymmetric because insignificant self-alignment (1itb.A_1-100)
268+ double tm = selfAlignment .getTMScore ();
269+ if (tm < params .getUnrefinedScoreThreshold ()) {
270+ return String .format ("Insignificant self-alignment (TM=%.2f)" , tm );
271+ }
272+ // 2. Asymmetric because order detector returned 1
273+ if (symmOrder == 1 ) {
274+ return String .format ("Order detector found asymmetric alignment (TM=%.2f)" , tm );
275+ }
276+
277+ // Check that the user requested refinement
278+ if (params .getRefineMethod () != RefineMethod .NOT_REFINED ) {
279+ // 3. Asymmetric because refinement failed
280+ if (!refined ) {
281+ return "Refinement failed" ;
282+ }
283+ tm = multipleAlignment .getScore (
284+ MultipleAlignmentScorer .AVGTM_SCORE );
285+ // 4. Asymmetric because refinement & optimization were not
286+ // significant
287+ if (!isSignificant ()) {
288+ return String .format (
289+ "Refinement was not significant (TM=%.2f)" , tm );
290+ }
291+ } else {
292+ // 4. Not refined, but result was not significant
293+ if (!isSignificant ()) {
294+ return String
295+ .format ("Result was not significant (TM=%.2f)" , tm );
296+ }
297+ }
298+
299+ String hierarchical = "" ;
300+ if (symmLevels > 1 ) {
301+ hierarchical = String .format ("; Contains %d levels of symmetry" ,
302+ symmLevels );
303+ }
304+ // 5. Symmetric.
305+ // a. Open. Give # repeats (1n0r.A)
306+ if (type == SymmetryType .OPEN ) {
307+ return String .format ("Contains %d open repeats (TM=%.2f)%s" ,
308+ getSymmOrder (), tm , hierarchical );
309+ }
310+ // b. Closed, non-hierarchical (1itb.A)
311+ // c. Closed, heirarchical (4gcr)
312+ return String .format ("Significant (TM=%.2f)%s" , tm , hierarchical );
313+ }
314+
258315}
0 commit comments