1 package jalview.datamodel;
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertNull;
5 import jalview.util.MapList;
7 import java.util.Arrays;
11 public class AlignedCodonFrameTest
15 * Test the method that locates the first aligned sequence that has a mapping.
18 public void testFindAlignedSequence()
20 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[]
31 final Sequence aseq1 = new Sequence("Seq1", "-P-R");
32 aseq1.createDatasetSequence();
33 aa.addSequence(aseq1);
34 final Sequence aseq2 = new Sequence("Seq2", "-LY-");
35 aseq2.createDatasetSequence();
36 aa.addSequence(aseq2);
39 * Mapping from first DNA sequence to second AA sequence.
41 AlignedCodonFrame acf = new AlignedCodonFrame();
43 assertNull(acf.findAlignedSequence(seq1, aa));
45 MapList map = new MapList(new int[]
48 acf.addMap(seq1.getDatasetSequence(), aseq2.getDatasetSequence(), map);
51 * DNA seq1 maps to AA seq2
53 assertEquals(aa.getSequenceAt(1),
54 acf.findAlignedSequence(cdna
55 .getSequenceAt(0).getDatasetSequence(), aa));
57 assertEquals(cdna.getSequenceAt(0),
58 acf.findAlignedSequence(aa
59 .getSequenceAt(1).getDatasetSequence(), cdna));
63 * Test the method that locates the mapped codon for a protein position.
66 public void testGetMappedRegion()
68 // introns lower case, exons upper case
69 final Sequence seq1 = new Sequence("Seq1", "c-G-TA-gC-gT-T");
70 seq1.createDatasetSequence();
71 final Sequence seq2 = new Sequence("Seq2", "-TA-gG-Gg-CG-a");
72 seq2.createDatasetSequence();
74 final Sequence aseq1 = new Sequence("Seq1", "-P-R");
75 aseq1.createDatasetSequence();
76 final Sequence aseq2 = new Sequence("Seq2", "-LY-");
77 aseq2.createDatasetSequence();
80 * First with no mappings
82 AlignedCodonFrame acf = new AlignedCodonFrame();
84 assertNull(acf.getMappedRegion(seq1, aseq1, 1));
87 * Set up the mappings for the exons (upper-case bases)
89 MapList map = new MapList(new int[]
90 { 2, 4, 6, 6, 8, 9 }, new int[]
92 acf.addMap(seq1.getDatasetSequence(), aseq1.getDatasetSequence(), map);
93 map = new MapList(new int[]
94 { 1, 2, 4, 5, 7, 8 }, new int[]
96 acf.addMap(seq2.getDatasetSequence(), aseq2.getDatasetSequence(), map);
98 assertEquals("[2, 4]",
99 Arrays.toString(acf.getMappedRegion(seq1, aseq1, 1)));
100 assertEquals("[6, 6, 8, 9]",
101 Arrays.toString(acf.getMappedRegion(seq1, aseq1, 2)));
102 assertEquals("[1, 2, 4, 4]",
103 Arrays.toString(acf.getMappedRegion(seq2, aseq2, 1)));
104 assertEquals("[5, 5, 7, 8]",
105 Arrays.toString(acf.getMappedRegion(seq2, aseq2, 2)));
108 * No mapping from sequence 1 to sequence 2
110 assertNull(acf.getMappedRegion(seq1, aseq2, 1));
114 public void testGetMappedCodon()
116 final Sequence seq1 = new Sequence("Seq1", "c-G-TA-gC-gT-T");
117 seq1.createDatasetSequence();
118 final Sequence aseq1 = new Sequence("Seq1", "-P-R");
119 aseq1.createDatasetSequence();
122 * First with no mappings
124 AlignedCodonFrame acf = new AlignedCodonFrame();
126 assertNull(acf.getMappedCodon(seq1.getDatasetSequence(), 0));
129 * Set up the mappings for the exons (upper-case bases)
131 MapList map = new MapList(new int[]
132 { 2, 4, 6, 6, 8, 9 }, new int[]
134 acf.addMap(seq1.getDatasetSequence(), aseq1.getDatasetSequence(), map);
136 assertEquals("[G, T, A]", Arrays.toString(acf.getMappedCodon(
137 aseq1.getDatasetSequence(), 1)));
138 assertEquals("[C, T, T]", Arrays.toString(acf.getMappedCodon(
139 aseq1.getDatasetSequence(), 2)));