From 8b0a629a31edd3c962d46f6f5a3312b1b76363ba Mon Sep 17 00:00:00 2001 From: Mark DePristo Date: Fri, 1 Jun 2012 20:18:16 -0400 Subject: [PATCH] Terrible bugfix -- The way I was handling the contig offset ordering wasn't correct. Now the contigs are always indexed in the order in which their corresponding populate() functions are called, so that the order of the contigs is given by the order in which they are in the file, or in our refDict. It has nothing to do with the contig index itself. -- SelectVariants no longers prints all samples to the screen if you aren't selecting any explicitly --- .../gatk/walkers/variantutils/SelectVariants.java | 3 ++- .../sting/utils/codecs/bcf2/BCF2Codec.java | 10 ++++++++-- .../sting/utils/variantcontext/writer/BCF2Writer.java | 5 +++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java index b536eef57..3805e48df 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java @@ -396,7 +396,8 @@ public class SelectVariants extends RodWalker implements TreeR if ( samples.size() == 0 && !NO_SAMPLES_SPECIFIED ) throw new UserException("All samples requested to be included were also requested to be excluded."); - for ( String sample : samples ) + if ( ! NO_SAMPLES_SPECIFIED ) + for ( String sample : samples ) logger.info("Including sample '" + sample + "'"); // if user specified types to include, add these, otherwise, add all possible variant context types to list of vc types to include diff --git a/public/java/src/org/broadinstitute/sting/utils/codecs/bcf2/BCF2Codec.java b/public/java/src/org/broadinstitute/sting/utils/codecs/bcf2/BCF2Codec.java index 2afe50982..48c4c8a4f 100644 --- a/public/java/src/org/broadinstitute/sting/utils/codecs/bcf2/BCF2Codec.java +++ b/public/java/src/org/broadinstitute/sting/utils/codecs/bcf2/BCF2Codec.java @@ -116,8 +116,14 @@ public class BCF2Codec implements FeatureCodec, ReferenceDepende } // create the config offsets - for ( final VCFContigHeaderLine contig : header.getContigLines()) - contigNames.add(contig.getID()); + if ( ! header.getContigLines().isEmpty() ) { + logger.info("Found contig lines in BCF2 file, using those"); + contigNames.clear(); + for ( final VCFContigHeaderLine contig : header.getContigLines()) + contigNames.add(contig.getID()); + } else { + logger.info("Didn't find any contig lines in BCF2 file, falling back (dangerously) to GATK reference dictionary"); + } // create the string dictionary dictionary = parseDictionary(header); diff --git a/public/java/src/org/broadinstitute/sting/utils/variantcontext/writer/BCF2Writer.java b/public/java/src/org/broadinstitute/sting/utils/variantcontext/writer/BCF2Writer.java index 665e0fbff..41621f66e 100644 --- a/public/java/src/org/broadinstitute/sting/utils/variantcontext/writer/BCF2Writer.java +++ b/public/java/src/org/broadinstitute/sting/utils/variantcontext/writer/BCF2Writer.java @@ -64,8 +64,9 @@ class BCF2Writer extends IndexingVariantContextWriter { // -------------------------------------------------------------------------------- private final void createContigDictionary(final Collection contigLines) { - for ( final VCFContigHeaderLine contig : contigLines ) - contigDictionary.put(contig.getID(), contig.getContigIndex()); + int offset = 0; + for ( VCFContigHeaderLine contig : contigLines ) + contigDictionary.put(contig.getID(), offset++); } @Override