From d7e4cd4c824922faf6f4b1745d0aa8cc07407da1 Mon Sep 17 00:00:00 2001 From: ebanks Date: Thu, 3 Dec 2009 03:00:45 +0000 Subject: [PATCH] Moving some useful and stable walkers to core: - ClipReads - PrintRODs (generalized to print all RODs that are Variations) - FixBAMSortOrderTag (added documentation to walker so that people know what it does and why) git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@2238 348d0f76-0448-11de-a6fe-93d51630548a --- .../gatk/walkers/ClipReadsWalker.java | 5 +--- .../walkers/FixBAMSortOrderTag.java} | 17 +++++++++++--- .../gatk/walkers/PrintRODsWalker.java | 23 +++++++++++-------- 3 files changed, 29 insertions(+), 16 deletions(-) rename java/src/org/broadinstitute/sting/{playground => }/gatk/walkers/ClipReadsWalker.java (99%) rename java/src/org/broadinstitute/sting/{playground/gatk/walkers/UpdateSAMSortOrderWalker.java => gatk/walkers/FixBAMSortOrderTag.java} (66%) rename java/src/org/broadinstitute/sting/{playground => }/gatk/walkers/PrintRODsWalker.java (79%) diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/ClipReadsWalker.java b/java/src/org/broadinstitute/sting/gatk/walkers/ClipReadsWalker.java similarity index 99% rename from java/src/org/broadinstitute/sting/playground/gatk/walkers/ClipReadsWalker.java rename to java/src/org/broadinstitute/sting/gatk/walkers/ClipReadsWalker.java index 2ddd7f480..9bc728440 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/ClipReadsWalker.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/ClipReadsWalker.java @@ -1,4 +1,4 @@ -package org.broadinstitute.sting.playground.gatk.walkers; +package org.broadinstitute.sting.gatk.walkers; import net.sf.samtools.*; import net.sf.picard.reference.ReferenceSequenceFileFactory; @@ -8,9 +8,6 @@ import org.broadinstitute.sting.utils.cmdLine.Argument; import org.broadinstitute.sting.utils.Utils; import org.broadinstitute.sting.utils.Pair; import org.broadinstitute.sting.utils.BaseUtils; -import org.broadinstitute.sting.gatk.walkers.Requires; -import org.broadinstitute.sting.gatk.walkers.DataSource; -import org.broadinstitute.sting.gatk.walkers.ReadWalker; import java.util.*; import java.util.regex.Pattern; diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/UpdateSAMSortOrderWalker.java b/java/src/org/broadinstitute/sting/gatk/walkers/FixBAMSortOrderTag.java similarity index 66% rename from java/src/org/broadinstitute/sting/playground/gatk/walkers/UpdateSAMSortOrderWalker.java rename to java/src/org/broadinstitute/sting/gatk/walkers/FixBAMSortOrderTag.java index 27d4e3ce5..c4064e1b8 100644 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/UpdateSAMSortOrderWalker.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/FixBAMSortOrderTag.java @@ -1,6 +1,17 @@ -package org.broadinstitute.sting.playground.gatk.walkers; +package org.broadinstitute.sting.gatk.walkers; + +/* Motivation: BAM files created by samtools which are sorted often don't + * have the sort order set to 'coordinate' in the BAM header (instead it's + * marked as 'unsorted'. Because BAMs are binary files, there's no way to + * easily change the tag. + * + * This walker rewrites a BAM file so that the output is identical to the input + * except that the sort order tag is set to 'coordinate'. + * + * Important note: to run properly in the GATK, the '-U' flag must be used so that + * the input BAM file not be rejected by the system. + */ -import org.broadinstitute.sting.gatk.walkers.ReadWalker; import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; import org.broadinstitute.sting.utils.cmdLine.Argument; import net.sf.samtools.SAMFileWriter; @@ -16,7 +27,7 @@ import java.io.File; * Date: Oct 9, 2009 * Time: 2:21:08 PM */ -public class UpdateSAMSortOrderWalker extends ReadWalker { +public class FixBAMSortOrderTag extends ReadWalker { @Argument(required=true, shortName="out_bam", doc="The samfile to output to") public File SAM_FILE_OUTPUT_LOCATION; diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/PrintRODsWalker.java b/java/src/org/broadinstitute/sting/gatk/walkers/PrintRODsWalker.java similarity index 79% rename from java/src/org/broadinstitute/sting/playground/gatk/walkers/PrintRODsWalker.java rename to java/src/org/broadinstitute/sting/gatk/walkers/PrintRODsWalker.java index 34b97f449..472a27dc2 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/PrintRODsWalker.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/PrintRODsWalker.java @@ -23,18 +23,18 @@ * OTHER DEALINGS IN THE SOFTWARE. */ -package org.broadinstitute.sting.playground.gatk.walkers; +package org.broadinstitute.sting.gatk.walkers; -import org.broadinstitute.sting.gatk.contexts.AlignmentContext; -import org.broadinstitute.sting.gatk.contexts.ReferenceContext; +import org.broadinstitute.sting.gatk.contexts.*; import org.broadinstitute.sting.gatk.refdata.*; -import org.broadinstitute.sting.gatk.walkers.*; +import org.broadinstitute.sting.utils.genotype.Variation; + +import java.util.Iterator; /** * PrintRODsWalker prints out all of the RODs that it sees (using the ROD's toString method) */ -@Requires(value={DataSource.REFERENCE},referenceMetaData=@RMD(name="variant",type=ReferenceOrderedDatum.class)) -public class PrintRODsWalker extends RefWalker { +public class PrintRODsWalker extends RodWalker { /** * Initialize the number of loci processed to zero. @@ -52,10 +52,15 @@ public class PrintRODsWalker extends RefWalker { * @return 1 if the locus was successfully processed, 0 if otherwise */ public Integer map(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { - ReferenceOrderedDatum variant = tracker.lookup("variant", null); + if ( tracker == null ) + return 0; - if (variant != null ) - out.println(variant); + Iterator rods = tracker.getAllRods().iterator(); + while ( rods.hasNext() ) { + ReferenceOrderedDatum rod = rods.next(); + if ( rod instanceof Variation ) + out.println(rod.toString()); + } return 1; }