/** Return filter making sure the AlignedFilter to discard unmapped is set. * */ public List<SamRecordFilter> getSamRecordFilter() { AlignedFilter unmapped = new AlignedFilter(true); if(!this.samRecordFilter.contains(unmapped)){ this.samRecordFilter.add(unmapped); // Unmapped reads are always discarded } return this.samRecordFilter; }
@Test public void exampleFromSamtools(){ // How filters behave: // filterOut(): // Return true if the SAMRecord matches the filter, otherwise false // Example: Keep aligned reads rec.setFlags(0); AlignedFilter f= new AlignedFilter(true); // Set true because we require aligned assertFalse(f.filterOut(rec)); // filterOut() returns false because with flag 0 it's not filtered out. f= new AlignedFilter(false); assertTrue(f.filterOut(rec)); // Exclude if aligned // Keep non aligned reads (flag 4) rec.setFlags(4); f= new AlignedFilter(false); // Keep if non aligned assertFalse(f.filterOut(rec)); // Returns false because read is kept. f= new AlignedFilter(true); // Keep if aligned assertTrue(f.filterOut(rec)); // Exclude read because 4 is non aligned }
isSVAlignment = true; if (UNMAPPED_READS && !unmappedFilter.filterOut(r)) { hasUnmapped[index] = true; hasSV[index] = true;
public SequentialReferenceCoverageLookup(Iterator<SAMRecord> it, IdsvMetrics metrics, ReadPairConcordanceCalculator pairing, int windowSize, int category, boolean ignoreDuplicates) { this.pairing = pairing; if (it instanceof Closeable) toClose.add((Closeable)it); List<SamRecordFilter> filters = new ArrayList<>(); filters.add(new AlignedFilter(true)); if (ignoreDuplicates) { filters.add(new DuplicateReadFilter()); } this.reads = Iterators.peekingIterator(new FilteringSamIterator(it, new AggregateFilter(filters))); this.largestWindow = windowSize; this.maxEvidenceWindow = Math.max(metrics.MAX_READ_LENGTH, Math.max(metrics.MAX_READ_MAPPED_LENGTH, pairing != null ? pairing.maxConcordantFragmentSize() : 0)); this.category = category; } public void close() {
filters.add(new NotPrimaryAlignmentFilter()); if (!INCLUDE_DUPLICATES) filters.add(new DuplicateReadFilter()); filters.add(new AlignedFilter(true)); // discard unmapped reads filters.add(new MappingQualityFilter(MINIMUM_MAPPING_QUALITY)); if (!INCLUDE_UNPAIRED) {
filters.add(new NotPrimaryAlignmentFilter()); if (!INCLUDE_DUPLICATES) filters.add(new DuplicateReadFilter()); filters.add(new AlignedFilter(true)); // discard unmapped reads filters.add(new MappingQualityFilter(MINIMUM_MAPPING_QUALITY)); if (!INCLUDE_UNPAIRED) {
list.add(new AlignedFilter(false)); list.add(new AlignedFilter(true));
ClippedReadFilter softClipFilter = new ClippedReadFilter(CLIPPED ? MIN_CLIP_LENGTH : Integer.MAX_VALUE); SplitReadFilter splitReadFilter = new SplitReadFilter(); AlignedFilter unmappedFilter = new AlignedFilter(false); OneEndAnchoredReadFilter oeaFilter = new OneEndAnchoredReadFilter(); ReadPairConcordanceFilter dpFilter = getReadPairConcordanceCalculator() != null ? new ReadPairConcordanceFilter(getReadPairConcordanceCalculator(), false, true) : null;
@Override public void setup(SAMFileHeader header, File samFile) { indelFilter = new IndelReadFilter(MIN_INDEL_SIZE); softClipFilter = new ClippedReadFilter(MIN_CLIP_LENGTH); splitReadFilter = new SplitReadFilter(); unmappedFilter = new AlignedFilter(false); oeaFilter = new OneEndAnchoredReadFilter(); dpFilter = getReadPairConcordanceCalculator() != null ? new ReadPairConcordanceFilter(getReadPairConcordanceCalculator(), false, true) : null; metrics = new StructuralVariantReadMetrics(); } @Override
@Test public void canCountReadsInWindow2() throws InvalidGenomicCoordsException, IOException{ GenomicCoords gc= new GenomicCoords("chr7:5524838-5611878", 80, samSeqDict, fastaFile); List<SamRecordFilter> filters= new ArrayList<SamRecordFilter>(); assertEquals(100377, Utils.countReadsInWindow("test_data/ear045.oxBS.actb.bam", gc, filters)); filters.add(new AlignedFilter(true)); assertEquals(100265, Utils.countReadsInWindow("test_data/ear045.oxBS.actb.bam", gc, filters)); filters= new ArrayList<SamRecordFilter>(); filters.add(new AlignedFilter(true)); filters.add(new ReadNegativeStrandFilter(false)); assertEquals(50157, Utils.countReadsInWindow("test_data/ear045.oxBS.actb.bam", gc, filters)); filters= new ArrayList<SamRecordFilter>(); filters.add(new AlignedFilter(true)); filters.add(new ReadNegativeStrandFilter(true)); assertEquals(50108, Utils.countReadsInWindow("test_data/ear045.oxBS.actb.bam", gc, filters)); filters= FlagToFilter.flagToFilterList(80, 1026); assertEquals(2729, Utils.countReadsInWindow("test_data/ear045.oxBS.actb.bam", gc, filters)); filters= FlagToFilter.flagToFilterList(80, 1026); filters.add(new MappingQualityFilter(30)); assertEquals(1592, Utils.countReadsInWindow("test_data/ear045.oxBS.actb.bam", gc, filters)); }
case includeAligned: filteringIterator = new FilteringSamIterator(samReader.iterator(), new AlignedFilter(true), true); break; case excludeAligned: filteringIterator = new FilteringSamIterator(samReader.iterator(), new AlignedFilter(false), true); break; case includeReadList:
case includeAligned: filteringIterator = new FilteringSamIterator(samReader.iterator(), new AlignedFilter(true), true); break; case excludeAligned: filteringIterator = new FilteringSamIterator(samReader.iterator(), new AlignedFilter(false), true); break; case includeReadList:
new AlignedFilter(true), new CountingPairedFilter(), new SecondaryOrSupplementaryFilter(),
new AlignedFilter(true), new CountingPairedFilter(), new SecondaryOrSupplementaryFilter(),