Java Code Examples for htsjdk.samtools.SAMRecord#setReadPairedFlag()
The following examples show how to use
htsjdk.samtools.SAMRecord#setReadPairedFlag() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ReadContextCounterTest.java From hmftools with GNU General Public License v3.0 | 6 votes |
@NotNull public static SAMRecord buildSamRecord(final int alignmentStart, @NotNull final String cigar, @NotNull final String readString, @NotNull final String qualities) { final SAMRecord record = new SAMRecord(null); record.setAlignmentStart(alignmentStart); record.setCigarString(cigar); record.setReadString(readString); record.setReadNegativeStrandFlag(false); record.setBaseQualityString(qualities); record.setMappingQuality(20); record.setDuplicateReadFlag(false); record.setReadUnmappedFlag(false); record.setProperPairFlag(true); record.setReadPairedFlag(true); return record; }
Example 2
Source File: Read.java From cramtools with Apache License 2.0 | 6 votes |
SAMRecord secondSAMRecord(SAMFileHeader header) { SAMRecord r = new SAMRecord(header); r.setReadName(evidenceRecord.getReadName()); r.setReferenceName(evidenceRecord.Chromosome); r.setAlignmentStart(Integer.valueOf(evidenceRecord.MateOffsetInReference) + 1); r.setMappingQuality(Integer.valueOf(evidenceRecord.ScoreAllele0)); r.setReadPairedFlag(true); r.setReadUnmappedFlag(false); r.setReadNegativeStrandFlag(negative); r.setFirstOfPairFlag(evidenceRecord.side == 1); r.setSecondOfPairFlag(!r.getFirstOfPairFlag()); r.setCigar(new Cigar(Utils.toCigarOperatorList(secondHalf.samCigarElements))); r.setReadBases(Utils.toByteArray(secondHalf.readBasesBuf)); r.setBaseQualities(Utils.toByteArray(secondHalf.readScoresBuf)); r.setAttribute("GC", Utils.toString(secondHalf.gcList)); r.setAttribute("GS", Utils.toString(secondHalf.gsBuf)); r.setAttribute("GQ", SAMUtils.phredToFastq(Utils.toByteArray(secondHalf.gqBuf))); return r; }
Example 3
Source File: Read.java From cramtools with Apache License 2.0 | 6 votes |
SAMRecord firstSAMRecord(SAMFileHeader header) { SAMRecord r = new SAMRecord(header); r.setReadName(evidenceRecord.getReadName()); r.setReferenceName(evidenceRecord.Chromosome); r.setAlignmentStart(Integer.valueOf(evidenceRecord.OffsetInReference) + 1); r.setMappingQuality(Integer.valueOf(evidenceRecord.ScoreAllele0)); r.setReadPairedFlag(true); r.setReadUnmappedFlag(false); r.setReadNegativeStrandFlag(negative); r.setFirstOfPairFlag(evidenceRecord.side == 0); r.setSecondOfPairFlag(!r.getFirstOfPairFlag()); r.setCigar(new Cigar(Utils.toCigarOperatorList(firstHalf.samCigarElements))); r.setReadBases(Utils.toByteArray(firstHalf.readBasesBuf)); r.setBaseQualities(Utils.toByteArray(firstHalf.readScoresBuf)); r.setAttribute("GC", Utils.toString(firstHalf.gcList)); r.setAttribute("GS", Utils.toString(firstHalf.gsBuf)); r.setAttribute("GQ", SAMUtils.phredToFastq(Utils.toByteArray(firstHalf.gqBuf))); return r; }
Example 4
Source File: PalindromeArtifactClipReadTransformerUnitTest.java From gatk with BSD 3-Clause "New" or "Revised" License | 6 votes |
private static GATKRead makeRead(final SAMFileHeader header, final String contig, final int readStart, final int fragmentLength, final byte[] bases, final byte[] qual, final String cigar) { final SAMRecord read = new SAMRecord(header); read.setReferenceName(contig); read.setAlignmentStart(readStart); read.setReadPairedFlag(true); read.setReadUnmappedFlag(false); read.setMateUnmappedFlag(false); read.setMateReferenceName("Mate"); read.setReadNegativeStrandFlag(false); read.setMateNegativeStrandFlag(true); read.setReadBases(bases); read.setBaseQualities(qual); final int mateStart = readStart + fragmentLength - bases.length; read.setMateAlignmentStart(mateStart); read.setInferredInsertSize(fragmentLength); read.setProperPairFlag(true); read.setCigarString(cigar); return new SAMRecordToGATKReadAdapter(read); }
Example 5
Source File: FastqToSam.java From picard with MIT License | 6 votes |
private SAMRecord createSamRecord(final SAMFileHeader header, final String baseName, final FastqRecord frec, final boolean paired) { final SAMRecord srec = new SAMRecord(header); srec.setReadName(baseName); srec.setReadString(frec.getReadString()); srec.setReadUnmappedFlag(true); srec.setAttribute(ReservedTagConstants.READ_GROUP_ID, READ_GROUP_NAME); final byte[] quals = StringUtil.stringToBytes(frec.getBaseQualityString()); convertQuality(quals, QUALITY_FORMAT); for (final byte qual : quals) { final int uQual = qual & 0xff; if (uQual < MIN_Q || uQual > MAX_Q) { throw new PicardException("Base quality " + uQual + " is not in the range " + MIN_Q + ".." + MAX_Q + " for read " + frec.getReadHeader()); } } srec.setBaseQualities(quals); if (paired) { srec.setReadPairedFlag(true); srec.setMateUnmappedFlag(true); } return srec ; }
Example 6
Source File: MergeBamAlignmentTest.java From picard with MIT License | 6 votes |
private void addAlignmentForMostStrategy( final SAMFileWriter writer, final SAMRecord unmappedRecord, final MostDistantStrategyAlignmentSpec spec, final boolean reverse) { final SAMRecord alignedRecord = new SAMRecord(writer.getFileHeader()); alignedRecord.setReadName(unmappedRecord.getReadName()); alignedRecord.setReadBases(unmappedRecord.getReadBases()); alignedRecord.setBaseQualities(unmappedRecord.getBaseQualities()); alignedRecord.setReferenceName(spec.sequence); alignedRecord.setAlignmentStart(spec.alignmentStart); alignedRecord.setReadNegativeStrandFlag(reverse); alignedRecord.setCigarString(unmappedRecord.getReadBases().length + "M"); alignedRecord.setMappingQuality(spec.mapQ); alignedRecord.setReadPairedFlag(unmappedRecord.getReadPairedFlag()); alignedRecord.setFirstOfPairFlag(unmappedRecord.getFirstOfPairFlag()); alignedRecord.setSecondOfPairFlag(unmappedRecord.getSecondOfPairFlag()); alignedRecord.setMateUnmappedFlag(true); writer.addAlignment(alignedRecord); }
Example 7
Source File: MergeBamAlignmentTest.java From picard with MIT License | 6 votes |
private void addAlignmentsForBestFragmentMapqStrategy( final SAMFileWriter writer, final SAMRecord unmappedRecord, final String sequence, final int[] mapqs) { boolean reverse = false; int alignmentStart = 1; for (final int mapq : mapqs) { final SAMRecord alignedRecord = new SAMRecord(writer.getFileHeader()); alignedRecord.setReadName(unmappedRecord.getReadName()); alignedRecord.setReadBases(unmappedRecord.getReadBases()); alignedRecord.setBaseQualities(unmappedRecord.getBaseQualities()); alignedRecord.setReferenceName(sequence); alignedRecord.setAlignmentStart(alignmentStart); alignmentStart += 10; // Any old position will do alignedRecord.setReadNegativeStrandFlag(reverse); reverse = !reverse; alignedRecord.setCigarString(unmappedRecord.getReadBases().length + "M"); alignedRecord.setMappingQuality(mapq); alignedRecord.setReadPairedFlag(unmappedRecord.getReadPairedFlag()); alignedRecord.setFirstOfPairFlag(unmappedRecord.getFirstOfPairFlag()); alignedRecord.setSecondOfPairFlag(unmappedRecord.getSecondOfPairFlag()); alignedRecord.setMateUnmappedFlag(true); writer.addAlignment(alignedRecord); } }
Example 8
Source File: DefaultSamFilterTest.java From rtg-tools with BSD 2-Clause "Simplified" License | 5 votes |
public void testFilterRecordByFlags() { final SamFilterParams.SamFilterParamsBuilder builder = SamFilterParams.builder(); final SAMRecord rec = new SAMRecord(new SAMFileHeader()); // Not unmapped but alignment position == 0 rec.setReadUnmappedFlag(true); // Unmapped with alignment position == 0 assertTrue(new DefaultSamFilter(builder.create()).acceptRecord(rec)); builder.excludeUnmapped(true); assertFalse(new DefaultSamFilter(builder.create()).acceptRecord(rec)); rec.setReadUnmappedFlag(false); // Mapped with alignment position == 10 rec.setAlignmentStart(10); assertTrue(new DefaultSamFilter(builder.create()).acceptRecord(rec)); rec.setDuplicateReadFlag(true); // Now a duplicate assertTrue(new DefaultSamFilter(builder.create()).acceptRecord(rec)); builder.excludeDuplicates(true); assertFalse(new DefaultSamFilter(builder.create()).acceptRecord(rec)); builder.excludeDuplicates(false); rec.setReadPairedFlag(true); // Now paired-end builder.excludeUnmated(true); assertFalse(new DefaultSamFilter(builder.create()).acceptRecord(rec)); rec.setProperPairFlag(true); // Now properly paired (i.e. no longer unmated) assertTrue(new DefaultSamFilter(builder.create()).acceptRecord(rec)); builder.excludeMated(true); assertFalse(new DefaultSamFilter(builder.create()).acceptRecord(rec)); }
Example 9
Source File: FastqRead.java From cramtools with Apache License 2.0 | 5 votes |
public SAMRecord toSAMRecord(SAMFileHeader header) { SAMRecord record = new SAMRecord(header); String name = null; if (data[nameLen - 1] == '/' && Character.isDigit(data[nameLen])) name = new String(data, 1, nameLen - 2); else name = new String(data, 1, nameLen - 2); record.setReadName(name); int readLen = (data.length - this.nameLen - 4 - 1) / 2; byte[] bases = Arrays.copyOfRange(data, nameLen + 2, nameLen + 2 + readLen); record.setReadBases(bases); byte[] scores = Arrays.copyOfRange(data, nameLen + 3 + 1 + readLen + 1, nameLen + 3 + 1 + 2 * readLen + 1); record.setBaseQualityString(new String(scores)); record.setReadUnmappedFlag(true); switch (templateIndex) { case 0: record.setReadPairedFlag(false); break; case 1: record.setReadPairedFlag(true); record.setFirstOfPairFlag(true); break; case 2: record.setReadPairedFlag(true); record.setSecondOfPairFlag(true); break; default: break; } return record; }
Example 10
Source File: UmiUtilTest.java From picard with MIT License | 5 votes |
@Test(dataProvider = "topStrandDataProvider") public void testIsTopStrand(final int referenceIndex, final int alignmentStart, final int mateReferenceIndex, final int mateAlignmentStart, final boolean firstOfPairFlag, final boolean negativeStrandFlag, final boolean mateNegativeStrandFlag, final boolean mapped, final boolean mateMapped, final UmiUtil.ReadStrand strand) { final int readLength = 15; final int contigLength = 500; final SAMFileHeader header = new SAMFileHeader(); final SAMSequenceDictionary sequenceDictionary = new SAMSequenceDictionary(); sequenceDictionary.addSequence(new SAMSequenceRecord("chr1", contigLength)); sequenceDictionary.addSequence(new SAMSequenceRecord("chr2", contigLength)); header.setSequenceDictionary(sequenceDictionary); final SAMRecord rec = new SAMRecord(header); rec.setReadUnmappedFlag(!mapped); rec.setMateUnmappedFlag(!mateMapped); rec.setReadPairedFlag(true); rec.setCigarString(readLength + "M"); rec.setAttribute("MC", readLength + "M"); rec.setReferenceIndex(referenceIndex); rec.setAlignmentStart(alignmentStart); rec.setMateReferenceIndex(mateReferenceIndex); rec.setMateAlignmentStart(mateAlignmentStart); rec.setFirstOfPairFlag(firstOfPairFlag); rec.setReadNegativeStrandFlag(negativeStrandFlag); rec.setMateNegativeStrandFlag(mateNegativeStrandFlag); Assert.assertEquals(UmiUtil.getStrand(rec), strand); }
Example 11
Source File: MergeBamAlignmentTest.java From picard with MIT License | 5 votes |
private SAMRecord makeRead(final SAMFileHeader alignedHeader, final SAMRecord unmappedRec, final HitSpec hitSpec, final boolean firstOfPair, final int hitIndex) { if (hitSpec == null) return null; final SAMRecord rec = makeRead(alignedHeader, unmappedRec, hitSpec, hitIndex); rec.setReadPairedFlag(true); if (firstOfPair) { rec.setFirstOfPairFlag(true); rec.setAlignmentStart(hitIndex + 1); } else { rec.setSecondOfPairFlag(true); rec.setAlignmentStart(hitIndex + 201); } return rec; }
Example 12
Source File: FastqToSam.java From picard with MIT License | 5 votes |
/** Creates a simple SAM file from a single fastq file. */ protected int doUnpaired(final FastqReader freader, final SAMFileWriter writer) { int readCount = 0; final ProgressLogger progress = new ProgressLogger(LOG); for ( ; freader.hasNext() ; readCount++) { final FastqRecord frec = freader.next(); final SAMRecord srec = createSamRecord(writer.getFileHeader(), SequenceUtil.getSamReadNameFromFastqHeader(frec.getReadHeader()) , frec, false) ; srec.setReadPairedFlag(false); writer.addAlignment(srec); progress.record(srec); } return readCount; }
Example 13
Source File: SamCompareUtilsTest.java From rtg-tools with BSD 2-Clause "Simplified" License | 5 votes |
public void test() { final SAMFileHeader header = new SAMFileHeader(); header.setSequenceDictionary(new SAMSequenceDictionary(Arrays.asList(new SAMSequenceRecord("raga", 100), new SAMSequenceRecord("yaga", 100), new SAMSequenceRecord("zaga", 100)))); final SAMRecord rec1 = new SAMRecord(header); rec1.setReferenceIndex(1); final SAMRecord rec2 = new SAMRecord(header); rec2.setReferenceIndex(2); assertEquals(-1, SamCompareUtils.compareSamRecords(rec1, rec2)); assertEquals(1, SamCompareUtils.compareSamRecords(rec2, rec1)); rec1.setReferenceIndex(2); rec1.setAlignmentStart(50); rec2.setAlignmentStart(25); assertEquals(1, SamCompareUtils.compareSamRecords(rec1, rec2)); assertEquals(-1, SamCompareUtils.compareSamRecords(rec2, rec1)); rec1.setReadPairedFlag(true); rec2.setReadPairedFlag(true); rec1.setProperPairFlag(true); rec2.setProperPairFlag(false); rec1.setAlignmentStart(25); assertEquals(-1, SamCompareUtils.compareSamRecords(rec1, rec2)); assertEquals(1, SamCompareUtils.compareSamRecords(rec2, rec1)); rec2.setProperPairFlag(true); rec1.setReadUnmappedFlag(true); assertEquals(1, SamCompareUtils.compareSamRecords(rec1, rec2)); assertEquals(-1, SamCompareUtils.compareSamRecords(rec2, rec1)); rec2.setReadUnmappedFlag(true); assertEquals(0, SamCompareUtils.compareSamRecords(rec1, rec2)); assertEquals(0, SamCompareUtils.compareSamRecords(rec2, rec1)); rec1.setReferenceIndex(-1); assertEquals(1, SamCompareUtils.compareSamRecords(rec1, rec2)); assertEquals(-1, SamCompareUtils.compareSamRecords(rec2, rec1)); rec2.setReferenceIndex(-1); assertEquals(0, SamCompareUtils.compareSamRecords(rec2, rec1)); }
Example 14
Source File: MergeBamAlignmentTest.java From picard with MIT License | 4 votes |
private void testBestFragmentMapqStrategy(final String testName, final int[] firstMapQs, final int[] secondMapQs, final boolean includeSecondary, final int expectedFirstMapq, final int expectedSecondMapq) throws Exception { final File unmappedSam = File.createTempFile("unmapped.", ".sam"); unmappedSam.deleteOnExit(); final SAMFileWriterFactory factory = new SAMFileWriterFactory(); final SAMFileHeader header = new SAMFileHeader(); header.setSortOrder(SAMFileHeader.SortOrder.queryname); final String readName = "theRead"; final SAMRecord firstUnmappedRead = new SAMRecord(header); firstUnmappedRead.setReadName(readName); firstUnmappedRead.setReadString("ACGTACGTACGTACGT"); firstUnmappedRead.setBaseQualityString("5555555555555555"); firstUnmappedRead.setReadUnmappedFlag(true); firstUnmappedRead.setMateUnmappedFlag(true); firstUnmappedRead.setReadPairedFlag(true); firstUnmappedRead.setFirstOfPairFlag(true); final SAMRecord secondUnmappedRead = new SAMRecord(header); secondUnmappedRead.setReadName(readName); secondUnmappedRead.setReadString("TCGAACGTTCGAACTG"); secondUnmappedRead.setBaseQualityString("6666666666666666"); secondUnmappedRead.setReadUnmappedFlag(true); secondUnmappedRead.setMateUnmappedFlag(true); secondUnmappedRead.setReadPairedFlag(true); secondUnmappedRead.setSecondOfPairFlag(true); final SAMFileWriter unmappedWriter = factory.makeSAMWriter(header, false, unmappedSam); unmappedWriter.addAlignment(firstUnmappedRead); unmappedWriter.addAlignment(secondUnmappedRead); unmappedWriter.close(); final File alignedSam = File.createTempFile("aligned.", ".sam"); alignedSam.deleteOnExit(); final String sequence = "chr1"; // Populate the header with SAMSequenceRecords header.setSequenceDictionary(SAMSequenceDictionaryExtractor.extractDictionary(sequenceDict2.toPath())); final SAMFileWriter alignedWriter = factory.makeSAMWriter(header, false, alignedSam); addAlignmentsForBestFragmentMapqStrategy(alignedWriter, firstUnmappedRead, sequence, firstMapQs); addAlignmentsForBestFragmentMapqStrategy(alignedWriter, secondUnmappedRead, sequence, secondMapQs); alignedWriter.close(); final File output = File.createTempFile("testBestFragmentMapqStrategy." + testName, ".sam"); output.deleteOnExit(); doMergeAlignment(unmappedSam, Collections.singletonList(alignedSam), null, null, null, null, false, true, false, 1, "0", "1.0", "align!", "myAligner", true, fasta, output, SamPairUtil.PairOrientation.FR, MergeBamAlignment.PrimaryAlignmentStrategy.BestEndMapq, null, includeSecondary, null, null); final SamReader reader = SamReaderFactory.makeDefault().open(output); int numFirstRecords = 0; int numSecondRecords = 0; int firstPrimaryMapq = -1; int secondPrimaryMapq = -1; for (final SAMRecord rec: reader) { Assert.assertTrue(rec.getReadPairedFlag()); if (rec.getFirstOfPairFlag()) ++numFirstRecords; else if (rec.getSecondOfPairFlag()) ++ numSecondRecords; else Assert.fail("unpossible!"); if (!rec.getReadUnmappedFlag() && !rec.getNotPrimaryAlignmentFlag()) { if (rec.getFirstOfPairFlag()) { Assert.assertEquals(firstPrimaryMapq, -1); firstPrimaryMapq = rec.getMappingQuality(); } else { Assert.assertEquals(secondPrimaryMapq, -1); secondPrimaryMapq = rec.getMappingQuality(); } } else if (rec.getNotPrimaryAlignmentFlag()) { Assert.assertTrue(rec.getMateUnmappedFlag()); } } reader.close(); Assert.assertEquals(firstPrimaryMapq, expectedFirstMapq); Assert.assertEquals(secondPrimaryMapq, expectedSecondMapq); if (!includeSecondary) { Assert.assertEquals(numFirstRecords, 1); Assert.assertEquals(numSecondRecords, 1); } else { // If no alignments for an end, there will be a single unmapped record Assert.assertEquals(numFirstRecords, Math.max(1, firstMapQs.length)); Assert.assertEquals(numSecondRecords, Math.max(1, secondMapQs.length)); } }
Example 15
Source File: MergeBamAlignmentTest.java From picard with MIT License | 4 votes |
/** * Confirm that paired reads are rejected by PrimaryAlignmentStrategy.EarliestFragment. */ @Test(expectedExceptions = UnsupportedOperationException.class) public void testEarliestFragmentStrategyPaired() throws Exception { final File output = File.createTempFile("mergeTest", ".sam"); output.deleteOnExit(); final File unmappedSam = File.createTempFile("unmapped.", ".sam"); unmappedSam.deleteOnExit(); final SAMFileWriterFactory factory = new SAMFileWriterFactory(); final SAMFileHeader header = new SAMFileHeader(); header.setSortOrder(SAMFileHeader.SortOrder.queryname); final String cigar = "16M"; final SAMRecord firstOfPair = new SAMRecord(header); firstOfPair.setReadName("theRead"); firstOfPair.setReadString("ACGTACGTACGTACGT"); firstOfPair.setBaseQualityString("5555555555555555"); firstOfPair.setReadUnmappedFlag(true); firstOfPair.setReadPairedFlag(true); firstOfPair.setFirstOfPairFlag(true); final SAMRecord secondOfPair = new SAMRecord(header); secondOfPair.setReadName("theRead"); secondOfPair.setReadString("ACGTACGTACGTACGT"); secondOfPair.setBaseQualityString("5555555555555555"); secondOfPair.setReadUnmappedFlag(true); secondOfPair.setReadPairedFlag(true); secondOfPair.setSecondOfPairFlag(true); SamPairUtil.setMateInfo(firstOfPair, secondOfPair); final SAMFileWriter unmappedWriter = factory.makeSAMWriter(header, false, unmappedSam); unmappedWriter.addAlignment(firstOfPair); unmappedWriter.addAlignment(secondOfPair); unmappedWriter.close(); final File alignedSam = File.createTempFile("aligned.", ".sam"); alignedSam.deleteOnExit(); // Populate the header with SAMSequenceRecords header.setSequenceDictionary(SAMSequenceDictionaryExtractor.extractDictionary(sequenceDict2.toPath())); // Create 2 alignments for each end of pair final SAMFileWriter alignedWriter = factory.makeSAMWriter(header, false, alignedSam); for (int i = 1; i <= 2; ++i) { final SAMRecord firstOfPairAligned = new SAMRecord(header); firstOfPairAligned.setReadName(firstOfPair.getReadName()); firstOfPairAligned.setReadBases(firstOfPair.getReadBases()); firstOfPairAligned.setBaseQualities(firstOfPair.getBaseQualities()); firstOfPairAligned.setReferenceName("chr1"); firstOfPairAligned.setAlignmentStart(i); firstOfPairAligned.setCigarString(cigar); firstOfPairAligned.setMappingQuality(100); firstOfPairAligned.setReadPairedFlag(true); firstOfPairAligned.setFirstOfPairFlag(true); firstOfPairAligned.setAttribute(SAMTag.HI.name(), i); final SAMRecord secondOfPairAligned = new SAMRecord(header); secondOfPairAligned.setReadName(secondOfPair.getReadName()); secondOfPairAligned.setReadBases(secondOfPair.getReadBases()); secondOfPairAligned.setBaseQualities(secondOfPair.getBaseQualities()); secondOfPairAligned.setReferenceName("chr1"); secondOfPairAligned.setAlignmentStart(i + 10); secondOfPairAligned.setCigarString(cigar); secondOfPairAligned.setMappingQuality(100); secondOfPairAligned.setReadPairedFlag(true); secondOfPairAligned.setSecondOfPairFlag(true); secondOfPairAligned.setAttribute(SAMTag.HI.name(), i); SamPairUtil.setMateInfo(firstOfPairAligned, secondOfPairAligned); alignedWriter.addAlignment(firstOfPairAligned); alignedWriter.addAlignment(secondOfPairAligned); } alignedWriter.close(); doMergeAlignment(unmappedSam, Collections.singletonList(alignedSam), null, null, null, null, false, true, false, 1, "0", "1.0", "align!", "myAligner", true, fasta, output, SamPairUtil.PairOrientation.FR, MergeBamAlignment.PrimaryAlignmentStrategy.EarliestFragment, null, null, null, null); Assert.fail("Exception was not thrown"); }
Example 16
Source File: ClusterDataToSamConverter.java From picard with MIT License | 4 votes |
/** * Creates a new SAM record from the basecall data */ private SAMRecord createSamRecord(final ReadData readData, final String readName, final boolean isPf, final boolean firstOfPair, final String unmatchedBarcode, final String barcodeQuality, final List<String> molecularIndexes, final List<String> molecularIndexQualities) { final SAMRecord sam = new SAMRecord(null); sam.setReadName(readName); sam.setReadBases(readData.getBases()); sam.setBaseQualities(readData.getQualities()); // Flag values sam.setReadPairedFlag(isPairedEnd); sam.setReadUnmappedFlag(true); sam.setReadFailsVendorQualityCheckFlag(!isPf); if (isPairedEnd) { sam.setMateUnmappedFlag(true); sam.setFirstOfPairFlag(firstOfPair); sam.setSecondOfPairFlag(!firstOfPair); } if (filters.filterOut(sam)) { sam.setAttribute(ReservedTagConstants.XN, 1); } if (this.readGroupId != null) { sam.setAttribute(SAMTag.RG.name(), readGroupId); } // If it's a barcoded run and it has been decided that the original BC value should be added to the record, do it if (unmatchedBarcode != null) { sam.setAttribute(SAMTag.BC.name(), unmatchedBarcode); if (barcodeQuality != null ) { sam.setAttribute(SAMTag.QT.name(), barcodeQuality); } } if (!molecularIndexes.isEmpty()) { if (!this.MOLECULAR_INDEX_TAG.isEmpty()) { sam.setAttribute(this.MOLECULAR_INDEX_TAG, String.join(MOLECULAR_INDEX_, molecularIndexes)); } if (!this.MOLECULAR_INDEX_QUALITY_TAG.isEmpty()) { sam.setAttribute(this.MOLECULAR_INDEX_QUALITY_TAG, String.join(MOLECULAR_INDEX_, molecularIndexQualities)); } if (!this.tagPerMolecularIndex.isEmpty()) { if (tagPerMolecularIndex.size() != molecularIndexes.size()) { throw new PicardException("Found " + molecularIndexes.size() + " molecular indexes but only " + tagPerMolecularIndex.size() + " SAM tags given."); } for (int i = 0; i < this.tagPerMolecularIndex.size(); i++) { sam.setAttribute(this.tagPerMolecularIndex.get(i), molecularIndexes.get(i)); } } } return sam; }
Example 17
Source File: DuplicateSamFilterTest.java From rtg-tools with BSD 2-Clause "Simplified" License | 4 votes |
public void testPairedEnd() { final DuplicateSamFilter dsf = new DuplicateSamFilter(); assertFalse(dsf.acceptRecord(null)); final SAMRecord rec1f = new SAMRecord(null); assertFalse(dsf.acceptRecord(rec1f)); final String firstReadName = "IronSheik"; final String secondReadName = "Sabu"; rec1f.setReadName(firstReadName); rec1f.setReadPairedFlag(true); rec1f.setFirstOfPairFlag(true); assertTrue(dsf.acceptRecord(rec1f)); rec1f.setSecondaryAlignment(true); final SAMRecord rec2f = new SAMRecord(null); rec2f.setReadPairedFlag(true); rec2f.setFirstOfPairFlag(true); rec2f.setReadName(secondReadName); rec2f.setSecondaryAlignment(true); final SAMRecord rec3fdup = new SAMRecord(null); rec3fdup.setReadPairedFlag(true); rec3fdup.setFirstOfPairFlag(true); rec3fdup.setReadName(firstReadName); rec3fdup.setSecondaryAlignment(true); final SAMRecord rec1s = new SAMRecord(null); rec1s.setReadName(firstReadName); rec1s.setReadPairedFlag(true); rec1s.setFirstOfPairFlag(false); rec1s.setSecondaryAlignment(true); final SAMRecord rec2s = new SAMRecord(null); rec2s.setReadPairedFlag(true); rec2s.setFirstOfPairFlag(false); rec2s.setReadName(secondReadName); rec2s.setSecondaryAlignment(true); final SAMRecord rec3sdup = new SAMRecord(null); rec3sdup.setReadPairedFlag(true); rec3sdup.setFirstOfPairFlag(false); rec3sdup.setReadName(firstReadName); rec3sdup.setSecondaryAlignment(true); assertTrue(dsf.acceptRecord(rec1f)); assertTrue(dsf.acceptRecord(rec1s)); assertTrue(dsf.acceptRecord(rec2f)); assertTrue(dsf.acceptRecord(rec2s)); assertFalse(dsf.acceptRecord(rec1f)); assertFalse(dsf.acceptRecord(rec1s)); assertFalse(dsf.acceptRecord(rec3fdup)); assertFalse(dsf.acceptRecord(rec3sdup)); }