/** * Avoids decoding binary block to get read length. */ @Override public int getReadLength() { if (mReadLengthValid) { return mReadLength; } return super.getReadLength(); }
/** * Avoids decoding binary block to get read length. */ @Override public int getReadLength() { if (mReadLengthValid) { return mReadLength; } return super.getReadLength(); }
/** * Avoids decoding binary block to get read length. */ @Override public int getReadLength() { if (mReadLengthValid) { return mReadLength; } return super.getReadLength(); }
private static Integer stratifyInsertLength(final SAMRecord sam) { return Math.min( sam.getReadLength() * 10, Math.abs(sam.getInferredInsertSize())); }
/** * Checks whether if the read has any bases. * * Empty reads can be dangerous as it may have no cigar strings, no read names and * other missing attributes. * * @return true if the read has no bases */ public boolean isEmpty() { return super.getReadBases() == null || super.getReadLength() == 0; }
private static Integer stratifyInsertLength(final SAMRecord sam) { return Math.min( sam.getReadLength() * 10, Math.abs(sam.getInferredInsertSize())); }
public static byte[] getEndSoftClipBaseQualities(SAMRecord record) { byte[] seq = record.getBaseQualities(); if (seq == null) return null; if (seq == SAMRecord.NULL_QUALS) return null; seq = Arrays.copyOfRange(seq, record.getReadLength() - getEndSoftClipLength(record), record.getReadLength()); return seq; }
public static byte[] getEndSoftClipBases(SAMRecord record) { byte[] seq = record.getReadBases(); if (seq == null) { return null; } if (seq == SAMRecord.NULL_SEQUENCE) { return null; } seq = Arrays.copyOfRange(seq, record.getReadLength() - getEndSoftClipLength(record), record.getReadLength()); return seq; }
@Override public CycleBin stratify(final RecordAndOffset recordAndOffset, final SAMLocusAndReference locusInfo) { final int readCycle = stratifyCycle(recordAndOffset); final double relativePosition = (double) readCycle / recordAndOffset.getRecord().getReadLength(); return CycleBin.valueOf(relativePosition); }
@Override public CycleBin stratify(final RecordAndOffset recordAndOffset, final SAMLocusAndReference locusInfo) { final int readCycle = stratifyCycle(recordAndOffset); final double relativePosition = (double) readCycle / recordAndOffset.getRecord().getReadLength(); return CycleBin.valueOf(relativePosition); }
public static int getReadLengthIncludingHardClipping(SAMRecord r) { final int lengthWithHardClipping = r.getReadLength() + r.getCigar().getCigarElements().stream() .filter(ce -> ce.getOperator() == CigarOperator.HARD_CLIP) .mapToInt(ce -> ce.getLength()).sum(); return lengthWithHardClipping; } }
@Test(dataProvider = "readBasesArrayGetReadLengthData") public void testReadBasesGetReadLength(final byte[] readBases, final int readLength) { final SAMRecord sam = createTestRecordHelper(); sam.setReadBases(readBases); Assert.assertEquals(sam.getReadLength(), readLength); }
@Test(dataProvider = "readBasesStringGetReadLengthData") public void testReadStringGetReadLength(final String readBases, final int readLength) { final SAMRecord sam = createTestRecordHelper(); sam.setReadString(readBases); Assert.assertEquals(sam.getReadLength(), readLength); }
public static int getMappedLength(SAMRecord read) { int length = read.getReadLength(); for (CigarElement elem : read.getCigar().getCigarElements()) { if (elem.getOperator() == CigarOperator.S) { length -= elem.getLength(); } } return length; }
public static int getUnclippedLength(SAMRecord read) { int softClipLen = 0; for (CigarElement elem : read.getCigar().getCigarElements()) { if (elem.getOperator() == CigarOperator.S) { softClipLen += elem.getLength(); } } return read.getReadLength() - softClipLen; }
public static void trim(SAMRecord read, int startCount, int endCount) { int readLength = read.getReadLength(); read.setReadBases(Arrays.copyOfRange(read.getReadBases(), startCount, readLength - endCount)); read.setBaseQualities(Arrays.copyOfRange(read.getBaseQualities(), startCount, readLength - endCount)); if (read.getCigar() != null && read.getCigar().getCigarElements().size() > 0) { read.setAlignmentStart(read.getAlignmentStart() + CigarUtil.offsetOf(read.getCigar(), startCount)); read.setCigar(CigarUtil.trimReadBases(read.getCigar(), startCount, endCount)); assert (read.getReadLength() == read.getCigar().getReadLength()); } }
private boolean shouldAssemble(SAMRecord read) { return ( (!read.getDuplicateReadFlag()) && (!read.getReadFailsVendorQualityCheckFlag()) && read.getReadLength() > 0 && (read.getMappingQuality() >= this.minMapqForAssembly || read.getReadUnmappedFlag()) && SAMRecordUtils.isPrimary(read)); // Was previously an id check, so supplemental / secondary alignments could be included }
private static Character stratifyReadBase(final RecordAndOffset recordAndOffset, int offset) { final ReadDirection direction = ReadDirection.of(recordAndOffset.getRecord()); final int requestedOffset = recordAndOffset.getOffset() + offset * (direction == ReadDirection.POSITIVE ? 1 : -1); if (requestedOffset < 0 || requestedOffset >= recordAndOffset.getRecord().getReadLength()) { return null; } else { return stratifySequenceBase(recordAndOffset.getRecord().getReadBases()[requestedOffset], direction == ReadDirection.NEGATIVE); } }
private void assertGoodRead(final SAMRecord read, final ArtificialBAMBuilder bamBuilder) { Assert.assertEquals(read.getReadLength(), bamBuilder.getReadLength()); Assert.assertEquals(read.getReadBases().length, bamBuilder.getReadLength()); Assert.assertEquals(read.getBaseQualities().length, bamBuilder.getReadLength()); Assert.assertTrue(read.getAlignmentStart() >= bamBuilder.getAlignmentStart()); Assert.assertNotNull(read.getReadGroup()); } }
private static Character stratifyReadBase(final RecordAndOffset recordAndOffset, int offset) { final ReadDirection direction = ReadDirection.of(recordAndOffset.getRecord()); final int requestedOffset = recordAndOffset.getOffset() + offset * (direction == ReadDirection.POSITIVE ? 1 : -1); if (requestedOffset < 0 || requestedOffset >= recordAndOffset.getRecord().getReadLength()) { return null; } else { return stratifySequenceBase(recordAndOffset.getRecord().getReadBases()[requestedOffset], direction == ReadDirection.NEGATIVE); } }