/** * Converts a {@link FastqRecord} into a simple unmapped {@link SAMRecord}. */ public static SAMRecord asSAMRecord(final FastqRecord record, final SAMFileHeader header) { return asSAMRecord(record, header, (s, r) -> {}); }
/** * Converts a {@link FastqRecord} into a simple unmapped {@link SAMRecord}. */ public static SAMRecord asSAMRecord(final FastqRecord record, final SAMFileHeader header) { return asSAMRecord(record, header, (s, r) -> {}); }
@Test public void testAsSAMRecordParsedTags() throws Exception { final String bc = "ACTG"; final String rg = "sample1"; final int fi = 1; final String customTag = "ct"; final char ct = 'a'; final String tags = String.format("%s:Z:%s\t%s:Z:%s\t%s:i:%d\t%s:A:%c", SAMTag.BC, bc, SAMTag.RG, rg, SAMTag.FI, fi, customTag, ct ); final SAMRecord samRecord = new SAMRecordSetBuilder().addFrag("test", 0, 1, false, false, "10M", null, 2); final FastqRecord record = new FastqRecord(samRecord.getReadName(), samRecord.getReadBases(), tags, samRecord.getBaseQualities()); final SAMRecord converted = FastqEncoder.asSAMRecord(record, samRecord.getHeader(), FastqEncoder.QUALITY_HEADER_PARSE_SAM_TAGS); testConvertedSAMRecord(converted, samRecord); Assert.assertEquals(converted.getAttribute(SAMTag.BC.name()), bc); Assert.assertEquals(converted.getAttribute(SAMTag.RG.name()), rg); Assert.assertEquals(converted.getAttribute(SAMTag.FI.name()), fi); Assert.assertEquals(converted.getAttribute(customTag), ct); }
@Test public void testAsSAMRecord() throws Exception { // create a random record final SAMRecord samRecord = new SAMRecordSetBuilder().addFrag("test", 0, 1, false, false, "10M", null, 2); FastqRecord fastqRecord = new FastqRecord(samRecord.getReadName(), samRecord.getReadBases(), "", samRecord.getBaseQualities()); testConvertedSAMRecord(FastqEncoder.asSAMRecord(fastqRecord, samRecord.getHeader()), samRecord); fastqRecord = new FastqRecord(samRecord.getReadName() + FastqConstants.FIRST_OF_PAIR, samRecord.getReadBases(), "", samRecord.getBaseQualities()); testConvertedSAMRecord(FastqEncoder.asSAMRecord(fastqRecord, samRecord.getHeader()), samRecord); fastqRecord = new FastqRecord(samRecord.getReadName() + FastqConstants.SECOND_OF_PAIR, samRecord.getReadBases(), "", samRecord.getBaseQualities()); testConvertedSAMRecord(FastqEncoder.asSAMRecord(fastqRecord, samRecord.getHeader()), samRecord); fastqRecord = new FastqRecord(samRecord.getReadName() + FastqConstants.SECOND_OF_PAIR, samRecord.getReadBases(), "Quality header comment", samRecord.getBaseQualities()); // default method does not include the comment header testConvertedSAMRecord(FastqEncoder.asSAMRecord(fastqRecord, samRecord.getHeader()), samRecord); // test with qualityHeaderToComment=true populates the CO tag samRecord.setAttribute(SAMTag.CO.name(), fastqRecord.getBaseQualityHeader()); testConvertedSAMRecord(FastqEncoder.asSAMRecord(fastqRecord, samRecord.getHeader(), FastqEncoder.QUALITY_HEADER_TO_COMMENT_TAG), samRecord); }