/*
* verify variant feature(s) added to gene
*/
- List<SequenceFeature> geneFeatures = al.getSequenceAt(0).findFeatures(
- 2, 2);
- assertEquals(geneFeatures.size(), 1);
+ List<SequenceFeature> geneFeatures = al.getSequenceAt(0)
+ .getSequenceFeatures();
+ assertEquals(geneFeatures.size(), 2);
SequenceFeature sf = geneFeatures.get(0);
assertEquals(sf.getFeatureGroup(), "VCF");
+ assertEquals(sf.getBegin(), 2);
+ assertEquals(sf.getEnd(), 2);
assertEquals(sf.getType(), SequenceOntologyI.SEQUENCE_VARIANT);
assertEquals(sf.getScore(), 5.08130e-03, 0.000001f);
assertEquals("A,T", sf.getValue(Gff3Helper.ALLELES));
+ sf = geneFeatures.get(1);
+ assertEquals(sf.getFeatureGroup(), "VCF");
+ assertEquals(sf.getBegin(), 4);
+ assertEquals(sf.getEnd(), 4);
+ assertEquals(sf.getType(), SequenceOntologyI.SEQUENCE_VARIANT);
+ assertEquals(sf.getScore(), 3.08130e-03, 0.000001f);
+ assertEquals("G,C", sf.getValue(Gff3Helper.ALLELES));
+
/*
* verify variant feature(s) added to transcript
*/
List<SequenceFeature> transcriptFeatures = al.getSequenceAt(1)
- .findFeatures(4, 4);
+ .getSequenceFeatures();
assertEquals(transcriptFeatures.size(), 1);
sf = transcriptFeatures.get(0);
assertEquals(sf.getFeatureGroup(), "VCF");
+ assertEquals(sf.getBegin(), 2);
+ assertEquals(sf.getEnd(), 2);
assertEquals(sf.getType(), SequenceOntologyI.SEQUENCE_VARIANT);
assertEquals(sf.getScore(), 3.08130e-03, 0.000001f);
assertEquals("G,C", sf.getValue(Gff3Helper.ALLELES));
*/
SequenceI peptide = al.getSequenceAt(1)
.getDBRefs()[0].getMap().getTo();
- List<SequenceFeature> proteinFeatures = peptide.findFeatures(1, 6);
+ List<SequenceFeature> proteinFeatures = peptide.getSequenceFeatures();
assertEquals(proteinFeatures.size(), 1);
sf = proteinFeatures.get(0);
assertEquals(sf.getFeatureGroup(), "VCF");
- assertEquals(sf.getBegin(), 2);
- assertEquals(sf.getEnd(), 2);
+ assertEquals(sf.getBegin(), 1);
+ assertEquals(sf.getEnd(), 1);
assertEquals(sf.getType(), SequenceOntologyI.SEQUENCE_VARIANT);
assertEquals(sf.getDescription(), "p.Ser1Thr");
}
return alignment;
}
+ /**
+ * Test with 'gene' and 'transcript' mapped to the reverse strand of the
+ * chromosome. The VCF variant positions (in forward coordinates) should get
+ * correctly located on sequence positions.
+ *
+ * @throws IOException
+ */
@Test(groups = "Functional")
public void testLoadVCF_reverseStrand() throws IOException
{
- // TODO a test with reverse strand mapping of
- // gene and transcript to chromosome
+ AlignmentI al = buildAlignment();
+
+ /*
+ * invert forward to reverse strand mappings
+ */
+ List<int[]> to = al.getSequenceAt(0).getGeneLoci().mapping
+ .getToRanges();
+ int temp = to.get(0)[0];
+ to.get(0)[0] = to.get(0)[1];
+ to.get(0)[1] = temp;
+ to = al.getSequenceAt(1).getGeneLoci().mapping.getToRanges();
+ to.get(0)[0] = to.get(0)[1];
+ to.get(0)[1] = temp;
+ to.get(1)[0] = to.get(1)[1];
+ to.get(1)[1] = temp;
+ int[] tmp2 = to.get(0);
+ to.set(0, to.get(1));
+ to.set(1, tmp2);
+
+ VCFLoader loader = new VCFLoader(al);
+
+ File f = makeVcf();
+
+ loader.loadVCF(f.getPath(), null);
+
+ /*
+ * verify variant feature(s) added to gene
+ */
+ List<SequenceFeature> geneFeatures = al.getSequenceAt(0)
+ .getSequenceFeatures();
+ assertEquals(geneFeatures.size(), 2);
+ SequenceFeature sf = geneFeatures.get(0);
+ assertEquals(sf.getFeatureGroup(), "VCF");
+ assertEquals(sf.getBegin(), 2);
+ assertEquals(sf.getEnd(), 2);
+ assertEquals(sf.getType(), SequenceOntologyI.SEQUENCE_VARIANT);
+ assertEquals(sf.getScore(), 5.08130e-03, 0.000001f);
+ assertEquals("A,T", sf.getValue(Gff3Helper.ALLELES));
+
+ sf = geneFeatures.get(1);
+ assertEquals(sf.getFeatureGroup(), "VCF");
+ assertEquals(sf.getBegin(), 4);
+ assertEquals(sf.getEnd(), 4);
+ assertEquals(sf.getType(), SequenceOntologyI.SEQUENCE_VARIANT);
+ assertEquals(sf.getScore(), 3.08130e-03, 0.000001f);
+ assertEquals("G,C", sf.getValue(Gff3Helper.ALLELES));
+
+ /*
+ * verify variant feature(s) added to transcript
+ */
+ List<SequenceFeature> transcriptFeatures = al.getSequenceAt(1)
+ .getSequenceFeatures();
+ assertEquals(transcriptFeatures.size(), 1);
+ sf = transcriptFeatures.get(0);
+ assertEquals(sf.getFeatureGroup(), "VCF");
+ assertEquals(sf.getBegin(), 2);
+ assertEquals(sf.getEnd(), 2);
+ assertEquals(sf.getType(), SequenceOntologyI.SEQUENCE_VARIANT);
+ assertEquals(sf.getScore(), 3.08130e-03, 0.000001f);
+ assertEquals("G,C", sf.getValue(Gff3Helper.ALLELES));
+
+ /*
+ * verify variant feature(s) computed and added to protein
+ * first codon AGC varies to ACC giving S/T
+ */
+ SequenceI peptide = al.getSequenceAt(1).getDBRefs()[0].getMap().getTo();
+ List<SequenceFeature> proteinFeatures = peptide.getSequenceFeatures();
+ assertEquals(proteinFeatures.size(), 1);
+ sf = proteinFeatures.get(0);
+ assertEquals(sf.getFeatureGroup(), "VCF");
+ assertEquals(sf.getBegin(), 1);
+ assertEquals(sf.getEnd(), 1);
+ assertEquals(sf.getType(), SequenceOntologyI.SEQUENCE_VARIANT);
+ assertEquals(sf.getDescription(), "p.Ser1Thr");
}
}