1 package jalview.controller;
3 import static org.testng.AssertJUnit.assertEquals;
4 import static org.testng.AssertJUnit.assertTrue;
6 import jalview.datamodel.Sequence;
7 import jalview.datamodel.SequenceFeature;
8 import jalview.datamodel.SequenceGroup;
9 import jalview.datamodel.SequenceI;
11 import java.util.BitSet;
13 import org.testng.annotations.Test;
15 public class AlignViewControllerTest
17 @Test(groups = "Functional")
18 public void testFindColumnsWithFeature()
20 SequenceI seq1 = new Sequence("seq1", "aMMMaaaaaaaaaaaaaaaa");
21 SequenceI seq2 = new Sequence("seq2", "aaaMMMMMMMaaaaaaaaaa");
22 SequenceI seq3 = new Sequence("seq3", "aaaaaaaaaaMMMMMaaaaa");
23 SequenceI seq4 = new Sequence("seq3", "aaaaaaaaaaaaaaaaaaaa");
26 * features start/end are base 1
28 seq1.addSequenceFeature(new SequenceFeature("Metal", "desc", 2, 4, 0f,
30 seq1.addSequenceFeature(new SequenceFeature("Helix", "desc", 1, 15, 0f,
32 seq2.addSequenceFeature(new SequenceFeature("Metal", "desc", 4, 10, 0f,
34 seq3.addSequenceFeature(new SequenceFeature("Metal", "desc", 11, 15,
38 * select the first three columns --> Metal in seq1 2-3
40 SequenceGroup sg = new SequenceGroup();
41 sg.setStartRes(0); // base 0
43 sg.addSequence(seq1, false);
44 sg.addSequence(seq2, false);
45 sg.addSequence(seq3, false);
46 sg.addSequence(seq4, false);
48 BitSet bs = new BitSet();
49 int seqCount = AlignViewController.findColumnsWithFeature("Metal", sg,
51 assertEquals(1, seqCount);
52 assertEquals(2, bs.cardinality());
53 assertTrue(bs.get(1));
54 assertTrue(bs.get(2));
57 * select the first four columns: Metal in seq1 2:4, seq2 4:4
61 seqCount = AlignViewController.findColumnsWithFeature("Metal", sg,
63 assertEquals(2, seqCount);
64 assertEquals(3, bs.cardinality());
65 assertTrue(bs.get(1));
66 assertTrue(bs.get(2));
67 assertTrue(bs.get(3));
70 * select column 11: Metal in seq3 only
75 seqCount = AlignViewController.findColumnsWithFeature("Metal", sg, bs);
76 assertEquals(1, seqCount);
77 assertEquals(1, bs.cardinality());
78 assertTrue(bs.get(10));
81 * select columns 16-20: no Metal feature
86 seqCount = AlignViewController.findColumnsWithFeature("Metal", sg, bs);
87 assertEquals(0, seqCount);
88 assertEquals(0, bs.cardinality());
91 * look for a feature that isn't there
96 seqCount = AlignViewController.findColumnsWithFeature("Pfam", sg, bs);
97 assertEquals(0, seqCount);
98 assertEquals(0, bs.cardinality());