JAL-1805 test envirionment separation
[jalview.git] / test / jalview / datamodel / AlignedCodonFrameTest.java
1 package jalview.datamodel;
2
3 import static org.testng.AssertJUnit.assertEquals;
4 import static org.testng.AssertJUnit.assertNull;
5
6 import jalview.util.MapList;
7
8 import java.util.Arrays;
9
10 import org.testng.annotations.Test;
11
12 public class AlignedCodonFrameTest
13 {
14
15   /**
16    * Test the method that locates the first aligned sequence that has a mapping.
17    */
18   @Test(groups ={ "Functional" })
19   public void testFindAlignedSequence()
20   {
21     AlignmentI cdna = new Alignment(new SequenceI[]
22     {});
23     final Sequence seq1 = new Sequence("Seq1", "C-G-TA-GC");
24     seq1.createDatasetSequence();
25     cdna.addSequence(seq1);
26     final Sequence seq2 = new Sequence("Seq2", "-TA-GG-GG");
27     seq2.createDatasetSequence();
28     cdna.addSequence(seq2);
29
30     AlignmentI aa = new Alignment(new SequenceI[]
31     {});
32     final Sequence aseq1 = new Sequence("Seq1", "-P-R");
33     aseq1.createDatasetSequence();
34     aa.addSequence(aseq1);
35     final Sequence aseq2 = new Sequence("Seq2", "-LY-");
36     aseq2.createDatasetSequence();
37     aa.addSequence(aseq2);
38
39     /*
40      * Mapping from first DNA sequence to second AA sequence.
41      */
42     AlignedCodonFrame acf = new AlignedCodonFrame();
43
44     assertNull(acf.findAlignedSequence(seq1, aa));
45
46     MapList map = new MapList(new int[]
47     { 1, 6 }, new int[]
48     { 1, 2 }, 3, 1);
49     acf.addMap(seq1.getDatasetSequence(), aseq2.getDatasetSequence(), map);
50
51     /*
52      * DNA seq1 maps to AA seq2
53      */
54     assertEquals(aa.getSequenceAt(1),
55  acf.findAlignedSequence(cdna
56             .getSequenceAt(0).getDatasetSequence(), aa));
57
58     assertEquals(cdna.getSequenceAt(0),
59  acf.findAlignedSequence(aa
60             .getSequenceAt(1).getDatasetSequence(), cdna));
61   }
62
63   /**
64    * Test the method that locates the mapped codon for a protein position.
65    */
66     @Test(groups ={ "Functional" })
67   public void testGetMappedRegion()
68   {
69     // introns lower case, exons upper case
70     final Sequence seq1 = new Sequence("Seq1", "c-G-TA-gC-gT-T");
71     seq1.createDatasetSequence();
72     final Sequence seq2 = new Sequence("Seq2", "-TA-gG-Gg-CG-a");
73     seq2.createDatasetSequence();
74
75     final Sequence aseq1 = new Sequence("Seq1", "-P-R");
76     aseq1.createDatasetSequence();
77     final Sequence aseq2 = new Sequence("Seq2", "-LY-");
78     aseq2.createDatasetSequence();
79
80     /*
81      * First with no mappings
82      */
83     AlignedCodonFrame acf = new AlignedCodonFrame();
84
85     assertNull(acf.getMappedRegion(seq1, aseq1, 1));
86
87     /*
88      * Set up the mappings for the exons (upper-case bases)
89      */
90     MapList map = new MapList(new int[]
91     { 2, 4, 6, 6, 8, 9 }, new int[]
92     { 1, 2 }, 3, 1);
93     acf.addMap(seq1.getDatasetSequence(), aseq1.getDatasetSequence(), map);
94     map = new MapList(new int[]
95     { 1, 2, 4, 5, 7, 8 }, new int[]
96     { 1, 2 }, 3, 1);
97     acf.addMap(seq2.getDatasetSequence(), aseq2.getDatasetSequence(), map);
98
99     assertEquals("[2, 4]",
100             Arrays.toString(acf.getMappedRegion(seq1, aseq1, 1)));
101     assertEquals("[6, 6, 8, 9]",
102             Arrays.toString(acf.getMappedRegion(seq1, aseq1, 2)));
103     assertEquals("[1, 2, 4, 4]",
104             Arrays.toString(acf.getMappedRegion(seq2, aseq2, 1)));
105     assertEquals("[5, 5, 7, 8]",
106             Arrays.toString(acf.getMappedRegion(seq2, aseq2, 2)));
107
108     /*
109      * No mapping from sequence 1 to sequence 2
110      */
111     assertNull(acf.getMappedRegion(seq1, aseq2, 1));
112   }
113
114   @Test(groups ={ "Functional" })
115   public void testGetMappedCodon()
116   {
117     final Sequence seq1 = new Sequence("Seq1", "c-G-TA-gC-gT-T");
118     seq1.createDatasetSequence();
119     final Sequence aseq1 = new Sequence("Seq1", "-P-R");
120     aseq1.createDatasetSequence();
121
122     /*
123      * First with no mappings
124      */
125     AlignedCodonFrame acf = new AlignedCodonFrame();
126
127     assertNull(acf.getMappedCodon(seq1.getDatasetSequence(), 0));
128
129     /*
130      * Set up the mappings for the exons (upper-case bases)
131      */
132     MapList map = new MapList(new int[]
133     { 2, 4, 6, 6, 8, 9 }, new int[]
134     { 1, 2 }, 3, 1);
135     acf.addMap(seq1.getDatasetSequence(), aseq1.getDatasetSequence(), map);
136     
137     assertEquals("[G, T, A]", Arrays.toString(acf.getMappedCodon(
138             aseq1.getDatasetSequence(), 1)));
139     assertEquals("[C, T, T]", Arrays.toString(acf.getMappedCodon(
140             aseq1.getDatasetSequence(), 2)));
141   }
142 }