+ /**
+ * Test the method that computes the reverse complement of the alleles in a
+ * sequence_variant feature
+ */
+ @Test(groups = "Functional")
+ public void testReverseComplementAlleles()
+ {
+ String alleles = "C,G,-TAC,HGMD_MUTATION,gac";
+ SequenceFeature sf = new SequenceFeature("sequence_variant", alleles,
+ 1, 2, 0f, null);
+ sf.setValue("alleles", alleles);
+ sf.setAttributes("x=y,z;alleles=" + alleles + ";a=b,c");
+
+ EnsemblSeqProxy.reverseComplementAlleles(sf);
+ String revcomp = "G,C,GTA-,HGMD_MUTATION,gtc";
+ // verify description is updated with reverse complement
+ assertEquals(revcomp, sf.getDescription());
+ // verify alleles attribute is updated with reverse complement
+ assertEquals(revcomp, sf.getValue("alleles"));
+ // verify attributes string is updated with reverse complement
+ assertEquals("x=y,z;alleles=" + revcomp + ";a=b,c", sf.getAttributes());
+ }
+
+ @Test(groups = "Functional")
+ public void testSortFeatures()
+ {
+ SequenceFeature sf1 = new SequenceFeature("", "", 10, 15, 0f, null);
+ SequenceFeature sf2 = new SequenceFeature("", "", 8, 12, 0f, null);
+ SequenceFeature sf3 = new SequenceFeature("", "", 8, 13, 0f, null);
+ SequenceFeature sf4 = new SequenceFeature("", "", 11, 11, 0f, null);
+ SequenceFeature[] sfs = new SequenceFeature[] { sf1, sf2, sf3, sf4 };
+
+ // sort by start position ascending (forward strand)
+ // sf2 and sf3 tie and should not be reordered by sorting
+ EnsemblSeqProxy.sortFeatures(sfs, true);
+ assertArrayEquals(new SequenceFeature[] { sf2, sf3, sf1, sf4 }, sfs);
+
+ // sort by end position descending (reverse strand)
+ EnsemblSeqProxy.sortFeatures(sfs, false);
+ assertArrayEquals(new SequenceFeature[] { sf1, sf3, sf2, sf4 }, sfs);