diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/SAMToFastqAndSqWalker.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/SAMToFastqAndSqWalker.java deleted file mode 100644 index 42994053f..000000000 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/SAMToFastqAndSqWalker.java +++ /dev/null @@ -1,74 +0,0 @@ -package org.broadinstitute.sting.playground.gatk.walkers; - -import org.broadinstitute.sting.gatk.walkers.ReadWalker; -import org.broadinstitute.sting.utils.cmdLine.Argument; -import net.sf.samtools.SAMRecord; - -import java.io.*; - -public class SAMToFastqAndSqWalker extends ReadWalker { - @Argument(fullName="FASTQFILE", doc="Output path for Fastq file") - public File FASTQFILE; - - @Argument(fullName="SQFILE", shortName="SQ", doc="Output path for secondary quality map (readName => SAM SQ field)", required=false) - public File SQFILE; - - private PrintWriter fastqbw; - private PrintWriter sqbw; - - private boolean ready = false; - - public Integer map(char[] ref, SAMRecord read) { - if (!ready) { - try { - fastqbw = new PrintWriter(FASTQFILE); - - if (SQFILE != null) { - sqbw = new PrintWriter(SQFILE); - } - - ready = true; - } catch (IOException e) { - err.println("Unable to open output files."); - System.exit(1); - } - } - - String bases = read.getReadString(); - String quals = read.getBaseQualityString(); - byte[] sqs = (byte[]) read.getAttribute("SQ"); - - fastqbw.println("@" + read.getReadName()); - fastqbw.println(bases); - - fastqbw.println("+" + read.getReadName()); - fastqbw.println(quals); - - if (sqbw != null && sqs != null) { - sqbw.print(read.getReadName() + "\t" + "SQ:H:"); - - for (byte sq : sqs) { - sqbw.printf("%02X", sq); - } - sqbw.println(); - } - - return null; - } - - public Integer reduceInit() { - return null; - } - - public Integer reduce(Integer value, Integer sum) { - return null; - } - - public void onTraversalDone(Integer sum) { - fastqbw.close(); - - if (sqbw != null) { - sqbw.close(); - } - } -} diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/fasta/BamToFastqWalker.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/fasta/BamToFastqWalker.java index aa7406ae7..0c1772900 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/fasta/BamToFastqWalker.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/fasta/BamToFastqWalker.java @@ -6,6 +6,8 @@ import org.broadinstitute.sting.utils.BaseUtils; import org.broadinstitute.sting.utils.cmdLine.Argument; import net.sf.samtools.SAMRecord; +import java.io.*; + // create a fastq file from a bam file @WalkerName("BamToFastq") @@ -14,6 +16,21 @@ public class BamToFastqWalker extends ReadWalker { @Argument(fullName="re_reverse", shortName="reverse", doc="re-reverse bases and quals of reads from the negative strand", required=false) private Boolean RE_REVERSE = false; + @Argument(fullName="SQFile", shortName="SQ", doc="Output path for secondary quality map (readName => SAM SQ field)", required=false) + String SQFile = null; + + private PrintWriter sqbw = null; + + public void initialize() { + if ( SQFile != null ) { + try { + sqbw = new PrintWriter(SQFile); + } catch (IOException e) { + throw new RuntimeException("Unable to open sq output file: " + SQFile); + } + } + } + public Integer map(char[] ref, SAMRecord read) { out.println("@" + read.getReadName()); if ( !RE_REVERSE || !read.getReadNegativeStrandFlag() ) { @@ -26,6 +43,17 @@ public class BamToFastqWalker extends ReadWalker { out.println(BaseUtils.reverse(read.getBaseQualityString())); } + if ( sqbw != null ) { + byte[] sqs = (byte[])read.getAttribute("SQ"); + if ( sqs != null ) { + sqbw.print(read.getReadName() + "\t" + "SQ:H:"); + for ( byte sq : sqs ) { + sqbw.printf("%02X", sq); + } + sqbw.println(); + } + } + return 1; } @@ -38,6 +66,8 @@ public class BamToFastqWalker extends ReadWalker { } public void onTraversalDone(Integer sum) { + if ( sqbw != null ) + sqbw.close(); logger.info("Number of reads converted: " + sum); } } \ No newline at end of file