From f20f78d77fac3dfd5b43ae30642728fd8b658f5d Mon Sep 17 00:00:00 2001 From: kiran Date: Tue, 16 Mar 2010 04:00:04 +0000 Subject: [PATCH] Don't crash if the tracker is null. Reset the alternate alleles based on the alts present in the subset of samples. git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@3009 348d0f76-0448-11de-a6fe-93d51630548a --- .../walkers/vcftools/VCFSubsetWalker.java | 59 +++++++++++-------- 1 file changed, 35 insertions(+), 24 deletions(-) diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/vcftools/VCFSubsetWalker.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/vcftools/VCFSubsetWalker.java index 4c217b2eb..db71ac73d 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/vcftools/VCFSubsetWalker.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/vcftools/VCFSubsetWalker.java @@ -32,7 +32,6 @@ public class VCFSubsetWalker extends RodWalker, VCFWriter> private VCFWriter vwriter = null; public void initializeWriter() { - Set metaData = new HashSet(); metaData.add(new VCFHeaderLine("source", "VariantsToVCF")); metaData.add(new VCFHeaderLine("reference", this.getToolkit().getArguments().referenceFile.getAbsolutePath())); @@ -51,23 +50,25 @@ public class VCFSubsetWalker extends RodWalker, VCFWriter> public ArrayList map(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { ArrayList records = new ArrayList(); - for (ReferenceOrderedDatum rod : tracker.getAllRods()) { - if (rod instanceof RodVCF) { - RodVCF vcfrod = (RodVCF) rod; - VCFRecord record = vcfrod.mCurrentRecord; + if (tracker != null) { + for (ReferenceOrderedDatum rod : tracker.getAllRods()) { + if (rod instanceof RodVCF) { + RodVCF vcfrod = (RodVCF) rod; + VCFRecord record = vcfrod.mCurrentRecord; - if (SAMPLES == null) { - SAMPLES = new HashSet(); - SAMPLES.addAll(vcfrod.getHeader().getGenotypeSamples()); + if (SAMPLES == null) { + SAMPLES = new HashSet(); + SAMPLES.addAll(vcfrod.getHeader().getGenotypeSamples()); + } + + if (VPATH != null && vwriter == null) { + initializeWriter(); + } + + //out.println(record.toStringEncoding(vcfrod.getHeader())); + + records.add(record); } - - if (VPATH != null && vwriter == null) { - initializeWriter(); - } - - //out.println(record.toStringEncoding(vcfrod.getHeader())); - - records.add(record); } } @@ -80,20 +81,30 @@ public class VCFSubsetWalker extends RodWalker, VCFWriter> private VCFRecord subsetRecord(VCFRecord record) { ArrayList genotypeRecords = new ArrayList(); - for ( VCFGenotypeRecord gr : record.getVCFGenotypeRecords() ) { + HashSet genotypeEncodingSet = new HashSet(); - //if (gr.getSampleName().equalsIgnoreCase(SAMPLE)) { + for ( VCFGenotypeRecord gr : record.getVCFGenotypeRecords() ) { if (SAMPLES.contains(gr.getSampleName())) { - //out.println(gr.getSampleName() + " " + gr.toGenotypeString(record.getAlternateAlleles())); genotypeRecords.add(gr); + + for (VCFGenotypeEncoding allele : gr.getAlleles()) { + if (!allele.getBases().equalsIgnoreCase(record.getReference())) { + genotypeEncodingSet.add(allele); + } + } } } + ArrayList genotypeEncodings = new ArrayList(); + for (VCFGenotypeEncoding allele : genotypeEncodingSet) { + genotypeEncodings.add(allele); + } + VCFRecord subset = new VCFRecord(record.getReference(), record.getLocation().getContig(), (int) record.getLocation().getStart(), record.getID(), - record.getAlternateAlleles(), + genotypeEncodings, record.getQual(), record.getFilterString(), record.getInfoValues(), @@ -116,8 +127,8 @@ public class VCFSubsetWalker extends RodWalker, VCFWriter> //if (isVariant && !subset.isFiltered()) { if ((isVariant || INCLUDE_NON_VARIANTS) && (!subset.isFiltered() || INCLUDE_FILTERED)) { - if (writer != null) { - writer.addRecord(subset); + if (vwriter != null) { + vwriter.addRecord(subset); } else { out.println(subset.toStringEncoding(vheader)); } @@ -128,8 +139,8 @@ public class VCFSubsetWalker extends RodWalker, VCFWriter> } public void onTraversalDone(VCFWriter writer) { - if (writer != null) { - writer.close(); + if (vwriter != null) { + vwriter.close(); } } }