X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fcontroller%2FAlignViewControllerTest.java;h=7990d21b9bb53dd854c87ff908ec1ca6658474a6;hb=9c8b674e5ab62309b0df090977c8bf8288deb98b;hp=7ac1452354a519a59ca6ffcefc4c761bd4ce0d9f;hpb=5f4e1e4c330b045e9c8bce28ee132a0fca3834d8;p=jalview.git diff --git a/test/jalview/controller/AlignViewControllerTest.java b/test/jalview/controller/AlignViewControllerTest.java index 7ac1452..7990d21 100644 --- a/test/jalview/controller/AlignViewControllerTest.java +++ b/test/jalview/controller/AlignViewControllerTest.java @@ -25,6 +25,9 @@ import static org.testng.AssertJUnit.assertTrue; import jalview.analysis.Finder; import jalview.api.AlignViewControllerI; +import jalview.api.FeatureColourI; +import jalview.api.FinderI; +import jalview.datamodel.Alignment; import jalview.datamodel.SearchResults; import jalview.datamodel.SearchResultsI; import jalview.datamodel.Sequence; @@ -33,9 +36,11 @@ import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; import jalview.gui.AlignFrame; import jalview.gui.JvOptionPane; +import jalview.io.DataSourceType; import jalview.io.FileLoader; -import jalview.io.FormatAdapter; +import jalview.schemes.FeatureColour; +import java.awt.Color; import java.util.Arrays; import java.util.BitSet; @@ -55,10 +60,10 @@ public class AlignViewControllerTest @Test(groups = "Functional") public void testFindColumnsWithFeature() { - SequenceI seq1 = new Sequence("seq1", "aMMMaaaaaaaaaaaaaaaa"); - SequenceI seq2 = new Sequence("seq2", "aaaMMMMMMMaaaaaaaaaa"); - SequenceI seq3 = new Sequence("seq3", "aaaaaaaaaaMMMMMaaaaa"); - SequenceI seq4 = new Sequence("seq3", "aaaaaaaaaaaaaaaaaaaa"); + SequenceI seq1 = new Sequence("seq1", "-a-MMMaaaaaaaaaaaaaaaa"); + SequenceI seq2 = new Sequence("seq2", "aa--aMM-MMMMMaaaaaaaaaa"); + SequenceI seq3 = new Sequence("seq3", "abcab-caD-aaMMMMMaaaaa"); + SequenceI seq4 = new Sequence("seq4", "abc--abcaaaaaaaaaaaaaa"); /* * features start/end are base 1 @@ -67,70 +72,125 @@ public class AlignViewControllerTest null)); seq1.addSequenceFeature(new SequenceFeature("Helix", "desc", 1, 15, 0f, null)); - seq2.addSequenceFeature(new SequenceFeature("Metal", "desc", 4, 10, 0f, + seq2.addSequenceFeature(new SequenceFeature("Metal", "desc", 4, 10, + 10f, null)); seq3.addSequenceFeature(new SequenceFeature("Metal", "desc", 11, 15, - 0f, null)); + 10f, null)); + // disulfide bond is a 'contact feature' - only select its 'start' and 'end' + seq3.addSequenceFeature(new SequenceFeature("disulfide bond", "desc", + 8, 12, 0f, null)); /* - * select the first three columns --> Metal in seq1 2-3 + * select the first five columns --> Metal in seq1 cols 4-5 */ SequenceGroup sg = new SequenceGroup(); sg.setStartRes(0); // base 0 - sg.setEndRes(2); + sg.setEndRes(4); sg.addSequence(seq1, false); sg.addSequence(seq2, false); sg.addSequence(seq3, false); sg.addSequence(seq4, false); + /* + * set features visible on a viewport as only visible features are selected + */ + AlignFrame af = new AlignFrame(new Alignment(new SequenceI[] { seq1, + seq2, seq3, seq4 }), 100, 100); + af.getFeatureRenderer().findAllFeatures(true); + + AlignViewController avc = new AlignViewController(af, af.getViewport(), + af.alignPanel); + BitSet bs = new BitSet(); - int seqCount = AlignViewController.findColumnsWithFeature("Metal", sg, - bs); + int seqCount = avc.findColumnsWithFeature("Metal", sg, bs); assertEquals(1, seqCount); assertEquals(2, bs.cardinality()); - assertTrue(bs.get(1)); - assertTrue(bs.get(2)); + assertTrue(bs.get(3)); // base 0 + assertTrue(bs.get(4)); /* - * select the first four columns: Metal in seq1 2:4, seq2 4:4 + * select the first seven columns: Metal in seq1 cols 4-6, seq2 cols 6-7 */ - sg.setEndRes(3); + sg.setEndRes(6); bs.clear(); - seqCount = AlignViewController.findColumnsWithFeature("Metal", sg, bs); + seqCount = avc.findColumnsWithFeature("Metal", sg, bs); assertEquals(2, seqCount); - assertEquals(3, bs.cardinality()); - assertTrue(bs.get(1)); - assertTrue(bs.get(2)); + assertEquals(4, bs.cardinality()); assertTrue(bs.get(3)); + assertTrue(bs.get(4)); + assertTrue(bs.get(5)); + assertTrue(bs.get(6)); /* - * select column 11: Metal in seq3 only + * select column 14: Metal in seq3 only */ - sg.setStartRes(10); - sg.setEndRes(10); + sg.setStartRes(13); + sg.setEndRes(13); bs.clear(); - seqCount = AlignViewController.findColumnsWithFeature("Metal", sg, bs); + seqCount = avc.findColumnsWithFeature("Metal", sg, bs); assertEquals(1, seqCount); assertEquals(1, bs.cardinality()); - assertTrue(bs.get(10)); + assertTrue(bs.get(13)); /* - * select columns 16-20: no Metal feature + * select columns 18-20: no Metal feature */ - sg.setStartRes(15); + sg.setStartRes(17); sg.setEndRes(19); bs.clear(); - seqCount = AlignViewController.findColumnsWithFeature("Metal", sg, bs); + seqCount = avc.findColumnsWithFeature("Metal", sg, bs); assertEquals(0, seqCount); assertEquals(0, bs.cardinality()); /* + * threshold Metal to hide where score < 5 + * seq1 feature in columns 4-6 is hidden + * seq2 feature in columns 6-7 is shown + */ + FeatureColourI fc = new FeatureColour(null, Color.red, Color.blue, null, + 0f, 10f); + fc.setAboveThreshold(true); + fc.setThreshold(5f); + af.getFeatureRenderer().setColour("Metal", fc); + sg.setStartRes(0); + sg.setEndRes(6); + bs.clear(); + seqCount = avc.findColumnsWithFeature("Metal", sg, bs); + assertEquals(1, seqCount); + assertEquals(2, bs.cardinality()); + assertTrue(bs.get(5)); + assertTrue(bs.get(6)); + + /* + * columns 11-13 should not match disulfide bond at 8/12 + */ + sg.setStartRes(10); + sg.setEndRes(12); + bs.clear(); + seqCount = avc.findColumnsWithFeature("disulfide bond", sg, bs); + assertEquals(0, seqCount); + assertEquals(0, bs.cardinality()); + + /* + * columns 6-18 should match disulfide bond at columns 9, 14 + */ + sg.setStartRes(5); + sg.setEndRes(17); + bs.clear(); + seqCount = avc.findColumnsWithFeature("disulfide bond", sg, bs); + assertEquals(1, seqCount); + assertEquals(2, bs.cardinality()); + assertTrue(bs.get(8)); + assertTrue(bs.get(13)); + + /* * look for a feature that isn't there */ sg.setStartRes(0); sg.setEndRes(19); bs.clear(); - seqCount = AlignViewController.findColumnsWithFeature("Pfam", sg, bs); + seqCount = avc.findColumnsWithFeature("Pfam", sg, bs); assertEquals(0, seqCount); assertEquals(0, bs.cardinality()); } @@ -145,7 +205,7 @@ public class AlignViewControllerTest AlignFrame af = new FileLoader().LoadFileWaitTillLoaded( "seq1 aMMMaaaaaaaaaaaaaaaa\n" + "seq2 aaaMMMMMMMaaaaaaaaaa\n" + "seq3 aaaaaaaaaaMMMMMaaaaa\n" - + "seq4 aaaaaaaaaaaaaaaaaaaa\n", FormatAdapter.PASTE); + + "seq4 aaaaaaaaaaaaaaaaaaaa\n", DataSourceType.PASTE); SearchResultsI sr = new SearchResults(); SequenceI[] sqs = af.getViewport().getAlignment().getSequencesArray(); @@ -164,10 +224,8 @@ public class AlignViewControllerTest /* * test Match/Find works first */ - Finder f = new Finder(af.getViewport().getAlignment(), null); - f.setFindAll(true); - f.setCaseSensitive(true); - f.find("M+"); + FinderI f = new Finder(af.getViewport()); + f.findAll("M+", true, false); assertEquals( "Finder found different set of results to manually created SearchResults", sr, f.getSearchResults());