Skip to content

Commit 5591b2d

Browse files
committed
Adapt CeSymm code to new SymmetryAxes API
1 parent cd7c304 commit 5591b2d

File tree

4 files changed

+123
-191
lines changed

4 files changed

+123
-191
lines changed

biojava-structure/src/main/java/org/biojava/nbio/structure/symmetry/internal/CeSymm.java

Lines changed: 14 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -250,20 +250,20 @@ protected static CeSymmResult align(Atom[] atoms, CESymmParameters params)
250250
result.setStructureId(id);
251251

252252
// Determine the symmetry Type or get the one in params
253-
if (params.getSymmType() == SymmetryType.AUTO) {
253+
SymmetryType type = params.getSymmType();
254+
if (type == SymmetryType.AUTO) {
254255
if (result.getSelfAlignment().getBlockNum() == 1) {
255-
result.setType(SymmetryType.OPEN);
256+
type = SymmetryType.OPEN;
256257
logger.info("Open Symmetry detected");
257258
} else {
258-
result.setType(SymmetryType.CLOSED);
259+
type = SymmetryType.CLOSED;
259260
logger.info("Close Symmetry detected");
260261
}
261-
} else
262-
result.setType(params.getSymmType());
262+
}
263263

264264
// Do not try the refinement if the self-alignment is not significant
265265
if (optimalAFP.getTMScore() < params.getUnrefinedScoreThreshold()){
266-
result.setSymmOrder(1);
266+
result.setNumRepeats(1);
267267
return result;
268268
}
269269

@@ -278,7 +278,7 @@ protected static CeSymmResult align(Atom[] atoms, CESymmParameters params)
278278
break;
279279
case SEQUENCE_FUNCTION:
280280
// Does not work for OPEN alignments
281-
if (result.getType() == SymmetryType.CLOSED) {
281+
if (type == SymmetryType.CLOSED) {
282282
orderDetector = new SequenceFunctionOrderDetector(
283283
params.getMaxSymmOrder(), 0.4f);
284284
order = orderDetector.calculateOrder(
@@ -287,7 +287,7 @@ protected static CeSymmResult align(Atom[] atoms, CESymmParameters params)
287287
}
288288
case ANGLE:
289289
// Does not work for OPEN alignments
290-
if (result.getType() == SymmetryType.CLOSED) {
290+
if (type == SymmetryType.CLOSED) {
291291
orderDetector = new AngleOrderDetectorPlus(
292292
params.getMaxSymmOrder());
293293
order = orderDetector.calculateOrder(
@@ -300,7 +300,7 @@ protected static CeSymmResult align(Atom[] atoms, CESymmParameters params)
300300
atoms);
301301
break;
302302
}
303-
result.setSymmOrder(order);
303+
result.setNumRepeats(order);
304304

305305
// REFINEMENT
306306
SymmetryRefiner refiner = null;
@@ -309,7 +309,7 @@ protected static CeSymmResult align(Atom[] atoms, CESymmParameters params)
309309
return result;
310310
case SEQUENCE_FUNCTION:
311311
// Does not work for OPEN alignments
312-
if (result.getType() == SymmetryType.CLOSED) {
312+
if (type == SymmetryType.CLOSED) {
313313
refiner = new SequenceFunctionRefiner();
314314
break;
315315
}
@@ -323,49 +323,21 @@ protected static CeSymmResult align(Atom[] atoms, CESymmParameters params)
323323

324324
// Refinement succeeded, store results
325325
result.setMultipleAlignment(msa);
326-
result.setSymmOrder(msa.size());
326+
result.setNumRepeats(msa.size());
327327
result.setRefined(true);
328328

329329
} catch (RefinerFailedException e) {
330330
logger.info("Refinement failed: " + e.getMessage());
331331
return result;
332332
}
333333

334-
// STEP 4: determine the symmetry axis and its repeat dependencies
334+
// STEP 4: symmetry axes
335335
SymmetryAxes axes = new SymmetryAxes();
336336
int order = result.getMultipleAlignment().size();
337337
Matrix4d axis = result.getMultipleAlignment().getBlockSet(0)
338338
.getTransformations().get(1);
339-
340-
List<List<Integer>> superposition = new ArrayList<List<Integer>>();
341-
List<Integer> chain1 = new ArrayList<Integer>();
342-
List<Integer> chain2 = new ArrayList<Integer>();
343-
superposition.add(chain1);
344-
superposition.add(chain2);
345-
List<Integer> repeatTrans = new ArrayList<Integer>();
346-
347-
switch (result.getType()) {
348-
case CLOSED:
349-
350-
for (int bk = 0; bk < order; bk++) {
351-
chain1.add(bk);
352-
chain2.add((bk + 1) % order);
353-
repeatTrans.add(bk);
354-
}
355-
axes.addAxis(axis, superposition, repeatTrans, order);
356-
break;
357-
358-
default: // case OPEN:
359-
360-
repeatTrans.add(0);
361-
for (int bk = 0; bk < order - 1; bk++) {
362-
chain1.add(bk);
363-
chain2.add(bk + 1);
364-
repeatTrans.add(bk + 1);
365-
}
366-
axes.addAxis(axis, superposition, repeatTrans, order);
367-
break;
368-
}
339+
axes.addAxis(axis, order, type);
340+
369341
result.setAxes(axes);
370342
return result;
371343
}

0 commit comments

Comments
 (0)