From d99d67d51c661ce6fcaa8d59ef5917c5eb731ee9 Mon Sep 17 00:00:00 2001 From: ebanks Date: Wed, 22 Apr 2009 19:18:46 +0000 Subject: [PATCH] Refactored to clean it up a bit git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@495 348d0f76-0448-11de-a6fe-93d51630548a --- .../playground/gatk/walkers/ReadFilterWalker.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/ReadFilterWalker.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/ReadFilterWalker.java index 0d29bce08..22f6cce93 100644 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/ReadFilterWalker.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/ReadFilterWalker.java @@ -15,18 +15,20 @@ public class ReadFilterWalker extends ReadWalker { @Argument(fullName="output_file", shortName="O",doc="SAM or BAM file to write filtered reads into (will be overwritten if exists)",required=true ) public String output; @Argument(fullName="max_read_length",doc="Discard reads with length greater than the specified value",required=false) public Integer max_len; - private SAMFileWriter writer = null; + public void initialize() { + SAMFileHeader header = getToolkit().getSamReader().getFileHeader(); + writer = new SAMFileWriterFactory().makeSAMOrBAMWriter(header, header.getSortOrder() != SAMFileHeader.SortOrder.unsorted, new File(output)); + } + @Override public boolean filter(LocusContext context, SAMRecord read) { - if ( read.getReadLength() > max_len ) return false; - return true; + return read.getReadLength() <= max_len; } @Override public Integer map(LocusContext context, SAMRecord read) { - if ( writer == null ) writer = new SAMFileWriterFactory().makeSAMOrBAMWriter(read.getHeader(), read.getHeader().getSortOrder() != SAMFileHeader.SortOrder.unsorted, new File(output)); writer.addAlignment(read); return 1; } @@ -42,8 +44,8 @@ public class ReadFilterWalker extends ReadWalker { } public void onTraversalDone(Integer nReads) { - super.onTraversalDone(nReads); - out.println(nReads +" reads passed the filter and were written into output file "+output); + writer.close(); + out.println(nReads +" reads passed the filter and were written into output file "+output); } }