Skip to content

Commit 3d47cf2

Browse files
committed
Adding TestSymmetryAxes prior to refactoring
1 parent bf59aba commit 3d47cf2

1 file changed

Lines changed: 132 additions & 0 deletions

File tree

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
package org.biojava.nbio.structure.symmetry.internal;
2+
3+
import static org.junit.Assert.*;
4+
5+
import java.util.Arrays;
6+
import java.util.List;
7+
8+
import javax.vecmath.AxisAngle4d;
9+
import javax.vecmath.Matrix4d;
10+
import javax.vecmath.Vector3d;
11+
12+
import org.junit.Test;
13+
14+
15+
public class TestSymmetryAxes {
16+
17+
@Test
18+
public void testClosedCase() {
19+
// D4 case
20+
SymmetryAxes axes = new SymmetryAxes();
21+
22+
// Level 1 is C4 along Z
23+
Matrix4d r90 = new Matrix4d();
24+
r90.set(new AxisAngle4d(0, 0, 1, Math.PI/2));
25+
// number of times to apply this op for each repeat
26+
List<Integer> repeats = Arrays.asList(0,0,1,1,2,2,3,3);
27+
// aligned repeats
28+
List<List<Integer>> superposition = Arrays.asList(
29+
Arrays.asList(0,1,2,3,4,5,6,7),
30+
Arrays.asList(2,3,4,5,6,7,0,1));
31+
axes.addAxis(r90, superposition, repeats, 4);
32+
33+
// Level 2 is C2 along X
34+
Matrix4d r180 = new Matrix4d();
35+
r180.set(new AxisAngle4d(1, 0, 0, Math.PI));
36+
repeats = Arrays.asList(0,1,0,1,0,1,0,1);
37+
superposition = Arrays.asList(
38+
Arrays.asList(0,1),
39+
Arrays.asList(1,0));
40+
axes.addAxis(r180, superposition, repeats, 2);
41+
42+
assertEquals(2,axes.getElementaryAxes().size());
43+
44+
Matrix4d expectedEven = new Matrix4d();
45+
expectedEven.set(1);
46+
Matrix4d expectedOdd = new Matrix4d(r180);
47+
assertEquals(expectedEven, axes.getRepeatTransform(0));
48+
assertEquals(expectedOdd, axes.getRepeatTransform(1));
49+
expectedEven.mul(r90);
50+
expectedOdd.mul(r180,expectedEven);
51+
assertEquals(expectedEven, axes.getRepeatTransform(2));
52+
assertEquals(expectedOdd, axes.getRepeatTransform(3));
53+
expectedEven.mul(r90);
54+
expectedOdd.mul(r180,expectedEven);
55+
assertEquals(expectedEven, axes.getRepeatTransform(4));
56+
assertEquals(expectedOdd, axes.getRepeatTransform(5));
57+
expectedEven.mul(r90);
58+
expectedOdd.mul(r180,expectedEven);
59+
assertEquals(expectedEven, axes.getRepeatTransform(6));
60+
assertEquals(expectedOdd, axes.getRepeatTransform(7));
61+
62+
List<List<Integer>> relation = Arrays.asList(
63+
Arrays.asList(0,1,2,3,4,5,6,7),
64+
Arrays.asList(2,3,4,5,6,7,0,1)
65+
);
66+
assertEquals(relation,axes.getRepeatRelation(0));
67+
relation = Arrays.asList(
68+
Arrays.asList(0,1),
69+
Arrays.asList(1,0)
70+
);
71+
assertEquals(relation,axes.getRepeatRelation(1));
72+
assertNull(axes.getRepeatRelation(2));
73+
74+
}
75+
76+
@Test
77+
public void testOpenCase() {
78+
// D4 case
79+
SymmetryAxes axes = new SymmetryAxes();
80+
81+
// Level 1 is R4 along X
82+
Matrix4d t10 = new Matrix4d();
83+
t10.set(1,new Vector3d(1,0,0));
84+
List<Integer> repeats = Arrays.asList(0,0,1,1,2,2,3,3);
85+
List<List<Integer>> superposition = Arrays.asList(
86+
Arrays.asList(0,1,2,3,4,5),
87+
Arrays.asList(2,3,4,5,6,7));
88+
axes.addAxis(t10, superposition, repeats, 4);
89+
90+
// Level 2 is C2 along X
91+
Matrix4d r180 = new Matrix4d();
92+
r180.set(new AxisAngle4d(1, 0, 0, Math.PI));
93+
repeats = Arrays.asList(0,1,0,1,0,1,0,1);
94+
superposition = Arrays.asList(
95+
Arrays.asList(0,1),
96+
Arrays.asList(1,0));
97+
axes.addAxis(r180, superposition, repeats, 2);
98+
99+
assertEquals(2,axes.getElementaryAxes().size());
100+
101+
Matrix4d expectedEven = new Matrix4d();
102+
expectedEven.set(1);
103+
Matrix4d expectedOdd = new Matrix4d(r180);
104+
assertEquals(expectedEven, axes.getRepeatTransform(0));
105+
assertEquals(expectedOdd, axes.getRepeatTransform(1));
106+
expectedEven.mul(t10);
107+
expectedOdd.mul(r180,expectedEven);
108+
assertEquals(expectedEven, axes.getRepeatTransform(2));
109+
assertEquals(expectedOdd, axes.getRepeatTransform(3));
110+
expectedEven.mul(t10);
111+
expectedOdd.mul(r180,expectedEven);
112+
assertEquals(expectedEven, axes.getRepeatTransform(4));
113+
assertEquals(expectedOdd, axes.getRepeatTransform(5));
114+
expectedEven.mul(t10);
115+
expectedOdd.mul(r180,expectedEven);
116+
assertEquals(expectedEven, axes.getRepeatTransform(6));
117+
assertEquals(expectedOdd, axes.getRepeatTransform(7));
118+
119+
List<List<Integer>> relation = Arrays.asList(
120+
Arrays.asList(0,1,2,3,4,5),
121+
Arrays.asList(2,3,4,5,6,7)
122+
);
123+
assertEquals(relation,axes.getRepeatRelation(0));
124+
relation = Arrays.asList(
125+
Arrays.asList(0,1),
126+
Arrays.asList(1,0)
127+
);
128+
assertEquals(relation,axes.getRepeatRelation(1));
129+
assertNull(axes.getRepeatRelation(2));
130+
131+
}
132+
}

0 commit comments

Comments
 (0)