/** * Test the parsing of sequence variations from Last MAF file. * * @throws IOException */ @Test public void testLastToCompactVariations() throws IOException { // test LastToCompact convert+filtering // read fake data and convert+filter final LastToCompactMode processor = new LastToCompactMode(); final int LAST_TO_COMPACT_M_PARAM = 2; processor.setAmbiguityThreshold(LAST_TO_COMPACT_M_PARAM); processor.setInputFile("test-results/alignments/last-to-compact/last-103-variations.maf"); processor.setOutputFile("test-results/alignments/last-to-compact/last-103-variations"); processor.setTargetReferenceIdsFilename( "test-results/alignments/last-to-compact/last-reference.compact-reads"); processor.setOnlyMafFile(true); processor.setNumberOfReads(2857822); processor.setLargestQueryIndex(2857822); processor.setSmallestQueryIndex(0); processor.setPropagateQueryIds(false); processor.setPropagateTargetIds(true); processor.setQualityFilterParameters( "threshold=1"); // allow everything to pass through, important to detect all variations in // this test. processor.execute(); // read compact alignment results final AlignmentReaderImpl reader = new AlignmentReaderImpl(processor.getOutputFile()); reader.readHeader(); assertEquals(2857822, reader.getNumberOfQueries()); assertEquals(1, reader.getNumberOfTargets()); int entryIndex = 0; while (reader.hasNext()) { final Alignments.AlignmentEntry alignmentEntry = reader.next(); System.out.println(entryIndex + " entry : " + alignmentEntry); switch (entryIndex) { case 0: assertEquals(2, alignmentEntry.getSequenceVariationsCount()); final Alignments.SequenceVariation var1 = alignmentEntry.getSequenceVariations(0); assertEquals("C", var1.getTo()); assertEquals("G", var1.getFrom()); assertEquals(1, var1.getPosition()); final Alignments.SequenceVariation var2 = alignmentEntry.getSequenceVariations(1); assertEquals("C", var2.getTo()); assertEquals("A", var2.getFrom()); assertEquals(11, var2.getPosition()); break; case 1: assertEquals(1, alignmentEntry.getSequenceVariationsCount()); final Alignments.SequenceVariation var1_0 = alignmentEntry.getSequenceVariations(0); assertEquals("---", var1_0.getTo()); assertEquals("TTT", var1_0.getFrom()); assertEquals(3, var1_0.getPosition()); break; case 2: assertEquals(2, alignmentEntry.getSequenceVariationsCount()); final Alignments.SequenceVariation var2_1 = alignmentEntry.getSequenceVariations(0); assertEquals("A", var2_1.getTo()); assertEquals("G", var2_1.getFrom()); assertEquals(2, var2_1.getPosition()); final Alignments.SequenceVariation var2_2 = alignmentEntry.getSequenceVariations(1); assertEquals("A", var2_2.getTo()); assertEquals("-", var2_2.getFrom()); assertEquals(29, var2_2.getPosition()); break; default: break; } entryIndex++; } assertEquals(4, entryIndex); }