+
+ /**
+ * Tests for the method that maps the subset of a dna sequence that has CDS
+ * (or subtype) feature.
+ */
+ @Test(groups = "Functional")
+ public void testGetCdsRanges()
+ {
+ EnsemblSeqProxy testee = new EnsemblSeqProxyAdapter();
+
+ SequenceI dnaSeq = new Sequence("dna", "aaaGGGcccAAATTTttt");
+ dnaSeq.createDatasetSequence();
+ SequenceI ds = dnaSeq.getDatasetSequence();
+
+ // CDS for dna 3-6
+ SequenceFeature sf = new SequenceFeature("CDS", "", 4, 6, 0f, null);
+ ds.addSequenceFeature(sf);
+ // exon feature should be ignored here
+ sf = new SequenceFeature("exon", "", 7, 9, 0f, null);
+ ds.addSequenceFeature(sf);
+ // CDS for dna 10-12
+ sf = new SequenceFeature("some_cds", "", 10, 12, 0f, null);
+ ds.addSequenceFeature(sf);
+
+ SequenceOntologyFactory.setInstance(new SequenceOntologyLite());
+ List<int[]> ranges = new ArrayList<int[]>();
+ int mappedLength = testee.getCdsRanges(dnaSeq, ranges);
+ assertEquals(6, mappedLength);
+ assertEquals(2, ranges.size());
+ assertEquals(4, ranges.get(0)[0]);
+ assertEquals(6, ranges.get(0)[1]);
+ assertEquals(10, ranges.get(1)[0]);
+ assertEquals(12, ranges.get(1)[1]);
+
+ }
+
+ @Test(groups = "Functional")
+ public void getGenomicRangesFromFeatures()
+ {
+
+ }
+
+ /**
+ * Tests for the method that maps the subset of a dna sequence that has CDS
+ * (or subtype) feature - case where the start codon is incomplete.
+ */
+ @Test(groups = "Functional")
+ public void testGetCdsRanges_fivePrimeIncomplete()
+ {
+ EnsemblSeqProxy testee = new EnsemblSeqProxyAdapter();
+
+ SequenceI dnaSeq = new Sequence("dna", "aaagGGCCCaaaTTTttt");
+ dnaSeq.createDatasetSequence();
+ SequenceI ds = dnaSeq.getDatasetSequence();
+
+ // CDS for dna 5-6 (incomplete codon), 7-9
+ SequenceFeature sf = new SequenceFeature("CDS", "", 5, 9, 0f, null);
+ sf.setPhase("2"); // skip 2 bases to start of next codon
+ ds.addSequenceFeature(sf);
+ ds.addSequenceFeature(sf);
+ // CDS for dna 13-15
+ sf = new SequenceFeature("some_cds", "", 13, 15, 0f, null);
+ ds.addSequenceFeature(sf);
+
+ SequenceOntologyFactory.setInstance(new SequenceOntologyLite());
+ List<int[]> ranges = new ArrayList<int[]>();
+ int mappedLength = testee.getCdsRanges(dnaSeq, ranges);
+
+ /*
+ * check the mapping starts with the first complete codon
+ */
+ assertEquals(6, mappedLength);
+ assertEquals(2, ranges.size());
+ assertEquals(7, ranges.get(0)[0]);
+ assertEquals(9, ranges.get(0)[1]);
+ assertEquals(13, ranges.get(1)[0]);
+ assertEquals(15, ranges.get(1)[1]);
+ }