Merge branch 'develop' into trialMerge
[jalview.git] / test / jalview / controller / AlignViewControllerTest.java
index 7990d21..d9bd991 100644 (file)
@@ -61,25 +61,24 @@ public class AlignViewControllerTest
   public void testFindColumnsWithFeature()
   {
     SequenceI seq1 = new Sequence("seq1", "-a-MMMaaaaaaaaaaaaaaaa");
-    SequenceI seq2 = new Sequence("seq2", "aa--aMM-MMMMMaaaaaaaaaa");
+    SequenceI seq2 = new Sequence("seq2/11-30", "aa--aMM-MMMMMaaaaaaaaaa");
     SequenceI seq3 = new Sequence("seq3", "abcab-caD-aaMMMMMaaaaa");
     SequenceI seq4 = new Sequence("seq4", "abc--abcaaaaaaaaaaaaaa");
 
     /*
-     * features start/end are base 1
+     * features
      */
-    seq1.addSequenceFeature(new SequenceFeature("Metal", "desc", 2, 4, 0f,
-            null));
-    seq1.addSequenceFeature(new SequenceFeature("Helix", "desc", 1, 15, 0f,
-            null));
-    seq2.addSequenceFeature(new SequenceFeature("Metal", "desc", 4, 10,
-            10f,
-            null));
-    seq3.addSequenceFeature(new SequenceFeature("Metal", "desc", 11, 15,
-            10f, null));
+    seq1.addSequenceFeature(
+            new SequenceFeature("Metal", "desc", 2, 4, 0f, null));
+    seq1.addSequenceFeature(
+            new SequenceFeature("Helix", "desc", 1, 15, 0f, null));
+    seq2.addSequenceFeature(
+            new SequenceFeature("Metal", "desc", 14, 20, 10f, null));
+    seq3.addSequenceFeature(
+            new SequenceFeature("Metal", "desc", 11, 15, 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));
+    seq3.addSequenceFeature(
+            new SequenceFeature("disulfide bond", "desc", 8, 12, 0f, null));
 
     /*
      * select the first five columns --> Metal in seq1 cols 4-5
@@ -95,15 +94,17 @@ public class AlignViewControllerTest
     /*
      * 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);
+    Alignment al = new Alignment(
+            new SequenceI[]
+            { seq1, seq2, seq3, seq4 });
+    AlignFrame af = new AlignFrame(al, 100, 100);
     af.getFeatureRenderer().findAllFeatures(true);
 
     AlignViewController avc = new AlignViewController(af, af.getViewport(),
             af.alignPanel);
 
     BitSet bs = new BitSet();
-    int seqCount = avc.findColumnsWithFeature("Metal", sg, bs);
+    int seqCount = avc.findColumnsWithFeature(sg, bs, "Metal");
     assertEquals(1, seqCount);
     assertEquals(2, bs.cardinality());
     assertTrue(bs.get(3)); // base 0
@@ -114,7 +115,7 @@ public class AlignViewControllerTest
      */
     sg.setEndRes(6);
     bs.clear();
-    seqCount = avc.findColumnsWithFeature("Metal", sg, bs);
+    seqCount = avc.findColumnsWithFeature(sg, bs, "Metal");
     assertEquals(2, seqCount);
     assertEquals(4, bs.cardinality());
     assertTrue(bs.get(3));
@@ -128,7 +129,7 @@ public class AlignViewControllerTest
     sg.setStartRes(13);
     sg.setEndRes(13);
     bs.clear();
-    seqCount = avc.findColumnsWithFeature("Metal", sg, bs);
+    seqCount = avc.findColumnsWithFeature(sg, bs, "Metal");
     assertEquals(1, seqCount);
     assertEquals(1, bs.cardinality());
     assertTrue(bs.get(13));
@@ -139,7 +140,7 @@ public class AlignViewControllerTest
     sg.setStartRes(17);
     sg.setEndRes(19);
     bs.clear();
-    seqCount = avc.findColumnsWithFeature("Metal", sg, bs);
+    seqCount = avc.findColumnsWithFeature(sg, bs, "Metal");
     assertEquals(0, seqCount);
     assertEquals(0, bs.cardinality());
 
@@ -156,7 +157,7 @@ public class AlignViewControllerTest
     sg.setStartRes(0);
     sg.setEndRes(6);
     bs.clear();
-    seqCount = avc.findColumnsWithFeature("Metal", sg, bs);
+    seqCount = avc.findColumnsWithFeature(sg, bs, "Metal");
     assertEquals(1, seqCount);
     assertEquals(2, bs.cardinality());
     assertTrue(bs.get(5));
@@ -168,7 +169,7 @@ public class AlignViewControllerTest
     sg.setStartRes(10);
     sg.setEndRes(12);
     bs.clear();
-    seqCount = avc.findColumnsWithFeature("disulfide bond", sg, bs);
+    seqCount = avc.findColumnsWithFeature(sg, bs, "disulfide bond");
     assertEquals(0, seqCount);
     assertEquals(0, bs.cardinality());
 
@@ -178,19 +179,42 @@ public class AlignViewControllerTest
     sg.setStartRes(5);
     sg.setEndRes(17);
     bs.clear();
-    seqCount = avc.findColumnsWithFeature("disulfide bond", sg, bs);
+    seqCount = avc.findColumnsWithFeature(sg, bs, "disulfide bond");
     assertEquals(1, seqCount);
     assertEquals(2, bs.cardinality());
     assertTrue(bs.get(8));
     assertTrue(bs.get(13));
 
     /*
+     * look for multiple features; should match 
+     * transcript_variant in seq3 positions 3-6, columns 3-7
+     * sequence_variant in seq2 positions 15-18, columns 7-11
+     * transcript_variant in seq3 positions 8 and 12, columns 9 and 14 
+     */
+    seq3.addSequenceFeature(new SequenceFeature("transcript_variant",
+            "desc", 3, 6, 0f, null));
+    seq2.addSequenceFeature(new SequenceFeature("sequence_variant", "desc",
+            15, 18, 0f, null));
+    sg.setStartRes(0);
+    sg.setEndRes(20);
+    bs.clear();
+    seqCount = avc.findColumnsWithFeature(sg, bs, "transcript_variant",
+            "sequence_variant", "disulfide bond", "junk");
+    assertEquals(2, seqCount);
+    assertEquals(10, bs.cardinality()); // 2-10 and 13, base 0
+    for (int i = 2; i <= 10; i++)
+    {
+      assertTrue(bs.get(i));
+    }
+    assertTrue(bs.get(13));
+
+    /*
      * look for a feature that isn't there
      */
     sg.setStartRes(0);
     sg.setEndRes(19);
     bs.clear();
-    seqCount = avc.findColumnsWithFeature("Pfam", sg, bs);
+    seqCount = avc.findColumnsWithFeature(sg, bs, "Pfam");
     assertEquals(0, seqCount);
     assertEquals(0, bs.cardinality());
   }