{
Cache.initLogger();
}
-
+
@BeforeClass(alwaysRun = true)
public void setUpJvOptionPane()
{
sg.addSequence(cdna.getSequenceAt(0), false);
sg.setStartRes(0);
sg.setEndRes(2);
- mappedGroup = MappingUtils.mapSequenceGroup(sg, theDnaView, theProteinView);
+ mappedGroup = MappingUtils.mapSequenceGroup(sg, theDnaView,
+ theProteinView);
assertTrue(mappedGroup.getColourText());
assertSame(sg.getIdColour(), mappedGroup.getIdColour());
assertSame(sg.getOutlineColour(), mappedGroup.getOutlineColour());
// select columns 2 and 3 in DNA which span protein columns 0 and 1
sg.setStartRes(2);
sg.setEndRes(3);
- mappedGroup = MappingUtils.mapSequenceGroup(sg, theDnaView, theProteinView);
+ mappedGroup = MappingUtils.mapSequenceGroup(sg, theDnaView,
+ theProteinView);
assertTrue(mappedGroup.getColourText());
assertSame(sg.getIdColour(), mappedGroup.getIdColour());
assertSame(sg.getOutlineColour(), mappedGroup.getOutlineColour());
*/
sg.setStartRes(2);
sg.setEndRes(4);
- mappedGroup = MappingUtils.mapSequenceGroup(sg, theProteinView, theDnaView);
+ mappedGroup = MappingUtils.mapSequenceGroup(sg, theProteinView,
+ theDnaView);
assertEquals(1, mappedGroup.getStartRes());
assertEquals(13, mappedGroup.getEndRes());
// select columns 4,5 - includes Seq1:codon2 (A) only
sg.setStartRes(4);
sg.setEndRes(5);
- mappedGroup = MappingUtils.mapSequenceGroup(sg, theDnaView, theProteinView);
+ mappedGroup = MappingUtils.mapSequenceGroup(sg, theDnaView,
+ theProteinView);
assertEquals(2, mappedGroup.getStartRes());
assertEquals(2, mappedGroup.getEndRes());
// add Seq2 to dna selection cols 4-5 include codons 1 and 2 (LQ)
sg.addSequence(cdna.getSequenceAt(1), false);
- mappedGroup = MappingUtils.mapSequenceGroup(sg, theDnaView, theProteinView);
+ mappedGroup = MappingUtils.mapSequenceGroup(sg, theDnaView,
+ theProteinView);
assertEquals(2, mappedGroup.getStartRes());
assertEquals(4, mappedGroup.getEndRes());
// add Seq3 to dna selection cols 4-5 include codon 1 (Q)
sg.addSequence(cdna.getSequenceAt(2), false);
- mappedGroup = MappingUtils.mapSequenceGroup(sg, theDnaView, theProteinView);
+ mappedGroup = MappingUtils.mapSequenceGroup(sg, theDnaView,
+ theProteinView);
assertEquals(0, mappedGroup.getStartRes());
assertEquals(4, mappedGroup.getEndRes());
}
assertEquals(1, ranges.size());
assertEquals(9, ranges.get(0)[1]);
}
-
+
@Test(groups = "Functional")
public void testListToArray()
{
List<int[]> ranges = new ArrayList<>();
-
+
int[] result = MappingUtils.listToArray(ranges);
assertEquals(result.length, 0);
- ranges.add(new int[] {24, 12});
+ ranges.add(new int[] { 24, 12 });
result = MappingUtils.listToArray(ranges);
assertEquals(result.length, 2);
assertEquals(result[0], 24);
assertEquals(result[1], 12);
- ranges.add(new int[] {-7, 30});
+ ranges.add(new int[] { -7, 30 });
result = MappingUtils.listToArray(ranges);
assertEquals(result.length, 4);
assertEquals(result[0], 24);
* Test mapping a sequence group where sequences in and outside the group
* share a dataset sequence (e.g. alternative CDS for the same gene)
* <p>
- * This scenario doesn't arise after JAL-3763 changes, but test left as still valid
+ * This scenario doesn't arise after JAL-3763 changes, but test left as still
+ * valid
+ *
* @throws IOException
*/
@Test(groups = { "Functional" })
public void testFindOverlap()
{
List<int[]> ranges = new ArrayList<>();
- ranges.add(new int[] {4, 8});
- ranges.add(new int[] {10, 12});
- ranges.add(new int[] {16, 19});
-
- int[] overlap = MappingUtils.findOverlap(ranges, 5, 13);
- assertArrayEquals(overlap, new int[] {5, 12});
+ ranges.add(new int[] { 4, 8 });
+ ranges.add(new int[] { 10, 12 });
+ ranges.add(new int[] { 16, 19 });
+
+ int[] overlap = MappingUtils.findOverlap(ranges, 5, 13);
+ assertArrayEquals(overlap, new int[] { 5, 12 });
overlap = MappingUtils.findOverlap(ranges, -100, 100);
- assertArrayEquals(overlap, new int[] {4, 19});
+ assertArrayEquals(overlap, new int[] { 4, 19 });
overlap = MappingUtils.findOverlap(ranges, 7, 17);
- assertArrayEquals(overlap, new int[] {7, 17});
+ assertArrayEquals(overlap, new int[] { 7, 17 });
overlap = MappingUtils.findOverlap(ranges, 13, 15);
assertNull(overlap);
}
+
+ /**
+ * Test mapping a sequence group including a sequence which maps to more than
+ * one other sequence
+ *
+ * @throws IOException
+ */
+ @Test(groups = { "Functional" })
+ public void testMapSequenceGroup_oneToMany() throws IOException
+ {
+ /*
+ * Uniprot:FER2_ARATH has cross-refs to 10 EMBLCDS sequences;
+ * we'll just mimic 3 of them here (abbreviated)
+ * From EMBLCDS|BAE98526 [ [1, 444] ] 3:1 to [ [1, 148] ] FER2_ARATH
+ * From EMBLCDS|AAM91336 same
+ * From EMBLCDS|AAM13033 same
+ */
+ String coding = "atggcttccactgctctctca";
+ AlignmentI cds = loadAlignment(">BAE98526\n" + coding + "\n>AAM91336\n"
+ + coding + "\n>AAM13033\n" + coding + "\n",
+ FileFormat.Fasta);
+ cds.setDataset(null);
+ AlignmentI protein = loadAlignment(">FER2_ARATH\nMASTALS\n",
+ FileFormat.Fasta);
+ protein.setDataset(null);
+ AlignedCodonFrame acf = new AlignedCodonFrame();
+ MapList map = new MapList(new int[] { 1, 21 }, new int[] { 1, 7 }, 3, 1);
+ for (int seq = 0; seq < 3; seq++)
+ {
+ acf.addMap(cds.getSequenceAt(seq).getDatasetSequence(),
+ protein.getSequenceAt(0).getDatasetSequence(), map);
+ }
+ List<AlignedCodonFrame> acfList = Arrays
+ .asList(new AlignedCodonFrame[]
+ { acf });
+
+ AlignViewportI theDnaView = new AlignViewport(cds);
+ AlignViewportI theProteinView = new AlignViewport(protein);
+ protein.setCodonFrames(acfList);
+
+ /*
+ * Select FER2_ARATH in the protein
+ */
+ SequenceGroup sg = new SequenceGroup();
+ sg.setColourText(true);
+ sg.setIdColour(Color.GREEN);
+ sg.setOutlineColour(Color.LIGHT_GRAY);
+ sg.addSequence(protein.getSequenceAt(0), false);
+ sg.setEndRes(protein.getWidth() - 1);
+
+ /*
+ * Verify the mapped sequence group in dna
+ */
+ SequenceGroup mappedGroup = MappingUtils.mapSequenceGroup(sg,
+ theProteinView, theDnaView);
+ assertTrue(mappedGroup.getColourText());
+ assertSame(sg.getIdColour(), mappedGroup.getIdColour());
+ assertSame(sg.getOutlineColour(), mappedGroup.getOutlineColour());
+ assertEquals(3, mappedGroup.getSequences().size());
+ assertSame(cds.getSequenceAt(0), mappedGroup.getSequences().get(0));
+ assertSame(cds.getSequenceAt(1), mappedGroup.getSequences().get(1));
+ assertSame(cds.getSequenceAt(2), mappedGroup.getSequences().get(2));
+ assertEquals(0, mappedGroup.getStartRes());
+ assertEquals(20, mappedGroup.getEndRes()); // 21 columns (7 codons)
+
+ /*
+ * Select 2 CDS, verify peptide is mapped
+ */
+ sg.clear();
+ sg.addSequence(cds.getSequenceAt(1), false);
+ sg.addSequence(cds.getSequenceAt(0), false);
+ sg.setStartRes(0);
+ sg.setEndRes(20);
+ mappedGroup = MappingUtils.mapSequenceGroup(sg, theDnaView,
+ theProteinView);
+ assertTrue(mappedGroup.getColourText());
+ assertSame(sg.getIdColour(), mappedGroup.getIdColour());
+ assertSame(sg.getOutlineColour(), mappedGroup.getOutlineColour());
+ assertEquals(1, mappedGroup.getSequences().size());
+ assertSame(protein.getSequenceAt(0), mappedGroup.getSequences().get(0));
+ assertEquals(0, mappedGroup.getStartRes());
+ assertEquals(6, mappedGroup.getEndRes());
+ }
}