protected boolean isUsableRead(final GATKSAMRecord read) { return !( read.getMappingQuality() == 0 || read.getMappingQuality() == QualityUtils.MAPPING_QUALITY_UNAVAILABLE ); } }
/** * Get the mapping quality of the read of this element * @return the mapping quality of the underlying SAM record */ public int getMappingQual() { return read.getMappingQuality(); }
/** * Can the read be used in comparative tests between ref / alt bases? * * @param read the read to consider * @return false if MQ is either 0 or unavailable. true otherwise. */ private boolean isUsableRead(final GATKSAMRecord read) { return( read.getMappingQuality() != 0 || read.getMappingQuality() != QualityUtils.MAPPING_QUALITY_UNAVAILABLE); }
/** * Can the read be used in comparative tests between ref / alt bases? * * @param read the read to consider * @param refLoc the reference location * @return true if this read is meaningful for comparison, false otherwise */ protected boolean isUsableRead(final GATKSAMRecord read, final int refLoc) { return !( read.getMappingQuality() == 0 || read.getMappingQuality() == QualityUtils.MAPPING_QUALITY_UNAVAILABLE ); }
@Override protected Double getElementForRead(final GATKSAMRecord read, final int refLoc) { return (double)read.getMappingQuality(); } }
protected boolean isUsableRead(final GATKSAMRecord read) { return !( read.getMappingQuality() == 0 || read.getMappingQuality() == QualityUtils.MAPPING_QUALITY_UNAVAILABLE ); }
@Override protected Double getElementForRead(final GATKSAMRecord read, final int refLoc) { return (double)read.getMappingQuality(); }
private void capMinimumReadQualities(GATKSAMRecord read, byte[] readQuals, byte[] readInsQuals, byte[] readDelQuals) { for( int kkk = 0; kkk < readQuals.length; kkk++ ) { readQuals[kkk] = (byte) Math.min( 0xff & readQuals[kkk], read.getMappingQuality()); // cap base quality by mapping quality, as in UG readQuals[kkk] = ( readQuals[kkk] < PairHMM.BASE_QUALITY_SCORE_THRESHOLD ? QualityUtils.MIN_USABLE_Q_SCORE : readQuals[kkk] ); readInsQuals[kkk] = ( readInsQuals[kkk] < QualityUtils.MIN_USABLE_Q_SCORE ? QualityUtils.MIN_USABLE_Q_SCORE : readInsQuals[kkk] ); readDelQuals[kkk] = ( readDelQuals[kkk] < QualityUtils.MIN_USABLE_Q_SCORE ? QualityUtils.MIN_USABLE_Q_SCORE : readDelQuals[kkk] ); } }
@Override protected Double getElementForPileupElement(final PileupElement p) { return (double)p.getRead().getMappingQuality(); } }
private Map<String, Object> annotateWithLikelihoods(final Map<String, PerReadAlleleLikelihoodMap> stratifiedPerReadAlleleLikelihoodMap, final VariantContext vc) { if ( stratifiedPerReadAlleleLikelihoodMap == null ) return null; int mq0 = 0; for ( PerReadAlleleLikelihoodMap likelihoodMap : stratifiedPerReadAlleleLikelihoodMap.values() ) { for (GATKSAMRecord read : likelihoodMap.getLikelihoodReadMap().keySet()) { if (read.getMappingQuality() == 0 ) mq0++; } } Map<String, Object> map = new HashMap<String, Object>(); map.put(getKeyNames().get(0), String.format("%d", mq0)); return map; }
@Override public void calculateRawData(final VariantContext vc, final Map<String, PerReadAlleleLikelihoodMap> pralm, final ReducibleAnnotationData rawAnnotations) { Double squareSum = 0.0; if ( pralm.size() == 0 ) return; for ( final PerReadAlleleLikelihoodMap perReadLikelihoods : pralm.values() ) { for ( final GATKSAMRecord read : perReadLikelihoods.getStoredElements() ) { int mq = read.getMappingQuality(); if ( mq != QualityUtils.MAPPING_QUALITY_UNAVAILABLE ) { squareSum += mq * mq; } } } rawAnnotations.putAttribute(Allele.NO_CALL,squareSum); }
@Override public int getNumberOfMappingQualityZeroReads() { if ( nMQ0Reads == UNINITIALIZED_CACHED_INT_VALUE ) { nMQ0Reads = 0; for (PileupElement p : pileupElementTracker.unorderedIterable()) { if (p.getRead().getMappingQuality() == 0) { nMQ0Reads++; } } } return nMQ0Reads; }
/** * Get an array of the mapping qualities * * @return */ @Override public int[] getMappingQuals() { final int[] v = new int[getNumberOfElements()]; int pos = 0; for ( final PileupElement pile : pileupElementTracker ) { v[pos++] = pile.getRead().getMappingQuality(); } return v; }
private static String createVerboseOutput(final ReadBackedPileup pileup) { final StringBuilder sb = new StringBuilder(); boolean isFirst = true; sb.append(pileup.getNumberOfDeletions()); sb.append(" "); for ( PileupElement p : pileup ) { if ( isFirst ) isFirst = false; else sb.append(","); sb.append(p.getRead().getReadName()); sb.append(verboseDelimiter); sb.append(p.getOffset()); sb.append(verboseDelimiter); sb.append(p.getRead().getReadLength()); sb.append(verboseDelimiter); sb.append(p.getRead().getMappingQuality()); } return sb.toString(); }
private Set<GATKSAMRecord> filterNonPassingReads( final ActiveRegion activeRegion ) { final Set<GATKSAMRecord> readsToRemove = new LinkedHashSet<>(); for( final GATKSAMRecord rec : activeRegion.getReads() ) { if( rec.getReadLength() < READ_LENGTH_FILTER_THRESHOLD || rec.getMappingQuality() < READ_QUALITY_FILTER_THRESHOLD || (!isBadMateFilterDisabled && BadMateFilter.hasBadMate(rec)) || (keepRG != null && !rec.getReadGroup().getId().equals(keepRG)) ) { readsToRemove.add(rec); } } activeRegion.removeAll( readsToRemove ); return readsToRemove; }
public void getRMSDataFromPRALM(Map<String, PerReadAlleleLikelihoodMap> perReadAlleleLikelihoodMap, ReducibleAnnotationData<Number> myData) { //over all the samples in the Map... for ( final PerReadAlleleLikelihoodMap perReadLikelihoods : perReadAlleleLikelihoodMap.values() ) { //for each read... for ( final Map.Entry<GATKSAMRecord,Map<Allele,Double>> readLikelihoods : perReadLikelihoods.getLikelihoodReadMap().entrySet() ) { final int mq = readLikelihoods.getKey().getMappingQuality(); if ( mq != QualityUtils.MAPPING_QUALITY_UNAVAILABLE ) { if (!PerReadAlleleLikelihoodMap.getMostLikelyAllele(readLikelihoods.getValue()).isInformative()) continue; final Allele bestAllele =PerReadAlleleLikelihoodMap.getMostLikelyAllele(readLikelihoods.getValue()).getMostLikelyAllele(); double currSquareSum = 0; if (myData.hasAttribute(bestAllele)) currSquareSum += (double)myData.getAttribute(bestAllele); myData.putAttribute(bestAllele, currSquareSum + mq * mq); } } } }
protected Set<GATKSAMRecord> filterNonPassingReads( final ActiveRegion activeRegion) { final Set<GATKSAMRecord> readsToRemove = new LinkedHashSet<>(); for( final GATKSAMRecord rec : activeRegion.getReads() ) { //TODO: Takuto points out that this is questionable. Let's think hard abut it. // KCIBUL: only perform read quality filtering on tumor reads... if (isReadFromNormal(rec)) { if( rec.getReadLength() < MIN_READ_LENGTH ) { readsToRemove.add(rec); } } else if( rec.getReadLength() < MIN_READ_LENGTH || rec.getMappingQuality() < MQthreshold || BadMateFilter.hasBadMate(rec) || (keepRG != null && !rec.getReadGroup().getId().equals(keepRG)) ) { readsToRemove.add(rec); } } activeRegion.removeAll(readsToRemove); return readsToRemove; }
/** * Loads the read that is going to be evaluated in following calls to {@link #calculateLocalLikelihoods}. * * @param read the target read. * @throws NullPointerException if {@code read} is null. */ @Override public void loadRead(final GATKSAMRecord read) { loadRead(read.getReadBases(),read.getBaseQualities(),read.getBaseInsertionQualities(),read.getBaseDeletionQualities(),read.getMappingQuality()); }
@Test(enabled = !DEBUG, dataProvider = "MergeFragmentsTest") public void testMergingTwoReads(final String name, final GATKSAMRecord read1, final GATKSAMRecord read2, final GATKSAMRecord expectedMerged) { final GATKSAMRecord actual = FragmentUtils.mergeOverlappingPairedFragments(read1, read2); if ( expectedMerged == null ) { Assert.assertNull(actual, "Expected reads not to merge, but got non-null result from merging"); } else { Assert.assertTrue(actual.isStrandless(), "Merged reads should be strandless"); Assert.assertNotNull(actual, "Expected reads to merge, but got null result from merging"); // I really care about the bases, the quals, the CIGAR, and the read group tag Assert.assertEquals(actual.getCigarString(), expectedMerged.getCigarString()); Assert.assertEquals(actual.getReadBases(), expectedMerged.getReadBases()); Assert.assertEquals(actual.getReadGroup(), expectedMerged.getReadGroup()); Assert.assertEquals(actual.getMappingQuality(), expectedMerged.getMappingQuality()); for ( final EventType type : EventType.values() ) Assert.assertEquals(actual.getBaseQualities(type), expectedMerged.getBaseQualities(type), "Failed base qualities for event type " + type); } }
private boolean doNotTryToClean(GATKSAMRecord read) { return read.getReadUnmappedFlag() || read.getNotPrimaryAlignmentFlag() || read.getReadFailsVendorQualityCheckFlag() || read.getMappingQuality() == 0 || read.getAlignmentStart() == SAMRecord.NO_ALIGNMENT_START || ConstrainedMateFixingManager.iSizeTooBigToMove(read, MAX_ISIZE_FOR_MOVEMENT) || ReadUtils.is454Read(read) || ReadUtils.isIonRead(read); // TODO -- it would be nice if we could use indels from 454/Ion reads as alternate consenses }