1414import org .biojava .nbio .structure .align .multiple .Block ;
1515import org .biojava .nbio .structure .align .multiple .MultipleAlignment ;
1616import org .biojava .nbio .structure .align .multiple .util .MultipleAlignmentScorer ;
17- import org .biojava .nbio .structure .symmetry .core .QuatSymmetryResults ;
1817import org .biojava .nbio .structure .symmetry .internal .CESymmParameters .RefineMethod ;
1918import org .biojava .nbio .structure .symmetry .internal .CESymmParameters .SymmetryType ;
2019import org .biojava .nbio .structure .symmetry .utils .SymmetryTools ;
@@ -38,48 +37,42 @@ public class CeSymmResult {
3837
3938 private CESymmParameters params ;
4039 private SymmetryAxes axes ;
41- private QuatSymmetryResults symmGroup ;
40+ private String symmGroup ;
4241
4342 private int symmOrder ;
4443 private int symmLevels ;
4544 private boolean refined ;
4645 private SymmetryType type ;
4746
4847 /**
49- * Return true if the symmetry result is significant, false otherwise.
48+ * Conditions checked are: score above the threshold, order higher than 1
49+ * and refinement succeeded.
5050 *
5151 * @return true if significant, false otherwise
5252 */
5353 public boolean isSignificant () {
5454
5555 // In any case if the order is 1 it is asymmetric
56- if (symmOrder < 1 )
56+ if (symmOrder < 2 )
5757 return false ;
5858
59- // If the old version was turned ON
60- if (params .getRefineMethod () == RefineMethod .NOT_REFINED ) {
61- if (selfAlignment .getTMScore () < params .getScoreThreshold ())
62- return false ;
63- else
64- return true ;
65- }
59+ // If the TM-Score is below the threshold
60+ if (selfAlignment .getTMScore () < params .getScoreThreshold ())
61+ return false ;
6662
67- // For the new version
68- if (refined ) {
69- // Length is over min length
70- if (symmLevels > 1 )
71- return true ; // significance already checked
72- else if (multipleAlignment .getCoreLength () < params
73- .getMinCoreLength ())
63+ // If the refinement was attempted
64+ if (params .getRefineMethod () != RefineMethod .NOT_REFINED ) {
65+ // Check for minimum length
66+ if (multipleAlignment .getCoreLength () < params .getMinCoreLength ())
7467 return false ;
75- else if ( multipleAlignment
76- .getScore (MultipleAlignmentScorer .AVGTM_SCORE ) < params
77- .getScoreThreshold ())
68+ // Allow 90% of original TM-Score theshold
69+ if ( multipleAlignment .getScore (MultipleAlignmentScorer .AVGTM_SCORE ) < params
70+ .getScoreThreshold () * 0.9 )
7871 return false ;
79- else
80- return true ;
81- } else
82- return false ;
72+ return true ;
73+ }
74+
75+ return true ;
8376 }
8477
8578 /**
@@ -91,12 +84,9 @@ else if (multipleAlignment
9184 */
9285 public List <StructureIdentifier > getRepeatsID () throws StructureException {
9386
94- if (!isSignificant ())
95- return null ;
96-
97- if (!isRefined ())
87+ if (!isRefined ())
9888 return null ;
99-
89+
10090 List <StructureIdentifier > repeats = new ArrayList <StructureIdentifier >(
10191 symmOrder );
10292
@@ -121,9 +111,9 @@ public List<StructureIdentifier> getRepeatsID() throws StructureException {
121111
122112 @ Override
123113 public String toString () {
124- return structureId + ", symmGroup=" + symmGroup . getSymmetry ()
125- + ", symmOrder =" + symmOrder + ", symmLevels=" + symmLevels
126- + ", refined=" + refined + ", type=" + type + " | " + params ;
114+ return structureId + ", symmGroup=" + symmGroup + ", symmOrder="
115+ + symmOrder + ", symmLevels =" + symmLevels + ", refined="
116+ + refined + ", type=" + type + " | " + params ;
127117 }
128118
129119 public MultipleAlignment getMultipleAlignment () {
@@ -183,19 +173,25 @@ public void setRefined(boolean refined) {
183173 this .refined = refined ;
184174 }
185175
186- public QuatSymmetryResults getSymmGroup () {
187- // Lazily calculate the symmetry group
176+ public String getSymmGroup () {
177+ // Lazily calculate the symmetry group if significant
188178 if (symmGroup == null ) {
189- try {
190- symmGroup = SymmetryTools .getQuaternarySymmetry (this );
191- } catch (StructureException e ) {
192- e .printStackTrace ();
179+ if (isRefined () && isSignificant ()) {
180+ try {
181+ symmGroup = SymmetryTools .getQuaternarySymmetry (this )
182+ .getSymmetry ();
183+ } catch (StructureException e ) {
184+ symmGroup = "C1" ;
185+ }
186+ if (symmGroup .equals ("C1" ))
187+ symmGroup = "R" ;
193188 }
189+ symmGroup = "C1" ;
194190 }
195191 return symmGroup ;
196192 }
197193
198- public void setSymmGroup (QuatSymmetryResults symmGroup ) {
194+ public void setSymmGroup (String symmGroup ) {
199195 this .symmGroup = symmGroup ;
200196 }
201197
@@ -231,31 +227,4 @@ public void setStructureId(StructureIdentifier structureId) {
231227 this .structureId = structureId ;
232228 }
233229
234- /**
235- * Returns the TM-Score of the symmetry alignment, independently of the
236- * state of the result (MultipleAlignment or AFPChain).
237- *
238- * @return TM-score
239- */
240- public double getTMScore () {
241- if (multipleAlignment != null )
242- return multipleAlignment
243- .getScore (MultipleAlignmentScorer .AVGTM_SCORE );
244- else
245- return selfAlignment .getTMScore ();
246- }
247-
248- /**
249- * Returns the RMSD of the symmetry alignment, independently of the state of
250- * the result (MultipleAlignment or AFPChain).
251- *
252- * @return RMSD
253- */
254- public double getRMSD () {
255- if (multipleAlignment != null )
256- return multipleAlignment .getScore (MultipleAlignmentScorer .RMSD );
257- else
258- return selfAlignment .getTotalRmsdOpt ();
259- }
260-
261230}
0 commit comments