4dbf05e3182185454615335e7f4639639cadac76
[jalview.git] / test / jalview / util / HMMProbabilityDistributionAnalyserTest.java
1 package jalview.util;
2
3 import static org.testng.Assert.assertEquals;
4 import static org.testng.Assert.assertNull;
5
6 import jalview.datamodel.HMMNode;
7 import jalview.datamodel.HiddenMarkovModel;
8 import jalview.datamodel.Sequence;
9 import jalview.datamodel.SequenceI;
10
11 import java.io.BufferedReader;
12 import java.io.FileReader;
13 import java.io.IOException;
14 import java.util.ArrayList;
15 import java.util.List;
16 import java.util.Map;
17 import java.util.Vector;
18
19 import org.testng.annotations.Test;
20
21 import junit.extensions.PA;
22
23 public class HMMProbabilityDistributionAnalyserTest {
24
25   HMMProbabilityDistributionAnalyser analyser = new HMMProbabilityDistributionAnalyser();
26
27   @Test
28   public void testMoveToFile() throws IOException
29   {
30
31     BufferedReader br = new BufferedReader(new FileReader(
32             "test/jalview/util/test_Fams_for_probability_analysis"));
33     analyser.moveLocationBy(1, br);
34
35     String line = br.readLine();
36     assertEquals(line, "# STOCKHOLM 1.0");
37     line = br.readLine();
38     assertEquals(line, "seq1 ATW");
39     line = br.readLine();
40     assertEquals(line, "seq2 ATI");
41
42   }
43
44   @Test
45   public void testCountValidResidues()
46   {
47     analyser.sequences = new Vector<>();
48     analyser.hmm = new HiddenMarkovModel();
49     analyser.hmm.setProperty("LENG", "8");
50
51     List<HMMNode> nodes = new ArrayList<>();
52     nodes.add(new HMMNode());
53     for (int i = 1; i < 9; i++)
54     {
55       HMMNode node = new HMMNode();
56       node.setResidueNumber(i - 1);
57       nodes.add(node);
58
59     }
60     PA.setValue(analyser.hmm, "nodes", nodes);
61
62     SequenceI[] sequence = new Sequence[] {
63         new Sequence("seq1", "ATGWWSCF"), new Sequence("seq2", "GGMKI"),
64         new Sequence("seq3", "--.ATccGc") };
65     analyser.sequences.add(sequence[0]);
66     analyser.sequences.add(sequence[1]);
67     analyser.sequences.add(sequence[2]);
68
69     int count = analyser.countValidResidues();
70     assertEquals(count, 16);
71   }
72
73   @Test(priority = 0)
74   public void testReadBinned() throws IOException
75   {
76     analyser.readBinned("test/jalview/util/");
77     Map<String, Double> map = analyser.binned;
78     assertEquals(map.get("1.8"), 4.53);
79     assertEquals(map.get("3.4"), 2.65);
80     assertEquals(map.get("6.4"), 10.8);
81     assertEquals(map.get("0"), 5.4);
82   }
83
84   @Test
85   public void testReadRaw() throws IOException
86   {
87     analyser.readRaw("test/jalview/util/");
88     List<ArrayList<Double>> list = analyser.raw;
89
90     assertEquals(list.get(0).get(0), 1.43);
91     assertNull(list.get(0).get(2));
92     assertEquals(list.get(1).get(1), 1.2);
93     assertEquals(list.get(2).get(0), 5.6);
94     assertEquals(list.get(2).get(2), 6.8);
95
96   }
97
98   @Test(priority = 1)
99   public void testProcessData() throws IOException
100   {
101     analyser.keepRaw = true;
102     BufferedReader brFam = new BufferedReader(new FileReader(
103             "test/jalview/util/test_Fams_for_probability_analysis"));
104     BufferedReader brHMM = new BufferedReader(new FileReader(
105             "test/jalview/util/test_HMMs_for_probability_analysis"));
106     analyser.readStockholm(brFam);
107     analyser.readHMM(brHMM);
108     analyser.processData(6);
109     Map<String, Double> map = analyser.binned;
110     List<ArrayList<Double>> list = analyser.raw;
111     assertEquals(map.get("1.8"), 4.863, 0.001d);
112     assertEquals(map.get("3.4"), 2.65);
113     assertEquals(map.get("0"), 5.4);
114     assertEquals(map.get("6.4"), 10.8);
115     assertEquals(map.get("1.4"), 0.166667, 0.00001d);
116     assertEquals(map.get("4.4"), 0.5);
117
118   }
119 }