1 package jalview.datamodel;
3 import static org.testng.AssertJUnit.assertEquals;
4 import static org.testng.AssertJUnit.assertNull;
6 import jalview.util.MapList;
8 import java.util.Arrays;
10 import org.testng.annotations.Test;
12 public class AlignedCodonFrameTest
16 * Test the method that locates the first aligned sequence that has a mapping.
18 @Test(groups = { "Functional" })
19 public void testFindAlignedSequence()
21 AlignmentI cdna = new Alignment(new SequenceI[] {});
22 final Sequence seq1 = new Sequence("Seq1", "C-G-TA-GC");
23 seq1.createDatasetSequence();
24 cdna.addSequence(seq1);
25 final Sequence seq2 = new Sequence("Seq2", "-TA-GG-GG");
26 seq2.createDatasetSequence();
27 cdna.addSequence(seq2);
29 AlignmentI aa = new Alignment(new SequenceI[] {});
30 final Sequence aseq1 = new Sequence("Seq1", "-P-R");
31 aseq1.createDatasetSequence();
32 aa.addSequence(aseq1);
33 final Sequence aseq2 = new Sequence("Seq2", "-LY-");
34 aseq2.createDatasetSequence();
35 aa.addSequence(aseq2);
38 * Mapping from first DNA sequence to second AA sequence.
40 AlignedCodonFrame acf = new AlignedCodonFrame();
42 assertNull(acf.findAlignedSequence(seq1, aa));
44 MapList map = new MapList(new int[] { 1, 6 }, new int[] { 1, 2 }, 3, 1);
45 acf.addMap(seq1.getDatasetSequence(), aseq2.getDatasetSequence(), map);
48 * DNA seq1 maps to AA seq2
50 assertEquals(aa.getSequenceAt(1), acf.findAlignedSequence(cdna
51 .getSequenceAt(0).getDatasetSequence(), aa));
53 assertEquals(cdna.getSequenceAt(0), acf.findAlignedSequence(aa
54 .getSequenceAt(1).getDatasetSequence(), cdna));
58 * Test the method that locates the mapped codon for a protein position.
60 @Test(groups = { "Functional" })
61 public void testGetMappedRegion()
63 // introns lower case, exons upper case
64 final Sequence seq1 = new Sequence("Seq1", "c-G-TA-gC-gT-T");
65 seq1.createDatasetSequence();
66 final Sequence seq2 = new Sequence("Seq2", "-TA-gG-Gg-CG-a");
67 seq2.createDatasetSequence();
69 final Sequence aseq1 = new Sequence("Seq1", "-P-R");
70 aseq1.createDatasetSequence();
71 final Sequence aseq2 = new Sequence("Seq2", "-LY-");
72 aseq2.createDatasetSequence();
75 * First with no mappings
77 AlignedCodonFrame acf = new AlignedCodonFrame();
79 assertNull(acf.getMappedRegion(seq1, aseq1, 1));
82 * Set up the mappings for the exons (upper-case bases)
84 MapList map = new MapList(new int[] { 2, 4, 6, 6, 8, 9 }, new int[] {
86 acf.addMap(seq1.getDatasetSequence(), aseq1.getDatasetSequence(), map);
87 map = new MapList(new int[] { 1, 2, 4, 5, 7, 8 }, new int[] { 1, 2 },
89 acf.addMap(seq2.getDatasetSequence(), aseq2.getDatasetSequence(), map);
91 assertEquals("[2, 4]",
92 Arrays.toString(acf.getMappedRegion(seq1, aseq1, 1)));
93 assertEquals("[6, 6, 8, 9]",
94 Arrays.toString(acf.getMappedRegion(seq1, aseq1, 2)));
95 assertEquals("[1, 2, 4, 4]",
96 Arrays.toString(acf.getMappedRegion(seq2, aseq2, 1)));
97 assertEquals("[5, 5, 7, 8]",
98 Arrays.toString(acf.getMappedRegion(seq2, aseq2, 2)));
101 * No mapping from sequence 1 to sequence 2
103 assertNull(acf.getMappedRegion(seq1, aseq2, 1));
106 @Test(groups = { "Functional" })
107 public void testGetMappedCodon()
109 final Sequence seq1 = new Sequence("Seq1", "c-G-TA-gC-gT-T");
110 seq1.createDatasetSequence();
111 final Sequence aseq1 = new Sequence("Seq1", "-P-R");
112 aseq1.createDatasetSequence();
115 * First with no mappings
117 AlignedCodonFrame acf = new AlignedCodonFrame();
119 assertNull(acf.getMappedCodon(seq1.getDatasetSequence(), 0));
122 * Set up the mappings for the exons (upper-case bases)
124 MapList map = new MapList(new int[] { 2, 4, 6, 6, 8, 9 }, new int[] {
126 acf.addMap(seq1.getDatasetSequence(), aseq1.getDatasetSequence(), map);
128 assertEquals("[G, T, A]", Arrays.toString(acf.getMappedCodon(
129 aseq1.getDatasetSequence(), 1)));
130 assertEquals("[C, T, T]", Arrays.toString(acf.getMappedCodon(
131 aseq1.getDatasetSequence(), 2)));