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() {
/** * Applies filters such as duplicate removal that apply to all SAMRecord parsing * @param iterator raw reads * @param filterSecondaryAlignment should secondary alignment be filtered out * @return iterator with filtered record excluded */ public CloseableIterator<SAMRecord> applyCommonSAMRecordFilters(final CloseableIterator<SAMRecord> iterator, final boolean singleAlignmentPerRead) { List<SamRecordFilter> filters = Lists.<SamRecordFilter>newArrayList(new FailsVendorReadQualityFilter()); if (singleAlignmentPerRead) { filters.add(new SecondaryOrSupplementaryFilter()); } if (filterDuplicates) { filters.add(new DuplicateReadFilter()); } return new AutoClosingIterator<SAMRecord>(new FilteringSamIterator(iterator, new AggregateFilter(filters)), iterator); }
if (!INCLUDE_NON_PF_READS) filters.add(new FailsVendorReadQualityFilter()); 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_NON_PF_READS) filters.add(new FailsVendorReadQualityFilter()); 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));
filters.add(new DuplicateReadFilter()); if (MINIMUM_INSERT_SIZE > 0 || MAXIMUM_INSERT_SIZE > 0) { filters.add(new InsertSizeFilter(MINIMUM_INSERT_SIZE, MAXIMUM_INSERT_SIZE));
filters.add(new DuplicateReadFilter()); if (MINIMUM_INSERT_SIZE > 0 || MAXIMUM_INSERT_SIZE > 0) { filters.add(new InsertSizeFilter(MINIMUM_INSERT_SIZE, MAXIMUM_INSERT_SIZE));