From 4f17004590522d139394ed127bbc4647fffbc2c6 Mon Sep 17 00:00:00 2001 From: ebanks Date: Fri, 8 Apr 2011 03:34:50 +0000 Subject: [PATCH] Allow walkers to enforce the ordering in which ReadFilters are applied (so that they're now done in the order specified in the walker). Useful if you have a computationally expensive filter (like adaptor clipping) that should only be applied to reads passing all other filters. git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@5600 348d0f76-0448-11de-a6fe-93d51630548a --- .../org/broadinstitute/sting/gatk/WalkerManager.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/java/src/org/broadinstitute/sting/gatk/WalkerManager.java b/java/src/org/broadinstitute/sting/gatk/WalkerManager.java index f73f65e9f..21ce28173 100755 --- a/java/src/org/broadinstitute/sting/gatk/WalkerManager.java +++ b/java/src/org/broadinstitute/sting/gatk/WalkerManager.java @@ -445,10 +445,14 @@ public class WalkerManager extends PluginManager { * @return An array of types extending from SamRecordFilter. Will never be null. */ public static Collection> getReadFilterTypes(Class walkerClass) { - Set> filterTypes = new HashSet>(); + List> filterTypes = new ArrayList>(); while(walkerClass != null) { - if(walkerClass.isAnnotationPresent(ReadFilters.class)) - filterTypes.addAll(Arrays.asList(walkerClass.getAnnotation(ReadFilters.class).value())); + if(walkerClass.isAnnotationPresent(ReadFilters.class)) { + for ( Class c : walkerClass.getAnnotation(ReadFilters.class).value() ) { + if( !filterTypes.contains(c) ) + filterTypes.add(c); + } + } walkerClass = walkerClass.getSuperclass(); } return filterTypes;