public void write(Text key, SequencedFragment seq) throws IOException { // write the id line out.write('@'); if (key != null) out.write(key.getBytes(), 0, key.getLength()); else out.write(makeId(seq).getBytes(UTF8)); out.write('\n'); // write the sequence and separator out.write(seq.getSequence().getBytes(), 0, seq.getSequence().getLength()); out.write(PLUS_LINE); // now the quality if (baseQualityFormat == BaseQualityEncoding.Sanger) out.write(seq.getQuality().getBytes(), 0, seq.getQuality().getLength()); else if (baseQualityFormat == BaseQualityEncoding.Illumina) { buffer.set(seq.getQuality()); SequencedFragment.convertQuality(buffer, BaseQualityEncoding.Sanger, baseQualityFormat); out.write(buffer.getBytes(), 0, buffer.getLength()); } else throw new RuntimeException("FastqOutputFormat: unknown base quality format " + baseQualityFormat); // and the final newline out.write('\n'); }
public void write(Text key, SequencedFragment seq) throws IOException { // write the id line out.write('@'); if (key != null) out.write(key.getBytes(), 0, key.getLength()); else out.write(makeId(seq).getBytes(UTF8)); out.write('\n'); // write the sequence and separator out.write(seq.getSequence().getBytes(), 0, seq.getSequence().getLength()); out.write(PLUS_LINE); // now the quality if (baseQualityFormat == BaseQualityEncoding.Sanger) out.write(seq.getQuality().getBytes(), 0, seq.getQuality().getLength()); else if (baseQualityFormat == BaseQualityEncoding.Illumina) { buffer.set(seq.getQuality()); SequencedFragment.convertQuality(buffer, BaseQualityEncoding.Sanger, baseQualityFormat); out.write(buffer.getBytes(), 0, buffer.getLength()); } else throw new RuntimeException("FastqOutputFormat: unknown base quality format " + baseQualityFormat); // and the final newline out.write('\n'); }
public void write(Text key, SequencedFragment seq) throws IOException { // write the id line out.write('@'); if (key != null) out.write(key.getBytes(), 0, key.getLength()); else out.write(makeId(seq).getBytes(UTF8)); out.write('\n'); // write the sequence and separator out.write(seq.getSequence().getBytes(), 0, seq.getSequence().getLength()); out.write(PLUS_LINE); // now the quality if (baseQualityFormat == BaseQualityEncoding.Sanger) out.write(seq.getQuality().getBytes(), 0, seq.getQuality().getLength()); else if (baseQualityFormat == BaseQualityEncoding.Illumina) { buffer.set(seq.getQuality()); SequencedFragment.convertQuality(buffer, BaseQualityEncoding.Sanger, baseQualityFormat); out.write(buffer.getBytes(), 0, buffer.getLength()); } else throw new RuntimeException("FastqOutputFormat: unknown base quality format " + baseQualityFormat); // and the final newline out.write('\n'); }
private void postProcessSequencedFragment(SequencedFragment fragment) { byte[] bytes = fragment.getSequence().getBytes(); // replace . with N for (int i = 0; i < fieldLengths[8]; ++i) if (bytes[i] == '.') bytes[i] = 'N'; if (qualityEncoding == BaseQualityEncoding.Illumina) { // convert illumina to sanger scale SequencedFragment.convertQuality(fragment.getQuality(), BaseQualityEncoding.Illumina, BaseQualityEncoding.Sanger); } else // sanger qualities. { int outOfRangeElement = SequencedFragment.verifyQuality(fragment.getQuality(), BaseQualityEncoding.Sanger); if (outOfRangeElement >= 0) { throw new FormatException("qseq base quality score out of range for Sanger Phred+33 format (found " + (fragment.getQuality().getBytes()[outOfRangeElement] - FormatConstants.SANGER_OFFSET) + ").\n" + "Although Sanger format has been requested, maybe qualities are in Illumina Phred+64 format?\n"); } } } }
private void postProcessSequencedFragment(SequencedFragment fragment) { byte[] bytes = fragment.getSequence().getBytes(); // replace . with N for (int i = 0; i < fieldLengths[8]; ++i) if (bytes[i] == '.') bytes[i] = 'N'; if (qualityEncoding == BaseQualityEncoding.Illumina) { // convert illumina to sanger scale SequencedFragment.convertQuality(fragment.getQuality(), BaseQualityEncoding.Illumina, BaseQualityEncoding.Sanger); } else // sanger qualities. { int outOfRangeElement = SequencedFragment.verifyQuality(fragment.getQuality(), BaseQualityEncoding.Sanger); if (outOfRangeElement >= 0) { throw new FormatException("qseq base quality score out of range for Sanger Phred+33 format (found " + (fragment.getQuality().getBytes()[outOfRangeElement] - FormatConstants.SANGER_OFFSET) + ").\n" + "Although Sanger format has been requested, maybe qualities are in Illumina Phred+64 format?\n"); } } } }
private void postProcessSequencedFragment(SequencedFragment fragment) { byte[] bytes = fragment.getSequence().getBytes(); // replace . with N for (int i = 0; i < fieldLengths[8]; ++i) if (bytes[i] == '.') bytes[i] = 'N'; if (qualityEncoding == BaseQualityEncoding.Illumina) { // convert illumina to sanger scale SequencedFragment.convertQuality(fragment.getQuality(), BaseQualityEncoding.Illumina, BaseQualityEncoding.Sanger); } else // sanger qualities. { int outOfRangeElement = SequencedFragment.verifyQuality(fragment.getQuality(), BaseQualityEncoding.Sanger); if (outOfRangeElement >= 0) { throw new FormatException("qseq base quality score out of range for Sanger Phred+33 format (found " + (fragment.getQuality().getBytes()[outOfRangeElement] - FormatConstants.SANGER_OFFSET) + ").\n" + "Although Sanger format has been requested, maybe qualities are in Illumina Phred+64 format?\n"); } } } }
@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(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 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()); }
SequencedFragment.convertQuality(value.getQuality(), BaseQualityEncoding.Illumina, BaseQualityEncoding.Sanger); } catch (FormatException e) { throw new FormatException(e.getMessage() + " Position: " + makePositionMessage() + "; Sequence ID: " + key);
try { SequencedFragment.convertQuality(value.getQuality(), BaseQualityEncoding.Illumina, BaseQualityEncoding.Sanger); } catch (FormatException e) {
SequencedFragment.convertQuality(value.getQuality(), BaseQualityEncoding.Illumina, BaseQualityEncoding.Sanger); } catch (FormatException e) { throw new FormatException(e.getMessage() + " Position: " + makePositionMessage() + "; Sequence ID: " + key);
SequencedFragment.convertQuality(value.getQuality(), BaseQualityEncoding.Illumina, BaseQualityEncoding.Sanger); } catch (FormatException e) { throw new FormatException(e.getMessage() + " Position: " + makePositionMessage() + "; Sequence ID: " + key);