/** * the query sequence itself is unmapped. This method name is misspelled. * Use setReadUnmappedFlag instead. * @deprecated */ public void setReadUmappedFlag(final boolean flag) { setReadUnmappedFlag(flag); }
/** * the query sequence itself is unmapped. This method name is misspelled. * Use {@link #setReadUnmappedFlag} instead. * @deprecated */ @Deprecated public void setReadUmappedFlag(final boolean flag) { setReadUnmappedFlag(flag); }
/** * the query sequence itself is unmapped. This method name is misspelled. * Use {@link #setReadUnmappedFlag} instead. * @deprecated */ @Deprecated public void setReadUmappedFlag(final boolean flag) { setReadUnmappedFlag(flag); }
/** * Converts a {@link FastqRecord} into a simple unmapped {@link SAMRecord}. * * <p>This method allows to pass a {@link BiConsumer} to add the information from the record in * a customizable manner. * * @param record object to encode. * @param header header for the returned object. * @param custom function to customize encoding. Note that default information might be overriden. */ public static SAMRecord asSAMRecord(final FastqRecord record, final SAMFileHeader header, final BiConsumer<FastqRecord, SAMRecord> custom) { // construct the SAMRecord and set the unmapped flag final SAMRecord samRecord = new SAMRecord(header); samRecord.setReadUnmappedFlag(true); // get the read name from the FastqRecord correctly formatted final String readName = SequenceUtil.getSamReadNameFromFastqHeader(record.getReadName()); // set the basic information from the FastqRecord samRecord.setReadName(readName); samRecord.setReadBases(record.getReadBases()); samRecord.setBaseQualities(record.getBaseQualities()); custom.accept(record, samRecord); return samRecord; }
/** * Converts a {@link FastqRecord} into a simple unmapped {@link SAMRecord}. * * <p>This method allows to pass a {@link BiConsumer} to add the information from the record in * a customizable manner. * * @param record object to encode. * @param header header for the returned object. * @param custom function to customize encoding. Note that default information might be overriden. */ public static SAMRecord asSAMRecord(final FastqRecord record, final SAMFileHeader header, final BiConsumer<FastqRecord, SAMRecord> custom) { // construct the SAMRecord and set the unmapped flag final SAMRecord samRecord = new SAMRecord(header); samRecord.setReadUnmappedFlag(true); // get the read name from the FastqRecord correctly formatted final String readName = SequenceUtil.getSamReadNameFromFastqHeader(record.getReadName()); // set the basic information from the FastqRecord samRecord.setReadName(readName); samRecord.setReadBases(record.getReadBases()); samRecord.setBaseQualities(record.getBaseQualities()); custom.accept(record, samRecord); return samRecord; }
/** * Converts a record with mapq below the given mapq threshold to unmapped * reads * * @param record * SAMRecord to convert * @param minMapq * minimum MAPQ to avoid unmapping */ public static SAMRecord lowMapqToUnmapped(SAMRecord record, double minMapq) { boolean primaryUnmapped = lowMapqToUnmapped_SA(record, minMapq); if (record.getMappingQuality() < minMapq || primaryUnmapped) { record.setReadUnmappedFlag(true); } if (record.getReadPairedFlag()) { Integer mateMapq = record.getIntegerAttribute(SAMTag.MQ.name()); if (mateMapq != null && mateMapq < minMapq) { record.setMateUnmappedFlag(true); } } return record; }
@Test(dataProvider = "homopolymerStratifierData") public void testHomopolymerLength(final int offset, final boolean readStrandPositive, final byte referenceBase, final Object expectedStratum, final ReadBaseStratification.RecordAndOffsetStratifier<?> recordAndOffsetStratifier) { final SAMSequenceRecord samSequenceRecord = new SAMSequenceRecord("chr1", 200); final SAMFileHeader samFileHeader = new SAMFileHeader(); final SAMRecord samRecord = new SAMRecord(samFileHeader); samRecord.setReadBases("CATGGGGAAAAAAAAA".getBytes()); samRecord.setReadUnmappedFlag(false); samRecord.setReadNegativeStrandFlag(!readStrandPositive); samRecord.setAlignmentStart(1); SamLocusIterator.RecordAndOffset recordAndOffset = new SamLocusIterator.RecordAndOffset(samRecord, offset); SamLocusIterator.LocusInfo locusInfo = new SamLocusIterator.LocusInfo(samSequenceRecord, 1); final SAMLocusAndReference locusAndReference = new SAMLocusAndReference(locusInfo, referenceBase); Assert.assertEquals(recordAndOffsetStratifier.stratify(recordAndOffset, locusAndReference), expectedStratum); }
@Override public String getRemoteEvidenceID() { SAMRecord remote = this.getSAMRecord().deepCopy(); remote.setReferenceName(remoteAlignment.rname); remote.setAlignmentStart(remoteAlignment.pos); remote.setReadUnmappedFlag(false); remote.setReadNegativeStrandFlag(remoteAlignment.isNegativeStrand); remote.setCigar(remoteAlignment.cigar); remote.setAttribute(SAMTag.SA.name(), new ChimericAlignment(this.getSAMRecord()).toString()); SplitReadEvidence remoteEvidence = SplitReadEvidence.create(source, remote).get(0); return source.getContext().getEvidenceIDGenerator().getEvidenceID(remoteEvidence); } @Override
/** * This checks that all read bases returned in the record from {@link Sam2CramRecordFactory#createCramRecord(SAMRecord)} * are from the BAM read base set. */ @Test public void testReadBaseNormalization() { final SAMFileHeader header = new SAMFileHeader(); final SAMRecord record = new SAMRecord(header); record.setReadName("test"); record.setReadUnmappedFlag(true); record.setReadBases(SequenceUtil.getIUPACCodesString().getBytes()); record.setBaseQualities(SAMRecord.NULL_QUALS); final Sam2CramRecordFactory sam2CramRecordFactory = new Sam2CramRecordFactory(null, header, CramVersions.CRAM_v3); final CramCompressionRecord cramRecord = sam2CramRecordFactory.createCramRecord(record); Assert.assertNotEquals(cramRecord.readBases, record.getReadBases()); Assert.assertEquals(cramRecord.readBases, SequenceUtil.toBamReadBasesInPlace(record.getReadBases())); }
@BeforeClass public void init() { header = ArtificialSAMUtils.createArtificialSamHeader(3, 1, ArtificialSAMUtils.DEFAULT_READ_LENGTH * 2); readMapped = createMappedRead("mapped", 1); readNoReference = createUnmappedRead("unmappedNoReference"); readUnmappedFlag = createMappedRead("unmappedFlagged", 2); readUnmappedFlag.setReadUnmappedFlag(true); readUnknownContig = createMappedRead("unknownContig", 3); readUnknownContig.setReferenceName("unknownContig"); readUnknownStart = createMappedRead("unknownStart", 1); readUnknownStart.setAlignmentStart(SAMRecord.NO_ALIGNMENT_START); }
public static void makeReadUnmapped(final SAMRecord rec) { if (rec.getReadNegativeStrandFlag()) { SAMRecordUtil.reverseComplement(rec); rec.setReadNegativeStrandFlag(false); } rec.setDuplicateReadFlag(false); rec.setReferenceIndex(SAMRecord.NO_ALIGNMENT_REFERENCE_INDEX); rec.setAlignmentStart(SAMRecord.NO_ALIGNMENT_START); rec.setCigarString(SAMRecord.NO_ALIGNMENT_CIGAR); rec.setMappingQuality(SAMRecord.NO_MAPPING_QUALITY); rec.setInferredInsertSize(0); rec.setNotPrimaryAlignmentFlag(false); rec.setProperPairFlag(false); rec.setReadUnmappedFlag(true); }
@Test public void testSimpleErrorCalculator() { final SAMSequenceRecord samSequenceRecord = new SAMSequenceRecord("chr1", 200); final SAMFileHeader samFileHeader = new SAMFileHeader(); samFileHeader.addSequence(samSequenceRecord); final SAMRecord samRecord = new SAMRecord(samFileHeader); samRecord.setReadBases("CgTGtGGAcAAAgAAA".getBytes()); final byte[] refBases = "CATGGGGAAAAAAAAA".getBytes(); final int n = refBases.length; samRecord.setReadUnmappedFlag(false); samRecord.setReadNegativeStrandFlag(true); samRecord.setAlignmentStart(1); samRecord.setReferenceIndex(0); final SimpleErrorCalculator baseErrorCalculator = new SimpleErrorCalculator(); for (int i = 0; i < n; i++) { SamLocusIterator.LocusInfo locusInfo = new SamLocusIterator.LocusInfo(samSequenceRecord, i + 1); final SAMLocusAndReference locusAndReference = new SAMLocusAndReference(locusInfo, refBases[i]); SamLocusIterator.RecordAndOffset recordAndOffset = new SamLocusIterator.RecordAndOffset(samRecord, i); baseErrorCalculator.addBase(recordAndOffset, locusAndReference); } final BaseErrorMetric metric = baseErrorCalculator.getMetric(); metric.calculateDerivedFields(); Assert.assertEquals(metric.TOTAL_BASES, n); Assert.assertEquals(metric.ERROR_BASES, 4L); }
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; }
/** * Strip mapping information from a SAMRecord. * <p> * WARNING: by clearing the secondary and supplementary flags, * this may have the affect of producing multiple distinct records with the * same read name and flags, which may lead to invalid SAM/BAM output. * Callers of this method should make sure to deal with this issue. */ public static void makeReadUnmapped(final SAMRecord rec) { if (rec.getReadNegativeStrandFlag()) { rec.reverseComplement(true); rec.setReadNegativeStrandFlag(false); } rec.setDuplicateReadFlag(false); rec.setReferenceIndex(SAMRecord.NO_ALIGNMENT_REFERENCE_INDEX); rec.setAlignmentStart(SAMRecord.NO_ALIGNMENT_START); rec.setCigarString(SAMRecord.NO_ALIGNMENT_CIGAR); rec.setMappingQuality(SAMRecord.NO_MAPPING_QUALITY); rec.setInferredInsertSize(0); rec.setSecondaryAlignment(false); rec.setSupplementaryAlignmentFlag(false); rec.setProperPairFlag(false); rec.setReadUnmappedFlag(true); }
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 ; }
/** * Strip mapping information from a SAMRecord. * <p> * WARNING: by clearing the secondary and supplementary flags, * this may have the affect of producing multiple distinct records with the * same read name and flags, which may lead to invalid SAM/BAM output. * Callers of this method should make sure to deal with this issue. */ public static void makeReadUnmapped(final SAMRecord rec) { if (rec.getReadNegativeStrandFlag()) { rec.reverseComplement(true); rec.setReadNegativeStrandFlag(false); } rec.setDuplicateReadFlag(false); rec.setReferenceIndex(SAMRecord.NO_ALIGNMENT_REFERENCE_INDEX); rec.setAlignmentStart(SAMRecord.NO_ALIGNMENT_START); rec.setCigarString(SAMRecord.NO_ALIGNMENT_CIGAR); rec.setMappingQuality(SAMRecord.NO_MAPPING_QUALITY); rec.setInferredInsertSize(0); rec.setSecondaryAlignment(false); rec.setSupplementaryAlignmentFlag(false); rec.setProperPairFlag(false); rec.setReadUnmappedFlag(true); }
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; }
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 ; }
private static void copyFlags(final CramCompressionRecord cramRecord, final SAMRecord samRecord) { samRecord.setReadPairedFlag(cramRecord.isMultiFragment()); samRecord.setProperPairFlag(cramRecord.isProperPair()); samRecord.setReadUnmappedFlag(cramRecord.isSegmentUnmapped()); samRecord.setReadNegativeStrandFlag(cramRecord.isNegativeStrand()); samRecord.setFirstOfPairFlag(cramRecord.isFirstSegment()); samRecord.setSecondOfPairFlag(cramRecord.isLastSegment()); samRecord.setSecondaryAlignment(cramRecord.isSecondaryAlignment()); samRecord.setReadFailsVendorQualityCheckFlag(cramRecord.isVendorFiltered()); samRecord.setDuplicateReadFlag(cramRecord.isDuplicate()); samRecord.setSupplementaryAlignmentFlag(cramRecord.isSupplementary()); }
private static void copyFlags(final CramCompressionRecord cramRecord, final SAMRecord samRecord) { samRecord.setReadPairedFlag(cramRecord.isMultiFragment()); samRecord.setProperPairFlag(cramRecord.isProperPair()); samRecord.setReadUnmappedFlag(cramRecord.isSegmentUnmapped()); samRecord.setReadNegativeStrandFlag(cramRecord.isNegativeStrand()); samRecord.setFirstOfPairFlag(cramRecord.isFirstSegment()); samRecord.setSecondOfPairFlag(cramRecord.isLastSegment()); samRecord.setSecondaryAlignment(cramRecord.isSecondaryAlignment()); samRecord.setReadFailsVendorQualityCheckFlag(cramRecord.isVendorFiltered()); samRecord.setDuplicateReadFlag(cramRecord.isDuplicate()); samRecord.setSupplementaryAlignmentFlag(cramRecord.isSupplementary()); }