public void map(Text key, SequencedFragment value, Context context) throws IOException, InterruptedException { Read read = new Read(key.toString(), value.getSequence().toString(), value.getQuality().toString()); context.write(new LongWritable(1), new AvroValue<>(read)); } }
@Test public void testConvertQualitySangerToIllumina() { frag.setSequence(new Text("AGTAGTAGTAGTAGTAGTAGTAGTAGTAGT")); frag.setQuality(new Text("[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[")); SequencedFragment.convertQuality(frag.getQuality(), FormatConstants.BaseQualityEncoding.Sanger, FormatConstants.BaseQualityEncoding.Illumina); assertEquals("zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz", frag.getQuality().toString()); }
@Test public void testConvertQualityIlluminaToSanger() { frag.setSequence(new Text("AGTAGTAGTAGTAGTAGTAGTAGTAGTAGT")); frag.setQuality(new Text("zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz")); SequencedFragment.convertQuality(frag.getQuality(), FormatConstants.BaseQualityEncoding.Illumina, FormatConstants.BaseQualityEncoding.Sanger); assertEquals("[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[", frag.getQuality().toString()); }
private void verifyInputQualityConfig() throws IOException { writeToTempFastq(illuminaFastqWithPhred64Quality); split = new FileSplit(new Path(tempFastq.toURI().toString()), 0, illuminaFastqWithPhred64Quality.length(), null); FastqRecordReader reader = new FastqRecordReader(conf, split); boolean found = reader.next(key, fragment); assertTrue(found); assertEquals("CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", fragment.getQuality().toString()); }
private void qualityConfigTest() throws IOException { writeToTempQseq(sangerQseq); split = new FileSplit(new Path(tempQseq.toURI().toString()), 0, sangerQseq.length(), null); QseqRecordReader reader = new QseqRecordReader(conf, split); assertTrue(reader.next(key, fragment)); assertEquals("###########################################################################################", fragment.getQuality().toString()); }
@Test(expected=FormatException.class) public void testConvertQualityIlluminaOutOfRange() { frag.setSequence(new Text("AGTAGTAGTAGTAGTAGTAGTAGTAGTAGT")); frag.setQuality(new Text("zzz=zzzzzzzzzzzzzzzzzzzzzzzzzz")); SequencedFragment.convertQuality(frag.getQuality(), FormatConstants.BaseQualityEncoding.Illumina, FormatConstants.BaseQualityEncoding.Sanger); }
@Test public void testVerifyQualitySangerOutOfRange() { frag.setSequence(new Text("AGTAGTAGTAGTAGTAGTAGTAGTAGTAGT")); frag.setQuality(new Text("#############################" + Character.toString((char)127))); // over range assertEquals(29, SequencedFragment.verifyQuality(frag.getQuality(), FormatConstants.BaseQualityEncoding.Sanger)); frag.setQuality(new Text("##### ########################")); // under range assertEquals(5, SequencedFragment.verifyQuality(frag.getQuality(), FormatConstants.BaseQualityEncoding.Sanger)); }
@Test(expected=IllegalArgumentException.class) public void testConvertQualityNoop() { frag.setSequence(new Text("AGTAGTAGTAGTAGTAGTAGTAGTAGTAGT")); frag.setQuality(new Text("[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[")); SequencedFragment.convertQuality(frag.getQuality(), FormatConstants.BaseQualityEncoding.Sanger, FormatConstants.BaseQualityEncoding.Sanger); }
@Test(expected=FormatException.class) public void testConvertQualitySangerUnderRange() { frag.setSequence(new Text("AGTAGTAGTAGTAGTAGTAGTAGTAGTAGT")); frag.setQuality(new Text("### ##########################")); SequencedFragment.convertQuality(frag.getQuality(), FormatConstants.BaseQualityEncoding.Sanger, FormatConstants.BaseQualityEncoding.Illumina); }
@Test public void testEqualsQuality() { frag.getQuality().append("AAAA".getBytes(), 0, 4); assertFalse( frag.equals(frag2) ); frag2.getQuality().append("AAAA".getBytes(), 0, 4); assertTrue( frag.equals(frag2) ); }
@Test public void testVerifyQualitySangerOk() { frag.setSequence(new Text("AGTAGTAGTAGTAGTAGTAGTAGTAGTAGT")); frag.setQuality(new Text("##############################")); assertEquals(-1, SequencedFragment.verifyQuality(frag.getQuality(), FormatConstants.BaseQualityEncoding.Sanger)); }
@Test public void testVerifyQualityIlluminaOutOfRange() { frag.setSequence(new Text("AGTAGTAGTAGTAGTAGTAGTAGTAGTAGT")); frag.setQuality(new Text("zzz=zzzzzzzzzzzzzzzzzzzzzzzzzz")); assertEquals(3, SequencedFragment.verifyQuality(frag.getQuality(), FormatConstants.BaseQualityEncoding.Illumina)); }
@Test public void testVerifyQualityIlluminaOk() { frag.setSequence(new Text("AGTAGTAGTAGTAGTAGTAGTAGTAGTAGT")); frag.setQuality(new Text("zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz")); assertEquals(-1, SequencedFragment.verifyQuality(frag.getQuality(), FormatConstants.BaseQualityEncoding.Illumina)); }
@Test public void testReadFastqWithIdTwice() throws IOException { writeToTempFastq(fastqWithIdTwice); split = new FileSplit(new Path(tempFastq.toURI().toString()), 0, fastqWithIdTwice.length(), null); FastqRecordReader reader = new FastqRecordReader(conf, split); boolean retval = reader.next(key, fragment); assertTrue(retval); assertEquals("ERR020229.10880 HWI-ST168_161:1:1:1373:2042/1", key.toString()); assertEquals("TTGGATGATAGGGATTATTTGACTCGAATATTGGAAATAGCTGTTTATATTTTTTAAAAATGGTCTGTAACTGGTGACAGGACGCTTCGAT", fragment.getSequence().toString()); assertEquals("###########################################################################################", fragment.getQuality().toString()); retval = reader.next(key, fragment); assertFalse(retval); }
@Test public void testSimple() throws IOException { writer.write(null, fragment); writer.close(null); String[] lines = new String(outputBuffer.toByteArray(), "US-ASCII").split("\n"); assertEquals(4, lines.length); String idLine = lines[0]; assertTrue(idLine.startsWith("@")); compareMetadata(fragment, idLine); assertEquals(fragment.getSequence().toString(), lines[1]); assertEquals("+", lines[2]); assertEquals(fragment.getQuality().toString(), lines[3]); }
@Test public void testReadFastqWithAmpersandQuality() throws IOException { writeToTempFastq(fastqWithAmpersandQuality); // split doesn't start at 0, forcing reader to advance looking for first complete record split = new FileSplit(new Path(tempFastq.toURI().toString()), 3, fastqWithAmpersandQuality.length(), null); FastqRecordReader reader = new FastqRecordReader(conf, split); boolean retval = reader.next(key, fragment); assertTrue(retval); assertEquals("ERR020229.10880 HWI-ST168_161:1:1:1373:2042/1", key.toString()); assertEquals("TTGGATGATAGGGATTATTTGACTCGAATATTGGAAATAGCTGTTTATATTTTTTAAAAATGGTCTGTAACTGGTGACAGGACGCTTCGAT", fragment.getSequence().toString()); assertEquals("###########################################################################################", fragment.getQuality().toString()); retval = reader.next(key, fragment); assertFalse(retval); }
@Test public void testReadStartInMiddle() throws IOException { writeToTempQseq(twoQseq); split = new FileSplit(new Path(tempQseq.toURI().toString()), 10, twoQseq.length() - 10, null); QseqRecordReader reader = new QseqRecordReader(conf, split); assertEquals(oneQseq.length() + 1, reader.getPos()); // The start of the second record. We +1 for the \n that is not in oneQseq assertEquals(0.0, reader.getProgress(), 0.01); boolean retval = reader.next(key, fragment); assertTrue(retval); assertEquals("ERR020229:10883:1:1:1796:2044:2", key.toString()); assertEquals("TGAGCAGATGTGCTAAAGCTGCTTCTCCCCTAGGATCATTTGTACCTACCAGACTCAGGGAAAGGGGTGAGAATTGGGCCGTGGGGCAAGG", fragment.getSequence().toString()); assertEquals("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", fragment.getQuality().toString()); assertEquals(twoQseq.length(), reader.getPos()); // now should be at the end of the data assertEquals(1.0, reader.getProgress(), 0.01); retval = reader.next(key, fragment); assertFalse(retval); }
@Test public void testReadFromStart() throws IOException { FastqRecordReader reader = createReaderForOneFastq(); assertEquals(0, reader.getPos()); assertEquals(0.0, reader.getProgress(), 0.01); boolean retval = reader.next(key, fragment); assertTrue(retval); assertEquals("ERR020229.10880 HWI-ST168_161:1:1:1373:2042/1", key.toString()); assertEquals("TTGGATGATAGGGATTATTTGACTCGAATATTGGAAATAGCTGTTTATATTTTTTAAAAATGGTCTGTAACTGGTGACAGGACGCTTCGAT", fragment.getSequence().toString()); assertEquals("###########################################################################################", fragment.getQuality().toString()); assertEquals(oneFastq.length(), reader.getPos()); assertEquals(1.0, reader.getProgress(), 0.01); retval = reader.next(key, fragment); assertFalse(retval); }
@Test public void testReadFromStart() throws IOException { QseqRecordReader reader = createReaderForOneQseq(); assertEquals(0, reader.getPos()); assertEquals(0.0, reader.getProgress(), 0.01); boolean retval = reader.next(key, fragment); assertTrue(retval); //System.err.println("in testReadFromStart quality: " + fragment.getQuality().toString()); assertEquals("ERR020229:10880:1:1:1373:2042:1", key.toString()); assertEquals("TTGGATGATAGGGATTATTTGACTCGAATATTGGAAATAGCTGTTTATATTTTTTAAAAATGGTCTGTAACTGGTGACAGGACGCTTCGAT", fragment.getSequence().toString()); assertEquals("###########################################################################################", fragment.getQuality().toString()); assertEquals(oneQseq.length(), reader.getPos()); assertEquals(1.0, reader.getProgress(), 0.01); retval = reader.next(key, fragment); assertFalse(retval); }
@Test public void testInitialState() { assertNotNull(frag.getSequence()); assertNotNull(frag.getQuality()); assertNull(frag.getInstrument()); assertNull(frag.getRunNumber()); assertNull(frag.getFlowcellId()); assertNull(frag.getLane()); assertNull(frag.getTile()); assertNull(frag.getXpos()); assertNull(frag.getYpos()); assertNull(frag.getRead()); assertNull(frag.getFilterPassed()); assertNull(frag.getControlNumber()); assertNull(frag.getIndexSequence()); assertNotNull(frag.toString()); }