1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
|
|
6 |
|
|
7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
12 |
|
|
13 |
|
|
14 |
|
|
15 |
|
|
16 |
|
|
17 |
|
|
18 |
|
|
19 |
|
|
20 |
|
|
21 |
|
package jalview.ext.jmol; |
22 |
|
|
23 |
|
import static org.testng.Assert.assertEquals; |
24 |
|
import static org.testng.Assert.assertTrue; |
25 |
|
|
26 |
|
import java.awt.Color; |
27 |
|
import java.util.HashMap; |
28 |
|
import java.util.LinkedHashMap; |
29 |
|
import java.util.List; |
30 |
|
import java.util.Map; |
31 |
|
|
32 |
|
import org.testng.annotations.BeforeClass; |
33 |
|
import org.testng.annotations.Test; |
34 |
|
|
35 |
|
import jalview.datamodel.Alignment; |
36 |
|
import jalview.datamodel.AlignmentI; |
37 |
|
import jalview.datamodel.ColumnSelection; |
38 |
|
import jalview.datamodel.Sequence; |
39 |
|
import jalview.datamodel.SequenceI; |
40 |
|
import jalview.gui.AlignFrame; |
41 |
|
import jalview.gui.SequenceRenderer; |
42 |
|
import jalview.schemes.JalviewColourScheme; |
43 |
|
import jalview.structure.AtomSpecModel; |
44 |
|
import jalview.structure.StructureCommandI; |
45 |
|
import jalview.structure.StructureCommandsI.AtomSpecType; |
46 |
|
import jalview.structure.StructureMapping; |
47 |
|
import jalview.structure.StructureSelectionManager; |
48 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (126) |
Complexity: 15 |
Complexity Density: 0.14 |
|
49 |
|
public class JmolCommandsTest |
50 |
|
{ |
51 |
|
private JmolCommands testee; |
52 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
53 |
1 |
@BeforeClass(alwaysRun = true)... |
54 |
|
public void setUp() |
55 |
|
{ |
56 |
1 |
testee = new JmolCommands(); |
57 |
|
} |
58 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (36) |
Complexity: 2 |
Complexity Density: 0.06 |
1PASS
|
|
59 |
1 |
@Test(groups = { "Functional" })... |
60 |
|
public void testGetColourBySequenceCommands_hiddenColumns() |
61 |
|
{ |
62 |
|
|
63 |
|
|
64 |
|
|
65 |
|
|
66 |
1 |
SequenceI seq1 = new Sequence("seq1", "MHRSQSSSGG"); |
67 |
1 |
SequenceI seq2 = new Sequence("seq2", "MVRSNGGSSS"); |
68 |
1 |
AlignmentI al = new Alignment(new SequenceI[] { seq1, seq2 }); |
69 |
1 |
AlignFrame af = new AlignFrame(al, 800, 500); |
70 |
1 |
af.changeColour_actionPerformed(JalviewColourScheme.Strand.toString()); |
71 |
1 |
ColumnSelection cs = new ColumnSelection(); |
72 |
1 |
cs.addElement(2); |
73 |
1 |
cs.addElement(3); |
74 |
1 |
cs.addElement(4); |
75 |
1 |
af.getViewport().setColumnSelection(cs); |
76 |
1 |
af.hideSelColumns_actionPerformed(null); |
77 |
1 |
SequenceRenderer sr = new SequenceRenderer(af.getViewport()); |
78 |
1 |
SequenceI[][] seqs = new SequenceI[][] { { seq1 }, { seq2 } }; |
79 |
1 |
String[] files = new String[] { "seq1.pdb", "seq2.pdb" }; |
80 |
1 |
StructureSelectionManager ssm = new StructureSelectionManager(); |
81 |
|
|
82 |
|
|
83 |
|
|
84 |
|
|
85 |
1 |
HashMap<Integer, int[]> map = new HashMap<>(); |
86 |
11 |
for (int pos = 1; pos <= seq1.getLength(); pos++) |
87 |
|
{ |
88 |
10 |
map.put(pos, new int[] { 20 + pos, 5 * (20 + pos) }); |
89 |
|
} |
90 |
1 |
StructureMapping sm1 = new StructureMapping(seq1, "seq1.pdb", "pdb1", |
91 |
|
"A", map, null); |
92 |
1 |
ssm.addStructureMapping(sm1); |
93 |
1 |
StructureMapping sm2 = new StructureMapping(seq2, "seq2.pdb", "pdb2", |
94 |
|
"B", map, null); |
95 |
1 |
ssm.addStructureMapping(sm2); |
96 |
|
|
97 |
1 |
String[] commands = testee.colourBySequence(ssm, files, seqs, sr, |
98 |
|
af.alignPanel); |
99 |
1 |
assertEquals(commands.length, 2); |
100 |
|
|
101 |
1 |
String chainACommand = commands[0]; |
102 |
|
|
103 |
1 |
assertTrue( |
104 |
|
chainACommand.contains("select 21:A/1.1;color[130,130,125]")); |
105 |
|
|
106 |
|
|
107 |
1 |
assertTrue(chainACommand.contains(";select 22:A/1.1;color[96,96,159]")); |
108 |
|
|
109 |
1 |
assertTrue(chainACommand |
110 |
|
.contains(";select 23-25:A/1.1;color[128,128,128]")); |
111 |
|
|
112 |
1 |
assertTrue( |
113 |
|
chainACommand.contains(";select 26-30:A/1.1;color[73,73,182]")); |
114 |
|
|
115 |
1 |
String chainBCommand = commands[1]; |
116 |
|
|
117 |
1 |
assertTrue( |
118 |
|
chainBCommand.contains("select 21:B/2.1;color[130,130,125]")); |
119 |
|
|
120 |
1 |
assertTrue(chainBCommand.contains(";select 22:B/2.1;color[255,255,0]")); |
121 |
|
|
122 |
1 |
assertTrue(chainBCommand |
123 |
|
.contains(";select 23-25:B/2.1;color[128,128,128]")); |
124 |
|
|
125 |
1 |
assertTrue( |
126 |
|
chainBCommand.contains(";select 26-30:B/2.1;color[73,73,182]")); |
127 |
|
} |
128 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (22) |
Complexity: 1 |
Complexity Density: 0.05 |
1PASS
|
|
129 |
1 |
@Test(groups = "Functional")... |
130 |
|
public void testGetAtomSpec() |
131 |
|
{ |
132 |
1 |
AtomSpecModel model = new AtomSpecModel(); |
133 |
1 |
assertEquals(testee.getAtomSpec(model, AtomSpecType.RESIDUE_ONLY), ""); |
134 |
1 |
model.addRange("1", 2, 4, "A"); |
135 |
1 |
assertEquals(testee.getAtomSpec(model, AtomSpecType.RESIDUE_ONLY), |
136 |
|
"2-4:A/1.1"); |
137 |
1 |
model.addRange("1", 8, 8, "A"); |
138 |
1 |
assertEquals(testee.getAtomSpec(model, AtomSpecType.RESIDUE_ONLY), |
139 |
|
"2-4:A/1.1|8:A/1.1"); |
140 |
1 |
model.addRange("1", 5, 7, "B"); |
141 |
1 |
assertEquals(testee.getAtomSpec(model, AtomSpecType.RESIDUE_ONLY), |
142 |
|
"2-4:A/1.1|8:A/1.1|5-7:B/1.1"); |
143 |
1 |
model.addRange("1", 3, 5, "A"); |
144 |
1 |
assertEquals(testee.getAtomSpec(model, AtomSpecType.RESIDUE_ONLY), |
145 |
|
"2-5:A/1.1|8:A/1.1|5-7:B/1.1"); |
146 |
1 |
model.addRange("2", 1, 4, "B"); |
147 |
1 |
assertEquals(testee.getAtomSpec(model, AtomSpecType.RESIDUE_ONLY), |
148 |
|
"2-5:A/1.1|8:A/1.1|5-7:B/1.1|1-4:B/2.1"); |
149 |
1 |
model.addRange("2", 5, 9, "C"); |
150 |
1 |
assertEquals(testee.getAtomSpec(model, AtomSpecType.RESIDUE_ONLY), |
151 |
|
"2-5:A/1.1|8:A/1.1|5-7:B/1.1|1-4:B/2.1|5-9:C/2.1"); |
152 |
1 |
model.addRange("1", 8, 10, "B"); |
153 |
1 |
assertEquals(testee.getAtomSpec(model, AtomSpecType.RESIDUE_ONLY), |
154 |
|
"2-5:A/1.1|8:A/1.1|5-10:B/1.1|1-4:B/2.1|5-9:C/2.1"); |
155 |
1 |
model.addRange("1", 8, 9, "B"); |
156 |
1 |
assertEquals(testee.getAtomSpec(model, AtomSpecType.RESIDUE_ONLY), |
157 |
|
"2-5:A/1.1|8:A/1.1|5-10:B/1.1|1-4:B/2.1|5-9:C/2.1"); |
158 |
1 |
model.addRange("2", 3, 10, "C"); |
159 |
1 |
assertEquals(testee.getAtomSpec(model, AtomSpecType.RESIDUE_ONLY), |
160 |
|
"2-5:A/1.1|8:A/1.1|5-10:B/1.1|1-4:B/2.1|3-10:C/2.1"); |
161 |
1 |
model.addRange("5", 25, 35, " "); |
162 |
1 |
assertEquals(testee.getAtomSpec(model, AtomSpecType.RESIDUE_ONLY), |
163 |
|
"2-5:A/1.1|8:A/1.1|5-10:B/1.1|1-4:B/2.1|3-10:C/2.1|25-35:/5.1"); |
164 |
|
|
165 |
|
} |
166 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (16) |
Complexity: 1 |
Complexity Density: 0.06 |
1PASS
|
|
167 |
1 |
@Test(groups = { "Functional" })... |
168 |
|
public void testColourBySequence() |
169 |
|
{ |
170 |
1 |
Map<Object, AtomSpecModel> map = new LinkedHashMap<>(); |
171 |
1 |
JmolCommands.addAtomSpecRange(map, Color.blue, "1", 2, 5, "A"); |
172 |
1 |
JmolCommands.addAtomSpecRange(map, Color.blue, "1", 7, 7, "B"); |
173 |
1 |
JmolCommands.addAtomSpecRange(map, Color.blue, "1", 9, 23, "A"); |
174 |
1 |
JmolCommands.addAtomSpecRange(map, Color.blue, "2", 1, 1, "A"); |
175 |
1 |
JmolCommands.addAtomSpecRange(map, Color.blue, "2", 4, 7, "B"); |
176 |
1 |
JmolCommands.addAtomSpecRange(map, Color.yellow, "2", 8, 8, "A"); |
177 |
1 |
JmolCommands.addAtomSpecRange(map, Color.yellow, "2", 3, 5, "A"); |
178 |
1 |
JmolCommands.addAtomSpecRange(map, Color.red, "1", 3, 5, "A"); |
179 |
1 |
JmolCommands.addAtomSpecRange(map, Color.red, "1", 6, 9, "A"); |
180 |
|
|
181 |
|
|
182 |
|
|
183 |
1 |
List<StructureCommandI> commands = testee.colourBySequence(map); |
184 |
1 |
assertEquals(commands.size(), 1); |
185 |
1 |
String expected1 = "select 2-5:A/1.1|9-23:A/1.1|7:B/1.1|1:A/2.1|4-7:B/2.1;color[0,0,255]"; |
186 |
1 |
String expected2 = "select 3-5:A/2.1|8:A/2.1;color[255,255,0]"; |
187 |
1 |
String expected3 = "select 3-9:A/1.1;color[255,0,0]"; |
188 |
1 |
assertEquals(commands.get(0).getCommand(), |
189 |
|
expected1 + ";" + expected2 + ";" + expected3); |
190 |
|
} |
191 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (14) |
Complexity: 1 |
Complexity Density: 0.07 |
1PASS
|
|
192 |
1 |
@Test(groups = { "Functional" })... |
193 |
|
public void testSuperposeStructures() |
194 |
|
{ |
195 |
1 |
AtomSpecModel ref = new AtomSpecModel(); |
196 |
1 |
ref.addRange("1", 12, 14, "A"); |
197 |
1 |
ref.addRange("1", 18, 18, "B"); |
198 |
1 |
ref.addRange("1", 22, 23, "B"); |
199 |
1 |
AtomSpecModel toAlign = new AtomSpecModel(); |
200 |
1 |
toAlign.addRange("2", 15, 17, "B"); |
201 |
1 |
toAlign.addRange("2", 20, 21, "B"); |
202 |
1 |
toAlign.addRange("2", 22, 22, "C"); |
203 |
1 |
List<StructureCommandI> command = testee.superposeStructures(ref, |
204 |
|
toAlign, AtomSpecType.ALPHA); |
205 |
|
|
206 |
1 |
assertEquals(command.size(), 1); |
207 |
1 |
String refSpec = "12-14:A/1.1|18:B/1.1|22-23:B/1.1"; |
208 |
1 |
String toAlignSpec = "15-17:B/2.1|20-21:B/2.1|22:C/2.1"; |
209 |
1 |
String expected = String.format( |
210 |
|
"compare {2.1} {1.1} SUBSET {(*.CA | *.P) and conformation=1} ATOMS {%s}{%s} ROTATE TRANSLATE ;select %s|%s;cartoons", |
211 |
|
toAlignSpec, refSpec, toAlignSpec, refSpec); |
212 |
1 |
assertEquals(command.get(0).getCommand(), expected); |
213 |
|
} |
214 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
1PASS
|
|
215 |
1 |
@Test(groups = "Functional")... |
216 |
|
public void testGetModelStartNo() |
217 |
|
{ |
218 |
1 |
assertEquals(testee.getModelStartNo(), 1); |
219 |
|
} |
220 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (2) |
Complexity: 1 |
Complexity Density: 0.5 |
1PASS
|
|
221 |
1 |
@Test(groups = "Functional")... |
222 |
|
public void testColourByChain() |
223 |
|
{ |
224 |
1 |
StructureCommandI cmd = testee.colourByChain(); |
225 |
1 |
assertEquals(cmd.getCommand(), "select *;color chain"); |
226 |
|
} |
227 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (3) |
Complexity: 1 |
Complexity Density: 0.33 |
1PASS
|
|
228 |
1 |
@Test(groups = "Functional")... |
229 |
|
public void testColourByCharge() |
230 |
|
{ |
231 |
1 |
List<StructureCommandI> cmds = testee.colourByCharge(); |
232 |
1 |
assertEquals(cmds.size(), 1); |
233 |
1 |
assertEquals(cmds.get(0).getCommand(), |
234 |
|
"select *;color white;select ASP,GLU;color red;" |
235 |
|
+ "select LYS,ARG;color blue;select CYS;color yellow"); |
236 |
|
} |
237 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (2) |
Complexity: 1 |
Complexity Density: 0.5 |
1PASS
|
|
238 |
1 |
@Test(groups = "Functional")... |
239 |
|
public void testSetBackgroundColour() |
240 |
|
{ |
241 |
1 |
StructureCommandI cmd = testee.setBackgroundColour(Color.PINK); |
242 |
1 |
assertEquals(cmd.getCommand(), "background [255,175,175]"); |
243 |
|
} |
244 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (2) |
Complexity: 1 |
Complexity Density: 0.5 |
1PASS
|
|
245 |
1 |
@Test(groups = "Functional")... |
246 |
|
public void testFocusView() |
247 |
|
{ |
248 |
1 |
StructureCommandI cmd = testee.focusView(); |
249 |
1 |
assertEquals(cmd.getCommand(), "zoom 0"); |
250 |
|
} |
251 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (2) |
Complexity: 1 |
Complexity Density: 0.5 |
1PASS
|
|
252 |
1 |
@Test(groups = "Functional")... |
253 |
|
public void testSaveSession() |
254 |
|
{ |
255 |
1 |
StructureCommandI cmd = testee.saveSession("/some/filepath"); |
256 |
1 |
assertEquals(cmd.getCommand(), "write STATE \"/some/filepath\""); |
257 |
|
} |
258 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (3) |
Complexity: 1 |
Complexity Density: 0.33 |
1PASS
|
|
259 |
1 |
@Test(groups = "Functional")... |
260 |
|
public void testShowBackbone() |
261 |
|
{ |
262 |
1 |
List<StructureCommandI> cmds = testee.showBackbone(); |
263 |
1 |
assertEquals(cmds.size(), 1); |
264 |
1 |
assertEquals(cmds.get(0).getCommand(), |
265 |
|
"select *; cartoons off; backbone"); |
266 |
|
} |
267 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (4) |
Complexity: 1 |
Complexity Density: 0.25 |
1PASS
|
|
268 |
1 |
@Test(groups = "Functional")... |
269 |
|
public void testLoadFile() |
270 |
|
{ |
271 |
1 |
StructureCommandI cmd = testee.loadFile("/some/filepath"); |
272 |
1 |
assertEquals(cmd.getCommand(), "load FILES \"/some/filepath\""); |
273 |
|
|
274 |
|
|
275 |
1 |
cmd = testee.loadFile("\\some\\filepath"); |
276 |
1 |
assertEquals(cmd.getCommand(), "load FILES \"\\\\some\\\\filepath\""); |
277 |
|
} |
278 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (4) |
Complexity: 1 |
Complexity Density: 0.25 |
1PASS
|
|
279 |
1 |
@Test(groups = "Functional")... |
280 |
|
public void testOpenSession() |
281 |
|
{ |
282 |
1 |
StructureCommandI cmd = testee.openSession("/some/filepath"); |
283 |
1 |
assertEquals(cmd.getCommand(), "load FILES \"/some/filepath\""); |
284 |
|
|
285 |
|
|
286 |
1 |
cmd = testee.openSession("\\some\\filepath"); |
287 |
1 |
assertEquals(cmd.getCommand(), "load FILES \"\\\\some\\\\filepath\""); |
288 |
|
} |
289 |
|
} |