From 946691557bdcf807f855d29a1f02329b34d5993d Mon Sep 17 00:00:00 2001 From: Alec Wysoker Date: Thu, 27 Jun 2024 10:28:12 -0400 Subject: [PATCH] Add option to filter UMI iterator with an IntervalList --- .../digitalallelecounts/FilterReadsByUMISupport.java | 2 +- .../dropseqrna/utils/readiterators/UMIIterator.java | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/java/org/broadinstitute/dropseqrna/barnyard/digitalallelecounts/FilterReadsByUMISupport.java b/src/java/org/broadinstitute/dropseqrna/barnyard/digitalallelecounts/FilterReadsByUMISupport.java index 89bf5096..eb5ae7b2 100644 --- a/src/java/org/broadinstitute/dropseqrna/barnyard/digitalallelecounts/FilterReadsByUMISupport.java +++ b/src/java/org/broadinstitute/dropseqrna/barnyard/digitalallelecounts/FilterReadsByUMISupport.java @@ -88,7 +88,7 @@ protected int doWork() { UMIIterator umiIterator = new UMIIterator(headerAndIter,GENE_NAME_TAG, GENE_STRAND_TAG, GENE_FUNCTION_TAG, this.STRAND_STRATEGY, this.LOCUS_FUNCTION_LIST, this.FUNCTIONAL_STRATEGY, this.CELL_BARCODE_TAG, this.MOLECULAR_BARCODE_TAG, - this.READ_MQ, false, cellBarcodes, false, false, true); + this.READ_MQ, false, cellBarcodes, false, false, true, null); while (umiIterator.hasNext()) { UMICollection c = umiIterator.next(); diff --git a/src/java/org/broadinstitute/dropseqrna/utils/readiterators/UMIIterator.java b/src/java/org/broadinstitute/dropseqrna/utils/readiterators/UMIIterator.java index bc95580c..619282a8 100644 --- a/src/java/org/broadinstitute/dropseqrna/utils/readiterators/UMIIterator.java +++ b/src/java/org/broadinstitute/dropseqrna/utils/readiterators/UMIIterator.java @@ -111,7 +111,8 @@ public UMIIterator(final SamHeaderAndIterator headerAndIterator, final boolean recordCellsInInput) { this(headerAndIterator, geneTag, geneStrandTag, geneFunctionTag, strandStrategy, acceptedLociFunctions, functionStrategy, - cellBarcodeTag, molecularBarcodeTag, readMQ, assignReadsToAllGenes, cellBarcodes, cellFirstSort, recordCellsInInput, false); + cellBarcodeTag, molecularBarcodeTag, readMQ, assignReadsToAllGenes, cellBarcodes, cellFirstSort, recordCellsInInput, false, + null); } /** @@ -148,7 +149,8 @@ public UMIIterator(final SamHeaderAndIterator headerAndIterator, final Collection cellBarcodes, final boolean cellFirstSort, final boolean recordCellsInInput, - final boolean retainReads) { + final boolean retainReads, + final IntervalList intervals) { this.retainReads=retainReads; this.geneTag=geneTag; @@ -188,6 +190,9 @@ public UMIIterator(final SamHeaderAndIterator headerAndIterator, filteringIterator = new TagValueFilteringIterator<>(filteringIterator, this.cellBarcodeTag, cellBarcodes); } + if (intervals != null) { + filteringIterator = new IntervalFilteringIterator(filteringIterator, intervals, true); + } // Filter/assign reads based on functional annotations GeneFunctionIteratorWrapper wrapper = new GeneFunctionIteratorWrapper(filteringIterator, geneTag,