X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fext%2Frbvi%2Fchimera%2FChimeraCommandsTest.java;fp=test%2Fjalview%2Fext%2Frbvi%2Fchimera%2FChimeraCommandsTest.java;h=d0e6155e13da809b29aa6f344b80577611a155a9;hb=9c1a9d682a2664d525bfd0f38bae861292dc3921;hp=0679098db068e0068da17683a417fa40b49f2ae1;hpb=6cb920bb7a7f285a165cd34b3429dabba71f7518;p=jalview.git diff --git a/test/jalview/ext/rbvi/chimera/ChimeraCommandsTest.java b/test/jalview/ext/rbvi/chimera/ChimeraCommandsTest.java index 0679098..d0e6155 100644 --- a/test/jalview/ext/rbvi/chimera/ChimeraCommandsTest.java +++ b/test/jalview/ext/rbvi/chimera/ChimeraCommandsTest.java @@ -31,6 +31,8 @@ import jalview.datamodel.SequenceI; import jalview.gui.AlignFrame; import jalview.gui.SequenceRenderer; import jalview.schemes.JalviewColourScheme; +import jalview.structure.AtomSpecModel; +import jalview.structure.StructureCommandsI; import jalview.structure.StructureMapping; import jalview.structure.StructureSelectionManager; @@ -209,4 +211,98 @@ public class ChimeraCommandsTest // S and G are both coloured #4949b6 assertTrue(theCommand.contains("color #4949b6 #0:26-30.A|#1:26-30.B")); } + + @Test(groups = "Functional") + public void testGetAtomSpec() + { + StructureCommandsI testee = new ChimeraCommands(); + AtomSpecModel model = new AtomSpecModel(); + assertEquals(testee.getAtomSpec(model, false), ""); + model.addRange(1, 2, 4, "A"); + assertEquals(testee.getAtomSpec(model, false), "#1:2-4.A"); + model.addRange(1, 8, 8, "A"); + assertEquals(testee.getAtomSpec(model, false), "#1:2-4.A,8.A"); + model.addRange(1, 5, 7, "B"); + assertEquals(testee.getAtomSpec(model, false), "#1:2-4.A,8.A,5-7.B"); + model.addRange(1, 3, 5, "A"); + assertEquals(testee.getAtomSpec(model, false), "#1:2-5.A,8.A,5-7.B"); + model.addRange(0, 1, 4, "B"); + assertEquals(testee.getAtomSpec(model, false), + "#0:1-4.B|#1:2-5.A,8.A,5-7.B"); + model.addRange(0, 5, 9, "C"); + assertEquals(testee.getAtomSpec(model, false), + "#0:1-4.B,5-9.C|#1:2-5.A,8.A,5-7.B"); + model.addRange(1, 8, 10, "B"); + assertEquals(testee.getAtomSpec(model, false), + "#0:1-4.B,5-9.C|#1:2-5.A,8.A,5-10.B"); + model.addRange(1, 8, 9, "B"); + assertEquals(testee.getAtomSpec(model, false), + "#0:1-4.B,5-9.C|#1:2-5.A,8.A,5-10.B"); + model.addRange(0, 3, 10, "C"); // subsumes 5-9 + assertEquals(testee.getAtomSpec(model, false), + "#0:1-4.B,3-10.C|#1:2-5.A,8.A,5-10.B"); + model.addRange(5, 25, 35, " "); // empty chain code - e.g. from homology + // modelling + assertEquals(testee.getAtomSpec(model, false), + "#0:1-4.B,3-10.C|#1:2-5.A,8.A,5-10.B|#5:25-35."); + + } + + @Test(groups = "Functional") + public void testGetAtomSpec_alphaOnly() + { + StructureCommandsI testee = new ChimeraCommands(); + AtomSpecModel model = new AtomSpecModel(); + assertEquals(testee.getAtomSpec(model, true), ""); + model.addRange(1, 2, 4, "A"); + assertEquals(testee.getAtomSpec(model, true), "#1:2-4.A@CA|P"); + model.addRange(1, 8, 8, "A"); + assertEquals(testee.getAtomSpec(model, true), "#1:2-4.A,8.A@CA|P"); + model.addRange(1, 5, 7, "B"); + assertEquals(testee.getAtomSpec(model, true), + "#1:2-4.A,8.A,5-7.B@CA|P"); + model.addRange(1, 3, 5, "A"); + assertEquals(testee.getAtomSpec(model, true), + "#1:2-5.A,8.A,5-7.B@CA|P"); + model.addRange(0, 1, 4, "B"); + assertEquals(testee.getAtomSpec(model, true), + "#0:1-4.B@CA|P|#1:2-5.A,8.A,5-7.B@CA|P"); + model.addRange(0, 5, 9, "C"); + assertEquals(testee.getAtomSpec(model, true), + "#0:1-4.B,5-9.C@CA|P|#1:2-5.A,8.A,5-7.B@CA|P"); + model.addRange(1, 8, 10, "B"); + assertEquals(testee.getAtomSpec(model, true), + "#0:1-4.B,5-9.C@CA|P|#1:2-5.A,8.A,5-10.B@CA|P"); + model.addRange(1, 8, 9, "B"); + assertEquals(testee.getAtomSpec(model, true), + "#0:1-4.B,5-9.C@CA|P|#1:2-5.A,8.A,5-10.B@CA|P"); + model.addRange(0, 3, 10, "C"); // subsumes 5-9 + assertEquals(testee.getAtomSpec(model, true), + "#0:1-4.B,3-10.C@CA|P|#1:2-5.A,8.A,5-10.B@CA|P"); + model.addRange(5, 25, 35, " "); // empty chain code + assertEquals(testee.getAtomSpec(model, true), + "#0:1-4.B,3-10.C@CA|P|#1:2-5.A,8.A,5-10.B@CA|P|#5:25-35.@CA|P"); + + } + + @Test(groups = { "Functional" }) + public void testSuperposeStructures() + { + StructureCommandsI testee = new ChimeraCommands(); + AtomSpecModel ref = new AtomSpecModel(); + ref.addRange(1, 12, 14, "A"); + ref.addRange(1, 18, 18, "B"); + ref.addRange(1, 22, 23, "B"); + AtomSpecModel toAlign = new AtomSpecModel(); + toAlign.addRange(2, 15, 17, "B"); + toAlign.addRange(2, 20, 21, "B"); + toAlign.addRange(2, 22, 22, "C"); + String command = testee.superposeStructures(ref, toAlign); + String refSpec = "#1:12-14.A,18.B,22-23.B@CA|P&~@.B-Z&~@.2-9"; + String toAlignSpec = "#2:15-17.B,20-21.B,22.C@CA|P&~@.B-Z&~@.2-9"; + String expected = String.format( + "match %s %s;~display all; chain @CA|P; ribbon %s|%s; focus", + refSpec, toAlignSpec, refSpec, toAlignSpec); + assertEquals(command, expected); + } }