X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fgui%2FAlignFrameTest.java;h=3fe56b74610b7ef5df85df12916f3613cbd2473f;hb=refs%2Fheads%2Ffeatures%2FJAL-3010ontologyFeatureSettings;hp=3e82547e7ab30739f863ebdee26b148fc437920d;hpb=fa2429b3c8cd5eb56c4a56572af6e9c4adc916c9;p=jalview.git diff --git a/test/jalview/gui/AlignFrameTest.java b/test/jalview/gui/AlignFrameTest.java index 3e82547..3fe56b7 100644 --- a/test/jalview/gui/AlignFrameTest.java +++ b/test/jalview/gui/AlignFrameTest.java @@ -117,15 +117,18 @@ public class AlignFrameTest @Test(groups = "Functional") public void testHideFeatureColumns() { - SequenceI seq1 = new Sequence("Seq1", "ABCDEFGHIJ"); - SequenceI seq2 = new Sequence("Seq2", "ABCDEFGHIJ"); - seq1.addSequenceFeature(new SequenceFeature("Metal", "", 1, 5, 0f, null)); - seq2.addSequenceFeature(new SequenceFeature("Metal", "", 6, 10, 10f, - null)); - seq1.addSequenceFeature(new SequenceFeature("Turn", "", 2, 4, - Float.NaN, null)); - seq2.addSequenceFeature(new SequenceFeature("Turn", "", 7, 9, - Float.NaN, null)); + SequenceI seq1 = new Sequence("Seq1/01-10", "A---BCDEFG-HIJ"); + SequenceI seq2 = new Sequence("Seq2/11-20", "-AB-CDEF--GHIJ"); + String METAL = "Metal"; + String TURN = "Turn"; + seq1.addSequenceFeature( + new SequenceFeature(METAL, "", 1, 5, 0f, null)); + seq2.addSequenceFeature( + new SequenceFeature(METAL, "", 16, 20, 10f, null)); + seq1.addSequenceFeature( + new SequenceFeature(TURN, "", 2, 4, Float.NaN, null)); + seq2.addSequenceFeature( + new SequenceFeature(TURN, "", 17, 19, Float.NaN, null)); AlignmentI al = new Alignment(new SequenceI[] { seq1, seq2 }); AlignFrame alignFrame = new AlignFrame(al, al.getWidth(), al.getHeight()); @@ -138,63 +141,92 @@ public class AlignFrameTest /* * hiding a feature not present does nothing */ - assertFalse(alignFrame.hideFeatureColumns("exon", true)); + assertFalse(alignFrame.hideFeatureColumns(true, "exon")); assertTrue(alignFrame.getViewport().getColumnSelection().isEmpty()); - assertEquals(alignFrame.getViewport().getAlignment().getHiddenColumns() .getNumberOfRegions(), 0); - assertFalse(alignFrame.hideFeatureColumns("exon", false)); + assertFalse(alignFrame.hideFeatureColumns(false, "exon")); assertTrue(alignFrame.getViewport().getColumnSelection().isEmpty()); - assertEquals(alignFrame.getViewport().getAlignment().getHiddenColumns() .getNumberOfRegions(), 0); /* * hiding a feature in all columns does nothing */ - assertFalse(alignFrame.hideFeatureColumns("Metal", true)); + assertFalse(alignFrame.hideFeatureColumns(true, METAL)); assertTrue(alignFrame.getViewport().getColumnSelection().isEmpty()); - assertEquals(alignFrame.getViewport().getAlignment().getHiddenColumns() .getNumberOfRegions(), 0); /* * threshold Metal to hide features where score < 5 - * seq1 feature in columns 1-5 is hidden - * seq2 feature in columns 6-10 is shown + * seq1 feature in columns 1-8 is hidden + * seq2 feature in columns 8-14 is shown + * result: columns 8-14 are hidden + * note this includes gapped columns spanned by the feature */ FeatureColourI fc = new FeatureColour(null, Color.red, Color.blue, null, 0f, 10f); fc.setAboveThreshold(true); fc.setThreshold(5f); - alignFrame.getFeatureRenderer().setColour("Metal", fc); - assertTrue(alignFrame.hideFeatureColumns("Metal", true)); + alignFrame.getFeatureRenderer().setColour(METAL, fc); + assertTrue(alignFrame.hideFeatureColumns(true, METAL)); HiddenColumns hidden = alignFrame.getViewport().getAlignment().getHiddenColumns(); assertEquals(hidden.getNumberOfRegions(), 1); Iterator regions = hidden.iterator(); - int[] next = regions.next(); - assertEquals(next[0], 5); - assertEquals(next[1], 9); + assertEquals(regions.next(), new int[] { 7, 13 }); // base 0 + assertFalse(regions.hasNext()); /* * hide a feature present in some columns - * sequence positions [2-4], [7-9] are column positions - * [1-3], [6-8] base zero + * seq1 positions [2-4] are column positions [4-6] base zero + * seq2 positions [17-19] are column positions [10-12] base zero */ alignFrame.getViewport().showAllHiddenColumns(); - assertTrue(alignFrame.hideFeatureColumns("Turn", true)); + assertTrue(alignFrame.hideFeatureColumns(true, TURN)); regions = alignFrame.getViewport().getAlignment() .getHiddenColumns().iterator(); assertEquals(alignFrame.getViewport().getAlignment().getHiddenColumns() .getNumberOfRegions(), 2); - next = regions.next(); - assertEquals(next[0], 1); - assertEquals(next[1], 3); - next = regions.next(); - assertEquals(next[0], 6); - assertEquals(next[1], 8); + assertEquals(regions.next(), new int[] { 4, 6 }); + assertEquals(regions.next(), new int[] { 10, 12 }); + assertFalse(regions.hasNext()); + + /* + * hiding a contact feature should only hide start and end positions, + * not the intermediate columns + */ + String DISULFIDE = "Disulfide Bond"; + seq1.addSequenceFeature( + new SequenceFeature(DISULFIDE, "", 1, 5, 0f, null)); + alignFrame.getViewport().showAllHiddenColumns(); + assertTrue(alignFrame.hideFeatureColumns(true, DISULFIDE)); + regions = alignFrame.getViewport().getAlignment().getHiddenColumns() + .iterator(); + assertEquals(alignFrame.getViewport().getAlignment().getHiddenColumns() + .getNumberOfRegions(), 2); + assertEquals(regions.next(), new int[] { 0, 0 }); + assertEquals(regions.next(), new int[] { 7, 7 }); + assertFalse(regions.hasNext()); + + /* + * hide multiple feature types: + * TURN columns hides 4-6, 10-12 + * DISULFIDE columns hides 0, 7 + * combined is { 0-0, 4-7, 10-12 } + */ + alignFrame.getViewport().showAllHiddenColumns(); + assertTrue(alignFrame.hideFeatureColumns(true, TURN, DISULFIDE)); + regions = alignFrame.getViewport().getAlignment().getHiddenColumns() + .iterator(); + assertEquals(alignFrame.getViewport().getAlignment().getHiddenColumns() + .getNumberOfRegions(), 3); + assertEquals(regions.next(), new int[] { 0, 0 }); + assertEquals(regions.next(), new int[] { 4, 7 }); + assertEquals(regions.next(), new int[] { 10, 12 }); + assertFalse(regions.hasNext()); } /**