/*
* first with no variants on dna
*/
- LinkedHashMap<Integer, String[][]> variantsMap = AlignmentUtils
+ LinkedHashMap<Integer, List<String[][]>> variantsMap = AlignmentUtils
.buildDnaVariantsMap(dna, map);
assertTrue(variantsMap.isEmpty());
- // single allele codon 1, on base 1
+ /*
+ * single allele codon 1, on base 1
+ */
SequenceFeature sf = new SequenceFeature("sequence_variant", "", 1, 1,
0f, null);
sf.setValue("alleles", "T");
+ sf.setValue("ID", "sequence_variant:rs758803211");
dna.addSequenceFeature(sf);
- // two alleles codon 2, on bases 2 and 3
+ /*
+ * two alleles codon 2, on bases 2 and 3 (distinct variants)
+ */
sf = new SequenceFeature("sequence_variant", "", 5, 5, 0f, null);
sf.setValue("alleles", "T");
+ sf.setValue("ID", "sequence_variant:rs758803212");
dna.addSequenceFeature(sf);
sf = new SequenceFeature("sequence_variant", "", 6, 6, 0f, null);
sf.setValue("alleles", "G");
+ sf.setValue("ID", "sequence_variant:rs758803213");
dna.addSequenceFeature(sf);
- // two alleles codon 3, both on base 2
+ /*
+ * two alleles codon 3, both on base 2 (one variant)
+ */
sf = new SequenceFeature("sequence_variant", "", 8, 8, 0f, null);
sf.setValue("alleles", "C, G");
+ sf.setValue("ID", "sequence_variant:rs758803214");
dna.addSequenceFeature(sf);
// no alleles on codon 4
- // alleles on codon 5 on all 3 bases
+
+ /*
+ * alleles on codon 5 on all 3 bases (distinct variants)
+ */
sf = new SequenceFeature("sequence_variant", "", 13, 13, 0f, null);
sf.setValue("alleles", "C, G"); // (C duplicates given base value)
+ sf.setValue("ID", "sequence_variant:rs758803215");
dna.addSequenceFeature(sf);
sf = new SequenceFeature("sequence_variant", "", 14, 14, 0f, null);
sf.setValue("alleles", "g, a"); // should force to upper-case
+ sf.setValue("ID", "sequence_variant:rs758803216");
dna.addSequenceFeature(sf);
sf = new SequenceFeature("sequence_variant", "", 15, 15, 0f, null);
sf.setValue("alleles", "A, T");
+ sf.setValue("ID", "sequence_variant:rs758803217");
dna.addSequenceFeature(sf);
+ /*
+ * build map - expect variants on positions 1, 2, 3, 5
+ */
variantsMap = AlignmentUtils.buildDnaVariantsMap(dna, map);
assertEquals(4, variantsMap.size());
+
+ /*
+ * one variant on protein position 1
+ */
+ assertEquals(1, variantsMap.get(1).size());
assertTrue(Arrays.deepEquals(new String[][] { { "A", "T" }, { "T" },
- { "G" } }, variantsMap.get(1)));
+ { "G" } }, variantsMap.get(1).get(0)));
+
+ /*
+ * two variants on protein position 2
+ */
+ assertEquals(2, variantsMap.get(2).size());
assertTrue(Arrays.deepEquals(new String[][] { { "A" }, { "A", "T" },
- { "A", "G" } }, variantsMap.get(2)));
+ { "A" } }, variantsMap.get(2).get(0)));
+ assertTrue(Arrays.deepEquals(new String[][] { { "A" }, { "A" },
+ { "A", "G" } }, variantsMap.get(2).get(1)));
+
+ /*
+ * one variant on protein position 3
+ */
+ assertEquals(1, variantsMap.get(3).size());
assertTrue(Arrays.deepEquals(new String[][] { { "T" },
- { "T", "C", "G" }, { "T" } }, variantsMap.get(3)));
- // duplicated bases are not removed here, handled in computePeptideVariants
+ { "T", "C", "G" }, { "T" } }, variantsMap.get(3).get(0)));
+
+ /*
+ * three variants on protein position 5
+ * duplicated bases are not removed here, handled in computePeptideVariants
+ */
+ assertEquals(3, variantsMap.get(5).size());
assertTrue(Arrays.deepEquals(new String[][] { { "C", "C", "G" },
- { "C", "G", "A" }, { "C", "A", "T" } }, variantsMap.get(5)));
+ { "C" }, { "C" } }, variantsMap.get(5).get(0)));
+ assertTrue(Arrays.deepEquals(new String[][] { { "C" },
+ { "C", "G", "A" }, { "C" } }, variantsMap.get(5).get(1)));
+ assertTrue(Arrays.deepEquals(new String[][] { { "C" }, { "C" },
+ { "C", "A", "T" } }, variantsMap.get(5).get(2)));
}
/**