diff --git a/java/src/org/broadinstitute/sting/gatk/CommandLineExecutable.java b/java/src/org/broadinstitute/sting/gatk/CommandLineExecutable.java index b001b62d8..5fcd3af6a 100644 --- a/java/src/org/broadinstitute/sting/gatk/CommandLineExecutable.java +++ b/java/src/org/broadinstitute/sting/gatk/CommandLineExecutable.java @@ -30,6 +30,7 @@ import org.broadinstitute.sting.gatk.arguments.GATKArgumentCollection; import org.broadinstitute.sting.commandline.CommandLineProgram; import org.broadinstitute.sting.commandline.ArgumentTypeDescriptor; import org.broadinstitute.sting.gatk.datasources.reads.SAMReaderID; +import org.broadinstitute.sting.gatk.filters.ReadFilter; import org.broadinstitute.sting.gatk.io.stubs.OutputStreamArgumentTypeDescriptor; import org.broadinstitute.sting.gatk.io.stubs.SAMFileReaderArgumentTypeDescriptor; import org.broadinstitute.sting.gatk.io.stubs.SAMFileWriterArgumentTypeDescriptor; @@ -98,7 +99,7 @@ public abstract class CommandLineExecutable extends CommandLineProgram { engine.setWalker(walker); walker.setToolkit(engine); - Collection filters = engine.createFilters(); + Collection filters = engine.createFilters(); engine.setFilters(filters); // load the arguments into the walker / filters. @@ -108,7 +109,7 @@ public abstract class CommandLineExecutable extends CommandLineProgram { loadArgumentsIntoObject(walker); argumentSources.add(walker); - for (SamRecordFilter filter: filters) { + for (ReadFilter filter: filters) { loadArgumentsIntoObject(filter); argumentSources.add(filter); } @@ -186,8 +187,8 @@ public abstract class CommandLineExecutable extends CommandLineProgram { walker.setToolkit(engine); argumentSources.add(walker.getClass()); - Collection filters = engine.createFilters(); - for(SamRecordFilter filter: filters) + Collection filters = engine.createFilters(); + for(ReadFilter filter: filters) argumentSources.add(filter.getClass()); Class[] argumentSourcesAsArray = new Class[argumentSources.size()]; diff --git a/java/src/org/broadinstitute/sting/gatk/GenomeAnalysisEngine.java b/java/src/org/broadinstitute/sting/gatk/GenomeAnalysisEngine.java index 199f4fff3..154250d01 100755 --- a/java/src/org/broadinstitute/sting/gatk/GenomeAnalysisEngine.java +++ b/java/src/org/broadinstitute/sting/gatk/GenomeAnalysisEngine.java @@ -49,8 +49,8 @@ import org.broadinstitute.sting.gatk.datasources.reads.ShardStrategyFactory; import org.broadinstitute.sting.gatk.datasources.reads.SAMDataSource; import org.broadinstitute.sting.gatk.executive.MicroScheduler; import org.broadinstitute.sting.gatk.filters.FilterManager; +import org.broadinstitute.sting.gatk.filters.ReadFilter; import org.broadinstitute.sting.gatk.filters.ReadGroupBlackListFilter; -import org.broadinstitute.sting.gatk.filters.SamRecordHeaderFilter; import org.broadinstitute.sting.gatk.io.OutputTracker; import org.broadinstitute.sting.gatk.io.stubs.Stub; import org.broadinstitute.sting.gatk.refdata.tracks.RMDTrack; @@ -65,7 +65,6 @@ import org.broadinstitute.sting.utils.SequenceDictionaryUtils; import org.broadinstitute.sting.utils.baq.BAQ; import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; import org.broadinstitute.sting.utils.exceptions.UserException; -import org.broadinstitute.sting.utils.interval.IntervalMergingRule; import org.broadinstitute.sting.utils.interval.IntervalUtils; import java.io.File; @@ -139,7 +138,7 @@ public class GenomeAnalysisEngine { /** * Collection of the filters applied to the input data. */ - private Collection filters; + private Collection filters; /** * A currently hacky unique name for this GATK instance @@ -269,8 +268,8 @@ public class GenomeAnalysisEngine { * the caller must handle that directly. * @return A collection of available filters. */ - public Collection createFilters() { - Set filters = new HashSet(); + public Collection createFilters() { + Set filters = new HashSet(); filters.addAll(WalkerManager.getReadFilters(walker,this.getFilterManager())); if (this.getArguments().readGroupBlackList != null && this.getArguments().readGroupBlackList.size() > 0) filters.add(new ReadGroupBlackListFilter(this.getArguments().readGroupBlackList)); @@ -733,9 +732,8 @@ public class GenomeAnalysisEngine { sampleDataSource = new SampleDataSource(getSAMFileHeader(), argCollection.sampleFiles); - for (SamRecordFilter filter : filters) - if (filter instanceof SamRecordHeaderFilter) - ((SamRecordHeaderFilter)filter).setHeader(this.getSAMFileHeader()); + for (ReadFilter filter : filters) + filter.initialize(this); sampleDataSource = new SampleDataSource(getSAMFileHeader(), argCollection.sampleFiles); @@ -1020,7 +1018,7 @@ public class GenomeAnalysisEngine { * Gets the list of filters employed by this engine. * @return Collection of filters (actual instances) used by this engine. */ - public Collection getFilters() { + public Collection getFilters() { return this.filters; } @@ -1028,7 +1026,7 @@ public class GenomeAnalysisEngine { * Sets the list of filters employed by this engine. * @param filters Collection of filters (actual instances) used by this engine. */ - public void setFilters(Collection filters) { + public void setFilters(Collection filters) { this.filters = filters; } diff --git a/java/src/org/broadinstitute/sting/gatk/ReadProperties.java b/java/src/org/broadinstitute/sting/gatk/ReadProperties.java index 47af69fa7..1a361029a 100755 --- a/java/src/org/broadinstitute/sting/gatk/ReadProperties.java +++ b/java/src/org/broadinstitute/sting/gatk/ReadProperties.java @@ -6,6 +6,7 @@ import net.sf.samtools.SAMFileHeader; import net.sf.samtools.SAMFileReader; import org.broadinstitute.sting.gatk.arguments.ValidationExclusion; import org.broadinstitute.sting.gatk.datasources.reads.SAMReaderID; +import org.broadinstitute.sting.gatk.filters.ReadFilter; import org.broadinstitute.sting.utils.baq.BAQ; import java.util.Collection; @@ -33,7 +34,7 @@ public class ReadProperties { private Integer readBufferSize = null; private DownsamplingMethod downsamplingMethod = null; private ValidationExclusion exclusionList = null; - private Collection supplementalFilters = null; + private Collection supplementalFilters = null; private boolean includeReadsWithDeletionAtLoci = false; private boolean useOriginalBaseQualities = false; private boolean generateExtendedEvents = false; @@ -115,7 +116,7 @@ public class ReadProperties { return exclusionList; } - public Collection getSupplementalFilters() { + public Collection getSupplementalFilters() { return supplementalFilters; } @@ -172,7 +173,7 @@ public class ReadProperties { Integer readBufferSize, DownsamplingMethod downsamplingMethod, ValidationExclusion exclusionList, - Collection supplementalFilters, + Collection supplementalFilters, boolean includeReadsWithDeletionAtLoci, boolean generateExtendedEvents, BAQ.CalculationMode cmode, diff --git a/java/src/org/broadinstitute/sting/gatk/WalkerManager.java b/java/src/org/broadinstitute/sting/gatk/WalkerManager.java index 21ce28173..9553f651e 100755 --- a/java/src/org/broadinstitute/sting/gatk/WalkerManager.java +++ b/java/src/org/broadinstitute/sting/gatk/WalkerManager.java @@ -29,6 +29,7 @@ import net.sf.picard.filter.SamRecordFilter; import org.broadinstitute.sting.commandline.Hidden; import org.broadinstitute.sting.gatk.datasources.rmd.ReferenceOrderedDataSource; import org.broadinstitute.sting.gatk.filters.FilterManager; +import org.broadinstitute.sting.gatk.filters.ReadFilter; import org.broadinstitute.sting.gatk.walkers.*; import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; import org.broadinstitute.sting.utils.classloader.PluginManager; @@ -322,9 +323,9 @@ public class WalkerManager extends PluginManager { * @param filterManager Manages the creation of filters. * @return A non-empty list of filters to apply to the reads. */ - public static List getReadFilters(Class walkerClass, FilterManager filterManager) { - List filters = new ArrayList(); - for(Class filterType: getReadFilterTypes(walkerClass)) + public static List getReadFilters(Class walkerClass, FilterManager filterManager) { + List filters = new ArrayList(); + for(Class filterType: getReadFilterTypes(walkerClass)) filters.add(filterManager.createFilterByType(filterType)); return filters; } @@ -335,7 +336,7 @@ public class WalkerManager extends PluginManager { * @param filterManager Manages the creation of filters. * @return A non-empty list of filters to apply to the reads. */ - public static List getReadFilters(Walker walker, FilterManager filterManager) { + public static List getReadFilters(Walker walker, FilterManager filterManager) { return getReadFilters(walker.getClass(), filterManager); } @@ -444,8 +445,8 @@ public class WalkerManager extends PluginManager { * @param walkerClass Class of the walker to inspect. * @return An array of types extending from SamRecordFilter. Will never be null. */ - public static Collection> getReadFilterTypes(Class walkerClass) { - List> filterTypes = new ArrayList>(); + public static Collection> getReadFilterTypes(Class walkerClass) { + List> filterTypes = new ArrayList>(); while(walkerClass != null) { if(walkerClass.isAnnotationPresent(ReadFilters.class)) { for ( Class c : walkerClass.getAnnotation(ReadFilters.class).value() ) { @@ -463,7 +464,7 @@ public class WalkerManager extends PluginManager { * @param walker The walker to inspect. * @return An array of types extending from SamRecordFilter. Will never be null. */ - public static Collection> getReadFilterTypes(Walker walker) { + public static Collection> getReadFilterTypes(Walker walker) { return getReadFilterTypes(walker.getClass()); } } diff --git a/java/src/org/broadinstitute/sting/gatk/datasources/reads/SAMDataSource.java b/java/src/org/broadinstitute/sting/gatk/datasources/reads/SAMDataSource.java index ecfe15de7..7a4c632c7 100755 --- a/java/src/org/broadinstitute/sting/gatk/datasources/reads/SAMDataSource.java +++ b/java/src/org/broadinstitute/sting/gatk/datasources/reads/SAMDataSource.java @@ -33,6 +33,7 @@ import net.sf.picard.reference.IndexedFastaSequenceFile; import org.apache.log4j.Logger; import org.broadinstitute.sting.gatk.DownsamplingMethod; +import org.broadinstitute.sting.gatk.filters.ReadFilter; import org.broadinstitute.sting.gatk.iterators.*; import org.broadinstitute.sting.gatk.ReadProperties; import org.broadinstitute.sting.gatk.ReadMetrics; @@ -146,7 +147,7 @@ public class SAMDataSource { null, null, new ValidationExclusion(), - new ArrayList(), + new ArrayList(), false, false, false); @@ -163,7 +164,7 @@ public class SAMDataSource { Integer readBufferSize, DownsamplingMethod downsamplingMethod, ValidationExclusion exclusionList, - Collection supplementalFilters, + Collection supplementalFilters, boolean includeReadsWithDeletionAtLoci, boolean generateExtendedEvents, boolean enableLowMemorySharding) { @@ -209,7 +210,7 @@ public class SAMDataSource { Integer readBufferSize, DownsamplingMethod downsamplingMethod, ValidationExclusion exclusionList, - Collection supplementalFilters, + Collection supplementalFilters, boolean includeReadsWithDeletionAtLoci, boolean generateExtendedEvents, BAQ.CalculationMode cmode, @@ -632,7 +633,7 @@ public class SAMDataSource { StingSAMIterator wrappedIterator, Double downsamplingFraction, Boolean noValidationOfReadOrder, - Collection supplementalFilters, + Collection supplementalFilters, BAQ.CalculationMode cmode, BAQ.QualityMode qmode, IndexedFastaSequenceFile refReader, diff --git a/java/src/org/broadinstitute/sting/gatk/datasources/reads/performance/DownsamplerBenchmark.java b/java/src/org/broadinstitute/sting/gatk/datasources/reads/performance/DownsamplerBenchmark.java index 931a04b2d..94b1c2025 100644 --- a/java/src/org/broadinstitute/sting/gatk/datasources/reads/performance/DownsamplerBenchmark.java +++ b/java/src/org/broadinstitute/sting/gatk/datasources/reads/performance/DownsamplerBenchmark.java @@ -36,6 +36,7 @@ import org.broadinstitute.sting.gatk.arguments.GATKArgumentCollection; import org.broadinstitute.sting.gatk.arguments.ValidationExclusion; import org.broadinstitute.sting.gatk.datasources.reads.SAMReaderID; import org.broadinstitute.sting.gatk.datasources.sample.SampleDataSource; +import org.broadinstitute.sting.gatk.filters.ReadFilter; import org.broadinstitute.sting.gatk.filters.UnmappedReadFilter; import org.broadinstitute.sting.gatk.iterators.LocusIteratorByState; import org.broadinstitute.sting.utils.GenomeLocParser; @@ -78,7 +79,7 @@ public class DownsamplerBenchmark extends ReadProcessingBenchmark { 0, downsampling.create(), new ValidationExclusion(Collections.singletonList(ValidationExclusion.TYPE.ALL)), - Collections.emptyList(), + Collections.emptyList(), false, false, BAQ.CalculationMode.OFF, diff --git a/java/src/org/broadinstitute/sting/gatk/datasources/reads/performance/GATKWalkerBenchmark.java b/java/src/org/broadinstitute/sting/gatk/datasources/reads/performance/GATKWalkerBenchmark.java index e9b75005c..1719f85e6 100644 --- a/java/src/org/broadinstitute/sting/gatk/datasources/reads/performance/GATKWalkerBenchmark.java +++ b/java/src/org/broadinstitute/sting/gatk/datasources/reads/performance/GATKWalkerBenchmark.java @@ -32,6 +32,7 @@ import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; import org.broadinstitute.sting.gatk.arguments.GATKArgumentCollection; import org.broadinstitute.sting.gatk.contexts.ReferenceContext; import org.broadinstitute.sting.gatk.datasources.reads.SAMReaderID; +import org.broadinstitute.sting.gatk.filters.ReadFilter; import org.broadinstitute.sting.gatk.filters.UnmappedReadFilter; import org.broadinstitute.sting.gatk.refdata.ReadMetaDataTracker; import org.broadinstitute.sting.gatk.refdata.utils.RMDTriplet; @@ -88,7 +89,7 @@ public class GATKWalkerBenchmark extends ReadProcessingBenchmark { engine.setArguments(argCollection); // Bugs in the engine mean that this has to be set twice. engine.setSAMFileIDs(Collections.singletonList(new SAMReaderID(inputFile,new Tags()))); - engine.setFilters(Collections.singletonList(new UnmappedReadFilter())); + engine.setFilters(Collections.singletonList(new UnmappedReadFilter())); engine.setReferenceMetaDataFiles(Collections.emptyList()); // Create the walker diff --git a/java/src/org/broadinstitute/sting/gatk/filters/BadCigarFilter.java b/java/src/org/broadinstitute/sting/gatk/filters/BadCigarFilter.java index d3e20909f..b8a3ee977 100755 --- a/java/src/org/broadinstitute/sting/gatk/filters/BadCigarFilter.java +++ b/java/src/org/broadinstitute/sting/gatk/filters/BadCigarFilter.java @@ -34,7 +34,7 @@ import net.sf.samtools.*; * @version 0.1 */ -public class BadCigarFilter implements SamRecordFilter { +public class BadCigarFilter extends ReadFilter { public boolean filterOut(final SAMRecord rec) { Cigar c = rec.getCigar(); diff --git a/java/src/org/broadinstitute/sting/gatk/filters/BadMateFilter.java b/java/src/org/broadinstitute/sting/gatk/filters/BadMateFilter.java index 43dc6a6de..3b988c8fb 100755 --- a/java/src/org/broadinstitute/sting/gatk/filters/BadMateFilter.java +++ b/java/src/org/broadinstitute/sting/gatk/filters/BadMateFilter.java @@ -34,7 +34,7 @@ import net.sf.samtools.SAMRecord; * @version 0.1 */ -public class BadMateFilter implements SamRecordFilter { +public class BadMateFilter extends ReadFilter { public boolean filterOut(final SAMRecord rec) { return hasBadMate(rec); diff --git a/java/src/org/broadinstitute/sting/gatk/filters/CountingFilteringIterator.java b/java/src/org/broadinstitute/sting/gatk/filters/CountingFilteringIterator.java index aa5a75396..84390c173 100755 --- a/java/src/org/broadinstitute/sting/gatk/filters/CountingFilteringIterator.java +++ b/java/src/org/broadinstitute/sting/gatk/filters/CountingFilteringIterator.java @@ -42,7 +42,7 @@ import org.broadinstitute.sting.gatk.ReadMetrics; public class CountingFilteringIterator implements CloseableIterator { private final ReadMetrics runtimeMetrics; private final Iterator iterator; - private final Collection filters; + private final Collection filters; private SAMRecord next = null; /** @@ -52,7 +52,7 @@ public class CountingFilteringIterator implements CloseableIterator { * @param iterator the backing iterator * @param filters the filter (which may be a FilterAggregator) */ - public CountingFilteringIterator(ReadMetrics metrics, Iterator iterator, Collection filters) { + public CountingFilteringIterator(ReadMetrics metrics, Iterator iterator, Collection filters) { this.runtimeMetrics = metrics; this.iterator = iterator; this.filters = filters; diff --git a/java/src/org/broadinstitute/sting/gatk/filters/DuplicateReadFilter.java b/java/src/org/broadinstitute/sting/gatk/filters/DuplicateReadFilter.java index 241291cd4..fb3c38582 100755 --- a/java/src/org/broadinstitute/sting/gatk/filters/DuplicateReadFilter.java +++ b/java/src/org/broadinstitute/sting/gatk/filters/DuplicateReadFilter.java @@ -36,7 +36,7 @@ import net.sf.samtools.SAMRecord; * Filter out duplicate reads. */ -public class DuplicateReadFilter implements SamRecordFilter { +public class DuplicateReadFilter extends ReadFilter { public boolean filterOut( final SAMRecord read ) { return read.getDuplicateReadFlag(); } diff --git a/java/src/org/broadinstitute/sting/gatk/filters/FailsVendorQualityCheckReadFilter.java b/java/src/org/broadinstitute/sting/gatk/filters/FailsVendorQualityCheckReadFilter.java index 872cba05c..b7806524a 100755 --- a/java/src/org/broadinstitute/sting/gatk/filters/FailsVendorQualityCheckReadFilter.java +++ b/java/src/org/broadinstitute/sting/gatk/filters/FailsVendorQualityCheckReadFilter.java @@ -35,7 +35,7 @@ import net.sf.samtools.SAMRecord; * Filter out FailsVendorQualityCheck reads. */ -public class FailsVendorQualityCheckReadFilter implements SamRecordFilter { +public class FailsVendorQualityCheckReadFilter extends ReadFilter { public boolean filterOut( final SAMRecord read ) { return read.getReadFailsVendorQualityCheckFlag(); } diff --git a/java/src/org/broadinstitute/sting/gatk/filters/FilterManager.java b/java/src/org/broadinstitute/sting/gatk/filters/FilterManager.java index 3bf11c0ac..cda08fb66 100644 --- a/java/src/org/broadinstitute/sting/gatk/filters/FilterManager.java +++ b/java/src/org/broadinstitute/sting/gatk/filters/FilterManager.java @@ -39,9 +39,9 @@ import java.util.Collection; * @author mhanna * @version 0.1 */ -public class FilterManager extends PluginManager { +public class FilterManager extends PluginManager { public FilterManager() { - super(SamRecordFilter.class,"filter","Filter"); + super(ReadFilter.class,"filter","Filter"); } /** @@ -50,11 +50,11 @@ public class FilterManager extends PluginManager { * @param filterType The type of the filter * @return The filter */ - public SamRecordFilter createFilterByType(Class filterType) { + public ReadFilter createFilterByType(Class filterType) { return this.createByName(getName(filterType)); } - public Collection> getValues() { + public Collection> getValues() { return this.getPlugins(); } } diff --git a/java/src/org/broadinstitute/sting/gatk/filters/MalformedReadFilter.java b/java/src/org/broadinstitute/sting/gatk/filters/MalformedReadFilter.java index d56b8b780..4deeb09ee 100644 --- a/java/src/org/broadinstitute/sting/gatk/filters/MalformedReadFilter.java +++ b/java/src/org/broadinstitute/sting/gatk/filters/MalformedReadFilter.java @@ -24,7 +24,6 @@ package org.broadinstitute.sting.gatk.filters; -import net.sf.picard.filter.SamRecordFilter; import net.sf.samtools.SAMRecord; import net.sf.samtools.SAMFileHeader; import net.sf.samtools.SAMSequenceRecord; @@ -36,12 +35,12 @@ import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; * @author mhanna * @version 0.1 */ -public class MalformedReadFilter implements SamRecordHeaderFilter { +public class MalformedReadFilter extends ReadFilter { private SAMFileHeader header; @Override - public void setHeader(SAMFileHeader header) { - this.header = header; + public void initialize(GenomeAnalysisEngine engine) { + this.header = engine.getSAMFileHeader(); } public boolean filterOut(SAMRecord read) { diff --git a/java/src/org/broadinstitute/sting/gatk/filters/MappingQualityReadFilter.java b/java/src/org/broadinstitute/sting/gatk/filters/MappingQualityReadFilter.java index d6ebcf487..bcd473b15 100755 --- a/java/src/org/broadinstitute/sting/gatk/filters/MappingQualityReadFilter.java +++ b/java/src/org/broadinstitute/sting/gatk/filters/MappingQualityReadFilter.java @@ -36,7 +36,7 @@ import org.broadinstitute.sting.commandline.Argument; * @version 0.1 */ -public class MappingQualityReadFilter implements SamRecordFilter { +public class MappingQualityReadFilter extends ReadFilter { @Argument(fullName = "min_mapping_quality_score", shortName = "mmq", doc = "Minimum read mapping quality required to consider a read for calling", required = false) public int MIN_MAPPING_QUALTY_SCORE = 10; diff --git a/java/src/org/broadinstitute/sting/gatk/filters/MaxReadLengthFilter.java b/java/src/org/broadinstitute/sting/gatk/filters/MaxReadLengthFilter.java index 48f12de40..8a2fd5af3 100644 --- a/java/src/org/broadinstitute/sting/gatk/filters/MaxReadLengthFilter.java +++ b/java/src/org/broadinstitute/sting/gatk/filters/MaxReadLengthFilter.java @@ -35,7 +35,7 @@ import org.broadinstitute.sting.commandline.Argument; * @author mhanna * @version 0.1 */ -public class MaxReadLengthFilter implements SamRecordFilter { +public class MaxReadLengthFilter extends ReadFilter { @Argument(fullName = "maxReadLength", shortName = "maxRead", doc="Discard reads with length greater than the specified value", required=true) private int maxReadLength; diff --git a/java/src/org/broadinstitute/sting/gatk/filters/MissingReadGroupFilter.java b/java/src/org/broadinstitute/sting/gatk/filters/MissingReadGroupFilter.java index 88e09f989..d5d40ec38 100755 --- a/java/src/org/broadinstitute/sting/gatk/filters/MissingReadGroupFilter.java +++ b/java/src/org/broadinstitute/sting/gatk/filters/MissingReadGroupFilter.java @@ -34,7 +34,7 @@ import net.sf.samtools.SAMRecord; * @version 0.1 */ -public class MissingReadGroupFilter implements SamRecordFilter { +public class MissingReadGroupFilter extends ReadFilter { public boolean filterOut(SAMRecord rec) { return rec.getReadGroup() == null; } diff --git a/java/src/org/broadinstitute/sting/gatk/filters/NoOriginalQualityScoresFilter.java b/java/src/org/broadinstitute/sting/gatk/filters/NoOriginalQualityScoresFilter.java index 67fd275c4..fc21538e8 100755 --- a/java/src/org/broadinstitute/sting/gatk/filters/NoOriginalQualityScoresFilter.java +++ b/java/src/org/broadinstitute/sting/gatk/filters/NoOriginalQualityScoresFilter.java @@ -35,7 +35,7 @@ import net.sf.samtools.SAMRecord; * * Filter out reads that don't have Original Quality scores inside. */ -public class NoOriginalQualityScoresFilter implements SamRecordFilter { +public class NoOriginalQualityScoresFilter extends ReadFilter { public boolean filterOut( final SAMRecord read ) { return (read.getAttribute("OQ") == null); } diff --git a/java/src/org/broadinstitute/sting/gatk/filters/NotPrimaryAlignmentReadFilter.java b/java/src/org/broadinstitute/sting/gatk/filters/NotPrimaryAlignmentReadFilter.java index cbbd4a315..cfbba0383 100755 --- a/java/src/org/broadinstitute/sting/gatk/filters/NotPrimaryAlignmentReadFilter.java +++ b/java/src/org/broadinstitute/sting/gatk/filters/NotPrimaryAlignmentReadFilter.java @@ -35,7 +35,7 @@ import net.sf.samtools.SAMRecord; * Filter out duplicate reads. */ -public class NotPrimaryAlignmentReadFilter implements SamRecordFilter { +public class NotPrimaryAlignmentReadFilter extends ReadFilter { public boolean filterOut( final SAMRecord read ) { return read.getNotPrimaryAlignmentFlag(); } diff --git a/java/src/org/broadinstitute/sting/gatk/filters/Platform454Filter.java b/java/src/org/broadinstitute/sting/gatk/filters/Platform454Filter.java index f8a1c502a..dcddebd55 100755 --- a/java/src/org/broadinstitute/sting/gatk/filters/Platform454Filter.java +++ b/java/src/org/broadinstitute/sting/gatk/filters/Platform454Filter.java @@ -37,7 +37,7 @@ import org.broadinstitute.sting.utils.sam.ReadUtils; * @version 0.1 */ -public class Platform454Filter implements SamRecordFilter { +public class Platform454Filter extends ReadFilter { public boolean filterOut(SAMRecord rec) { return (ReadUtils.is454Read(rec)); } diff --git a/java/src/org/broadinstitute/sting/gatk/filters/PlatformFilter.java b/java/src/org/broadinstitute/sting/gatk/filters/PlatformFilter.java index 710699ae2..691fd95f0 100755 --- a/java/src/org/broadinstitute/sting/gatk/filters/PlatformFilter.java +++ b/java/src/org/broadinstitute/sting/gatk/filters/PlatformFilter.java @@ -37,7 +37,7 @@ import org.broadinstitute.sting.commandline.Argument; * @author ebanks * @version 0.1 */ -public class PlatformFilter implements SamRecordFilter { +public class PlatformFilter extends ReadFilter { @Argument(fullName = "PLFilterName", shortName = "PLFilterName", doc="Discard reads with RG:PL attribute containing this strign", required=false) protected String[] PLFilterNames; diff --git a/java/src/org/broadinstitute/sting/gatk/filters/PlatformUnitFilter.java b/java/src/org/broadinstitute/sting/gatk/filters/PlatformUnitFilter.java index 6d134794a..4ef88402d 100644 --- a/java/src/org/broadinstitute/sting/gatk/filters/PlatformUnitFilter.java +++ b/java/src/org/broadinstitute/sting/gatk/filters/PlatformUnitFilter.java @@ -16,7 +16,7 @@ import org.broadinstitute.sting.utils.exceptions.UserException; * Time: 2:54:23 PM * To change this template use File | Settings | File Templates. */ -public class PlatformUnitFilter implements SamRecordFilter { +public class PlatformUnitFilter extends ReadFilter { // a hack: use static in order to be able to fill it with the data from command line at runtime static private Set blackListedLanes = new HashSet(); diff --git a/java/src/org/broadinstitute/sting/gatk/filters/SamRecordHeaderFilter.java b/java/src/org/broadinstitute/sting/gatk/filters/ReadFilter.java similarity index 54% rename from java/src/org/broadinstitute/sting/gatk/filters/SamRecordHeaderFilter.java rename to java/src/org/broadinstitute/sting/gatk/filters/ReadFilter.java index 548115b58..1d74ee20e 100644 --- a/java/src/org/broadinstitute/sting/gatk/filters/SamRecordHeaderFilter.java +++ b/java/src/org/broadinstitute/sting/gatk/filters/ReadFilter.java @@ -2,14 +2,15 @@ package org.broadinstitute.sting.gatk.filters; import net.sf.picard.filter.SamRecordFilter; import net.sf.samtools.SAMFileHeader; +import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; /** * A SamRecordFilter that also depends on the header. */ -public interface SamRecordHeaderFilter extends SamRecordFilter { +public abstract class ReadFilter implements SamRecordFilter { /** * Sets the header for use by this filter. - * @param header the header for use by this filter. + * @param engine the engine. */ - void setHeader(SAMFileHeader header); + public void initialize(GenomeAnalysisEngine engine) {} } diff --git a/java/src/org/broadinstitute/sting/gatk/filters/ReadGroupBlackListFilter.java b/java/src/org/broadinstitute/sting/gatk/filters/ReadGroupBlackListFilter.java index 965fca0dd..69ebc8b04 100644 --- a/java/src/org/broadinstitute/sting/gatk/filters/ReadGroupBlackListFilter.java +++ b/java/src/org/broadinstitute/sting/gatk/filters/ReadGroupBlackListFilter.java @@ -42,7 +42,7 @@ import org.broadinstitute.sting.utils.text.XReadLines; * PU:1000G-mpimg-080821-1_1 * would filter out a read with the read group PU:1000G-mpimg-080821-1_1 */ -public class ReadGroupBlackListFilter implements SamRecordFilter { +public class ReadGroupBlackListFilter extends ReadFilter { private Set>> filterEntries; public ReadGroupBlackListFilter(List blackLists) { diff --git a/java/src/org/broadinstitute/sting/gatk/filters/ReadStrandFilter.java b/java/src/org/broadinstitute/sting/gatk/filters/ReadStrandFilter.java index 174a0d94b..1b2a77f45 100644 --- a/java/src/org/broadinstitute/sting/gatk/filters/ReadStrandFilter.java +++ b/java/src/org/broadinstitute/sting/gatk/filters/ReadStrandFilter.java @@ -35,7 +35,7 @@ import org.broadinstitute.sting.commandline.Argument; * @author chartl * @version 0.1 */ -public class ReadStrandFilter implements SamRecordFilter { +public class ReadStrandFilter extends ReadFilter { @Argument(fullName = "filterPositive", shortName = "fp", doc="Discard reads on the forward strand",required=false) boolean filterForward = false; diff --git a/java/src/org/broadinstitute/sting/gatk/filters/SampleFilter.java b/java/src/org/broadinstitute/sting/gatk/filters/SampleFilter.java index 7019fed13..682b22b1f 100755 --- a/java/src/org/broadinstitute/sting/gatk/filters/SampleFilter.java +++ b/java/src/org/broadinstitute/sting/gatk/filters/SampleFilter.java @@ -32,7 +32,7 @@ import org.broadinstitute.sting.commandline.Argument; import java.util.Set; -public class SampleFilter implements SamRecordFilter { +public class SampleFilter extends ReadFilter { @Argument(fullName = "sample_to_keep", shortName = "goodSM", doc="The name of the sample(s) to keep, filtering out all others", required=true) private Set SAMPLES_TO_KEEP = null; diff --git a/java/src/org/broadinstitute/sting/gatk/filters/SingleReadGroupFilter.java b/java/src/org/broadinstitute/sting/gatk/filters/SingleReadGroupFilter.java index 639ef1486..05b472036 100755 --- a/java/src/org/broadinstitute/sting/gatk/filters/SingleReadGroupFilter.java +++ b/java/src/org/broadinstitute/sting/gatk/filters/SingleReadGroupFilter.java @@ -38,7 +38,7 @@ import org.broadinstitute.sting.commandline.Argument; * Only use reads from the specified read group. */ -public class SingleReadGroupFilter implements SamRecordFilter { +public class SingleReadGroupFilter extends ReadFilter { @Argument(fullName = "read_group_to_keep", shortName = "goodRG", doc="The name of the read group to keep, filtering out all others", required=true) private String READ_GROUP_TO_KEEP = null; diff --git a/java/src/org/broadinstitute/sting/gatk/filters/UnmappedReadFilter.java b/java/src/org/broadinstitute/sting/gatk/filters/UnmappedReadFilter.java index fe6dfbb9e..ac4f4853a 100755 --- a/java/src/org/broadinstitute/sting/gatk/filters/UnmappedReadFilter.java +++ b/java/src/org/broadinstitute/sting/gatk/filters/UnmappedReadFilter.java @@ -35,7 +35,7 @@ import net.sf.samtools.SAMRecord; * Filter out duplicate reads. */ -public class UnmappedReadFilter implements SamRecordFilter { +public class UnmappedReadFilter extends ReadFilter { public boolean filterOut( final SAMRecord read ) { return read.getReadUnmappedFlag() || read.getAlignmentStart() == SAMRecord.NO_ALIGNMENT_START; } diff --git a/java/src/org/broadinstitute/sting/gatk/filters/ZeroMappingQualityReadFilter.java b/java/src/org/broadinstitute/sting/gatk/filters/ZeroMappingQualityReadFilter.java index 311d83cd0..7e6fc5e82 100644 --- a/java/src/org/broadinstitute/sting/gatk/filters/ZeroMappingQualityReadFilter.java +++ b/java/src/org/broadinstitute/sting/gatk/filters/ZeroMappingQualityReadFilter.java @@ -34,7 +34,7 @@ import net.sf.samtools.SAMRecord; * @version 0.1 */ -public class ZeroMappingQualityReadFilter implements SamRecordFilter { +public class ZeroMappingQualityReadFilter extends ReadFilter { public boolean filterOut(SAMRecord rec) { return (rec.getMappingQuality() == 0); } diff --git a/java/src/org/broadinstitute/sting/queue/extensions/gatk/GATKExtensionsGenerator.java b/java/src/org/broadinstitute/sting/queue/extensions/gatk/GATKExtensionsGenerator.java index 62e0f257a..6119e20a6 100644 --- a/java/src/org/broadinstitute/sting/queue/extensions/gatk/GATKExtensionsGenerator.java +++ b/java/src/org/broadinstitute/sting/queue/extensions/gatk/GATKExtensionsGenerator.java @@ -34,6 +34,7 @@ import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; import org.broadinstitute.sting.gatk.WalkerManager; import org.broadinstitute.sting.gatk.arguments.ValidationExclusion; import org.broadinstitute.sting.gatk.filters.FilterManager; +import org.broadinstitute.sting.gatk.filters.ReadFilter; import org.broadinstitute.sting.gatk.io.stubs.VCFWriterArgumentTypeDescriptor; import org.broadinstitute.sting.gatk.io.stubs.OutputStreamArgumentTypeDescriptor; import org.broadinstitute.sting.gatk.io.stubs.SAMFileReaderArgumentTypeDescriptor; @@ -169,7 +170,7 @@ public class GATKExtensionsGenerator extends CommandLineProgram { } } - for (Class filter: filterManager.getValues()) { + for (Class filter: filterManager.getValues()) { String filterName = filterManager.getName(filter); writeFilter(filterName, ArgumentDefinitionField.getArgumentFields(new ParsingEngine(null),filter), dependents); } diff --git a/java/test/org/broadinstitute/sting/gatk/iterators/LocusIteratorByStateUnitTest.java b/java/test/org/broadinstitute/sting/gatk/iterators/LocusIteratorByStateUnitTest.java index 7a03b76db..32d3675b7 100644 --- a/java/test/org/broadinstitute/sting/gatk/iterators/LocusIteratorByStateUnitTest.java +++ b/java/test/org/broadinstitute/sting/gatk/iterators/LocusIteratorByStateUnitTest.java @@ -5,6 +5,7 @@ import net.sf.samtools.SAMFileHeader; import net.sf.samtools.SAMFileReader; import net.sf.samtools.SAMRecord; import net.sf.samtools.util.CloseableIterator; +import org.broadinstitute.sting.gatk.filters.ReadFilter; import org.broadinstitute.sting.utils.Utils; import org.broadinstitute.sting.utils.pileup.ReadBackedPileup; import org.testng.Assert; @@ -302,7 +303,7 @@ public class LocusIteratorByStateUnitTest extends BaseTest { null, null, new ValidationExclusion(), - new ArrayList(), + Collections.emptyList(), false, false, BAQ.CalculationMode.OFF,