1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
|
|
6 |
|
|
7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
12 |
|
|
13 |
|
|
14 |
|
|
15 |
|
|
16 |
|
|
17 |
|
|
18 |
|
|
19 |
|
|
20 |
|
|
21 |
|
package jalview.ext.pymol; |
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.ext.rbvi.chimera.ChimeraCommands; |
36 |
|
import jalview.structure.AtomSpecModel; |
37 |
|
import jalview.structure.StructureCommand; |
38 |
|
import jalview.structure.StructureCommandI; |
39 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (154) |
Complexity: 19 |
Complexity Density: 0.14 |
|
40 |
|
public class PymolCommandsTest |
41 |
|
{ |
42 |
|
private PymolCommands testee; |
43 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
44 |
1 |
@BeforeClass(alwaysRun = true)... |
45 |
|
public void setUp() |
46 |
|
{ |
47 |
1 |
testee = new PymolCommands(); |
48 |
|
} |
49 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (15) |
Complexity: 1 |
Complexity Density: 0.07 |
1PASS
|
|
50 |
1 |
@Test(groups = { "Functional" })... |
51 |
|
public void testColourBySequence() |
52 |
|
{ |
53 |
|
|
54 |
1 |
Map<Object, AtomSpecModel> map = new LinkedHashMap<>(); |
55 |
1 |
PymolCommands.addAtomSpecRange(map, Color.blue, "0", 2, 5, "A"); |
56 |
1 |
PymolCommands.addAtomSpecRange(map, Color.blue, "0", 7, 7, "B"); |
57 |
1 |
PymolCommands.addAtomSpecRange(map, Color.blue, "0", 9, 23, "A"); |
58 |
1 |
PymolCommands.addAtomSpecRange(map, Color.blue, "1", 1, 1, "A"); |
59 |
1 |
PymolCommands.addAtomSpecRange(map, Color.blue, "1", 4, 7, "B"); |
60 |
1 |
PymolCommands.addAtomSpecRange(map, Color.yellow, "1", 8, 8, "A"); |
61 |
1 |
PymolCommands.addAtomSpecRange(map, Color.yellow, "1", 3, 5, "A"); |
62 |
1 |
PymolCommands.addAtomSpecRange(map, Color.red, "0", 3, 5, "A"); |
63 |
1 |
PymolCommands.addAtomSpecRange(map, Color.red, "0", 6, 9, "A"); |
64 |
|
|
65 |
|
|
66 |
|
|
67 |
1 |
List<StructureCommandI> commands = testee.colourBySequence(map); |
68 |
1 |
assertEquals(commands.size(), 3); |
69 |
1 |
assertEquals(commands.get(0), new StructureCommand("color", "0x0000ff", |
70 |
|
"0//A/2-5+9-23/ 0//B/7/ 1//A/1/ 1//B/4-7/")); |
71 |
1 |
assertEquals(commands.get( |
72 |
|
1), |
73 |
|
new StructureCommand("color", "0xffff00", "1//A/3-5+8/")); |
74 |
1 |
assertEquals(commands.get( |
75 |
|
2), |
76 |
|
new StructureCommand("color", "0xff0000", "0//A/3-9/")); |
77 |
|
} |
78 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (22) |
Complexity: 1 |
Complexity Density: 0.05 |
1PASS
|
|
79 |
1 |
@Test(groups = "Functional")... |
80 |
|
public void testGetAtomSpec() |
81 |
|
{ |
82 |
1 |
AtomSpecModel model = new AtomSpecModel(); |
83 |
1 |
assertEquals(testee.getAtomSpec(model, false), ""); |
84 |
1 |
model.addRange("1", 2, 4, "A"); |
85 |
1 |
assertEquals(testee.getAtomSpec(model, false), "1//A/2-4/"); |
86 |
1 |
model.addRange("1", 8, 8, "A"); |
87 |
1 |
assertEquals(testee.getAtomSpec(model, false), "1//A/2-4+8/"); |
88 |
1 |
model.addRange("1", 5, 7, "B"); |
89 |
1 |
assertEquals(testee.getAtomSpec(model, false), "1//A/2-4+8/ 1//B/5-7/"); |
90 |
1 |
model.addRange("1", 3, 5, "A"); |
91 |
1 |
assertEquals(testee.getAtomSpec(model, false), "1//A/2-5+8/ 1//B/5-7/"); |
92 |
1 |
model.addRange("0", 1, 4, "B"); |
93 |
1 |
assertEquals(testee.getAtomSpec(model, false), |
94 |
|
"0//B/1-4/ 1//A/2-5+8/ 1//B/5-7/"); |
95 |
1 |
model.addRange("0", 5, 9, "C"); |
96 |
1 |
assertEquals(testee.getAtomSpec(model, false), |
97 |
|
"0//B/1-4/ 0//C/5-9/ 1//A/2-5+8/ 1//B/5-7/"); |
98 |
1 |
model.addRange("1", 8, 10, "B"); |
99 |
1 |
assertEquals(testee.getAtomSpec(model, false), |
100 |
|
"0//B/1-4/ 0//C/5-9/ 1//A/2-5+8/ 1//B/5-10/"); |
101 |
1 |
model.addRange("1", 8, 9, "B"); |
102 |
1 |
assertEquals(testee.getAtomSpec(model, false), |
103 |
|
"0//B/1-4/ 0//C/5-9/ 1//A/2-5+8/ 1//B/5-10/"); |
104 |
1 |
model.addRange("0", 3, 10, "C"); |
105 |
1 |
assertEquals(testee.getAtomSpec(model, false), |
106 |
|
"0//B/1-4/ 0//C/3-10/ 1//A/2-5+8/ 1//B/5-10/"); |
107 |
1 |
model.addRange("5", 25, 35, " "); |
108 |
1 |
assertEquals(testee.getAtomSpec(model, false), |
109 |
|
"0//B/1-4/ 0//C/3-10/ 1//A/2-5+8/ 1//B/5-10/ 5///25-35/"); |
110 |
|
|
111 |
|
} |
112 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (16) |
Complexity: 1 |
Complexity Density: 0.06 |
1PASS
|
|
113 |
1 |
@Test(groups = { "Functional" })... |
114 |
|
public void testSuperposeStructures() |
115 |
|
{ |
116 |
1 |
AtomSpecModel ref = new AtomSpecModel(); |
117 |
1 |
ref.addRange("1", 12, 14, "A"); |
118 |
1 |
ref.addRange("1", 18, 18, "B"); |
119 |
1 |
ref.addRange("1", 22, 23, "B"); |
120 |
1 |
AtomSpecModel toAlign = new AtomSpecModel(); |
121 |
1 |
toAlign.addRange("2", 15, 17, "B"); |
122 |
1 |
toAlign.addRange("2", 20, 21, "B"); |
123 |
1 |
toAlign.addRange("2", 22, 22, "C"); |
124 |
1 |
List<StructureCommandI> commands = testee.superposeStructures(ref, |
125 |
|
toAlign); |
126 |
1 |
assertEquals(commands.size(), 2); |
127 |
1 |
String refSpecCA = "1//A/12-14/CA 1//B/18+22-23/CA"; |
128 |
1 |
String toAlignSpecCA = "2//B/15-17+20-21/CA 2//C/22/CA"; |
129 |
1 |
String refSpec = "1//A/12-14/ 1//B/18+22-23/"; |
130 |
1 |
String toAlignSpec = "2//B/15-17+20-21/ 2//C/22/"; |
131 |
|
|
132 |
|
|
133 |
1 |
assertEquals(commands.get(0), |
134 |
|
new StructureCommand("super", refSpecCA, toAlignSpecCA)); |
135 |
|
|
136 |
1 |
assertEquals(commands.get(1), new StructureCommand("show", "cartoon", |
137 |
|
refSpec + " " + toAlignSpec)); |
138 |
|
} |
139 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (22) |
Complexity: 1 |
Complexity Density: 0.05 |
1PASS
|
|
140 |
1 |
@Test(groups = "Functional")... |
141 |
|
public void testGetAtomSpec_alphaOnly() |
142 |
|
{ |
143 |
1 |
AtomSpecModel model = new AtomSpecModel(); |
144 |
1 |
assertEquals(testee.getAtomSpec(model, true), ""); |
145 |
1 |
model.addRange("1", 2, 4, "A"); |
146 |
1 |
assertEquals(testee.getAtomSpec(model, true), "1//A/2-4/CA"); |
147 |
1 |
model.addRange("1", 8, 8, "A"); |
148 |
1 |
assertEquals(testee.getAtomSpec(model, true), "1//A/2-4+8/CA"); |
149 |
1 |
model.addRange("1", 5, 7, "B"); |
150 |
1 |
assertEquals(testee.getAtomSpec(model, true), |
151 |
|
"1//A/2-4+8/CA 1//B/5-7/CA"); |
152 |
1 |
model.addRange("1", 3, 5, "A"); |
153 |
1 |
assertEquals(testee.getAtomSpec(model, true), |
154 |
|
"1//A/2-5+8/CA 1//B/5-7/CA"); |
155 |
1 |
model.addRange("0", 1, 4, "B"); |
156 |
1 |
assertEquals(testee.getAtomSpec(model, true), |
157 |
|
"0//B/1-4/CA 1//A/2-5+8/CA 1//B/5-7/CA"); |
158 |
1 |
model.addRange("0", 5, 9, "C"); |
159 |
1 |
assertEquals(testee.getAtomSpec(model, true), |
160 |
|
"0//B/1-4/CA 0//C/5-9/CA 1//A/2-5+8/CA 1//B/5-7/CA"); |
161 |
1 |
model.addRange("1", 8, 10, "B"); |
162 |
1 |
assertEquals(testee.getAtomSpec(model, true), |
163 |
|
"0//B/1-4/CA 0//C/5-9/CA 1//A/2-5+8/CA 1//B/5-10/CA"); |
164 |
1 |
model.addRange("1", 8, 9, "B"); |
165 |
1 |
assertEquals(testee.getAtomSpec(model, true), |
166 |
|
"0//B/1-4/CA 0//C/5-9/CA 1//A/2-5+8/CA 1//B/5-10/CA"); |
167 |
1 |
model.addRange("0", 3, 10, "C"); |
168 |
1 |
assertEquals(testee.getAtomSpec(model, true), |
169 |
|
"0//B/1-4/CA 0//C/3-10/CA 1//A/2-5+8/CA 1//B/5-10/CA"); |
170 |
1 |
model.addRange("5", 25, 35, " "); |
171 |
1 |
assertEquals(testee.getAtomSpec(model, true), |
172 |
|
"0//B/1-4/CA 0//C/3-10/CA 1//A/2-5+8/CA 1//B/5-10/CA 5///25-35/CA"); |
173 |
|
} |
174 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
1PASS
|
|
175 |
1 |
@Test(groups = "Functional")... |
176 |
|
public void testGetModelStartNo() |
177 |
|
{ |
178 |
1 |
assertEquals(testee.getModelStartNo(), 0); |
179 |
|
} |
180 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
1PASS
|
|
181 |
1 |
@Test(groups = "Functional")... |
182 |
|
public void testGetResidueSpec() |
183 |
|
{ |
184 |
1 |
assertEquals(testee.getResidueSpec("ALA"), "resn ALA"); |
185 |
|
} |
186 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (4) |
Complexity: 1 |
Complexity Density: 0.25 |
1PASS
|
|
187 |
1 |
@Test(groups = "Functional")... |
188 |
|
public void testShowBackbone() |
189 |
|
{ |
190 |
1 |
List<StructureCommandI> cmds = testee.showBackbone(); |
191 |
1 |
assertEquals(cmds.size(), 2); |
192 |
1 |
assertEquals(cmds.get(0), new StructureCommand("hide", "everything")); |
193 |
1 |
assertEquals(cmds.get(1), new StructureCommand("show", "ribbon")); |
194 |
|
} |
195 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (6) |
Complexity: 1 |
Complexity Density: 0.17 |
1PASS
|
|
196 |
1 |
@Test(groups = "Functional")... |
197 |
|
public void testColourByCharge() |
198 |
|
{ |
199 |
1 |
List<StructureCommandI> cmds = testee.colourByCharge(); |
200 |
1 |
assertEquals(cmds.size(), 4); |
201 |
1 |
assertEquals(cmds.get(0), new StructureCommand("color", "white", "*")); |
202 |
1 |
assertEquals(cmds.get(1), |
203 |
|
new StructureCommand("color", "red", "resn ASP resn GLU")); |
204 |
1 |
assertEquals(cmds.get(2), |
205 |
|
new StructureCommand("color", "blue", "resn LYS resn ARG")); |
206 |
1 |
assertEquals(cmds.get(3), |
207 |
|
new StructureCommand("color", "yellow", "resn CYS")); |
208 |
|
} |
209 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
1PASS
|
|
210 |
1 |
@Test(groups = "Functional")... |
211 |
|
public void testOpenCommandFile() |
212 |
|
{ |
213 |
1 |
assertEquals(testee.openCommandFile("commands.pml"), |
214 |
|
new StructureCommand("run", "commands.pml")); |
215 |
|
} |
216 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
1PASS
|
|
217 |
1 |
@Test(groups = "Functional")... |
218 |
|
public void testSaveSession() |
219 |
|
{ |
220 |
1 |
assertEquals(testee.saveSession("somewhere.pse"), |
221 |
|
new StructureCommand("save", "somewhere.pse")); |
222 |
|
} |
223 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
1PASS
|
|
224 |
1 |
@Test(groups = "Functional")... |
225 |
|
public void testOpenSession() |
226 |
|
{ |
227 |
1 |
assertEquals(testee.openSession("/some/path"), |
228 |
|
new StructureCommand("load", "/some/path", "", "0", "pse")); |
229 |
|
} |
230 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
1PASS
|
|
231 |
1 |
@Test(groups = "Functional")... |
232 |
|
public void testColourByChain() |
233 |
|
{ |
234 |
1 |
assertEquals(testee.colourByChain(), |
235 |
|
new StructureCommand("spectrum", "chain")); |
236 |
|
} |
237 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
1PASS
|
|
238 |
1 |
@Test(groups = "Functional")... |
239 |
|
public void testColourResidues() |
240 |
|
{ |
241 |
1 |
assertEquals(testee.colourResidues("something", |
242 |
|
Color.MAGENTA), |
243 |
|
new StructureCommand("color", "0xff00ff", "something")); |
244 |
|
} |
245 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
1PASS
|
|
246 |
1 |
@Test(groups = "Functional")... |
247 |
|
public void testLoadFile() |
248 |
|
{ |
249 |
1 |
assertEquals(testee.loadFile("/some/path"), |
250 |
|
new StructureCommand("load", "/some/path")); |
251 |
|
} |
252 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
1PASS
|
|
253 |
1 |
@Test(groups = "Functional")... |
254 |
|
public void testSetBackgroundColour() |
255 |
|
{ |
256 |
1 |
assertEquals(testee.setBackgroundColour( |
257 |
|
Color.PINK), |
258 |
|
new StructureCommand("bg_color", "0xffafaf")); |
259 |
|
} |
260 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (5) |
Complexity: 1 |
Complexity Density: 0.2 |
1PASS
|
|
261 |
1 |
@Test(groups = "Functional")... |
262 |
|
public void testSetAttribute() |
263 |
|
{ |
264 |
1 |
AtomSpecModel model = new AtomSpecModel(); |
265 |
1 |
model.addRange("1", 89, 92, "A"); |
266 |
1 |
model.addRange("2", 12, 20, "B"); |
267 |
1 |
model.addRange("2", 8, 9, "B"); |
268 |
1 |
assertEquals(testee.setAttribute("jv_kd", "27.3", model), |
269 |
|
new StructureCommand("iterate", "1//A/89-92/ 2//B/8-9+12-20/", |
270 |
|
"p.jv_kd='27.3'")); |
271 |
|
} |
272 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (34) |
Complexity: 1 |
Complexity Density: 0.03 |
1PASS
|
|
273 |
1 |
@Test(groups = { "Functional" })... |
274 |
|
public void testSetAttributes() |
275 |
|
{ |
276 |
|
|
277 |
|
|
278 |
|
|
279 |
1 |
Map<String, Map<Object, AtomSpecModel>> featuresMap = new LinkedHashMap<>(); |
280 |
1 |
Map<Object, AtomSpecModel> featureValues = new HashMap<>(); |
281 |
|
|
282 |
|
|
283 |
|
|
284 |
|
|
285 |
1 |
featuresMap.put("chain", featureValues); |
286 |
1 |
ChimeraCommands.addAtomSpecRange(featureValues, "X", "0", 8, 20, "A"); |
287 |
|
|
288 |
1 |
List<StructureCommandI> commands = testee.setAttributes(featuresMap); |
289 |
1 |
assertEquals(commands.size(), 1); |
290 |
|
|
291 |
|
|
292 |
|
|
293 |
|
|
294 |
1 |
assertEquals(commands.get(0), new StructureCommand("iterate", |
295 |
|
"0//A/8-20/", "p.jv_chain='X'")); |
296 |
|
|
297 |
|
|
298 |
1 |
ChimeraCommands.addAtomSpecRange(featureValues, "X", "0", 3, 9, "A"); |
299 |
|
|
300 |
1 |
ChimeraCommands.addAtomSpecRange(featureValues, "X", "0", 21, 25, "A"); |
301 |
1 |
commands = testee.setAttributes(featuresMap); |
302 |
1 |
assertEquals(commands.size(), 1); |
303 |
1 |
assertEquals(commands.get(0), new StructureCommand("iterate", |
304 |
|
"0//A/3-25/", "p.jv_chain='X'")); |
305 |
|
|
306 |
|
|
307 |
1 |
ChimeraCommands.addAtomSpecRange(featureValues, "X", "0", 21, 25, "B"); |
308 |
|
|
309 |
1 |
ChimeraCommands.addAtomSpecRange(featureValues, "X", "1", 26, 30, "A"); |
310 |
1 |
commands = testee.setAttributes(featuresMap); |
311 |
1 |
assertEquals(commands.size(), 1); |
312 |
1 |
StructureCommand expected1 = new StructureCommand("iterate", |
313 |
|
"0//A/3-25/ 0//B/21-25/ 1//A/26-30/", "p.jv_chain='X'"); |
314 |
1 |
assertEquals(commands.get(0), expected1); |
315 |
|
|
316 |
|
|
317 |
1 |
ChimeraCommands.addAtomSpecRange(featureValues, "Y", "0", 40, 50, "A"); |
318 |
1 |
commands = testee.setAttributes(featuresMap); |
319 |
1 |
assertEquals(2, commands.size()); |
320 |
|
|
321 |
|
|
322 |
1 |
StructureCommandI cmd1 = commands.get(0); |
323 |
1 |
StructureCommandI cmd2 = commands.get(1); |
324 |
1 |
StructureCommand expected2 = new StructureCommand("iterate", |
325 |
|
"0//A/40-50/", "p.jv_chain='Y'"); |
326 |
1 |
assertTrue(cmd1.equals(expected1) || cmd2.equals(expected1)); |
327 |
|
|
328 |
1 |
assertTrue(cmd1.equals(expected2) || cmd2.equals(expected2)); |
329 |
|
|
330 |
1 |
featuresMap.clear(); |
331 |
1 |
featureValues.clear(); |
332 |
1 |
featuresMap.put("side-chain binding!", featureValues); |
333 |
1 |
ChimeraCommands.addAtomSpecRange(featureValues, |
334 |
|
"<html>metal <a href=\"http:a.b.c/x\"> 'ion!", "0", 7, 15, "A"); |
335 |
|
|
336 |
|
|
337 |
1 |
commands = testee.setAttributes(featuresMap); |
338 |
1 |
assertEquals(commands.size(), 1); |
339 |
1 |
StructureCommandI expected3 = new StructureCommand("iterate", |
340 |
|
"0//A/7-15/", |
341 |
|
"p.jv_side_chain_binding_='<html>metal <a href=\"http:a.b.c/x\"> 'ion!'"); |
342 |
1 |
assertEquals(commands.get(0), expected3); |
343 |
|
} |
344 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
1PASS
|
|
345 |
1 |
@Test(groups = "Functional")... |
346 |
|
public void testCloseViewer() |
347 |
|
{ |
348 |
1 |
assertEquals(testee.closeViewer(), new StructureCommand("quit")); |
349 |
|
} |
350 |
|
} |