JAL-845 minor tidy / tests / javadoc tweaks
[jalview.git] / test / jalview / analysis / AAFrequencyTest.java
1 package jalview.analysis;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertNull;
5 import jalview.datamodel.Sequence;
6 import jalview.datamodel.SequenceI;
7
8 import java.util.Hashtable;
9
10 import org.junit.Test;
11
12 public class AAFrequencyTest
13 {
14   private static final String C = AAFrequency.MAXCOUNT;
15
16   private static final String R = AAFrequency.MAXRESIDUE;
17
18   private static final String G = AAFrequency.PID_GAPS;
19
20   private static final String N = AAFrequency.PID_NOGAPS;
21
22   private static final String P = AAFrequency.PROFILE;
23
24   @Test
25   public void testCalculate_noProfile()
26   {
27     SequenceI seq1 = new Sequence("Seq1", "CAGT");
28     SequenceI seq2 = new Sequence("Seq2", "CACT");
29     SequenceI seq3 = new Sequence("Seq3", "C--G");
30     SequenceI seq4 = new Sequence("Seq4", "CA-t");
31     SequenceI[] seqs = new SequenceI[]
32     { seq1, seq2, seq3, seq4 };
33     Hashtable[] result = new Hashtable[seq1.getLength()];
34     
35     AAFrequency.calculate(seqs, 0, seq1.getLength(), result, false);
36     Hashtable col = result[0];
37     assertEquals(100f, (Float) col.get(G), 0.0001f);
38     assertEquals(100f, (Float) col.get(N), 0.0001f);
39     assertEquals(4, col.get(C));
40     assertEquals("C", col.get(R));
41     assertNull(col.get(P));
42     col = result[1];
43     assertEquals(75f, (Float) col.get(G), 0.0001f);
44     assertEquals(100f, (Float) col.get(N), 0.0001f);
45     assertEquals(3, col.get(C));
46     assertEquals("A", col.get(R));
47     col = result[2];
48     assertEquals(0f, (Float) col.get(G), 0.0001f);
49     assertEquals(0f, (Float) col.get(N), 0.0001f);
50     assertEquals(0, col.get(C));
51     assertEquals("-", col.get(R));
52     col = result[3];
53     assertEquals(75f, (Float) col.get(G), 0.0001f);
54     assertEquals(75f, (Float) col.get(N), 0.0001f);
55     assertEquals(3, col.get(C));
56     assertEquals("T", col.get(R));
57   }
58
59   @Test
60   public void testCalculate_withProfile()
61   {
62     SequenceI seq1 = new Sequence("Seq1", "CAGT");
63     SequenceI seq2 = new Sequence("Seq2", "CACT");
64     SequenceI seq3 = new Sequence("Seq3", "C--G");
65     SequenceI seq4 = new Sequence("Seq4", "CA-t");
66     SequenceI[] seqs = new SequenceI[]
67     { seq1, seq2, seq3, seq4 };
68     Hashtable[] result = new Hashtable[seq1.getLength()];
69
70     AAFrequency.calculate(seqs, 0, seq1.getLength(), result, true);
71     int[][] profile = (int[][]) result[0].get(P);
72     assertEquals(4, profile[0]['C']);
73     assertEquals(4, profile[1][0]); // no of seqs
74     assertEquals(4, profile[1][1]); // nongapped in column
75
76     profile = (int[][]) result[1].get(P);
77     assertEquals(3, profile[0]['A']);
78     assertEquals(4, profile[1][0]);
79     assertEquals(3, profile[1][1]);
80
81     profile = (int[][]) result[2].get(P);
82     assertEquals(1, profile[0]['G']);
83     assertEquals(1, profile[0]['C']);
84     assertEquals(4, profile[1][0]);
85     assertEquals(2, profile[1][1]);
86
87     profile = (int[][]) result[3].get(P);
88     assertEquals(3, profile[0]['T']);
89     assertEquals(1, profile[0]['G']);
90     assertEquals(4, profile[1][0]);
91     assertEquals(4, profile[1][1]);
92   }
93
94   @Test
95   public void testCalculate_withProfileTiming()
96   {
97     SequenceI seq1 = new Sequence("Seq1", "CAGT");
98     SequenceI seq2 = new Sequence("Seq2", "CACT");
99     SequenceI seq3 = new Sequence("Seq3", "C--G");
100     SequenceI seq4 = new Sequence("Seq4", "CA-t");
101     SequenceI[] seqs = new SequenceI[]
102     { seq1, seq2, seq3, seq4 };
103     Hashtable[] result = new Hashtable[seq1.getLength()];
104
105     // ensure class loaded and initialized
106     AAFrequency.calculate(seqs, 0, seq1.getLength(), result, true);
107     int reps = 100000;
108     long start = System.currentTimeMillis();
109     for (int i = 0; i < reps; i++)
110     {
111       AAFrequency.calculate(seqs, 0, seq1.getLength(), result, true);
112     }
113     System.out.println(System.currentTimeMillis() - start);
114   }
115 }