From e112df20dfc17d69dbc925e866eb049ab10f13a2 Mon Sep 17 00:00:00 2001 From: ebanks Date: Wed, 27 Oct 2010 06:33:03 +0000 Subject: [PATCH] Use a sorting VCF writer because records can flip positions during left-alignment git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@4583 348d0f76-0448-11de-a6fe-93d51630548a --- .../gatk/walkers/variantutils/LeftAlignVariants.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/LeftAlignVariants.java b/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/LeftAlignVariants.java index d2ce95985..e8c6dd566 100755 --- a/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/LeftAlignVariants.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/LeftAlignVariants.java @@ -31,6 +31,7 @@ import net.sf.samtools.CigarOperator; import org.broad.tribble.util.variantcontext.Allele; import org.broad.tribble.util.variantcontext.Genotype; import org.broad.tribble.util.variantcontext.VariantContext; +import org.broad.tribble.vcf.SortingVCFWriter; import org.broad.tribble.vcf.VCFHeader; import org.broad.tribble.vcf.VCFHeaderLine; import org.broad.tribble.vcf.VCFWriter; @@ -56,14 +57,18 @@ import java.util.*; public class LeftAlignVariants extends RodWalker { @Output(doc="File to which variants should be written",required=true) - protected VCFWriter writer = null; + protected VCFWriter baseWriter = null; + + private SortingVCFWriter writer; public void initialize() { Set samples = SampleUtils.getSampleListWithVCFHeader(getToolkit(), Arrays.asList("variant")); Map vcfHeaders = VCFUtils.getVCFHeadersFromRods(getToolkit(), Arrays.asList("variant")); Set headerLines = vcfHeaders.get("variant").getMetaData(); - writer.writeHeader(new VCFHeader(headerLines, samples)); + baseWriter.writeHeader(new VCFHeader(headerLines, samples)); + + writer = new SortingVCFWriter(baseWriter, 200); } public Integer map(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { @@ -115,7 +120,7 @@ public class LeftAlignVariants extends RodWalker { Cigar newCigar = AlignmentUtils.leftAlignIndel(originalCigar, refSeq, originalIndel, 0, 0); // update if necessary and write - if ( !newCigar.equals(originalCigar) ) { + if ( !newCigar.equals(originalCigar) && newCigar.numCigarElements() > 1 ) { int difference = originalIndex - newCigar.getCigarElement(0).getLength(); GenomeLoc newLoc = GenomeLocParser.createPotentiallyInvalidGenomeLoc(vc.getChr(), vc.getStart()-difference, vc.getEnd()-difference); //System.out.println("Moving record from " + vc.getChr()+":"+vc.getStart() + " to " + newLoc);