testee = new JmolCommands();
}
- @Test(groups = { "Functional" })
+ /**
+ * Test for the now deprecated version of getColourBySequenceCommand
+ */
+ @Test(groups = { "Functional" }, enabled = false)
public void testGetColourBySequenceCommands_hiddenColumns()
{
/*
"B", map, null);
ssm.addStructureMapping(sm2);
- String[] commands = testee.colourBySequence(ssm,
- files,
- seqs, sr, af.alignPanel);
+ String[] commands = testee.colourBySequence(ssm, files, seqs,
+ sr,
+ af.alignPanel);
assertEquals(commands.length, 2);
String chainACommand = commands[0];
// M colour is #82827d == (130, 130, 125) (see strand.html help page)
assertTrue(
- chainACommand.contains("select 21:A/1.1;color[130,130,125]")); // first
- // one
+ chainACommand.contains("select 21:A/1.1;color[130,130,125]")); // first one
// H colour is #60609f == (96, 96, 159)
assertTrue(chainACommand.contains(";select 22:A/1.1;color[96,96,159]"));
// hidden columns are Gray (128, 128, 128)
chainBCommand.contains(";select 26-30:B/2.1;color[73,73,182]"));
}
- @Test(groups = "Functional")
+ @Test(groups = { "Functional" })
public void testGetAtomSpec()
{
AtomSpecModel model = new AtomSpecModel();
assertEquals(testee.getAtomSpec(model, false), "");
- model.addRange("1", 2, 4, "A");
- assertEquals(testee.getAtomSpec(model, false), "2-4:A/1.1");
- model.addRange("1", 8, 8, "A");
- assertEquals(testee.getAtomSpec(model, false), "2-4:A/1.1|8:A/1.1");
- model.addRange("1", 5, 7, "B");
- assertEquals(testee.getAtomSpec(model, false),
- "2-4:A/1.1|8:A/1.1|5-7:B/1.1");
- model.addRange("1", 3, 5, "A");
- assertEquals(testee.getAtomSpec(model, false),
- "2-5:A/1.1|8:A/1.1|5-7:B/1.1");
- model.addRange("2", 1, 4, "B");
- assertEquals(testee.getAtomSpec(model, false),
- "2-5:A/1.1|8:A/1.1|5-7:B/1.1|1-4:B/2.1");
- model.addRange("2", 5, 9, "C");
- assertEquals(testee.getAtomSpec(model, false),
- "2-5:A/1.1|8:A/1.1|5-7:B/1.1|1-4:B/2.1|5-9:C/2.1");
- model.addRange("1", 8, 10, "B");
- assertEquals(testee.getAtomSpec(model, false),
- "2-5:A/1.1|8:A/1.1|5-10:B/1.1|1-4:B/2.1|5-9:C/2.1");
- model.addRange("1", 8, 9, "B");
- assertEquals(testee.getAtomSpec(model, false),
- "2-5:A/1.1|8:A/1.1|5-10:B/1.1|1-4:B/2.1|5-9:C/2.1");
- model.addRange("2", 3, 10, "C"); // subsumes 5-9
- assertEquals(testee.getAtomSpec(model, false),
- "2-5:A/1.1|8:A/1.1|5-10:B/1.1|1-4:B/2.1|3-10:C/2.1");
- model.addRange("5", 25, 35, " ");
- assertEquals(testee.getAtomSpec(model, false),
- "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");
+ /*
+ * Jalview numbers models from 0, Jmol from 1
+ */
+ model.addRange("2", 2, 4, "A");
+ assertEquals(testee.getAtomSpec(model, false), "2-4:A/2.1");
+
+ model.addRange("2", 8, 8, "A");
+ assertEquals(testee.getAtomSpec(model, false), "(2-4,8)&:A/2.1");
+
+ model.addRange("2", 5, 7, "B");
+ assertEquals(testee.getAtomSpec(model,
+ false),
+ "(2-4,8)&:A/2.1,5-7:B/2.1");
+
+ model.addRange("2", 3, 5, "A");
+ // 3-5 merges with 2-4 to make 2-5:
+ assertEquals(testee.getAtomSpec(model,
+ false),
+ "(2-5,8)&:A/2.1,5-7:B/2.1");
+
+ model.addRange("1", 1, 4, "B");
+ assertEquals(testee.getAtomSpec(model,
+ false),
+ "1-4:B/1.1,(2-5,8)&:A/2.1,5-7:B/2.1");
+
+ model.addRange("1", 5, 9, "C");
+ assertEquals(testee.getAtomSpec(model,
+ false),
+ "1-4:B/1.1,5-9:C/1.1,(2-5,8)&:A/2.1,5-7:B/2.1");
+
+ model.addRange("2", 8, 10, "B");
+ // 8-10 extends 5-7 to make 5-10
+ assertEquals(testee.getAtomSpec(model,
+ false),
+ "1-4:B/1.1,5-9:C/1.1,(2-5,8)&:A/2.1,5-10:B/2.1");
+
+ model.addRange("2", 8, 9, "B");
+ // subsumed by 5-10 so makes no difference
+ assertEquals(testee.getAtomSpec(model,
+ false),
+ "1-4:B/1.1,5-9:C/1.1,(2-5,8)&:A/2.1,5-10:B/2.1");
+
+ model.addRange("1", 3, 10, "C");
+ // subsumes 5-9 so replaces it
+ assertEquals(testee.getAtomSpec(model,
+ false),
+ "1-4:B/1.1,3-10:C/1.1,(2-5,8)&:A/2.1,5-10:B/2.1");
+
+ // empty chain code - e.g. from homology modelling
+ model.addRange("6", 25, 35, " ");
+ assertEquals(testee.getAtomSpec(model,
+ false),
+ "1-4:B/1.1,3-10:C/1.1,(2-5,8)&:A/2.1,5-10:B/2.1,25-35:/6.1");
}
@Test(groups = { "Functional" })
// they were added; within colour, by model, by chain, ranges in start order
List<StructureCommandI> commands = testee.colourBySequence(map);
assertEquals(commands.size(), 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]";
- String expected2 = "select 3-5:A/2.1|8:A/2.1;color[255,255,0]";
+ String expected1 = "select (2-5,9-23)&:A/1.1,7:B/1.1,1:A/2.1,4-7:B/2.1;color[0,0,255]";
+ String expected2 = "select (3-5,8)&:A/2.1;color[255,255,0]";
String expected3 = "select 3-9:A/1.1;color[255,0,0]";
assertEquals(commands.get(0).getCommand(),
expected1 + ";" + expected2 + ";" + expected3);
List<StructureCommandI> command = testee.superposeStructures(ref,
toAlign);
assertEquals(command.size(), 1);
- String refSpec = "12-14:A/1.1|18:B/1.1|22-23:B/1.1";
- String toAlignSpec = "15-17:B/2.1|20-21:B/2.1|22:C/2.1";
+ String refSpec = "12-14:A/1.1,(18,22-23)&:B/1.1";
+ String toAlignSpec = "(15-17,20-21)&:B/2.1,22:C/2.1";
String expected = String.format(
"compare {2.1} {1.1} SUBSET {(*.CA | *.P) and conformation=1} ATOMS {%s}{%s} ROTATE TRANSLATE ;select %s|%s;cartoons",
toAlignSpec, refSpec, toAlignSpec, refSpec);