From 0b185790933ba238ebae85f9eeca29aa1b041a04 Mon Sep 17 00:00:00 2001
From: Louis Bergelson
Date: Mon, 11 Dec 2023 16:56:19 -0500
Subject: [PATCH] Support for custom ploidy regions in HaplotypeCaller (#8609)
For having variable ploidy in different regions, like making haploid calls outside the PAR on chrX or chrY,
there is now a --ploidy-regions flag. The -ploidy flag sets the default ploidy to use everywhere, and --ploidy-regions
should be a .bed or .interval_list with "name" column containing the desired ploidy to use in that region
when genotyping. Note that variants near the boundary may not have the matching ploidy since the ploidy used will be determined using the following precedence:
* ploidy given in --ploidy-regions for all intervals overlapping the active region when calling your variant
with ties broken by using largest ploidy); note ploidy interval may only overlap the active region and determine
the ploidy of your variant even if the end coordinate written for your variant lies outside the given region
* ploidy given via global -ploidy flag
* ploidy determined by the default global built-in constant for humans (2).
---------
Co-authored-by: Ty Kay
Co-authored-by: rickymagner <81349869+rickymagner@users.noreply.github.com>
---
.../formats/records/SimpleCount.java | 14 +-
.../haplotypecaller/HaplotypeCaller.java | 15 +
.../HaplotypeCallerArgumentCollection.java | 17 +-
.../HaplotypeCallerEngine.java | 161 +++++++++--
.../RampedHaplotypeCallerEngine.java | 8 +-
.../HaplotypeCallerIntegrationTest.java | 119 ++++++++
.../expected.testPloidyRegions.vcf | 273 ++++++++++++++++++
.../testMismatchPloidyRegions.bed | 3 +
.../testNegativePloidyRegions.bed | 3 +
.../testNonIntegerPloidyRegions.bed | 3 +
.../haplotypecaller/testPloidyRegions.bed | 4 +
11 files changed, 598 insertions(+), 22 deletions(-)
create mode 100644 src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/expected.testPloidyRegions.vcf
create mode 100644 src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/testMismatchPloidyRegions.bed
create mode 100644 src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/testNegativePloidyRegions.bed
create mode 100644 src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/testNonIntegerPloidyRegions.bed
create mode 100644 src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/testPloidyRegions.bed
diff --git a/src/main/java/org/broadinstitute/hellbender/tools/copynumber/formats/records/SimpleCount.java b/src/main/java/org/broadinstitute/hellbender/tools/copynumber/formats/records/SimpleCount.java
index 5d6521850b5..bdf70dc5ccf 100644
--- a/src/main/java/org/broadinstitute/hellbender/tools/copynumber/formats/records/SimpleCount.java
+++ b/src/main/java/org/broadinstitute/hellbender/tools/copynumber/formats/records/SimpleCount.java
@@ -2,6 +2,8 @@
import htsjdk.samtools.util.Locatable;
import htsjdk.tribble.Feature;
+import htsjdk.tribble.NamedFeature;
+import org.broadinstitute.hellbender.exceptions.UserException;
import org.broadinstitute.hellbender.utils.SimpleInterval;
import org.broadinstitute.hellbender.utils.Utils;
import org.broadinstitute.hellbender.utils.param.ParamUtils;
@@ -19,7 +21,17 @@ public class SimpleCount implements Locatable, Feature {
public SimpleCount(final SimpleInterval interval,
final int count) {
this.interval = Utils.nonNull(interval);
- this.count = ParamUtils.isPositiveOrZero(count, "Can't construct SimpleCount with negative count.");
+ this.count = ParamUtils.isPositiveOrZero(count, "Can't construct SimpleCount with negative count at " + interval.getContig() + ":" + interval.getStart() + "-" + interval.getEnd() + ".");
+ }
+
+ public SimpleCount(final NamedFeature namedFeature) {
+ try {
+ int count = Integer.parseInt(namedFeature.getName());
+ this.interval = new SimpleInterval(namedFeature);
+ this.count = ParamUtils.isPositiveOrZero(count, "Can't construct SimpleCount with negative count at " + namedFeature.getContig() + ":" + namedFeature.getStart() + "-" + namedFeature.getEnd() + ".");
+ } catch (NumberFormatException e) {
+ throw new IllegalArgumentException("Error parsing name into integer for feature at " + namedFeature.getContig() + ":" + namedFeature.getStart() + "-" + namedFeature.getEnd() + ".");
+ }
}
@Override
diff --git a/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/HaplotypeCaller.java b/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/HaplotypeCaller.java
index f504d400b13..557e7f0add9 100644
--- a/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/HaplotypeCaller.java
+++ b/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/HaplotypeCaller.java
@@ -127,6 +127,21 @@
* argument. Note however that very high ploidies (such as are encountered in large pooled experiments) may cause
* performance challenges including excessive slowness. We are working on resolving these limitations.
*
+ * For having variable ploidy in different regions, like making haploid calls outside the PAR on chrX or chrY,
+ * see the --ploidy-regions flag. The -ploidy flag sets the default ploidy to use everywhere, and --ploidy-regions
+ * should be a .bed or .interval_list with "name" column containing the desired ploidy to use in that region
+ * when genotyping. Note that variants near the boundary may not have the matching ploidy since the ploidy used will
+ * be determined using the following precedence:
+ *
+ * - ploidy given in --ploidy-regions for all intervals overlapping the active region when calling your variant
+ * (with ties broken by using largest ploidy); note ploidy interval may only overlap the active region and determine
+ * the ploidy of your variant even if the end coordinate written for your variant lies outside the given region;
+ * - ploidy given via global -ploidy flag;
+ * - ploidy determined by the default global built-in constant for humans (2).
+ *
+ *
+ * Coordinates for the PAR for CRCh38 can be found here.
+ *
* Additional Notes
*
* - When working with PCR-free data, be sure to set `-pcr_indel_model NONE` (see argument below).
diff --git a/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/HaplotypeCallerArgumentCollection.java b/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/HaplotypeCallerArgumentCollection.java
index 7ab58d73264..f818659bb5e 100644
--- a/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/HaplotypeCallerArgumentCollection.java
+++ b/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/HaplotypeCallerArgumentCollection.java
@@ -1,7 +1,10 @@
package org.broadinstitute.hellbender.tools.walkers.haplotypecaller;
+import htsjdk.tribble.NamedFeature;
import htsjdk.variant.variantcontext.VariantContext;
+import org.apache.arrow.util.VisibleForTesting;
import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.SerializationUtils;
import org.broadinstitute.barclay.argparser.Advanced;
import org.broadinstitute.barclay.argparser.Argument;
import org.broadinstitute.barclay.argparser.ArgumentCollection;
@@ -9,6 +12,7 @@
import org.broadinstitute.hellbender.cmdline.ReadFilterArgumentDefinitions;
import org.broadinstitute.hellbender.cmdline.StandardArgumentDefinitions;
import org.broadinstitute.hellbender.cmdline.argumentcollections.DbsnpArgumentCollection;
+import org.broadinstitute.hellbender.engine.FeatureDataSource;
import org.broadinstitute.hellbender.engine.FeatureInput;
import org.broadinstitute.hellbender.engine.GATKPath;
import org.broadinstitute.hellbender.engine.spark.AssemblyRegionArgumentCollection;
@@ -23,9 +27,11 @@
/**
* Set of arguments for the {@link HaplotypeCallerEngine}
*/
-public class HaplotypeCallerArgumentCollection extends AssemblyBasedCallerArgumentCollection implements Serializable{
+public class HaplotypeCallerArgumentCollection extends AssemblyBasedCallerArgumentCollection implements Serializable {
private static final long serialVersionUID = 1L;
+ public static final String PLOIDY_REGIONS_NAME = "ploidy-regions";
+
public static final String GQ_BAND_LONG_NAME = "gvcf-gq-bands";
public static final String GQ_BAND_SHORT_NAME = "GQB";
public static final String DO_NOT_CORRECT_OVERLAPPING_BASE_QUALITIES_LONG_NAME = "do-not-correct-overlapping-quality";
@@ -61,6 +67,9 @@ protected ReadThreadingAssemblerArgumentCollection getReadThreadingAssemblerArgu
return new HaplotypeCallerReadThreadingAssemblerArgumentCollection();
}
+ @Argument(fullName = PLOIDY_REGIONS_NAME, shortName = PLOIDY_REGIONS_NAME, doc = "Interval file with column specifying desired ploidy for genotyping models. Overrides default ploidy and user-provided --ploidy argument in specific regions.", optional = true)
+ public FeatureInput ploidyRegions = null;
+
/**
* You can use this argument to specify that HC should process a single sample out of a multisample BAM file. This
* is especially useful if your samples are all in the same file but you need to run them individually through HC
@@ -312,6 +321,12 @@ boolean isFlowBasedCallingMode() {
return flowMode != FlowMode.NONE;
}
+ // Copy method used to create new hcArgs with same fields except input ploidy model
+ public HaplotypeCallerArgumentCollection copyWithNewPloidy(int ploidy) {
+ HaplotypeCallerArgumentCollection newArgsWithNewPloidy = SerializationUtils.clone(this);
+ newArgsWithNewPloidy.standardArgs.genotypeArgs.samplePloidy = ploidy;
+ return newArgsWithNewPloidy;
+ }
/**
* the different flow modes, in terms of their parameters and their values
diff --git a/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/HaplotypeCallerEngine.java b/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/HaplotypeCallerEngine.java
index 71f6d64ede7..9e09eeba8a9 100644
--- a/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/HaplotypeCallerEngine.java
+++ b/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/HaplotypeCallerEngine.java
@@ -3,7 +3,10 @@
import htsjdk.samtools.SAMFileHeader;
import htsjdk.samtools.SAMSequenceDictionary;
import htsjdk.samtools.reference.ReferenceSequenceFile;
+import htsjdk.samtools.util.Locatable;
+import htsjdk.samtools.util.OverlapDetector;
import htsjdk.samtools.util.RuntimeIOException;
+import htsjdk.tribble.NamedFeature;
import htsjdk.variant.variantcontext.*;
import htsjdk.variant.variantcontext.writer.Options;
import htsjdk.variant.variantcontext.writer.VariantContextWriter;
@@ -20,12 +23,15 @@
import org.broadinstitute.hellbender.engine.filters.WellformedReadFilter;
import org.broadinstitute.hellbender.engine.spark.AssemblyRegionArgumentCollection;
import org.broadinstitute.hellbender.exceptions.UserException;
+import org.broadinstitute.hellbender.tools.copynumber.formats.records.SimpleCount;
import org.broadinstitute.hellbender.tools.walkers.annotator.*;
import org.broadinstitute.hellbender.tools.walkers.genotyper.GenotypeAssignmentMethod;
+import org.broadinstitute.hellbender.tools.walkers.genotyper.GenotypingEngine;
import org.broadinstitute.hellbender.tools.walkers.genotyper.MinimalGenotypingEngine;
import org.broadinstitute.hellbender.tools.walkers.genotyper.OutputMode;
import org.broadinstitute.hellbender.tools.walkers.genotyper.StandardCallerArgumentCollection;
import org.broadinstitute.hellbender.tools.walkers.haplotypecaller.readthreading.ReadThreadingAssembler;
+import org.broadinstitute.hellbender.utils.IntervalUtils;
import org.broadinstitute.hellbender.utils.fasta.CachingIndexedFastaSequenceFile;
import org.broadinstitute.hellbender.utils.haplotype.Event;
import org.broadinstitute.hellbender.utils.pileup.PileupBasedAlleles;
@@ -83,8 +89,31 @@ public class HaplotypeCallerEngine implements AssemblyRegionEvaluator {
protected final OutputStreamWriter assemblyDebugOutStream;
- // the genotyping engine for the isActive() determination
- private MinimalGenotypingEngine activeRegionEvaluationGenotyperEngine = null;
+ /**
+ * List of interval file entries including regions and custom ploidy values to apply in that region.
+ */
+ protected final List ploidyRegions = new ArrayList<>();
+
+ /**
+ * An OverlapDetector object for checking whether region overlaps given ploidyRegions.
+ */
+ protected final OverlapDetector ploidyRegionsOverlapDetector;
+
+ /**
+ * List of all custom ploidies provided by user
+ */
+ private final LinkedHashSet allCustomPloidies;
+
+ /**
+ * The default genotyping engine for the isActive() determination
+ */
+ private MinimalGenotypingEngine defaultActiveRegionEvaluationGenotyperEngine = null;
+
+ /**
+ * Map of user-provided ploidy values to corresponding active region genotyper. Values are checked as valid Integers during
+ * initialization, but Strings are used as keys to avoid parsing repeatedly during runtime.
+ */
+ private final HashMap ploidyToActiveEvaluationGenotyper = new HashMap<>();
protected ReadThreadingAssembler assemblyEngine = null;
@@ -93,7 +122,16 @@ public class HaplotypeCallerEngine implements AssemblyRegionEvaluator {
// If we are in PDHMM mode we need to hold onto two likelihoods engines for the fallback
private ReadLikelihoodCalculationEngine pdhmmLikelihoodCalculationEngine = null;
- protected HaplotypeCallerGenotypingEngine genotypingEngine = null;
+ /**
+ * The default genotyping engine to use for actual variant calling and genotyping in an active region.
+ */
+ protected HaplotypeCallerGenotypingEngine defaultGenotypingEngine = null;
+
+ /**
+ * Map of user-provided ploidy values to corresponding genotyper. Values are checked as valid Integers during
+ * initialization, but Strings are used as keys to avoid parsing repeatedly during runtime.
+ */
+ protected final HashMap ploidyToGenotyperMap = new HashMap<>();
private VariantAnnotatorEngine annotationEngine = null;
@@ -163,7 +201,7 @@ public class HaplotypeCallerEngine implements AssemblyRegionEvaluator {
/**
* Create and initialize a new HaplotypeCallerEngine given a collection of HaplotypeCaller arguments, a reads header,
* and a reference file
- * @param hcArgs command-line arguments for the HaplotypeCaller
+ * @param hcArgs command-line arguments for the HaplotypeCaller
* @param assemblyRegionArgs
* @param createBamOutIndex true to create an index file for the bamout
* @param createBamOutMD5 true to create an md5 file for the bamout
@@ -196,6 +234,21 @@ public HaplotypeCallerEngine(final HaplotypeCallerArgumentCollection hcArgs, Ass
HaplotypeCallerGenotypingDebugger.initialize(hcArgs.genotyperDebugOutStream);
}
+ // Parse the user provided custom ploidy regions into ploidyRegions object containing SimpleCounts
+ if (this.hcArgs.ploidyRegions != null) {
+ FeatureDataSource ploidyDataSource = new FeatureDataSource<>(this.hcArgs.ploidyRegions, FeatureDataSource.DEFAULT_QUERY_LOOKAHEAD_BASES, NamedFeature.class);
+ ploidyDataSource.forEach(r -> this.ploidyRegions.add(new SimpleCount(r)));
+ }
+
+ for (SimpleCount region : this.ploidyRegions) {
+ if (!IntervalUtils.intervalIsOnDictionaryContig(region.getInterval(), readsHeader.getSequenceDictionary())) {
+ throw new UserException("Invalid region provided for --ploidy-regions at " + region.getContig() + ":" + region.getStart() + "-" + region.getEnd() + ". Contig name or endpoint doesn't match read sequence dictionary.");
+ }
+ }
+
+ this.ploidyRegionsOverlapDetector = OverlapDetector.create(this.ploidyRegions);
+ this.allCustomPloidies = this.ploidyRegions.stream().map(SimpleCount::getCount).collect(Collectors.toCollection(LinkedHashSet::new));
+
trimmer = new AssemblyRegionTrimmer(assemblyRegionArgs, readsHeader.getSequenceDictionary());
initialize(createBamOutIndex, createBamOutMD5);
}
@@ -242,8 +295,16 @@ private void initialize(boolean createBamOutIndex, final boolean createBamOutMD5
initializeActiveRegionEvaluationGenotyperEngine();
- genotypingEngine = new HaplotypeCallerGenotypingEngine(hcArgs, samplesList, ! hcArgs.doNotRunPhysicalPhasing, hcArgs.applyBQD);
- genotypingEngine.setAnnotationEngine(annotationEngine);
+ defaultGenotypingEngine = new HaplotypeCallerGenotypingEngine(hcArgs, samplesList, ! hcArgs.doNotRunPhysicalPhasing, hcArgs.applyBQD);
+ defaultGenotypingEngine.setAnnotationEngine(annotationEngine);
+
+ // Create other custom genotyping engines if user provided ploidyRegions
+ for (final int ploidy : this.allCustomPloidies) {
+ HaplotypeCallerArgumentCollection newPloidyHcArgs = hcArgs.copyWithNewPloidy(ploidy);
+ HaplotypeCallerGenotypingEngine newGenotypingEngine = new HaplotypeCallerGenotypingEngine(newPloidyHcArgs, samplesList, ! hcArgs.doNotRunPhysicalPhasing, hcArgs.applyBQD);
+ newGenotypingEngine.setAnnotationEngine(annotationEngine);
+ this.ploidyToGenotyperMap.put(ploidy, newGenotypingEngine);
+ }
boolean isFlowBased = (hcArgs.likelihoodArgs.likelihoodEngineImplementation == ReadLikelihoodCalculationEngine.Implementation.FlowBased)
|| (hcArgs.likelihoodArgs.likelihoodEngineImplementation == ReadLikelihoodCalculationEngine.Implementation.FlowBasedHMM);
@@ -381,8 +442,18 @@ private void initializeActiveRegionEvaluationGenotyperEngine() {
// Seems that at least with some test data we can lose genuine haploid variation if we use ploidy == 1
activeRegionArgs.genotypeArgs.samplePloidy = Math.max(MINIMUM_PUTATIVE_PLOIDY_FOR_ACTIVE_REGION_DISCOVERY, hcArgs.standardArgs.genotypeArgs.samplePloidy);
- activeRegionEvaluationGenotyperEngine = new MinimalGenotypingEngine(activeRegionArgs, samplesList);
- activeRegionEvaluationGenotyperEngine.setLogger(logger);
+ defaultActiveRegionEvaluationGenotyperEngine = new MinimalGenotypingEngine(activeRegionArgs, samplesList);
+ defaultActiveRegionEvaluationGenotyperEngine.setLogger(logger);
+
+ // If custom ploidyRegions provided, create corresponding map for active region determination genotyper
+ for (final int ploidy : this.allCustomPloidies) {
+ StandardCallerArgumentCollection newPloidyActiveArgs = new StandardCallerArgumentCollection();
+ newPloidyActiveArgs.copyStandardCallerArgsFrom(activeRegionArgs);
+ newPloidyActiveArgs.genotypeArgs.samplePloidy = Math.max(MINIMUM_PUTATIVE_PLOIDY_FOR_ACTIVE_REGION_DISCOVERY, ploidy);
+ MinimalGenotypingEngine newActiveGenotypingEngine = new MinimalGenotypingEngine(newPloidyActiveArgs, samplesList);
+ newActiveGenotypingEngine.setLogger(logger);
+ this.ploidyToActiveEvaluationGenotyper.put(ploidy, newActiveGenotypingEngine);
+ }
}
/**
@@ -455,7 +526,7 @@ public VCFHeader makeVCFHeader( final SAMSequenceDictionary sequenceDictionary,
final Set headerInfo = new HashSet<>();
headerInfo.addAll(defaultToolHeaderLines);
- headerInfo.addAll(genotypingEngine.getAppropriateVCFInfoHeaders());
+ headerInfo.addAll(defaultGenotypingEngine.getAppropriateVCFInfoHeaders());
// all annotation fields from VariantAnnotatorEngine
headerInfo.addAll(annotationEngine.getVCFAnnotationDescriptions(emitReferenceConfidence()));
// all callers need to add these standard annotation header lines
@@ -523,6 +594,57 @@ public void writeHeader( final VariantContextWriter vcfWriter, final SAMSequence
vcfWriter.writeHeader(makeVCFHeader(sequenceDictionary, defaultToolHeaderLines));
}
+ /**
+ * Determines the appropriate ploidy to use at given site for different genotyping engines.
+ * @param region Current region of interest
+ * @return Ploidy value to use here given user inputs, or -1 if fall back to default
+ */
+ private int getPloidyToUseAtThisSite(Locatable region) {
+ Set overlaps = this.ploidyRegionsOverlapDetector.getOverlaps(region);
+ // Return first engine for interval overlapping this region
+ if (!overlaps.isEmpty()) {
+ Iterator intervals = overlaps.iterator();
+ int max = intervals.next().getCount();
+ while (intervals.hasNext()) {
+ int next = intervals.next().getCount();
+ if (next > max) {
+ max = next;
+ }
+ }
+ return max;
+ } else {
+ return -1; // Sentinel value to fall back to default genotyper
+ }
+ }
+
+ /**
+ * Selects appropriate active region genotyping engine for given region
+ * @param region Current region of interest
+ * @return Active genotyping engine with correct ploidy setting for given region
+ */
+ private MinimalGenotypingEngine getLocalActiveGenotyper(Locatable region) {
+ int currentPloidy = getPloidyToUseAtThisSite(region);
+ if (currentPloidy == -1) {
+ return this.defaultActiveRegionEvaluationGenotyperEngine;
+ } else {
+ return this.ploidyToActiveEvaluationGenotyper.get(currentPloidy);
+ }
+ }
+
+ /**
+ * Selects appropriate genotyping engine for given region.
+ * @param region Current region of interest, e.g. AssemblyRegion
+ * @return Genotyping engine with correct ploidy setting for given region
+ */
+ protected HaplotypeCallerGenotypingEngine getLocalGenotypingEngine(Locatable region) {
+ int currentPloidy = getPloidyToUseAtThisSite(region);
+ if (currentPloidy == -1) {
+ return this.defaultGenotypingEngine;
+ } else {
+ return this.ploidyToGenotyperMap.get(currentPloidy);
+ }
+ }
+
/**
* Given a pileup, returns an ActivityProfileState containing the probability (0.0 to 1.0) that it's an "active" site.
*
@@ -537,6 +659,8 @@ public void writeHeader( final VariantContextWriter vcfWriter, final SAMSequence
*/
@Override
public ActivityProfileState isActive(final AlignmentContext context, final ReferenceContext ref, final FeatureContext features) {
+ MinimalGenotypingEngine localActiveGenotypingEngine = getLocalActiveGenotyper(ref);
+
if (forceCallingAllelesPresent && features.getValues(hcArgs.alleles, ref).stream().anyMatch(vc -> hcArgs.forceCallFiltered || vc.isNotFiltered())) {
return new ActivityProfileState(ref.getInterval(), 1.0);
}
@@ -546,7 +670,7 @@ public ActivityProfileState isActive(final AlignmentContext context, final Refer
return new ActivityProfileState(ref.getInterval(), 0.0);
}
- final int ploidy = activeRegionEvaluationGenotyperEngine.getConfiguration().genotypeArgs.samplePloidy;
+ final int ploidy = localActiveGenotypingEngine.getConfiguration().genotypeArgs.samplePloidy;
final List noCall = GATKVariantContextUtils.noCallAlleles(ploidy); // used to noCall all genotypes until the exact model is applied
final Map splitContexts;
@@ -565,7 +689,7 @@ public ActivityProfileState isActive(final AlignmentContext context, final Refer
sample.getValue().getBasePileup().forEach(p -> PileupBasedAlleles.addMismatchPercentageToRead(p.getRead(), readsHeader, ref));
}
// The ploidy here is not dictated by the sample but by the simple genotyping-engine used to determine whether regions are active or not.
- final int activeRegionDetectionHackishSamplePloidy = activeRegionEvaluationGenotyperEngine.getConfiguration().genotypeArgs.samplePloidy;
+ final int activeRegionDetectionHackishSamplePloidy = localActiveGenotypingEngine.getConfiguration().genotypeArgs.samplePloidy;
final double[] genotypeLikelihoods = ((RefVsAnyResult) referenceConfidenceModel.calcGenotypeLikelihoodsOfRefVsAny(
activeRegionDetectionHackishSamplePloidy,
sample.getValue().getBasePileup(), ref.getBase(),
@@ -579,9 +703,9 @@ public ActivityProfileState isActive(final AlignmentContext context, final Refer
if (genotypes.size() == 1) {
// Faster implementation using exact marginalization instead of iteration
- isActiveProb = activeRegionEvaluationGenotyperEngine.calculateSingleSampleRefVsAnyActiveStateProfileValue(genotypes.get(0).getLikelihoods().getAsVector());
+ isActiveProb = localActiveGenotypingEngine.calculateSingleSampleRefVsAnyActiveStateProfileValue(genotypes.get(0).getLikelihoods().getAsVector());
} else {
- final VariantContext vcOut = activeRegionEvaluationGenotyperEngine.calculateGenotypes(new VariantContextBuilder("HCisActive!", context.getContig(), context.getLocation().getStart(), context.getLocation().getEnd(), alleles).genotypes(genotypes).make());
+ final VariantContext vcOut = localActiveGenotypingEngine.calculateGenotypes(new VariantContextBuilder("HCisActive!", context.getContig(), context.getLocation().getStart(), context.getLocation().getEnd(), alleles).genotypes(genotypes).make());
isActiveProb = vcOut == null ? 0.0 : QualityUtils.qualToProb(vcOut.getPhredScaledQual());
}
@@ -607,6 +731,8 @@ public ActivityProfileState isActive(final AlignmentContext context, final Refer
* @return List of variants discovered in the region (may be empty)
*/
public List callRegion(final AssemblyRegion region, final FeatureContext features, final ReferenceContext referenceContext) {
+ final HaplotypeCallerGenotypingEngine localGenotypingEngine = getLocalGenotypingEngine(region);
+
if ( hcArgs.justDetermineActiveRegions ) {
// we're benchmarking ART and/or the active region determination code in the HC, just leave without doing any work
return NO_CALLS;
@@ -799,7 +925,7 @@ public List callRegion(final AssemblyRegion region, final Featur
if (hcArgs.filterAlleles) {
logger.debug("Filtering alleles");
- AlleleFilteringHC alleleFilter = new AlleleFilteringHC(hcArgs, assemblyDebugOutStream, genotypingEngine);
+ AlleleFilteringHC alleleFilter = new AlleleFilteringHC(hcArgs, assemblyDebugOutStream, localGenotypingEngine);
//need to update haplotypes to find the alleles
EventMap.buildEventMapsForHaplotypes(readLikelihoods.alleles(),
assemblyResult.getFullReferenceWithPadding(),
@@ -849,7 +975,7 @@ public List callRegion(final AssemblyRegion region, final Featur
}
}
- final CalledHaplotypes calledHaplotypes = genotypingEngine.assignGenotypeLikelihoods(
+ final CalledHaplotypes calledHaplotypes = localGenotypingEngine.assignGenotypeLikelihoods(
haplotypes,
subsettedReadLikelihoodsFinal,
perSampleFilteredReadList,
@@ -890,7 +1016,7 @@ public List callRegion(final AssemblyRegion region, final Featur
result.addAll(referenceConfidenceModel.calculateRefConfidence(assemblyResult.getReferenceHaplotype(),
calledHaplotypes.getCalledHaplotypes(), assemblyResult.getPaddedReferenceLoc(), regionForGenotyping,
- subsettedReadLikelihoodsFinal, genotypingEngine.getPloidyModel(), calledHaplotypes.getCalls(), hcArgs.standardArgs.genotypeArgs.supportVariants != null,
+ subsettedReadLikelihoodsFinal, localGenotypingEngine.getPloidyModel(), calledHaplotypes.getCalls(), hcArgs.standardArgs.genotypeArgs.supportVariants != null,
VCpriors));
trimmingResult.nonVariantRightFlankRegion().ifPresent(flank -> result.addAll(referenceModelForNoVariation(flank, false, VCpriors)));
@@ -948,6 +1074,7 @@ protected boolean containsCalls(final CalledHaplotypes calledHaplotypes) {
* @return a list of variant contexts (can be empty) to emit for this ref region
*/
protected List referenceModelForNoVariation(final AssemblyRegion region, final boolean needsToBeFinalized, final List VCpriors) {
+ final HaplotypeCallerGenotypingEngine localGenotypingEngine = getLocalGenotypingEngine(region);
if ( emitReferenceConfidence() ) {
if ( needsToBeFinalized ) {
AssemblyBasedCallerUtils.finalizeRegion(region,
@@ -967,7 +1094,7 @@ protected List referenceModelForNoVariation(final AssemblyRegion
final List haplotypes = Collections.singletonList(refHaplotype);
return referenceConfidenceModel.calculateRefConfidence(refHaplotype, haplotypes,
paddedLoc, region, AssemblyBasedCallerUtils.createDummyStratifiedReadMap(refHaplotype, samplesList, readsHeader, region),
- genotypingEngine.getPloidyModel(), Collections.emptyList(), hcArgs.standardArgs.genotypeArgs.supportVariants != null, VCpriors);
+ localGenotypingEngine.getPloidyModel(), Collections.emptyList(), hcArgs.standardArgs.genotypeArgs.supportVariants != null, VCpriors);
}
else {
return NO_CALLS;
diff --git a/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/RampedHaplotypeCallerEngine.java b/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/RampedHaplotypeCallerEngine.java
index b5b5c2cfa88..e47245c9f91 100644
--- a/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/RampedHaplotypeCallerEngine.java
+++ b/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/RampedHaplotypeCallerEngine.java
@@ -460,6 +460,7 @@ private void uncollapse(final CallRegionContext context) {
}
private void filter(final CallRegionContext context) {
+ final HaplotypeCallerGenotypingEngine localGenotypingEngine = getLocalGenotypingEngine(context.region);
try {
// no need for this step?
@@ -479,7 +480,7 @@ private void filter(final CallRegionContext context) {
context.suspiciousLocations = new HashSet<>();
if (hcArgs.filterAlleles) {
logger.debug("Filtering alleles");
- AlleleFilteringHC alleleFilter = new AlleleFilteringHC(hcArgs, assemblyDebugOutStream, genotypingEngine);
+ AlleleFilteringHC alleleFilter = new AlleleFilteringHC(hcArgs, assemblyDebugOutStream, localGenotypingEngine);
//need to update haplotypes to find the alleles
EventMap.buildEventMapsForHaplotypes(context.readLikelihoods.alleles(),
context.assemblyResult.getFullReferenceWithPadding(),
@@ -520,6 +521,7 @@ private void filter(final CallRegionContext context) {
}
private void genotype(final CallRegionContext context) {
+ final HaplotypeCallerGenotypingEngine localGenotypingEngine = getLocalGenotypingEngine(context.region);
// no need for this step?
if ( context.regionVariants != null ) {
@@ -542,7 +544,7 @@ private void genotype(final CallRegionContext context) {
// haplotype containing C as reference (and vice versa). Now this is fine if all possible haplotypes are included
// in the genotyping, but we lose information if we select down to a few haplotypes. [EB]
List haplotypes = context.readLikelihoods.alleles();
- final CalledHaplotypes calledHaplotypes = genotypingEngine.assignGenotypeLikelihoods(
+ final CalledHaplotypes calledHaplotypes = localGenotypingEngine.assignGenotypeLikelihoods(
haplotypes,
context.readLikelihoods,
perSampleFilteredReadList,
@@ -582,7 +584,7 @@ private void genotype(final CallRegionContext context) {
result.addAll(referenceConfidenceModel.calculateRefConfidence(context.assemblyResult.getReferenceHaplotype(),
calledHaplotypes.getCalledHaplotypes(), context.assemblyResult.getPaddedReferenceLoc(), regionForGenotyping,
- context.readLikelihoods, genotypingEngine.getPloidyModel(), calledHaplotypes.getCalls(), hcArgs.standardArgs.genotypeArgs.supportVariants != null,
+ context.readLikelihoods, localGenotypingEngine.getPloidyModel(), calledHaplotypes.getCalls(), hcArgs.standardArgs.genotypeArgs.supportVariants != null,
context.VCpriors));
context.nonVariantRightFlankRegion.ifPresent(flank -> result.addAll(referenceModelForNoVariation(flank, false, context.VCpriors)));
diff --git a/src/test/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/HaplotypeCallerIntegrationTest.java b/src/test/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/HaplotypeCallerIntegrationTest.java
index 54585b1709d..cddb87c5dac 100644
--- a/src/test/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/HaplotypeCallerIntegrationTest.java
+++ b/src/test/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/HaplotypeCallerIntegrationTest.java
@@ -946,6 +946,125 @@ public void testHaplotypeCallerRemoveAltAlleleBasedOnHaptypeScores() throws IOEx
}
}
+ @Test(dataProvider="HaplotypeCallerTestInputs")
+ public void testCustomPloidyRegions(final String inputFileName, final String referenceFileName) throws Exception {
+ Utils.resetRandomGenerator();
+
+ final File output = createTempFile("output", ".vcf");
+ final File expected = new File(TEST_FILES_DIR, "expected.testPloidyRegions.vcf");
+ final File ploidyRegions = new File(TEST_FILES_DIR, "testPloidyRegions.bed");
+
+ final String[] args = {
+ "-I", inputFileName,
+ "-R", referenceFileName,
+ "-L", "20:10000000-10100000",
+ "-O", output.getAbsolutePath(),
+ "-ploidy", "3",
+ "--ploidy-regions", ploidyRegions.getAbsolutePath(),
+ "--" + StandardArgumentDefinitions.ADD_OUTPUT_VCF_COMMANDLINE, "false"
+ };
+
+ runCommandLine(args);
+
+ IntegrationTestSpec.assertEqualTextFiles(output, expected);
+ }
+
+ // Should fail due to non-integer values in name column of bed
+ @Test(dataProvider="HaplotypeCallerTestInputs", expectedExceptions = IllegalArgumentException.class)
+ public void testNonIntegerCustomPloidyRegions(final String inputFileName, final String referenceFileName) throws Exception {
+ Utils.resetRandomGenerator();
+
+ final File output = createTempFile("output", ".vcf");
+ final File expected = new File(TEST_FILES_DIR, "expected.testPloidyRegions.vcf");
+ final File ploidyRegions = new File(TEST_FILES_DIR, "testNonIntegerPloidyRegions.bed");
+
+ final String[] args = {
+ "-I", inputFileName,
+ "-R", referenceFileName,
+ "-L", "20:10000000-10100000",
+ "-O", output.getAbsolutePath(),
+ "-ploidy", "3",
+ "--ploidy-regions", ploidyRegions.getAbsolutePath(),
+ "--" + StandardArgumentDefinitions.ADD_OUTPUT_VCF_COMMANDLINE, "false"
+ };
+
+ runCommandLine(args);
+
+ IntegrationTestSpec.assertEqualTextFiles(output, expected);
+ }
+
+ // Should fail due to negative integer values in name column of bed
+ @Test(dataProvider="HaplotypeCallerTestInputs", expectedExceptions = IllegalArgumentException.class)
+ public void testNonPositiveCustomPloidyRegions(final String inputFileName, final String referenceFileName) throws Exception {
+ Utils.resetRandomGenerator();
+
+ final File output = createTempFile("output", ".vcf");
+ final File expected = new File(TEST_FILES_DIR, "expected.testPloidyRegions.vcf");
+ final File ploidyRegions = new File(TEST_FILES_DIR, "testNegativePloidyRegions.bed");
+
+ final String[] args = {
+ "-I", inputFileName,
+ "-R", referenceFileName,
+ "-L", "20:10000000-10100000",
+ "-O", output.getAbsolutePath(),
+ "-ploidy", "3",
+ "--ploidy-regions", ploidyRegions.getAbsolutePath(),
+ "--" + StandardArgumentDefinitions.ADD_OUTPUT_VCF_COMMANDLINE, "false"
+ };
+
+ runCommandLine(args);
+
+ IntegrationTestSpec.assertEqualTextFiles(output, expected);
+ }
+
+ // Should fail due to using chr20 contig name in ploidy-regions file when BAM sequence dictionary uses 20
+ @Test(dataProvider="HaplotypeCallerTestInputs", expectedExceptions = UserException.class)
+ public void testMismatchPloidyRegionsAndSequenceDictionary(final String inputFileName, final String referenceFileName) throws Exception {
+ Utils.resetRandomGenerator();
+
+ final File output = createTempFile("output", ".vcf");
+ final File expected = new File(TEST_FILES_DIR, "expected.testPloidyRegions.vcf");
+ final File ploidyRegions = new File(TEST_FILES_DIR, "testMismatchPloidyRegions.bed");
+
+ final String[] args = {
+ "-I", inputFileName,
+ "-R", referenceFileName,
+ "-L", "20:10000000-10100000",
+ "-O", output.getAbsolutePath(),
+ "-ploidy", "3",
+ "--ploidy-regions", ploidyRegions.getAbsolutePath(),
+ "--" + StandardArgumentDefinitions.ADD_OUTPUT_VCF_COMMANDLINE, "false"
+ };
+
+ runCommandLine(args);
+
+ IntegrationTestSpec.assertEqualTextFiles(output, expected);
+ }
+
+ // Tests the somewhat ad hoc implementation of copying hcArgs instances in the engine, used for managing multiple ploidies used based on user inputs
+ @Test
+ public void testArgCollectionCopiesAreSynchronized() {
+ Utils.resetRandomGenerator();
+
+ HaplotypeCallerArgumentCollection hcArgs = new HaplotypeCallerArgumentCollection();
+ hcArgs.applyBQD = !hcArgs.applyBQD;
+ hcArgs.dontGenotype = !hcArgs.dontGenotype;
+ hcArgs.standardArgs.annotateAllSitesWithPLs = !hcArgs.standardArgs.annotateAllSitesWithPLs;
+ hcArgs.standardArgs.genotypeArgs.ANNOTATE_NUMBER_OF_ALLELES_DISCOVERED = !hcArgs.standardArgs.genotypeArgs.ANNOTATE_NUMBER_OF_ALLELES_DISCOVERED;
+
+ // Create copy with different ploidy and check tweaked values (and one control non-changed value) remain in sync
+ HaplotypeCallerArgumentCollection hcArgsCopy = hcArgs.copyWithNewPloidy(3);
+ Assert.assertEquals(hcArgs.applyBQD, hcArgsCopy.applyBQD);
+ Assert.assertEquals(hcArgs.dontGenotype, hcArgsCopy.dontGenotype);
+ Assert.assertEquals(hcArgs.standardArgs.annotateAllSitesWithPLs, hcArgsCopy.standardArgs.annotateAllSitesWithPLs);
+ Assert.assertEquals(hcArgs.standardArgs.CONTAMINATION_FRACTION, hcArgsCopy.standardArgs.CONTAMINATION_FRACTION);
+ Assert.assertEquals(hcArgs.standardArgs.genotypeArgs.ANNOTATE_NUMBER_OF_ALLELES_DISCOVERED, hcArgsCopy.standardArgs.genotypeArgs.ANNOTATE_NUMBER_OF_ALLELES_DISCOVERED);
+
+ // Modify other values of copy and check they are now distinct, i.e. a "deep copy" was created above
+ hcArgsCopy.applyBQD = !hcArgsCopy.applyBQD;
+ Assert.assertNotEquals(hcArgs.applyBQD, hcArgsCopy.applyBQD);
+ }
+
// test that ReadFilterLibrary.NON_ZERO_REFERENCE_LENGTH_ALIGNMENT removes reads that consume zero reference bases
// e.g. read name HAVCYADXX150109:1:2102:20528:2129 with cigar 23S53I
@Test
diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/expected.testPloidyRegions.vcf b/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/expected.testPloidyRegions.vcf
new file mode 100644
index 00000000000..9beffa772ce
--- /dev/null
+++ b/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/expected.testPloidyRegions.vcf
@@ -0,0 +1,273 @@
+##fileformat=VCFv4.2
+##FILTER=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##contig=
+##contig=
+#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NA12878
+20 10000117 . C T 926.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.136;DP=66;ExcessHet=0.0000;FS=11.007;MLEAC=1;MLEAF=0.500;MQ=59.72;MQRankSum=0.913;QD=14.48;ReadPosRankSum=-0.223;SOR=1.538 GT:AD:DP:GQ:PL 0/1:36,28:64:99:934,0,1248
+20 10000211 . C T 962.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=1.867;DP=54;ExcessHet=0.0000;FS=5.587;MLEAC=1;MLEAF=0.500;MQ=59.65;MQRankSum=1.057;QD=18.16;ReadPosRankSum=0.703;SOR=0.944 GT:AD:DP:GQ:PL 0/1:26,27:53:99:970,0,906
+20 10000439 . T G 2819.06 . AC=2;AF=1.00;AN=2;DP=82;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=58.86;QD=25.36;SOR=1.236 GT:AD:DP:GQ:PL 1/1:0,80:80:99:2833,240,0
+20 10000598 . T A 1956.06 . AC=2;AF=1.00;AN=2;DP=51;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=55.45;QD=28.73;SOR=1.225 GT:AD:DP:GQ:PL 1/1:0,49:49:99:1970,147,0
+20 10000694 . G A 1029.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=3.599;DP=87;ExcessHet=0.0000;FS=1.822;MLEAC=1;MLEAF=0.500;MQ=48.86;MQRankSum=-5.114;QD=12.56;ReadPosRankSum=0.657;SOR=0.566 GT:AD:DP:GQ:PL 0/1:45,37:82:99:1037,0,1601
+20 10000758 . T A 3853.06 . AC=2;AF=1.00;AN=2;DP=97;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=53.51;QD=30.97;SOR=0.802 GT:AD:DP:GQ:PL 1/1:0,95:95:99:3867,286,0
+20 10001019 . T G 671.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.541;DP=75;ExcessHet=0.0000;FS=3.406;MLEAC=1;MLEAF=0.500;MQ=47.62;MQRankSum=-7.498;QD=10.33;ReadPosRankSum=-0.925;SOR=0.665 GT:AD:DP:GQ:PL 0/1:39,26:65:99:679,0,1426
+20 10001298 . T A 2932.06 . AC=2;AF=1.00;AN=2;DP=79;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=53.93;QD=27.24;SOR=0.963 GT:AD:DP:GQ:PL 1/1:0,73:73:99:2946,220,0
+20 10001436 . A AAGGCT 2325.03 . AC=2;AF=1.00;AN=2;DP=58;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=41.22;QD=28.20;SOR=3.014 GT:AD:DP:GQ:PL 1/1:0,52:52:99:2339,156,0
+20 10001474 . C T 2655.06 . AC=2;AF=1.00;AN=2;DP=77;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=44.87;QD=25.00;SOR=1.516 GT:AD:DP:GQ:PL 1/1:0,73:73:99:2669,219,0
+20 10001617 . C A 1752.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=1.261;DP=105;ExcessHet=0.0000;FS=13.163;MLEAC=1;MLEAF=0.500;MQ=59.02;MQRankSum=1.373;QD=17.02;ReadPosRankSum=-0.280;SOR=1.346 GT:AD:DP:GQ:PL 0/1:52,51:103:99:1760,0,1781
+20 10001628 . G A 3913.06 . AC=2;AF=1.00;AN=2;DP=98;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.19;QD=29.56;SOR=1.053 GT:AD:DP:GQ:PL 1/1:0,95:95:99:3927,285,0
+20 10001661 . T C 3621.06 . AC=2;AF=1.00;AN=2;DP=85;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=58.13;QD=30.62;SOR=1.112 GT:AD:DP:GQ:PL 1/1:0,83:83:99:3635,249,0
+20 10001670 . T G 3688.06 . AC=2;AF=1.00;AN=2;DP=86;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=57.60;QD=28.17;SOR=0.897 GT:AD:DP:GQ:PL 1/1:0,84:84:99:3702,253,0
+20 10002058 . T G 2978.06 . AC=2;AF=1.00;AN=2;BaseQRankSum=1.931;DP=79;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=57.87;MQRankSum=3.068;QD=26.80;ReadPosRankSum=0.624;SOR=0.776 GT:AD:DP:GQ:PL 1/1:1,74:75:99:2992,216,0
+20 10002099 . C T 1215.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.282;DP=68;ExcessHet=0.0000;FS=3.528;MLEAC=1;MLEAF=0.500;MQ=56.46;MQRankSum=-0.850;QD=18.70;ReadPosRankSum=0.173;SOR=0.375 GT:AD:DP:GQ:PL 0/1:27,38:65:99:1223,0,844
+20 10002138 . C G 2458.06 . AC=2;AF=1.00;AN=2;DP=57;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=56.64;QD=26.00;SOR=0.765 GT:AD:DP:GQ:PL 1/1:0,56:56:99:2472,169,0
+20 10002142 . G C 2422.06 . AC=2;AF=1.00;AN=2;DP=56;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=56.08;QD=30.02;SOR=0.804 GT:AD:DP:GQ:PL 1/1:0,55:55:99:2436,166,0
+20 10002458 . G GTTT 2154.96 . AC=2;AF=1.00;AN=2;DP=65;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=50.67;QD=31.98;SOR=2.303 GT:AD:DP:GQ:PL 1/1:0,56:56:99:2090,167,0
+20 10002470 . C T 2537.06 . AC=2;AF=1.00;AN=2;DP=68;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=49.92;QD=27.51;SOR=0.859 GT:AD:DP:GQ:PL 1/1:0,63:63:99:2551,189,0
+20 10002625 . G T 2680.06 . AC=2;AF=1.00;AN=2;DP=66;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.08;QD=29.11;SOR=1.127 GT:AD:DP:GQ:PL 1/1:0,64:64:99:2694,193,0
+20 10003021 . C T 2398.06 . AC=2;AF=1.00;AN=2;DP=63;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.04;QD=28.08;SOR=1.071 GT:AD:DP:GQ:PL 1/1:0,60:60:99:2412,181,0
+20 10003358 . A C 1475.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.004;DP=91;ExcessHet=0.0000;FS=0.844;MLEAC=1;MLEAF=0.500;MQ=59.80;MQRankSum=1.011;QD=16.58;ReadPosRankSum=-1.355;SOR=0.572 GT:AD:DP:GQ:PL 0/1:45,44:89:99:1483,0,1477
+20 10003651 . T C 3635.06 . AC=2;AF=1.00;AN=2;DP=98;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.24;QD=23.23;SOR=1.511 GT:AD:DP:GQ:PL 1/1:0,93:93:99:3649,279,0
+20 10003692 . A G 2624.06 . AC=2;AF=1.00;AN=2;DP=72;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.48;QD=29.03;SOR=1.352 GT:AD:DP:GQ:PL 1/1:0,68:68:99:2638,205,0
+20 10003832 . G A 2720.06 . AC=2;AF=1.00;AN=2;DP=67;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=56.82;QD=30.67;SOR=1.473 GT:AD:DP:GQ:PL 1/1:0,66:66:99:2734,199,0
+20 10004094 . A C 1840.06 . AC=2;AF=1.00;AN=2;DP=55;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=52.62;QD=34.72;SOR=1.524 GT:AD:DP:GQ:PL 1/1:0,53:53:99:1854,157,0
+20 10004147 . A G 1852.06 . AC=2;AF=1.00;AN=2;DP=54;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=55.19;QD=26.61;SOR=1.136 GT:AD:DP:GQ:PL 1/1:0,52:52:99:1866,156,0
+20 10004193 . G T 937.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.392;DP=54;ExcessHet=0.0000;FS=2.369;MLEAC=1;MLEAF=0.500;MQ=59.14;MQRankSum=3.385;QD=18.39;ReadPosRankSum=1.724;SOR=0.941 GT:AD:DP:GQ:PL 0/1:23,28:51:99:945,0,776
+20 10004222 . C CA 42.60 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.335;DP=69;ExcessHet=0.0000;FS=3.221;MLEAC=1;MLEAF=0.500;MQ=58.21;MQRankSum=-2.220;QD=0.95;ReadPosRankSum=0.198;SOR=0.932 GT:AD:DP:GQ:PL 0/1:35,10:45:50:50,0,923
+20 10004223 . A AG 77.60 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.607;DP=69;ExcessHet=0.0000;FS=1.242;MLEAC=1;MLEAF=0.500;MQ=58.30;MQRankSum=2.260;QD=1.62;ReadPosRankSum=0.060;SOR=0.504 GT:AD:DP:GQ:PL 0/1:36,12:48:85:85,0,983
+20 10004351 . C G 2770.06 . AC=2;AF=1.00;AN=2;DP=71;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.05;QD=29.20;SOR=0.874 GT:AD:DP:GQ:PL 1/1:0,70:70:99:2784,211,0
+20 10004389 . T G 2509.06 . AC=2;AF=1.00;AN=2;DP=67;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=56.62;QD=28.55;SOR=1.143 GT:AD:DP:GQ:PL 1/1:0,62:62:99:2523,187,0
+20 10004610 . A C 3640.06 . AC=2;AF=1.00;AN=2;DP=93;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=58.75;QD=34.42;SOR=0.761 GT:AD:DP:GQ:PL 1/1:0,89:89:99:3654,267,0
+20 10004725 . A G 972.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.154;DP=67;ExcessHet=0.0000;FS=15.830;MLEAC=1;MLEAF=0.500;MQ=55.04;MQRankSum=3.008;QD=14.96;ReadPosRankSum=2.087;SOR=0.605 GT:AD:DP:GQ:PL 0/1:35,30:65:99:980,0,1168
+20 10004769 . TAAAACTATGC T 1011.60 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.599;DP=80;ExcessHet=0.0000;FS=3.758;MLEAC=1;MLEAF=0.500;MQ=52.80;MQRankSum=-6.625;QD=15.81;ReadPosRankSum=1.879;SOR=1.306 GT:AD:DP:GQ:PL 0/1:37,27:64:99:1019,0,1471
+20 10004874 . A C 3617.06 . AC=2;AF=1.00;AN=2;DP=90;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.35;QD=28.53;SOR=1.286 GT:AD:DP:GQ:PL 1/1:0,87:87:99:3631,261,0
+20 10004887 . A G 1344.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.356;DP=90;ExcessHet=0.0000;FS=1.793;MLEAC=1;MLEAF=0.500;MQ=59.49;MQRankSum=-0.067;QD=15.82;ReadPosRankSum=-1.114;SOR=0.984 GT:AD:DP:GQ:PL 0/1:45,40:85:99:1352,0,1542
+20 10005010 . C T 2949.06 . AC=2;AF=1.00;AN=2;DP=73;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.68;QD=27.23;SOR=1.226 GT:AD:DP:GQ:PL 1/1:0,72:72:99:2963,217,0
+20 10005427 . C T 2229.06 . AC=2;AF=1.00;AN=2;DP=60;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.62;QD=29.52;SOR=0.729 GT:AD:DP:GQ:PL 1/1:0,55:55:99:2243,165,0
+20 10005499 . A G 3068.06 . AC=2;AF=1.00;AN=2;DP=78;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=60.00;QD=33.47;SOR=1.121 GT:AD:DP:GQ:PL 1/1:0,76:76:99:3082,229,0
+20 10005587 . A G 1250.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.834;DP=76;ExcessHet=0.0000;FS=1.955;MLEAC=1;MLEAF=0.500;MQ=59.75;MQRankSum=-0.972;QD=17.37;ReadPosRankSum=0.248;SOR=0.848 GT:AD:DP:GQ:PL 0/1:36,36:72:99:1258,0,1236
+20 10005723 . A G 3077.06 . AC=2;AF=1.00;AN=2;DP=88;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.79;QD=32.91;SOR=0.947 GT:AD:DP:GQ:PL 1/1:0,86:86:99:3091,258,0
+20 10006291 . G A 999.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.311;DP=85;ExcessHet=0.0000;FS=0.853;MLEAC=1;MLEAF=0.500;MQ=59.29;MQRankSum=-1.081;QD=11.90;ReadPosRankSum=-1.447;SOR=0.659 GT:AD:DP:GQ:PL 0/1:53,31:84:99:1007,0,1905
+20 10006404 . A C 2943.06 . AC=2;AF=1.00;AN=2;DP=83;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.22;QD=31.31;SOR=1.432 GT:AD:DP:GQ:PL 1/1:0,76:76:99:2957,228,0
+20 10006682 . T A 2889.06 . AC=2;AF=1.00;AN=2;DP=75;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.44;QD=31.45;SOR=1.179 GT:AD:DP:GQ:PL 1/1:0,73:73:99:2903,219,0
+20 10006819 . AAAAC A 2554.03 . AC=2;AF=1.00;AN=2;DP=81;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=61.06;QD=33.27;SOR=0.762 GT:AD:DP:GQ:PL 1/1:0,58:58:99:2568,176,0
+20 10007150 . G C 690.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-4.476;DP=64;ExcessHet=0.0000;FS=5.048;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=10.96;ReadPosRankSum=-0.077;SOR=0.746 GT:AD:DP:GQ:PL 0/1:38,25:63:99:698,0,1479
+20 10007175 . C T 1371.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.249;DP=63;ExcessHet=0.0000;FS=2.211;MLEAC=1;MLEAF=0.500;MQ=59.63;MQRankSum=1.319;QD=22.49;ReadPosRankSum=-1.213;SOR=0.434 GT:AD:DP:GQ:PL 0/1:23,38:61:99:1379,0,780
+20 10007352 . C T 2779.06 . AC=2;AF=1.00;AN=2;DP=70;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.67;QD=31.26;SOR=1.054 GT:AD:DP:GQ:PL 1/1:0,69:69:99:2793,208,0
+20 10007531 . A G 2935.06 . AC=2;AF=1.00;AN=2;DP=75;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.75;QD=27.76;SOR=1.577 GT:AD:DP:GQ:PL 1/1:0,72:72:99:2949,217,0
+20 10007980 . A C 3539.06 . AC=2;AF=1.00;AN=2;DP=92;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=60.70;QD=29.09;SOR=0.990 GT:AD:DP:GQ:PL 1/1:0,90:90:99:3553,270,0
+20 10008029 . T TA 2010.03 . AC=2;AF=1.00;AN=2;BaseQRankSum=0.409;DP=97;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=61.11;MQRankSum=0.651;QD=26.10;ReadPosRankSum=-1.357;SOR=0.774 GT:AD:DP:GQ:PL 1/1:3,74:77:99:2024,145,0
+20 10008146 . TA T 2165.03 . AC=2;AF=1.00;AN=2;DP=77;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=60.56;QD=30.93;SOR=0.874 GT:AD:DP:GQ:PL 1/1:0,70:70:99:2179,211,0
+20 10008221 . T C 3239.06 . AC=2;AF=1.00;AN=2;DP=83;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=60.17;QD=26.08;SOR=0.850 GT:AD:DP:GQ:PL 1/1:0,80:80:99:3253,240,0
+20 10008458 . T G 2669.06 . AC=2;AF=1.00;AN=2;DP=72;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=52.76;QD=33.85;SOR=0.980 GT:AD:DP:GQ:PL 1/1:0,69:69:99:2683,207,0
+20 10008742 . G T 736.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=3.893;DP=50;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=37.07;MQRankSum=-1.502;QD=15.03;ReadPosRankSum=0.200;SOR=0.741 GT:AD:DP:GQ:PL 0/1:23,26:49:99:744,0,580
+20 10008758 . C CA 707.49 . AC=2;AF=1.00;AN=2;BaseQRankSum=0.130;DP=51;ExcessHet=0.0000;FS=2.191;MLEAC=1;MLEAF=0.500;MQ=37.72;MQRankSum=-0.875;QD=18.62;ReadPosRankSum=-0.262;SOR=0.405 GT:AD:DP:GQ:PL 1/1:4,34:38:10:721,10,0
+20 10008921 . C CA 283.60 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.610;DP=60;ExcessHet=0.0000;FS=1.311;MLEAC=1;MLEAF=0.500;MQ=56.00;MQRankSum=-1.306;QD=8.10;ReadPosRankSum=-0.017;SOR=0.644 GT:AD:DP:GQ:PL 0/1:18,17:35:99:291,0,366
+20 10008948 . TA T 2091.03 . AC=2;AF=1.00;AN=2;BaseQRankSum=0.994;DP=56;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=51.26;MQRankSum=1.946;QD=27.08;ReadPosRankSum=0.884;SOR=0.721 GT:AD:DP:GQ:PL 1/1:1,53:54:99:2105,117,0
+20 10008952 . CACACACACACA C,CCACACACACA 1700.02 . AC=1,1;AF=0.500,0.500;AN=2;BaseQRankSum=0.963;DP=63;ExcessHet=0.0000;FS=0.000;MLEAC=1,1;MLEAF=0.500,0.500;MQ=51.23;MQRankSum=1.976;QD=25.42;ReadPosRankSum=0.868;SOR=1.112 GT:AD:DP:GQ:PL 1/2:1,17,18:36:99:1717,539,803,595,0,533
+20 10009227 . A G 1390.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.220;DP=63;ExcessHet=0.0000;FS=9.110;MLEAC=1;MLEAF=0.500;MQ=56.82;MQRankSum=1.428;QD=22.43;ReadPosRankSum=-1.159;SOR=0.281 GT:AD:DP:GQ:PL 0/1:23,39:62:99:1398,0,740
+20 10009246 . A G 3017.06 . AC=2;AF=1.00;AN=2;DP=81;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=55.68;QD=27.65;SOR=0.887 GT:AD:DP:GQ:PL 1/1:0,77:77:99:3031,231,0
+20 10009400 . T A 3013.06 . AC=2;AF=1.00;AN=2;DP=75;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=60.00;QD=29.48;SOR=0.804 GT:AD:DP:GQ:PL 1/1:0,74:74:99:3027,223,0
+20 10009512 . C G 3054.06 . AC=2;AF=1.00;AN=2;DP=80;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=58.53;QD=30.56;SOR=1.223 GT:AD:DP:GQ:PL 1/1:0,77:77:99:3068,231,0
+20 10009719 . A G 1901.06 . AC=2;AF=1.00;AN=2;DP=65;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.71;QD=33.35;SOR=1.047 GT:AD:DP:GQ:PL 1/1:0,57:57:99:1915,170,0
+20 10009795 . A G 1895.06 . AC=2;AF=1.00;AN=2;DP=49;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.62;QD=33.63;SOR=1.514 GT:AD:DP:GQ:PL 1/1:0,47:47:99:1909,141,0
+20 10009842 . G GAA 562.60 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.383;DP=52;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=53.85;MQRankSum=-0.936;QD=16.07;ReadPosRankSum=1.757;SOR=0.602 GT:AD:DP:GQ:PL 0/1:19,16:35:99:570,0,691
+20 10009844 . G A 683.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=1.116;DP=54;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=53.61;MQRankSum=0.975;QD=19.53;ReadPosRankSum=-2.419;SOR=0.793 GT:AD:DP:GQ:PL 0/1:16,19:35:99:691,0,585
+20 10009871 . A G 679.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.803;DP=62;ExcessHet=0.0000;FS=1.273;MLEAC=1;MLEAF=0.500;MQ=51.11;MQRankSum=1.336;QD=18.37;ReadPosRankSum=0.840;SOR=0.631 GT:AD:DP:GQ:PL 0/1:18,19:37:99:687,0,593
+20 10009875 . A G,AGGGAGG 2389.06 . AC=1,1;AF=0.500,0.500;AN=2;BaseQRankSum=0.378;DP=58;ExcessHet=0.0000;FS=6.463;MLEAC=1,1;MLEAF=0.500,0.500;MQ=50.44;MQRankSum=1.413;QD=30.55;ReadPosRankSum=1.373;SOR=0.461 GT:AD:DP:GQ:PL 1/2:2,15,14:31:99:2406,645,532,697,0,574
+20 10009879 . A G 2259.06 . AC=2;AF=1.00;AN=2;BaseQRankSum=1.534;DP=53;ExcessHet=0.0000;FS=8.605;MLEAC=2;MLEAF=1.00;MQ=50.48;MQRankSum=1.681;QD=32.62;ReadPosRankSum=1.113;SOR=1.198 GT:AD:DP:GQ:PL 1/1:2,51:53:99:2273,150,0
+20 10009883 . A G 2166.06 . AC=2;AF=1.00;AN=2;DP=52;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=50.81;QD=29.33;SOR=1.755 GT:AD:DP:GQ:PL 1/1:0,49:49:99:2180,147,0
+20 10010393 . T G 1473.99 . AC=2;AF=0.667;AN=3;BaseQRankSum=-3.351;DP=79;FS=11.600;MLEAC=2;MLEAF=0.667;MQ=59.42;MQRankSum=-1.284;QD=18.66;ReadPosRankSum=-1.738;SOR=0.606 GT:AD:DP:GQ:PL 0/1/1:36,43:79:22:1484,22,0,1221
+20 10010536 . G GA 2453.32 . AC=3;AF=1.00;AN=3;DP=92;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=61.74;QD=30.67;SOR=0.850 GT:AD:DP:GQ:PL 1/1/1:0,80:80:99:2469,381,141,0
+20 10010766 . T G 2424.36 . AC=3;AF=1.00;AN=3;DP=70;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=60.00;QD=35.36;SOR=0.818 GT:AD:DP:GQ:PL 1/1/1:0,66:66:99:2440,315,116,0
+20 10010832 . T C 2964.36 . AC=3;AF=1.00;AN=3;DP=76;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=59.51;QD=34.30;SOR=1.091 GT:AD:DP:GQ:PL 1/1/1:0,75:75:99:2980,358,132,0
+20 10011075 . C T 1334.05 . AC=1;AF=0.333;AN=3;BaseQRankSum=5.364;DP=86;FS=1.800;MLEAC=1;MLEAF=0.333;MQ=60.00;MQRankSum=0.000;QD=16.07;ReadPosRankSum=-1.036;SOR=0.968 GT:AD:DP:GQ:PL 0/0/1:44,39:83:14:1340,0,14,1319
+20 10011309 . T C 2705.36 . AC=3;AF=1.00;AN=3;DP=80;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=60.00;QD=27.00;SOR=1.223 GT:AD:DP:GQ:PL 1/1/1:0,77:77:99:2721,366,135,0
+20 10011517 . GA G 526 . AC=1;AF=0.333;AN=3;BaseQRankSum=0.924;DP=99;FS=2.130;MLEAC=1;MLEAF=0.333;MQ=59.91;MQRankSum=2.041;QD=6.92;ReadPosRankSum=0.603;SOR=0.412 GT:AD:DP:GQ:PL 0/0/1:46,30:76:46:532,0,46,880
+20 10011666 . C T 2974.36 . AC=3;AF=1.00;AN=3;DP=74;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=59.06;QD=30.82;SOR=1.103 GT:AD:DP:GQ:PL 1/1/1:0,73:73:99:2990,348,129,0
+20 10011939 . C T 2526.36 . AC=3;AF=1.00;AN=3;DP=66;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=56.55;QD=29.27;SOR=1.329 GT:AD:DP:GQ:PL 1/1/1:0,62:62:99:2542,296,109,0
+20 10012021 . CA C 1998.32 . AC=3;AF=1.00;AN=3;DP=71;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=57.12;QD=30.28;SOR=1.196 GT:AD:DP:GQ:PL 1/1/1:0,66:66:99:2014,314,116,0
+20 10012362 . G T 848.36 . AC=3;AF=1.00;AN=3;DP=25;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=54.31;QD=35.92;SOR=4.003 GT:AD:DP:GQ:PL 1/1/1:0,23:23:40:864,109,40,0
+20 10012384 . T C 250.21 . AC=1;AF=0.333;AN=3;BaseQRankSum=-1.773;DP=18;FS=7.375;MLEAC=1;MLEAF=0.333;MQ=53.38;MQRankSum=-0.811;QD=13.90;ReadPosRankSum=0.800;SOR=0.044 GT:AD:DP:GQ:PL 0/0/1:10,8:18:6:256,0,6,353
+20 10012387 . T C 546.34 . AC=3;AF=1.00;AN=3;DP=18;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=53.38;QD=32.14;SOR=3.383 GT:AD:DP:GQ:PL 1/1/1:0,17:17:29:562,78,29,0
+20 10012479 . A G 587.34 . AC=3;AF=1.00;AN=3;DP=18;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=51.29;QD=34.55;SOR=0.804 GT:AD:DP:GQ:PL 1/1/1:0,17:17:29:603,79,29,0
+20 10012498 . C G 434.23 . AC=3;AF=1.00;AN=3;DP=10;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=43.25;QD=29.63;SOR=1.609 GT:AD:DP:GQ:PL 1/1/1:0,10:10:18:450,48,18,0
+20 10012518 . T C 464.25 . AC=3;AF=1.00;AN=3;DP=12;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=43.58;QD=28.76;SOR=1.270 GT:AD:DP:GQ:PL 1/1/1:0,11:11:19:480,52,19,0
+20 10012521 . C T 97.07 . AC=1;AF=0.333;AN=3;BaseQRankSum=1.517;DP=12;FS=0.000;MLEAC=1;MLEAF=0.333;MQ=40.86;MQRankSum=-0.376;QD=8.09;ReadPosRankSum=2.405;SOR=0.693 GT:AD:DP:GQ:PL 0/0/1:8,4:12:12:103,0,12,224
+20 10012570 . G GCA 479.21 . AC=3;AF=1.00;AN=3;DP=11;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=39.52;QD=29.94;SOR=3.442 GT:AD:DP:GQ:PL 1/1/1:0,11:11:19:495,52,19,0
+20 10012572 . GT G 479.21 . AC=3;AF=1.00;AN=3;DP=12;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=40.60;QD=31.54;SOR=3.442 GT:AD:DP:GQ:PL 1/1/1:0,11:11:19:495,52,19,0
+20 10012631 . C CG 513.88 . AC=2;AF=0.667;AN=3;BaseQRankSum=-1.030;DP=21;FS=8.822;MLEAC=2;MLEAF=0.667;MQ=48.34;MQRankSum=-1.670;QD=24.47;ReadPosRankSum=-1.777;SOR=0.048 GT:AD:DP:GQ:PL 0/1/1:8,13:21:15:524,15,0,299
+20 10012636 . G C 548.97 . AC=2;AF=0.667;AN=3;BaseQRankSum=2.711;DP=22;FS=5.959;MLEAC=2;MLEAF=0.667;MQ=48.93;MQRankSum=-1.513;QD=24.95;ReadPosRankSum=-1.777;SOR=0.058 GT:AD:DP:GQ:PL 0/1/1:8,14:22:18:559,18,0,297
+20 10012714 . G C 1313.36 . AC=3;AF=1.00;AN=3;DP=36;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=52.52;QD=28.86;SOR=2.964 GT:AD:DP:GQ:PL 1/1/1:0,35:35:62:1329,167,62,0
+20 10012751 . T C 950.36 . AC=3;AF=1.00;AN=3;DP=31;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=50.73;QD=31.68;SOR=0.976 GT:AD:DP:GQ:PL 1/1/1:0,30:30:52:966,140,52,0
+20 10013119 . C T 1018.56 . AC=2;AF=0.667;AN=3;BaseQRankSum=2.724;DP=61;FS=2.248;MLEAC=1;MLEAF=0.333;MQ=51.43;MQRankSum=-1.089;QD=17.26;ReadPosRankSum=0.159;SOR=0.405 GT:AD:DP:GQ:PL 0/1/1:29,30:59:3:1026,3,0,922
+20 10013574 . G A 1066.03 . AC=1;AF=0.333;AN=3;BaseQRankSum=3.469;DP=73;FS=7.109;MLEAC=1;MLEAF=0.333;MQ=58.17;MQRankSum=-0.271;QD=15.45;ReadPosRankSum=0.706;SOR=1.675 GT:AD:DP:GQ:PL 0/0/1:38,31:69:21:1072,0,21,1294
+20 10014990 . C CAT 1249.52 . AC=2;AF=0.667;AN=3;BaseQRankSum=1.930;DP=89;FS=2.076;MLEAC=1;MLEAF=0.333;MQ=60.88;MQRankSum=3.260;QD=16.23;ReadPosRankSum=-0.311;SOR=0.429 GT:AD:DP:GQ:PL 0/1/1:38,39:77:3:1257,3,0,1229
+20 10015679 . C T 160.79 . AC=1;AF=0.333;AN=3;BaseQRankSum=0.200;DP=10;FS=0.000;MLEAC=1;MLEAF=0.333;MQ=60.00;MQRankSum=0.000;QD=16.08;ReadPosRankSum=0.497;SOR=0.693 GT:AD:DP:GQ:PL 0/0/1:5,5:10:0:166,0,0,163
+20 10015761 . T C 362.98 . AC=2;AF=0.667;AN=3;BaseQRankSum=-1.982;DP=23;FS=0.000;MLEAC=2;MLEAF=0.667;MQ=58.99;MQRankSum=1.294;QD=16.50;ReadPosRankSum=1.805;SOR=0.352 GT:AD:DP:GQ:PL 0/1/1:9,13:22:11:373,11,0,284
+20 10018158 . G C 1646.99 . AC=2;AF=0.667;AN=3;BaseQRankSum=5.213;DP=94;FS=0.808;MLEAC=2;MLEAF=0.667;MQ=59.80;MQRankSum=1.118;QD=18.72;ReadPosRankSum=1.179;SOR=0.834 GT:AD:DP:GQ:PL 0/1/1:40,48:88:24:1657,24,0,1154
+20 10018555 . G A 1581 . AC=2;AF=0.667;AN=3;BaseQRankSum=-0.627;DP=84;FS=4.241;MLEAC=2;MLEAF=0.667;MQ=60.00;MQRankSum=0.000;QD=19.76;ReadPosRankSum=0.815;SOR=0.627 GT:AD:DP:GQ:PL 0/1/1:35,45:80:30:1591,30,0,1206
+20 10019093 . A G 1250.05 . AC=2;AF=0.667;AN=3;BaseQRankSum=0.452;DP=73;FS=1.990;MLEAC=2;MLEAF=0.667;MQ=59.68;MQRankSum=1.073;QD=18.12;ReadPosRankSum=-0.252;SOR=0.665 GT:AD:DP:GQ:PL 0/1/1:33,36:69:10:1260,10,0,1091
+20 10020229 . G A 1559.26 . AC=2;AF=0.500;AN=4;BaseQRankSum=5.792;DP=84;FS=0.833;MLEAC=2;MLEAF=0.500;MQ=59.50;MQRankSum=0.104;QD=19.02;ReadPosRankSum=-0.549;SOR=0.573 GT:AD:DP:GQ:PL 0/0/1/1:38,44:82:37:1567,66,0,37,1130
+20 10023689 . G A 1874.21 . AC=3;AF=0.750;AN=4;BaseQRankSum=2.144;DP=82;FS=0.877;MLEAC=2;MLEAF=0.500;MQ=59.77;MQRankSum=1.352;QD=23.43;ReadPosRankSum=1.162;SOR=0.549 GT:AD:DP:GQ:PL 0/1/1/1:29,51:80:3:1883,105,3,0,948
+20 10024107 . C T 1715.26 . AC=2;AF=0.500;AN=4;BaseQRankSum=5.770;DP=89;FS=0.817;MLEAC=2;MLEAF=0.500;MQ=59.43;MQRankSum=-1.546;QD=19.94;ReadPosRankSum=0.148;SOR=0.823 GT:AD:DP:GQ:PL 0/0/1/1:38,48:86:29:1723,78,0,29,1086
+20 10024300 . CTT C,CTTTT 191.75 . AC=1,2;AF=0.250,0.500;AN=4;BaseQRankSum=1.975;DP=53;FS=2.963;MLEAC=1,1;MLEAF=0.250,0.250;MQ=52.89;MQRankSum=-1.143;QD=13.70;ReadPosRankSum=-0.297;SOR=1.981 GT:AD:DP:GQ:PL 0/1/2/2:2,4,8:14:12:198,123,140,182,447,100,12,19,80,92,0,46,101,38,202
+20 10026357 . T C 1187.27 . AC=2;AF=0.500;AN=4;BaseQRankSum=-1.700;DP=63;FS=8.911;MLEAC=2;MLEAF=0.500;MQ=58.43;MQRankSum=-0.148;QD=18.85;ReadPosRankSum=-0.076;SOR=0.722 GT:AD:DP:GQ:PL 0/0/1/1:28,35:63:23:1195,56,0,23,932
+20 10026794 . C T 1107.28 . AC=2;AF=0.500;AN=4;BaseQRankSum=2.828;DP=56;FS=2.399;MLEAC=2;MLEAF=0.500;MQ=59.59;MQRankSum=-0.719;QD=21.29;ReadPosRankSum=-0.533;SOR=0.428 GT:AD:DP:GQ:PL 0/0/1/1:19,33:52:0:1114,65,0,0,529
+20 10027234 . A ATTAG 1350.22 . AC=2;AF=0.500;AN=4;BaseQRankSum=-0.406;DP=75;FS=3.248;MLEAC=2;MLEAF=0.500;MQ=57.44;MQRankSum=-0.845;QD=19.57;ReadPosRankSum=-0.510;SOR=0.926 GT:AD:DP:GQ:PL 0/0/1/1:34,35:69:41:1358,45,0,41,1320
+20 10027868 . A G 1760.26 . AC=2;AF=0.500;AN=4;BaseQRankSum=-5.793;DP=91;FS=6.873;MLEAC=2;MLEAF=0.500;MQ=59.49;MQRankSum=0.047;QD=19.56;ReadPosRankSum=1.872;SOR=0.937 GT:AD:DP:GQ:PL 0/0/1/1:44,46:90:51:1768,61,0,51,1671
+20 10027872 . A G 1745.26 . AC=2;AF=0.500;AN=4;BaseQRankSum=-5.491;DP=88;FS=8.704;MLEAC=2;MLEAF=0.500;MQ=59.48;MQRankSum=0.065;QD=20.06;ReadPosRankSum=1.053;SOR=0.834 GT:AD:DP:GQ:PL 0/0/1/1:42,45:87:47:1753,61,0,47,1606
+20 10028867 . A ATG 1137.23 . AC=2;AF=0.500;AN=4;BaseQRankSum=-0.874;DP=93;FS=4.652;MLEAC=2;MLEAF=0.500;MQ=60.68;MQRankSum=2.711;QD=16.02;ReadPosRankSum=0.630;SOR=0.336 GT:AD:DP:GQ:PL 0/0/1/1:32,39:71:28:1145,60,0,28,915
+20 10030188 . T A 1378.12 . AC=1;AF=0.333;AN=3;BaseQRankSum=0.711;DP=82;FS=9.186;MLEAC=1;MLEAF=0.333;MQ=59.49;MQRankSum=-1.013;QD=17.01;ReadPosRankSum=-0.553;SOR=1.105 GT:AD:DP:GQ:PL 0/0/1:42,39:81:9:1384,0,9,1508
+20 10031254 . A AT 1482.96 . AC=2;AF=0.667;AN=3;BaseQRankSum=-0.091;DP=90;FS=9.250;MLEAC=2;MLEAF=0.667;MQ=59.91;MQRankSum=0.017;QD=17.45;ReadPosRankSum=0.663;SOR=0.211 GT:AD:DP:GQ:PL 0/1/1:38,47:85:27:1493,27,0,1151
+20 10031342 . G A 1846.01 . AC=2;AF=0.667;AN=3;BaseQRankSum=1.833;DP=93;FS=1.714;MLEAC=2;MLEAF=0.667;MQ=59.75;MQRankSum=-0.866;QD=19.85;ReadPosRankSum=-0.012;SOR=0.955 GT:AD:DP:GQ:PL 0/1/1:41,52:93:33:1856,33,0,1367
+20 10031798 . G A 4309.36 . AC=3;AF=1.00;AN=3;DP=107;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=59.61;QD=29.41;SOR=0.900 GT:AD:DP:GQ:PL 1/1/1:0,104:104:99:4325,496,183,0
+20 10031827 . C T 2000.94 . AC=2;AF=0.667;AN=3;BaseQRankSum=3.552;DP=115;FS=4.729;MLEAC=2;MLEAF=0.667;MQ=59.84;MQRankSum=-0.945;QD=18.53;ReadPosRankSum=-1.396;SOR=0.382 GT:AD:DP:GQ:PL 0/1/1:52,56:108:12:2011,12,0,1776
+20 10032094 . G A 1238.02 . AC=1;AF=0.333;AN=3;BaseQRankSum=5.488;DP=86;FS=6.039;MLEAC=1;MLEAF=0.333;MQ=60.00;MQRankSum=0.000;QD=14.92;ReadPosRankSum=-0.579;SOR=0.260 GT:AD:DP:GQ:PL 0/0/1:47,36:83:32:1244,0,32,1492
+20 10032413 . T G 881.07 . AC=1;AF=0.333;AN=3;BaseQRankSum=-6.142;DP=66;FS=10.444;MLEAC=1;MLEAF=0.333;MQ=59.43;MQRankSum=-0.065;QD=13.35;ReadPosRankSum=-1.003;SOR=1.293 GT:AD:DP:GQ:PL 0/0/1:35,31:66:12:887,0,12,1266
+20 10032882 . A T 1210.12 . AC=1;AF=0.333;AN=3;BaseQRankSum=-3.697;DP=76;FS=4.673;MLEAC=1;MLEAF=0.333;MQ=59.70;MQRankSum=-1.014;QD=16.13;ReadPosRankSum=0.626;SOR=0.338 GT:AD:DP:GQ:PL 0/0/1:39,36:75:9:1216,0,9,1391
+20 10032972 . C CAT 1143.08 . AC=1;AF=0.333;AN=3;BaseQRankSum=-0.354;DP=67;FS=5.062;MLEAC=1;MLEAF=0.333;MQ=59.66;MQRankSum=-1.017;QD=18.14;ReadPosRankSum=-0.723;SOR=1.300 GT:AD:DP:GQ:PL 0/0/1:33,30:63:9:1149,0,9,1284
+20 10034306 . T C 812.02 . AC=1;AF=0.333;AN=3;BaseQRankSum=-3.661;DP=80;FS=0.890;MLEAC=1;MLEAF=0.333;MQ=59.48;MQRankSum=1.150;QD=10.83;ReadPosRankSum=0.539;SOR=0.685 GT:AD:DP:GQ:PL 0/0/1:46,29:75:52:818,0,52,1600
+20 10036930 . CGATAGCCCTAGCCCTAGATA C 1060.99 . AC=1;AF=0.333;AN=3;BaseQRankSum=0.720;DP=98;FS=11.152;MLEAC=1;MLEAF=0.333;MQ=54.46;MQRankSum=-4.048;QD=15.60;ReadPosRankSum=0.460;SOR=0.269 GT:AD:DP:GQ:PL 0/0/1:39,29:68:26:1067,0,26,1503
+20 10037037 . C T 1439.94 . AC=2;AF=0.667;AN=3;BaseQRankSum=3.504;DP=88;FS=1.943;MLEAC=2;MLEAF=0.667;MQ=60.08;MQRankSum=-1.193;QD=17.78;ReadPosRankSum=-1.609;SOR=0.495 GT:AD:DP:GQ:PL 0/1/1:39,42:81:12:1450,12,0,1110
+20 10037110 . T TGATA 2802.32 . AC=3;AF=1.00;AN=3;DP=84;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=55.01;QD=31.11;SOR=0.933 GT:AD:DP:GQ:PL 1/1/1:0,63:63:99:2818,300,110,0
+20 10037144 . T TGATAGATA 1845.32 . AC=3;AF=1.00;AN=3;DP=81;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=53.21;QD=34.66;SOR=1.179 GT:AD:DP:GQ:PL 1/1/1:0,43:43:74:1861,202,74,0
+20 10037709 . A T 1019.03 . AC=1;AF=0.333;AN=3;BaseQRankSum=-2.367;DP=73;FS=0.000;MLEAC=1;MLEAF=0.333;MQ=59.68;MQRankSum=0.934;QD=14.35;ReadPosRankSum=0.040;SOR=0.608 GT:AD:DP:GQ:PL 0/0/1:39,32:71:22:1025,0,22,1347
+20 10039371 . T G 1332.97 . AC=2;AF=0.667;AN=3;BaseQRankSum=-3.260;DP=76;FS=6.144;MLEAC=2;MLEAF=0.667;MQ=60.00;MQRankSum=0.000;QD=18.01;ReadPosRankSum=0.391;SOR=1.031 GT:AD:DP:GQ:PL 0/1/1:34,40:74:18:1343,18,0,1184
+20 10040772 . C CT 2018.32 . AC=3;AF=1.00;AN=3;DP=85;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=52.32;QD=28.83;SOR=0.811 GT:AD:DP:GQ:PL 1/1/1:0,70:70:99:2034,333,123,0
+20 10040812 . AT A 2629.32 . AC=3;AF=1.00;AN=3;DP=83;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=51.21;QD=29.40;SOR=0.721 GT:AD:DP:GQ:PL 1/1/1:0,71:71:99:2645,339,125,0
+20 10040821 . T A 1174.63 . AC=2;AF=0.667;AN=3;BaseQRankSum=-0.021;DP=84;FS=0.000;MLEAC=1;MLEAF=0.333;MQ=51.33;MQRankSum=-0.097;QD=15.06;ReadPosRankSum=-1.350;SOR=0.688 GT:AD:DP:GQ:PL 0/1/1:38,40:78:7:1184,7,0,1083
+20 10041304 . C T 2778.36 . AC=3;AF=1.00;AN=3;DP=68;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=59.39;QD=36.76;SOR=0.693 GT:AD:DP:GQ:PL 1/1/1:0,68:68:99:2794,324,119,0
+20 10041698 . C CAT 60.98 . AC=1;AF=0.333;AN=3;BaseQRankSum=1.887;DP=80;FS=1.616;MLEAC=1;MLEAF=0.333;MQ=58.63;MQRankSum=0.194;QD=1.07;ReadPosRankSum=-0.164;SOR=1.148 GT:AD:DP:GQ:PL 0/0/1:50,7:57:67:67,0,129,1477
+20 10041701 . A ATATG 1478.97 . AC=2;AF=0.667;AN=3;BaseQRankSum=0.848;DP=80;FS=3.477;MLEAC=2;MLEAF=0.667;MQ=58.93;MQRankSum=0.340;QD=25.07;ReadPosRankSum=-0.023;SOR=0.260 GT:AD:DP:GQ:PL 0/1/1:9,50:59:99:1489,124,0,104
+20 10042319 . C T 2671.36 . AC=3;AF=1.00;AN=3;DP=69;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=59.06;QD=30.54;SOR=1.033 GT:AD:DP:GQ:PL 1/1/1:0,66:66:99:2687,315,116,0
+20 10042761 . A G 3566.36 . AC=3;AF=1.00;AN=3;DP=94;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=60.00;QD=21.53;SOR=1.389 GT:AD:DP:GQ:PL 1/1/1:0,91:91:99:3582,431,159,0
+20 10042829 . A G 3068.36 . AC=3;AF=1.00;AN=3;DP=82;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=59.77;QD=34.87;SOR=0.855 GT:AD:DP:GQ:PL 1/1/1:0,78:78:99:3084,372,137,0
+20 10043002 . A T 1303.02 . AC=1;AF=0.333;AN=3;BaseQRankSum=3.986;DP=89;FS=2.877;MLEAC=1;MLEAF=0.333;MQ=60.00;MQRankSum=0.000;QD=15.15;ReadPosRankSum=-0.035;SOR=0.434 GT:AD:DP:GQ:PL 0/0/1:48,38:86:30:1309,0,30,1651
+20 10044849 . A G 2104.36 . AC=3;AF=1.00;AN=3;DP=59;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=59.61;QD=31.04;SOR=1.316 GT:AD:DP:GQ:PL 1/1/1:0,59:59:99:2120,280,103,0
+20 10045078 . G T 3284.36 . AC=3;AF=1.00;AN=3;DP=84;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=58.78;QD=27.86;SOR=0.876 GT:AD:DP:GQ:PL 1/1/1:0,81:81:99:3300,386,143,0
+20 10045642 . G C 3120.36 . AC=3;AF=1.00;AN=3;DP=82;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=59.49;QD=34.17;SOR=0.821 GT:AD:DP:GQ:PL 1/1/1:0,81:81:99:3136,385,142,0
+20 10046178 . AAGAAAGAAAG A 2134.32 . AC=3;AF=1.00;AN=3;DP=63;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=48.77;QD=28.60;SOR=0.818 GT:AD:DP:GQ:PL 1/1/1:0,49:49:87:2150,236,87,0
+20 10046537 . A G 827.56 . AC=2;AF=0.667;AN=3;BaseQRankSum=-3.909;DP=57;FS=3.724;MLEAC=1;MLEAF=0.333;MQ=54.50;MQRankSum=0.395;QD=14.52;ReadPosRankSum=0.727;SOR=1.262 GT:AD:DP:GQ:PL 0/1/1:28,29:57:3:835,3,0,889
+20 10050828 . T C 1246.02 . AC=1;AF=0.333;AN=3;BaseQRankSum=-2.704;DP=91;FS=2.887;MLEAC=1;MLEAF=0.333;MQ=59.54;MQRankSum=0.892;QD=14.49;ReadPosRankSum=-0.140;SOR=0.521 GT:AD:DP:GQ:PL 0/0/1:49,37:86:35:1252,0,35,1764
+20 10051448 . T C 1139.79 . AC=1;AF=0.333;AN=3;BaseQRankSum=-0.501;DP=71;FS=3.687;MLEAC=1;MLEAF=0.333;MQ=59.41;MQRankSum=-1.404;QD=16.28;ReadPosRankSum=-0.705;SOR=0.302 GT:AD:DP:GQ:PL 0/0/1:35,35:70:0:1145,0,0,1132
+20 10052688 . C A 1085.02 . AC=1;AF=0.333;AN=3;BaseQRankSum=0.180;DP=83;FS=3.135;MLEAC=1;MLEAF=0.333;MQ=59.78;MQRankSum=0.870;QD=14.09;ReadPosRankSum=1.443;SOR=0.379 GT:AD:DP:GQ:PL 0/0/1:45,32:77:39:1091,0,39,1645
+20 10058022 . T C 987.06 . AC=1;AF=0.333;AN=3;BaseQRankSum=-2.346;DP=72;FS=0.920;MLEAC=1;MLEAF=0.333;MQ=59.16;MQRankSum=0.466;QD=14.52;ReadPosRankSum=0.018;SOR=0.849 GT:AD:DP:GQ:PL 0/0/1:36,32:68:13:993,0,13,1251
+20 10067049 . TAAAAAAA T 534.01 . AC=1;AF=1.00;AN=1;BaseQRankSum=-0.674;DP=73;FS=0.000;MLEAC=1;MLEAF=1.00;MQ=54.73;MQRankSum=-0.605;QD=24.27;ReadPosRankSum=-1.645;SOR=0.892 GT:AD:DP:GQ:PL 1:2,20:22:99:544,0
+20 10067090 . C A 2023.04 . AC=1;AF=1.00;AN=1;DP=56;FS=0.000;MLEAC=1;MLEAF=1.00;MQ=54.57;QD=25.57;SOR=0.729 GT:AD:DP:GQ:PL 1:0,55:55:99:2033,0
+20 10067264 . G A 2941.04 . AC=1;AF=1.00;AN=1;DP=73;FS=0.000;MLEAC=1;MLEAF=1.00;MQ=59.37;QD=33.11;SOR=0.776 GT:AD:DP:GQ:PL 1:0,73:73:99:2951,0
+20 10067722 . A C 2165.04 . AC=1;AF=1.00;AN=1;DP=59;FS=0.000;MLEAC=1;MLEAF=1.00;MQ=60.00;QD=30.20;SOR=0.846 GT:AD:DP:GQ:PL 1:0,54:54:99:2175,0
+20 10068158 . GTGTATATATATA G 38.01 . AC=1;AF=1.00;AN=1;BaseQRankSum=-0.842;DP=28;FS=3.680;MLEAC=1;MLEAF=1.00;MQ=56.62;MQRankSum=0.328;QD=5.43;ReadPosRankSum=0.524;SOR=0.061 GT:AD:DP:GQ:PL 1:3,4:7:48:48,0
+20 10068981 . G A 2522.04 . AC=1;AF=1.00;AN=1;DP=65;FS=0.000;MLEAC=1;MLEAF=1.00;MQ=60.00;QD=30.49;SOR=0.941 GT:AD:DP:GQ:PL 1:0,61:61:99:2532,0
+20 10070602 . T C 2710.04 . AC=1;AF=1.00;AN=1;DP=76;FS=0.000;MLEAC=1;MLEAF=1.00;MQ=58.78;QD=31.67;SOR=0.749 GT:AD:DP:GQ:PL 1:0,72:72:99:2720,0
+20 10070936 . T A 3650.04 . AC=1;AF=1.00;AN=1;DP=86;FS=0.000;MLEAC=1;MLEAF=1.00;MQ=58.96;QD=29.53;SOR=0.846 GT:AD:DP:GQ:PL 1:0,82:82:99:3660,0
+20 10070938 . G GA 3684.01 . AC=1;AF=1.00;AN=1;DP=85;FS=0.000;MLEAC=1;MLEAF=1.00;MQ=59.07;QD=32.63;SOR=0.818 GT:AD:DP:GQ:PL 1:0,83:83:99:3694,0
+20 10071135 . C T 3276.04 . AC=1;AF=1.00;AN=1;DP=88;FS=0.000;MLEAC=1;MLEAF=1.00;MQ=59.21;QD=30.36;SOR=1.003 GT:AD:DP:GQ:PL 1:0,79:79:99:3286,0
+20 10071187 . G A 3429.04 . AC=1;AF=1.00;AN=1;DP=85;FS=0.000;MLEAC=1;MLEAF=1.00;MQ=59.73;QD=28.13;SOR=1.367 GT:AD:DP:GQ:PL 1:0,82:82:99:3439,0
+20 10071890 . T C 1993.04 . AC=1;AF=1.00;AN=1;DP=61;FS=0.000;MLEAC=1;MLEAF=1.00;MQ=59.31;QD=34.97;SOR=0.728 GT:AD:DP:GQ:PL 1:0,57:57:99:2003,0
+20 10072505 . A G 2118.04 . AC=1;AF=1.00;AN=1;DP=67;FS=0.000;MLEAC=1;MLEAF=1.00;MQ=60.00;QD=33.09;SOR=0.822 GT:AD:DP:GQ:PL 1:0,64:64:99:2128,0
+20 10074187 . A G 3120.04 . AC=1;AF=1.00;AN=1;DP=81;FS=0.000;MLEAC=1;MLEAF=1.00;MQ=59.14;QD=27.97;SOR=0.881 GT:AD:DP:GQ:PL 1:0,79:79:99:3130,0
+20 10074240 . T C 3425.04 . AC=1;AF=1.00;AN=1;DP=89;FS=0.000;MLEAC=1;MLEAF=1.00;MQ=59.79;QD=28.31;SOR=0.922 GT:AD:DP:GQ:PL 1:0,85:85:99:3435,0
+20 10074716 . G A 2419.04 . AC=1;AF=1.00;AN=1;DP=70;FS=0.000;MLEAC=1;MLEAF=1.00;MQ=59.67;QD=35.21;SOR=1.214 GT:AD:DP:GQ:PL 1:0,64:64:99:2429,0
+20 10074806 . G A 2836.04 . AC=1;AF=1.00;AN=1;DP=75;FS=0.000;MLEAC=1;MLEAF=1.00;MQ=59.38;QD=35.18;SOR=0.840 GT:AD:DP:GQ:PL 1:0,71:71:99:2846,0
+20 10075043 . T C 2424.04 . AC=1;AF=1.00;AN=1;DP=64;FS=0.000;MLEAC=1;MLEAF=1.00;MQ=59.64;QD=29.59;SOR=1.107 GT:AD:DP:GQ:PL 1:0,61:61:99:2434,0
+20 10075168 . C T 3631.04 . AC=1;AF=1.00;AN=1;DP=91;FS=0.000;MLEAC=1;MLEAF=1.00;MQ=59.37;QD=32.25;SOR=0.997 GT:AD:DP:GQ:PL 1:0,88:88:99:3641,0
+20 10075508 . GA G 1956.01 . AC=1;AF=1.00;AN=1;DP=81;FS=0.000;MLEAC=1;MLEAF=1.00;MQ=61.11;QD=27.94;SOR=1.085 GT:AD:DP:GQ:PL 1:0,70:70:99:1966,0
+20 10076339 . A G 293.04 . AC=1;AF=1.00;AN=1;BaseQRankSum=-0.069;DP=76;FS=1.992;MLEAC=1;MLEAF=1.00;MQ=59.70;MQRankSum=-0.866;QD=4.07;ReadPosRankSum=1.015;SOR=0.446 GT:AD:DP:GQ:PL 1:32,40:72:99:303,0
+20 10076399 . G A 282.04 . AC=1;AF=1.00;AN=1;BaseQRankSum=4.154;DP=95;FS=1.680;MLEAC=1;MLEAF=1.00;MQ=60.00;MQRankSum=0.000;QD=3.00;ReadPosRankSum=-1.058;SOR=0.952 GT:AD:DP:GQ:PL 1:44,50:94:99:292,0
+20 10077752 . T C 178.04 . AC=1;AF=1.00;AN=1;BaseQRankSum=-6.503;DP=83;FS=4.458;MLEAC=1;MLEAF=1.00;MQ=60.00;MQRankSum=0.000;QD=2.25;ReadPosRankSum=-0.352;SOR=1.251 GT:AD:DP:GQ:PL 1:34,45:79:99:188,0
+20 10081750 . C A 1362.05 . AC=1;AF=0.333;AN=3;BaseQRankSum=2.670;DP=92;FS=0.824;MLEAC=1;MLEAF=0.333;MQ=60.00;MQRankSum=0.000;QD=16.41;ReadPosRankSum=-0.406;SOR=0.664 GT:AD:DP:GQ:PL 0/0/1:44,39:83:14:1368,0,14,1511
+20 10081800 . C T 1118.21 . AC=1;AF=0.333;AN=3;BaseQRankSum=0.241;DP=69;FS=11.086;MLEAC=1;MLEAF=0.333;MQ=60.00;MQRankSum=0.000;QD=16.44;ReadPosRankSum=-2.622;SOR=0.143 GT:AD:DP:GQ:PL 0/0/1:35,33:68:6:1124,0,6,1208
+20 10082892 . C T 1725.36 . AC=3;AF=1.00;AN=3;DP=45;FS=0.000;MLEAC=3;MLEAF=1.00;MQ=59.49;QD=34.86;SOR=0.883 GT:AD:DP:GQ:PL 1/1/1:0,44:44:77:1741,209,77,0
+20 10085211 . A T 1220.07 . AC=1;AF=0.333;AN=3;BaseQRankSum=-1.501;DP=81;FS=0.870;MLEAC=1;MLEAF=0.333;MQ=59.72;MQRankSum=-1.028;QD=16.05;ReadPosRankSum=-1.405;SOR=0.723 GT:AD:DP:GQ:PL 0/0/1:40,36:76:12:1226,0,12,1429
+20 10086110 . G A 1284.05 . AC=1;AF=0.333;AN=3;BaseQRankSum=-0.343;DP=83;FS=1.810;MLEAC=1;MLEAF=0.333;MQ=59.16;MQRankSum=-0.680;QD=15.85;ReadPosRankSum=0.170;SOR=0.495 GT:AD:DP:GQ:PL 0/0/1:43,38:81:15:1290,0,15,1493
+20 10086283 . G T 1056.02 . AC=1;AF=0.333;AN=3;BaseQRankSum=2.304;DP=86;FS=0.855;MLEAC=1;MLEAF=0.333;MQ=60.00;MQRankSum=0.000;QD=12.57;ReadPosRankSum=1.889;SOR=0.529 GT:AD:DP:GQ:PL 0/0/1:52,32:84:60:1062,0,60,1779
+20 10086619 . T A 831.02 . AC=1;AF=0.333;AN=3;BaseQRankSum=0.256;DP=76;FS=0.958;MLEAC=1;MLEAF=0.333;MQ=59.70;MQRankSum=-1.312;QD=11.87;ReadPosRankSum=-0.760;SOR=0.846 GT:AD:DP:GQ:PL 0/0/1:45,25:70:60:837,0,60,1616
+20 10086853 . G A 1020.02 . AC=1;AF=0.333;AN=3;BaseQRankSum=3.915;DP=75;FS=0.000;MLEAC=1;MLEAF=0.333;MQ=59.44;MQRankSum=-0.177;QD=13.97;ReadPosRankSum=-0.100;SOR=0.767 GT:AD:DP:GQ:PL 0/0/1:41,32:73:28:1026,0,28,1276
+20 10086954 . G A 1101.63 . AC=1;AF=0.333;AN=3;BaseQRankSum=2.606;DP=70;FS=4.812;MLEAC=1;MLEAF=0.333;MQ=60.00;MQRankSum=0.000;QD=16.20;ReadPosRankSum=-0.534;SOR=1.185 GT:AD:DP:GQ:PL 0/0/1:34,34:68:1:1107,0,1,1034
+20 10087230 . A G 1855.01 . AC=2;AF=0.667;AN=3;BaseQRankSum=-2.407;DP=101;FS=3.860;MLEAC=2;MLEAF=0.667;MQ=58.94;MQRankSum=1.707;QD=19.32;ReadPosRankSum=0.307;SOR=0.960 GT:AD:DP:GQ:PL 0/1/1:42,54:96:36:1865,36,0,1421
+20 10087394 . T G 1707.01 . AC=2;AF=0.667;AN=3;BaseQRankSum=-2.340;DP=85;FS=4.225;MLEAC=2;MLEAF=0.667;MQ=59.46;MQRankSum=1.207;QD=20.32;ReadPosRankSum=0.885;SOR=0.436 GT:AD:DP:GQ:PL 0/1/1:35,49:84:42:1717,42,0,1186
+20 10087754 . T G 1387.92 . AC=2;AF=0.667;AN=3;BaseQRankSum=0.239;DP=87;FS=0.851;MLEAC=2;MLEAF=0.667;MQ=60.60;MQRankSum=2.166;QD=17.57;ReadPosRankSum=-0.378;SOR=0.596 GT:AD:DP:GQ:PL 0/1/1:37,42:79:14:1398,14,0,1223
+20 10087804 . C T 1617 . AC=2;AF=0.667;AN=3;BaseQRankSum=1.940;DP=104;FS=3.847;MLEAC=1;MLEAF=0.333;MQ=60.18;MQRankSum=2.618;QD=16.17;ReadPosRankSum=0.341;SOR=0.369 GT:AD:DP:GQ:PL 0/1/1:50,50:100:1:1623,1,0,1486
+20 10087820 . C CAG 474.98 . AC=1;AF=0.333;AN=3;BaseQRankSum=-1.974;DP=103;FS=0.000;MLEAC=1;MLEAF=0.333;MQ=60.51;MQRankSum=0.422;QD=8.64;ReadPosRankSum=-0.019;SOR=0.850 GT:AD:DP:GQ:PL 0/0/1:37,18:55:59:481,0,59,1184
+20 10088063 . C T 1423.06 . AC=1;AF=0.333;AN=3;BaseQRankSum=3.405;DP=94;FS=2.739;MLEAC=1;MLEAF=0.333;MQ=59.36;MQRankSum=0.515;QD=15.30;ReadPosRankSum=0.285;SOR=1.053 GT:AD:DP:GQ:PL 0/0/1:49,44:93:13:1429,0,13,1386
+20 10088699 . C T 798.02 . AC=1;AF=0.333;AN=3;BaseQRankSum=3.803;DP=67;FS=16.952;MLEAC=1;MLEAF=0.333;MQ=56.90;MQRankSum=-3.140;QD=12.87;ReadPosRankSum=-1.456;SOR=1.914 GT:AD:DP:GQ:PL 0/0/1:36,26:62:30:804,0,30,1087
+20 10088730 . G A 987.07 . AC=1;AF=0.333;AN=3;BaseQRankSum=0.224;DP=57;FS=9.708;MLEAC=1;MLEAF=0.333;MQ=52.92;MQRankSum=-5.213;QD=17.63;ReadPosRankSum=0.581;SOR=1.011 GT:AD:DP:GQ:PL 0/0/1:30,26:56:12:993,0,12,1144
+20 10088736 . A C 1092.21 . AC=1;AF=0.333;AN=3;BaseQRankSum=0.282;DP=60;FS=7.080;MLEAC=1;MLEAF=0.333;MQ=52.86;MQRankSum=-5.157;QD=18.20;ReadPosRankSum=0.573;SOR=0.850 GT:AD:DP:GQ:PL 0/0/1:31,29:60:6:1098,0,6,1181
+20 10088747 . A G 1121.94 . AC=2;AF=0.667;AN=3;BaseQRankSum=-3.877;DP=56;FS=9.708;MLEAC=2;MLEAF=0.667;MQ=52.20;MQRankSum=-4.881;QD=20.03;ReadPosRankSum=0.009;SOR=1.162 GT:AD:DP:GQ:PL 0/1/1:26,30:56:12:1132,12,0,986
+20 10088799 . G A 1037 . AC=2;AF=0.667;AN=3;BaseQRankSum=5.503;DP=54;FS=10.098;MLEAC=2;MLEAF=0.667;MQ=53.34;MQRankSum=-2.498;QD=19.57;ReadPosRankSum=1.075;SOR=1.003 GT:AD:DP:GQ:PL 0/1/1:22,31:53:27:1047,27,0,617
+20 10088895 . C T 554.06 . AC=1;AF=0.333;AN=3;BaseQRankSum=2.330;DP=43;FS=0.000;MLEAC=1;MLEAF=0.333;MQ=57.80;MQRankSum=0.260;QD=13.85;ReadPosRankSum=1.238;SOR=0.727 GT:AD:DP:GQ:PL 0/0/1:22,18:40:13:560,0,13,647
+20 10088968 . C CAAA 1191.75 . AC=1;AF=0.333;AN=3;BaseQRankSum=0.552;DP=77;FS=0.000;MLEAC=1;MLEAF=0.333;MQ=52.81;MQRankSum=-5.145;QD=18.62;ReadPosRankSum=0.629;SOR=0.693 GT:AD:DP:GQ:PL 0/0/1:32,32:64:0:1197,0,0,1220
+20 10088980 . T C 1259.05 . AC=1;AF=0.333;AN=3;BaseQRankSum=-1.585;DP=74;FS=0.000;MLEAC=1;MLEAF=0.333;MQ=51.42;MQRankSum=-5.018;QD=17.25;ReadPosRankSum=1.577;SOR=0.758 GT:AD:DP:GQ:PL 0/0/1:39,34:73:15:1265,0,15,1486
+20 10088985 . T C 1197.02 . AC=1;AF=0.333;AN=3;BaseQRankSum=-0.192;DP=77;FS=0.890;MLEAC=1;MLEAF=0.333;MQ=51.29;MQRankSum=-5.248;QD=16.18;ReadPosRankSum=1.452;SOR=0.742 GT:AD:DP:GQ:PL 0/0/1:42,32:74:30:1203,0,30,1595
+20 10089441 . A G 1182.98 . AC=2;AF=0.667;AN=3;BaseQRankSum=-4.885;DP=79;FS=6.071;MLEAC=1;MLEAF=0.333;MQ=59.71;MQRankSum=-0.948;QD=15.57;ReadPosRankSum=-0.156;SOR=1.363 GT:AD:DP:GQ:PL 0/1/1:37,39:76:6:1192,6,0,1297
+20 10089525 . C T 1554.96 . AC=2;AF=0.667;AN=3;BaseQRankSum=5.859;DP=83;FS=4.260;MLEAC=2;MLEAF=0.667;MQ=59.50;MQRankSum=1.531;QD=19.20;ReadPosRankSum=0.862;SOR=0.617 GT:AD:DP:GQ:PL 0/1/1:38,43:81:16:1565,16,0,1075
+20 10090289 . CA C 429.02 . AC=2;AF=0.667;AN=3;BaseQRankSum=0.296;DP=88;FS=1.377;MLEAC=1;MLEAF=0.333;MQ=59.97;MQRankSum=1.531;QD=11.29;ReadPosRankSum=0.535;SOR=1.127 GT:AD:DP:GQ:PL 0/1/1:14,24:38:28:426,28,0,235
+20 10090764 . A G 855.04 . AC=1;AF=0.333;AN=3;BaseQRankSum=-2.659;DP=67;FS=4.975;MLEAC=1;MLEAF=0.333;MQ=60.00;MQRankSum=0.000;QD=13.57;ReadPosRankSum=1.207;SOR=0.310 GT:AD:DP:GQ:PL 0/0/1:34,29:63:16:861,0,16,1199
+20 10090970 . T C 1263.05 . AC=2;AF=0.667;AN=3;BaseQRankSum=-0.484;DP=70;FS=0.927;MLEAC=2;MLEAF=0.667;MQ=59.47;MQRankSum=1.509;QD=18.31;ReadPosRankSum=-0.072;SOR=0.518 GT:AD:DP:GQ:PL 0/1/1:33,36:69:10:1273,10,0,1080
+20 10091214 . C T 1255.94 . AC=2;AF=0.667;AN=3;BaseQRankSum=0.361;DP=73;FS=0.000;MLEAC=2;MLEAF=0.667;MQ=59.74;MQRankSum=-0.916;QD=17.94;ReadPosRankSum=-0.035;SOR=0.625 GT:AD:DP:GQ:PL 0/1/1:33,37:70:12:1266,12,0,1098
+20 10092415 . A G 1637.14 . AC=1;AF=0.333;AN=3;BaseQRankSum=-6.731;DP=103;FS=0.741;MLEAC=1;MLEAF=0.333;MQ=60.00;MQRankSum=0.000;QD=16.21;ReadPosRankSum=0.082;SOR=0.665 GT:AD:DP:GQ:PL 0/0/1:52,49:101:8:1643,0,8,1880
+20 10092927 . G T 180.02 . AC=1;AF=0.333;AN=3;BaseQRankSum=-2.507;DP=83;FS=60.191;MLEAC=1;MLEAF=0.333;MQ=59.16;MQRankSum=-3.009;QD=2.50;ReadPosRankSum=-0.220;SOR=5.279 GT:AD:DP:GQ:PL 0/0/1:59,13:72:99:186,0,136,1914
+20 10093568 . GT G,GTT 381.96 . AC=1,1;AF=0.333,0.333;AN=3;BaseQRankSum=1.038;DP=62;FS=0.000;MLEAC=1,1;MLEAF=0.333,0.333;MQ=58.80;MQRankSum=0.965;QD=9.09;ReadPosRankSum=0.911;SOR=0.824 GT:AD:DP:GQ:PL 0/1/2:17,21,4:42:39:395,39,42,417,371,0,306,460,353,938
+20 10093923 . T A 1086.12 . AC=1;AF=0.333;AN=3;BaseQRankSum=-0.667;DP=73;FS=0.924;MLEAC=1;MLEAF=0.333;MQ=59.25;MQRankSum=0.358;QD=16.21;ReadPosRankSum=-1.583;SOR=0.772 GT:AD:DP:GQ:PL 0/0/1:35,32:67:9:1092,0,9,1244
+20 10094251 . T A 1290 . AC=2;AF=0.667;AN=3;BaseQRankSum=0.251;DP=67;FS=11.483;MLEAC=2;MLEAF=0.667;MQ=60.00;MQRankSum=0.000;QD=20.81;ReadPosRankSum=1.806;SOR=1.211 GT:AD:DP:GQ:PL 0/1/1:26,36:62:32:1300,32,0,781
+20 10094582 . A G 942.02 . AC=1;AF=0.333;AN=3;BaseQRankSum=-1.388;DP=73;FS=0.000;MLEAC=1;MLEAF=0.333;MQ=59.43;MQRankSum=1.270;QD=13.65;ReadPosRankSum=-0.018;SOR=0.772 GT:AD:DP:GQ:PL 0/0/1:39,30:69:27:948,0,27,1346
+20 10094774 . C T 1048.04 . AC=1;AF=0.333;AN=3;BaseQRankSum=-0.784;DP=81;FS=0.000;MLEAC=1;MLEAF=0.333;MQ=59.43;MQRankSum=0.962;QD=13.97;ReadPosRankSum=0.197;SOR=0.690 GT:AD:DP:GQ:PL 0/0/1:40,35:75:16:1054,0,16,1271
+20 10095432 . GTGATGATGA G 862.06 . AC=1;AF=0.333;AN=3;BaseQRankSum=1.063;DP=79;FS=1.102;MLEAC=1;MLEAF=0.333;MQ=54.53;MQRankSum=-4.431;QD=17.24;ReadPosRankSum=0.396;SOR=0.460 GT:AD:DP:GQ:PL 0/0/1:27,23:50:10:868,0,10,993
+20 10095741 . A G 1084.17 . AC=1;AF=0.333;AN=3;BaseQRankSum=-0.534;DP=72;FS=4.721;MLEAC=1;MLEAF=0.333;MQ=57.39;MQRankSum=-2.313;QD=15.49;ReadPosRankSum=-0.500;SOR=0.515 GT:AD:DP:GQ:PL 0/0/1:36,34:70:7:1090,0,7,1218
+20 10096293 . C T 1358.56 . AC=2;AF=0.667;AN=3;BaseQRankSum=4.664;DP=79;FS=0.000;MLEAC=1;MLEAF=0.333;MQ=58.64;MQRankSum=1.397;QD=18.11;ReadPosRankSum=-1.135;SOR=0.638 GT:AD:DP:GQ:PL 0/1/1:37,38:75:3:1366,3,0,1240
+20 10096596 . C T 1568.98 . AC=2;AF=0.667;AN=3;BaseQRankSum=2.728;DP=91;FS=0.000;MLEAC=2;MLEAF=0.667;MQ=58.82;MQRankSum=0.612;QD=18.03;ReadPosRankSum=-0.170;SOR=0.640 GT:AD:DP:GQ:PL 0/1/1:40,47:87:20:1579,20,0,1261
+20 10096768 . A C 1687.98 . AC=2;AF=0.667;AN=3;BaseQRankSum=-2.764;DP=96;FS=3.983;MLEAC=2;MLEAF=0.667;MQ=59.28;MQRankSum=-1.609;QD=18.55;ReadPosRankSum=0.613;SOR=0.445 GT:AD:DP:GQ:PL 0/1/1:42,49:91:21:1698,21,0,1440
+20 10096899 . G T 1617.18 . AC=2;AF=0.667;AN=3;BaseQRankSum=2.755;DP=84;FS=13.441;MLEAC=2;MLEAF=0.667;MQ=59.28;MQRankSum=-1.677;QD=19.48;ReadPosRankSum=0.422;SOR=1.954 GT:AD:DP:GQ:PL 0/1/1:40,43:83:9:1627,9,0,1503
+20 10096905 . TA T 1610.75 . AC=1;AF=0.333;AN=3;BaseQRankSum=-0.755;DP=86;FS=11.056;MLEAC=1;MLEAF=0.333;MQ=59.30;MQRankSum=-1.739;QD=18.73;ReadPosRankSum=0.461;SOR=1.761 GT:AD:DP:GQ:PL 0/0/1:43,43:86:0:1616,0,0,1601
+20 10096933 . G C 1521.04 . AC=1;AF=0.333;AN=3;BaseQRankSum=-1.914;DP=89;FS=19.713;MLEAC=1;MLEAF=0.333;MQ=59.32;MQRankSum=-1.840;QD=17.09;ReadPosRankSum=0.383;SOR=1.420 GT:AD:DP:GQ:PL 0/0/1:47,42:89:16:1527,0,16,1749
+20 10096958 . G A 1769.94 . AC=2;AF=0.667;AN=3;BaseQRankSum=2.697;DP=93;FS=19.322;MLEAC=2;MLEAF=0.667;MQ=59.35;MQRankSum=-1.664;QD=19.24;ReadPosRankSum=-1.593;SOR=1.431 GT:AD:DP:GQ:PL 0/1/1:44,48:92:12:1780,12,0,1604
+20 10097075 . T G 1445.98 . AC=2;AF=0.667;AN=3;BaseQRankSum=-2.533;DP=96;FS=6.613;MLEAC=2;MLEAF=0.667;MQ=58.14;MQRankSum=-1.389;QD=15.72;ReadPosRankSum=0.235;SOR=0.628 GT:AD:DP:GQ:PL 0/1/1:44,48:92:11:1456,11,0,1464
+20 10097101 . C CTTT 1116.97 . AC=2;AF=0.667;AN=3;BaseQRankSum=-0.954;DP=81;FS=7.014;MLEAC=1;MLEAF=0.333;MQ=58.04;MQRankSum=-1.720;QD=16.67;ReadPosRankSum=3.010;SOR=0.519 GT:AD:DP:GQ:PL 0/1/1:33,34:67:2:1117,2,0,1201
+20 10097436 . CTTTTCTTTCTTTCTTTCTTTCTTTCTTTCTTTCTTT C 1097.98 . AC=1;AF=0.333;AN=3;BaseQRankSum=1.650;DP=90;FS=1.851;MLEAC=1;MLEAF=0.333;MQ=54.34;MQRankSum=-6.464;QD=12.34;ReadPosRankSum=-3.097;SOR=0.948 GT:AD:DP:GQ:PL 0/0/1:57,32:89:75:1104,0,75,2258
+20 10097437 . TTTTC *,T 940.61 . AC=1,2;AF=0.333,0.667;AN=3;DP=78;FS=0.000;MLEAC=1,2;MLEAF=0.333,0.667;MQ=53.68;QD=17.10;SOR=1.877 GT:AD:DP:GQ:PL 1/2/2:0,32,23:55:42:2124,965,945,1801,1234,70,42,1164,0,1123
+20 10097626 . C A 649.03 . AC=1;AF=0.333;AN=3;BaseQRankSum=1.085;DP=54;FS=2.701;MLEAC=1;MLEAF=0.333;MQ=58.00;MQRankSum=-1.331;QD=13.52;ReadPosRankSum=1.015;SOR=0.324 GT:AD:DP:GQ:PL 0/0/1:28,20:48:23:655,0,23,957
+20 10097789 . T C 713.02 . AC=1;AF=0.333;AN=3;BaseQRankSum=-1.157;DP=60;FS=5.374;MLEAC=1;MLEAF=0.333;MQ=58.05;MQRankSum=-2.805;QD=12.51;ReadPosRankSum=0.220;SOR=0.756 GT:AD:DP:GQ:PL 0/0/1:34,23:57:33:719,0,33,1192
+20 10097928 . G A 583.98 . AC=2;AF=0.667;AN=3;BaseQRankSum=-1.203;DP=37;FS=1.315;MLEAC=1;MLEAF=0.333;MQ=58.11;MQRankSum=-1.654;QD=16.22;ReadPosRankSum=-0.079;SOR=0.951 GT:AD:DP:GQ:PL 0/1/1:17,19:36:6:593,6,0,580
+20 10098110 . G C 603.21 . AC=1;AF=0.333;AN=3;BaseQRankSum=2.510;DP=36;FS=6.658;MLEAC=1;MLEAF=0.333;MQ=58.71;MQRankSum=-1.477;QD=16.76;ReadPosRankSum=-0.730;SOR=0.069 GT:AD:DP:GQ:PL 0/0/1:19,17:36:6:609,0,6,721
+20 10098135 . C A 500.02 . AC=1;AF=0.333;AN=3;BaseQRankSum=-1.155;DP=39;FS=4.449;MLEAC=1;MLEAF=0.333;MQ=59.65;MQRankSum=1.563;QD=12.82;ReadPosRankSum=-0.591;SOR=0.070 GT:AD:DP:GQ:PL 0/0/1:25,14:39:33:506,0,33,971
+20 10098219 . TATATATA T 327.08 . AC=1;AF=0.333;AN=3;BaseQRankSum=3.147;DP=21;FS=0.000;MLEAC=1;MLEAF=0.333;MQ=55.94;MQRankSum=-0.205;QD=15.58;ReadPosRankSum=0.427;SOR=0.465 GT:AD:DP:GQ:PL 0/0/1:12,9:21:9:333,0,9,460
+20 10098237 . A T 263.79 . AC=1;AF=0.333;AN=3;BaseQRankSum=0.006;DP=14;FS=0.000;MLEAC=1;MLEAF=0.333;MQ=53.89;MQRankSum=-1.885;QD=18.84;ReadPosRankSum=1.118;SOR=0.693 GT:AD:DP:GQ:PL 0/0/1:7,7:14:0:269,0,0,269
+20 10098265 . T C 153.98 . AC=2;AF=0.667;AN=3;BaseQRankSum=1.834;DP=6;FS=0.000;MLEAC=1;MLEAF=0.333;MQ=41.96;MQRankSum=-1.834;QD=25.66;ReadPosRankSum=0.842;SOR=1.329 GT:AD:DP:GQ:PL 0/1/1:2,4:6:6:163,6,0,60
+20 10098885 . C CA 462.08 . AC=1;AF=0.333;AN=3;BaseQRankSum=0.165;DP=33;FS=0.000;MLEAC=1;MLEAF=0.333;MQ=49.73;MQRankSum=-4.449;QD=14.91;ReadPosRankSum=-0.954;SOR=0.518 GT:AD:DP:GQ:PL 0/0/1:17,14:31:9:468,0,9,569
+20 10098945 . T C 426.92 . AC=2;AF=0.667;AN=3;BaseQRankSum=1.475;DP=22;FS=3.882;MLEAC=2;MLEAF=0.667;MQ=51.15;MQRankSum=-2.504;QD=19.41;ReadPosRankSum=1.038;SOR=2.368 GT:AD:DP:GQ:PL 0/1/1:9,13:22:13:437,13,0,249
+20 10098987 . C T 394.98 . AC=2;AF=0.667;AN=3;BaseQRankSum=3.127;DP=25;FS=7.005;MLEAC=1;MLEAF=0.333;MQ=51.36;MQRankSum=-2.734;QD=16.46;ReadPosRankSum=0.436;SOR=2.925 GT:AD:DP:GQ:PL 0/1/1:11,13:24:6:404,6,0,347
+20 10099029 . T C 363.02 . AC=1;AF=0.333;AN=3;BaseQRankSum=-1.809;DP=30;FS=1.987;MLEAC=1;MLEAF=0.333;MQ=52.93;MQRankSum=-3.731;QD=12.52;ReadPosRankSum=-1.224;SOR=1.609 GT:AD:DP:GQ:PL 0/0/1:19,10:29:27:369,0,27,774
+20 10099034 . C A 363.02 . AC=1;AF=0.333;AN=3;BaseQRankSum=2.757;DP=29;FS=1.987;MLEAC=1;MLEAF=0.333;MQ=53.57;MQRankSum=-3.731;QD=12.52;ReadPosRankSum=-1.850;SOR=1.609 GT:AD:DP:GQ:PL 0/0/1:19,10:29:27:369,0,27,774
+20 10099044 . A C 363.02 . AC=1;AF=0.333;AN=3;BaseQRankSum=-1.148;DP=29;FS=0.000;MLEAC=1;MLEAF=0.333;MQ=51.81;MQRankSum=-4.533;QD=12.52;ReadPosRankSum=-2.207;SOR=0.892 GT:AD:DP:GQ:PL 0/0/1:19,10:29:27:369,0,27,774
+20 10099046 . T C 330.03 . AC=1;AF=0.333;AN=3;BaseQRankSum=-2.165;DP=24;FS=0.000;MLEAC=1;MLEAF=0.333;MQ=49.94;MQRankSum=-4.418;QD=13.75;ReadPosRankSum=-2.297;SOR=0.515 GT:AD:DP:GQ:PL 0/0/1:15,9:24:18:336,0,18,606
+20 10099055 . T C 286.02 . AC=1;AF=0.333;AN=3;BaseQRankSum=-1.554;DP=25;FS=0.000;MLEAC=1;MLEAF=0.333;MQ=50.20;MQRankSum=-4.179;QD=11.44;ReadPosRankSum=-1.970;SOR=0.770 GT:AD:DP:GQ:PL 0/0/1:17,8:25:27:292,0,27,680
+20 10099079 . C T 159.02 . AC=1;AF=0.333;AN=3;BaseQRankSum=1.434;DP=30;FS=1.826;MLEAC=1;MLEAF=0.333;MQ=51.49;MQRankSum=-2.614;QD=5.30;ReadPosRankSum=0.969;SOR=1.329 GT:AD:DP:GQ:PL 0/0/1:24,6:30:54:165,0,54,906
+20 10099111 . T TTTTGTTTG 683.03 . AC=1;AF=0.333;AN=3;BaseQRankSum=-1.207;DP=52;FS=1.206;MLEAC=1;MLEAF=0.333;MQ=53.85;MQRankSum=-0.973;QD=16.26;ReadPosRankSum=-1.860;SOR=0.967 GT:AD:DP:GQ:PL 0/0/1:23,19:42:12:689,0,12,798
+20 10099140 . G T 1012.36 . AC=2;AF=0.667;AN=3;BaseQRankSum=-0.114;DP=64;FS=2.241;MLEAC=1;MLEAF=0.333;MQ=55.86;MQRankSum=-2.469;QD=16.33;ReadPosRankSum=0.846;SOR=1.114 GT:AD:DP:GQ:PL 0/1/1:30,32:62:8:1022,8,0,920
+20 10099190 . G T 1042.41 . AC=1;AF=0.333;AN=3;BaseQRankSum=-0.034;DP=65;FS=0.000;MLEAC=1;MLEAF=0.333;MQ=57.56;MQRankSum=-1.711;QD=16.04;ReadPosRankSum=-1.260;SOR=0.776 GT:AD:DP:GQ:PL 0/0/1:33,32:65:3:1048,0,3,1139
+20 10099220 . A G 596.04 . AC=1;AF=0.333;AN=3;BaseQRankSum=-1.664;DP=47;FS=1.137;MLEAC=1;MLEAF=0.333;MQ=57.74;MQRankSum=-2.596;QD=13.25;ReadPosRankSum=0.629;SOR=0.519 GT:AD:DP:GQ:PL 0/0/1:25,20:45:16:602,0,16,870
+20 10099250 . G A 716.96 . AC=2;AF=0.667;AN=3;BaseQRankSum=3.170;DP=39;FS=7.195;MLEAC=2;MLEAF=0.667;MQ=56.89;MQRankSum=-2.272;QD=19.38;ReadPosRankSum=0.583;SOR=0.162 GT:AD:DP:GQ:PL 0/1/1:16,21:37:16:727,16,0,422
+20 10099535 . G A 1357.01 . AC=2;AF=0.667;AN=3;BaseQRankSum=5.034;DP=68;FS=2.172;MLEAC=2;MLEAF=0.667;MQ=59.04;MQRankSum=-1.418;QD=20.88;ReadPosRankSum=-0.777;SOR=0.408 GT:AD:DP:GQ:PL 0/1/1:26,39:65:39:1367,39,0,689
+20 10099565 . C T 1356.98 . AC=2;AF=0.667;AN=3;BaseQRankSum=4.595;DP=70;FS=8.736;MLEAC=2;MLEAF=0.667;MQ=59.40;MQRankSum=-1.266;QD=19.67;ReadPosRankSum=1.225;SOR=0.191 GT:AD:DP:GQ:PL 0/1/1:31,38:69:21:1367,21,0,986
+20 10099755 . C T 1105.41 . AC=1;AF=0.333;AN=3;BaseQRankSum=1.550;DP=66;FS=2.074;MLEAC=1;MLEAF=0.333;MQ=59.37;MQRankSum=-0.022;QD=17.01;ReadPosRankSum=-0.230;SOR=0.446 GT:AD:DP:GQ:PL 0/0/1:33,32:65:3:1111,0,3,1133
+20 10099832 . A G 1087.03 . AC=1;AF=0.333;AN=3;BaseQRankSum=-4.563;DP=75;FS=4.632;MLEAC=1;MLEAF=0.333;MQ=59.00;MQRankSum=0.869;QD=15.10;ReadPosRankSum=-1.023;SOR=0.871 GT:AD:DP:GQ:PL 0/0/1:39,33:72:18:1093,0,18,1421
diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/testMismatchPloidyRegions.bed b/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/testMismatchPloidyRegions.bed
new file mode 100644
index 00000000000..9cec9490ffe
--- /dev/null
+++ b/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/testMismatchPloidyRegions.bed
@@ -0,0 +1,3 @@
+chr20 10000000 10010000 2
+20 10020000 10030000 4
+20 10060000 10080000 1
diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/testNegativePloidyRegions.bed b/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/testNegativePloidyRegions.bed
new file mode 100644
index 00000000000..0020760881a
--- /dev/null
+++ b/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/testNegativePloidyRegions.bed
@@ -0,0 +1,3 @@
+20 10000000 10010000 -2
+20 10020000 10030000 4
+20 10060000 10080000 1
diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/testNonIntegerPloidyRegions.bed b/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/testNonIntegerPloidyRegions.bed
new file mode 100644
index 00000000000..c294c72b668
--- /dev/null
+++ b/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/testNonIntegerPloidyRegions.bed
@@ -0,0 +1,3 @@
+20 10000000 10010000 hi
+20 10020000 10030000 .
+20 10060000 10080000 1
diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/testPloidyRegions.bed b/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/testPloidyRegions.bed
new file mode 100644
index 00000000000..2e652e2566b
--- /dev/null
+++ b/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/testPloidyRegions.bed
@@ -0,0 +1,4 @@
+20 10000000 10010000 2
+20 10020000 10030000 4
+20 10022000 10026000 2
+20 10060000 10080000 1