1 package jalview.analysis;
3 import static org.junit.Assert.fail;
4 import jalview.datamodel.Alignment;
5 import jalview.datamodel.AlignmentI;
6 import jalview.datamodel.ColumnSelection;
7 import jalview.datamodel.Sequence;
8 import jalview.datamodel.SequenceGroup;
9 import jalview.datamodel.SequenceI;
11 import java.util.ArrayList;
12 import java.util.Arrays;
14 import org.junit.Assert;
15 import org.junit.Test;
17 public class GroupingTest
19 Sequence s1 = new Sequence("s1", "AAAADDDDEEEE");
21 Sequence s2 = new Sequence("s2", "AAAADDDDEEEE");
23 Sequence s3 = new Sequence("s3", "ACAADDEDEEEE");
25 Sequence s4 = new Sequence("s4", "AAAADDEDEEEE");
27 Sequence s5 = new Sequence("s5", "AAAADDEDTTEE");
29 SequenceGroup sg1 = new SequenceGroup(Arrays.asList(new SequenceI[]
30 { s1, s2 }), "Group1", null, false, false, false, 0, 5);
32 SequenceGroup sg2 = new SequenceGroup(Arrays.asList(new SequenceI[]
33 { s3, s4, s5 }), "Group2", null, false, false, false, 0, 5);
35 AlignmentI alignment = new Alignment(new SequenceI[]
36 { s1, s2, s3, s4, s5 });
38 int[] positions = new int[]
42 public void testMakeGroupsWithBoth()
44 ArrayList<String> str = new ArrayList<String>();
45 for (SequenceI s : alignment.getSequences())
47 StringBuilder sb = new StringBuilder();
48 for (int p : positions)
50 sb.append(s.getCharAt(p));
52 str.add(sb.toString());
54 SequenceGroup[] seqgroupsString = Grouping.makeGroupsFrom(
55 alignment.getSequencesArray(),
56 str.toArray(new String[str.size()]),
57 Arrays.asList(new SequenceGroup[]
59 ColumnSelection cs = new ColumnSelection();
60 for (int p : positions)
64 SequenceGroup[] seqgroupsColSel = Grouping.makeGroupsFromCols(
65 alignment.getSequencesArray(), cs,
66 Arrays.asList(new SequenceGroup[]
68 Assert.assertEquals(seqgroupsString.length, seqgroupsColSel.length);
69 for (int p = 0; p < seqgroupsString.length; p++)
71 Assert.assertEquals(seqgroupsString[p].getName(),
72 seqgroupsColSel[p].getName());
73 Assert.assertArrayEquals(
74 seqgroupsString[p].getSequencesInOrder(alignment),
75 seqgroupsColSel[p].getSequencesInOrder(alignment));
76 if (seqgroupsString[p].getSequences().contains(s2))
78 Assert.assertTrue(seqgroupsString[p].getSize() == 2);
84 public void testMakeGroupsFromCols()
86 fail("Not yet implemented"); // TODO