Skip to content

Commit a07102d

Browse files
committed
Use all repeats to calculate hierarchical axes in internal symmetry
1 parent 881bda5 commit a07102d

2 files changed

Lines changed: 12 additions & 15 deletions

File tree

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

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -581,14 +581,11 @@ private int getNumRepeats(int level) {
581581
*/
582582
public List<Integer> getFirstRepeats(int level) {
583583
List<Integer> firstRepeats = new ArrayList<Integer>();
584-
if (level == 0)
585-
firstRepeats.add(0); // No top level present
586-
else {
587-
int m = getNumRepeats(level);//size of the level
588-
int d = axes.get(level).getOrder(); // degree of this node
589-
for (int firstRepeat = 0; firstRepeat < m*d; firstRepeat+=d)
590-
firstRepeats.add(firstRepeat);
591-
}
584+
int m = getNumRepeats(level+1); //size of the level
585+
int d = axes.get(level).getOrder(); //degree of this level
586+
int n = m*d; // number of repeats included in each axis
587+
for (int firstRepeat = 0; firstRepeat < getNumRepeats(); firstRepeat+=n)
588+
firstRepeats.add(firstRepeat);
592589
return firstRepeats;
593590
}
594591

biojava-structure/src/main/java/org/biojava/nbio/structure/symmetry/utils/SymmetryTools.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -902,8 +902,6 @@ public static void updateSymmetryTransformation(SymmetryAxes axes,
902902

903903
List<List<Integer>> block = msa.getBlocks().get(0).getAlignRes();
904904
int length = block.get(0).size();
905-
Atom[] atoms = StructureTools.cloneAtomArray(msa.getEnsemble()
906-
.getAtomArrays().get(0));
907905

908906
if (axes != null) {
909907
for (int level = 0; level < axes.getNumLevels(); level++) {
@@ -913,7 +911,7 @@ public static void updateSymmetryTransformation(SymmetryAxes axes,
913911
List<Atom> list2 = new ArrayList<Atom>();
914912

915913
for (int firstRepeat : axes.getFirstRepeats(level)) {
916-
914+
917915
Matrix4d transform = axes.getRepeatTransform(firstRepeat);
918916

919917
List<List<Integer>> relation = axes.getRepeatRelation(
@@ -927,10 +925,12 @@ public static void updateSymmetryTransformation(SymmetryAxes axes,
927925
Integer pos1 = block.get(p1).get(k);
928926
Integer pos2 = block.get(p2).get(k);
929927
if (pos1 != null && pos2 != null) {
930-
Calc.transform(atoms[pos1], transform);
931-
Calc.transform(atoms[pos2], transform);
932-
list1.add(atoms[pos1]);
933-
list2.add(atoms[pos2]);
928+
Atom a = (Atom) msa.getAtomArrays().get(p1)[pos1].clone();
929+
Atom b = (Atom) msa.getAtomArrays().get(p2)[pos2].clone();
930+
Calc.transform(a, transform);
931+
Calc.transform(b, transform);
932+
list1.add(a);
933+
list2.add(b);
934934
}
935935
}
936936
}

0 commit comments

Comments
 (0)