/** * Criteria for contaminant reads: * 1. primary alignment has fewer than minUnclippedBases unclipped bases * 2. primary alignment has both ends clipped */ protected boolean isContaminant(final HitsForInsert hits) { boolean isContaminant = false; if (hits.numHits() > 0) { final int primaryIndex = hits.getIndexOfEarliestPrimary(); if (primaryIndex < 0) throw new IllegalStateException("No primary alignment was found, despite having nonzero hits."); final SAMRecord primaryRead1 = hits.getFirstOfPair(primaryIndex); final SAMRecord primaryRead2 = hits.getSecondOfPair(primaryIndex); if (primaryRead1 != null && primaryRead2 != null) isContaminant = contaminationFilter.filterOut(primaryRead1, primaryRead2); else if (primaryRead1 != null) isContaminant = contaminationFilter.filterOut(primaryRead1); else if (primaryRead2 != null) isContaminant = contaminationFilter.filterOut(primaryRead2); else throw new IllegalStateException("Neither read1 or read2 exist for chosen primary alignment"); } return isContaminant; }
/** * Criteria for contaminant reads: * 1. primary alignment has fewer than minUnclippedBases unclipped bases * 2. primary alignment has both ends clipped */ protected boolean isContaminant(final HitsForInsert hits) { boolean isContaminant = false; if (hits.numHits() > 0) { final int primaryIndex = hits.getIndexOfEarliestPrimary(); if (primaryIndex < 0) throw new IllegalStateException("No primary alignment was found, despite having nonzero hits."); final SAMRecord primaryRead1 = hits.getFirstOfPair(primaryIndex); final SAMRecord primaryRead2 = hits.getSecondOfPair(primaryIndex); if (primaryRead1 != null && primaryRead2 != null) isContaminant = contaminationFilter.filterOut(primaryRead1, primaryRead2); else if (primaryRead1 != null) isContaminant = contaminationFilter.filterOut(primaryRead1); else if (primaryRead2 != null) isContaminant = contaminationFilter.filterOut(primaryRead2); else throw new IllegalStateException("Neither read1 or read2 exist for chosen primary alignment"); } return isContaminant; }
@Test(dataProvider = "data") public void testOverclippedReadFilter(final String name, final String cigar, final boolean filterSingleEndClips, final boolean shouldFail) { final OverclippedReadFilter filter = new OverclippedReadFilter(unclippedBasesThreshold, filterSingleEndClips); final SAMRecord rec = buildFrag(name, cigar); Assert.assertEquals(filter.filterOut(rec), shouldFail); }