-
- @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 });
- overlap = MappingUtils.findOverlap(ranges, -100, 100);
- assertArrayEquals(overlap, new int[] { 4, 19 });
- overlap = MappingUtils.findOverlap(ranges, 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());
- }