1 package jalview.analysis;
3 import jalview.datamodel.Alignment;
4 import jalview.datamodel.AlignmentI;
5 import jalview.datamodel.ColumnSelection;
6 import jalview.datamodel.Sequence;
7 import jalview.datamodel.SequenceGroup;
8 import jalview.datamodel.SequenceI;
10 import java.util.ArrayList;
11 import java.util.Arrays;
13 import org.testng.AssertJUnit;
14 import org.testng.annotations.Test;
16 public class GroupingTest
18 Sequence s1 = new Sequence("s1", "AAAADDDDEEEE");
20 Sequence s2 = new Sequence("s2", "AAAADDDDEEEE");
22 Sequence s3 = new Sequence("s3", "ACAADDEDEEEE");
24 Sequence s4 = new Sequence("s4", "AAAADDEDEEEE");
26 Sequence s5 = new Sequence("s5", "AAAADDEDTTEE");
28 SequenceGroup sg1 = new SequenceGroup(Arrays.asList(new SequenceI[] { s1,
29 s2 }), "Group1", null, false, false, false, 0, 5);
31 SequenceGroup sg2 = new SequenceGroup(Arrays.asList(new SequenceI[] { s3,
32 s4, s5 }), "Group2", null, false, false, false, 0, 5);
34 AlignmentI alignment = new Alignment(
35 new SequenceI[] { s1, s2, s3, s4, s5 });
37 int[] positions = new int[] { 1, 7, 9 };
39 @Test(groups = { "Functional" })
40 public void testMakeGroupsWithBoth()
42 ArrayList<String> str = new ArrayList<String>();
43 for (SequenceI s : alignment.getSequences())
45 StringBuilder sb = new StringBuilder();
46 for (int p : positions)
48 sb.append(s.getCharAt(p));
50 str.add(sb.toString());
52 SequenceGroup[] seqgroupsString = Grouping.makeGroupsFrom(
53 alignment.getSequencesArray(),
54 str.toArray(new String[str.size()]),
55 Arrays.asList(new SequenceGroup[] { sg1, sg2 }));
56 ColumnSelection cs = new ColumnSelection();
57 for (int p : positions)
61 SequenceGroup[] seqgroupsColSel = Grouping.makeGroupsFromCols(
62 alignment.getSequencesArray(), cs,
63 Arrays.asList(new SequenceGroup[] { sg1, sg2 }));
65 .assertEquals(seqgroupsString.length, seqgroupsColSel.length);
66 for (int p = 0; p < seqgroupsString.length; p++)
68 AssertJUnit.assertEquals(seqgroupsString[p].getName(),
69 seqgroupsColSel[p].getName());
70 AssertJUnit.assertArrayEquals(
71 seqgroupsString[p].getSequencesInOrder(alignment),
72 seqgroupsColSel[p].getSequencesInOrder(alignment));
73 if (seqgroupsString[p].getSequences().contains(s2))
75 AssertJUnit.assertTrue(seqgroupsString[p].getSize() == 2);