@Test(expected=IllegalArgumentException.class) public void testNoNullSequence() { frag.setSequence(null); }
@Test public void testConvertUnknowns() throws IOException, UnsupportedEncodingException { String seq = "AAAAANNNNN"; fragment.setSequence(new Text(seq)); writer.write(null, fragment); writer.close(null); String[] fields = new String(outputBuffer.toByteArray(), "US-ASCII").split("\t"); assertEquals(seq.replace("N", "."), fields[8]); }
@Test public void testBaseQualities() throws IOException { // ensure sanger qualities are converted to illumina String seq = "AAAAAAAAAA"; String qual = "##########"; fragment.setSequence(new Text(seq)); fragment.setQuality(new Text(qual)); writer.write(null, fragment); writer.close(null); String[] fields = new String(outputBuffer.toByteArray(), "US-ASCII").split("\t"); assertEquals(qual.replace("#", "B"), fields[9]); }
@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 testBaseQualitiesInIllumina() throws IOException { Configuration conf = new Configuration(); conf.set("hbam.fastq-output.base-quality-encoding", "illumina"); writer.setConf(conf); // ensure sanger qualities are converted to illumina String seq = "AAAAAAAAAA"; String qual = "##########"; fragment.setSequence(new Text(seq)); fragment.setQuality(new Text(qual)); writer.write(null, fragment); writer.close(null); String[] lines = new String(outputBuffer.toByteArray(), "US-ASCII").split("\n"); assertEquals(qual.replace("#", "B"), lines[3]); }
@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 public void testConfigureOutputInSanger() throws IOException { String seq = "AAAAAAAAAA"; String qual = "##########"; fragment.setSequence(new Text(seq)); fragment.setQuality(new Text(qual)); Configuration conf = new Configuration(); conf.set("hbam.qseq-output.base-quality-encoding", "sanger"); writer.setConf(conf); writer.write(null, fragment); writer.close(null); String[] fields = new String(outputBuffer.toByteArray(), "US-ASCII").split("\t"); assertEquals(qual, fields[9]); }
@Test public void testSerializationWithSeq() throws IOException { frag.setSequence(new Text("AGTAGTAGTAGTAGTAGTAGTAGTAGTAGT")); frag.setQuality(new Text("##############################")); assertEquals(frag, cloneBySerialization(frag)); }
@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 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()); }
@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 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 testVerifyQualityIlluminaOk() { frag.setSequence(new Text("AGTAGTAGTAGTAGTAGTAGTAGTAGTAGT")); frag.setQuality(new Text("zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz")); assertEquals(-1, SequencedFragment.verifyQuality(frag.getQuality(), FormatConstants.BaseQualityEncoding.Illumina)); }
@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 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 public void testSerializationWithFields() throws IOException { frag.setSequence(new Text("AGTAGTAGTAGTAGTAGTAGTAGTAGTAGT")); frag.setQuality(new Text("BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB")); frag.setInstrument("machine"); frag.setLane(3); frag.setRead(1); frag.setIndexSequence("CAT"); assertEquals(frag, cloneBySerialization(frag)); }
@Before public void setup() throws IOException { fragment = new SequencedFragment(); fragment.setInstrument("instrument"); fragment.setRunNumber(1); fragment.setFlowcellId("xyz"); fragment.setLane(2); fragment.setTile(1001); fragment.setXpos(10000); fragment.setYpos(9999); fragment.setRead(1); fragment.setFilterPassed(true); fragment.setIndexSequence("CATCAT"); fragment.setSequence(new Text("AAAAAAAAAA")); fragment.setQuality(new Text("##########")); outputBuffer = new ByteArrayOutputStream(); dataOutput = new DataOutputStream(outputBuffer); writer = new QseqRecordWriter(new Configuration(), dataOutput); }
@Before public void setup() throws IOException { fragment = new SequencedFragment(); fragment.setInstrument("instrument"); fragment.setRunNumber(1); fragment.setFlowcellId("xyz"); fragment.setLane(2); fragment.setTile(1001); fragment.setXpos(10000); fragment.setYpos(9999); fragment.setRead(1); fragment.setFilterPassed(true); fragment.setControlNumber(33); fragment.setIndexSequence("CATCAT"); fragment.setSequence(new Text("AAAAAAAAAA")); fragment.setQuality(new Text("##########")); outputBuffer = new ByteArrayOutputStream(); dataOutput = new DataOutputStream(outputBuffer); writer = new FastqRecordWriter(new Configuration(), dataOutput); }
@Test public void testToString() { String seq = "AGTAGTAGTAGTAGTAGTAGTAGTAGTAGT"; String qual = "##############################"; frag.setSequence(new Text(seq)); frag.setQuality(new Text(qual)); frag.setInstrument("machine"); frag.setRunNumber(123); frag.setFlowcellId("flowcell"); frag.setLane(3); frag.setTile(1001); frag.setXpos(1234); frag.setYpos(4321); frag.setIndexSequence("CAT"); frag.setRead(1); assertEquals("machine\t123\tflowcell\t3\t1001\t1234\t4321\tCAT\t1\t" + seq + "\t" + qual + "\t1", frag.toString()); }