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