From b854409b89ced323bff9e5590360eb1b1cf8c85c Mon Sep 17 00:00:00 2001 From: James Date: Fri, 5 Jun 2020 15:52:25 -0400 Subject: [PATCH 1/5] rebased version of this code --- .../readthreading/AbstractReadThreadingGraph.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/readthreading/AbstractReadThreadingGraph.java b/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/readthreading/AbstractReadThreadingGraph.java index bedc7a4a4ea..13501a4d265 100644 --- a/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/readthreading/AbstractReadThreadingGraph.java +++ b/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/readthreading/AbstractReadThreadingGraph.java @@ -591,7 +591,7 @@ int mergeDanglingHeadLegacy(final DanglingChainMergeHelper danglingHeadMergeResu final List elements = danglingHeadMergeResult.cigar.getCigarElements(); final CigarElement firstElement = elements.get(0); - Utils.validateArg(firstElement.getOperator() == CigarOperator.M, "The first Cigar element must be an M"); + Utils.validateArg( firstElement.getOperator() == CigarOperator.M, "The first Cigar element must be an M"); final int indexesToMerge = bestPrefixMatchLegacy(danglingHeadMergeResult.referencePathString, danglingHeadMergeResult.danglingPathString, firstElement.getLength()); if (indexesToMerge <= 0) { @@ -599,7 +599,7 @@ int mergeDanglingHeadLegacy(final DanglingChainMergeHelper danglingHeadMergeResu } // we can't push back the reference path - if (indexesToMerge >= danglingHeadMergeResult.referencePath.size() - 1) { + if ( indexesToMerge.getKey() >= danglingHeadMergeResult.referencePath.size() - 1 ) { return 0; } @@ -609,7 +609,7 @@ int mergeDanglingHeadLegacy(final DanglingChainMergeHelper danglingHeadMergeResu return 0; } - addEdge(danglingHeadMergeResult.referencePath.get(indexesToMerge + 1), danglingHeadMergeResult.danglingPath.get(indexesToMerge), ((MyEdgeFactory) getEdgeFactory()).createEdge(false, 1)); + addEdge(danglingHeadMergeResult.referencePath.get(indexesToMerge.getKey()), danglingHeadMergeResult.danglingPath.get(indexesToMerge.getValue()), ((MyEdgeFactory)getEdgeFactory()).createEdge(false, 1)); return 1; } From 567ecf30a2f47dc9d0e906a64f4cdf07a00b4584 Mon Sep 17 00:00:00 2001 From: James Date: Thu, 2 Jul 2020 13:04:30 -0400 Subject: [PATCH 2/5] fixed an issue where the logic for suffix ends was incorrect for dangling tails --- .../mutect/Mutect2IntegrationTest.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/test/java/org/broadinstitute/hellbender/tools/walkers/mutect/Mutect2IntegrationTest.java b/src/test/java/org/broadinstitute/hellbender/tools/walkers/mutect/Mutect2IntegrationTest.java index 1c409b22928..65404382b51 100644 --- a/src/test/java/org/broadinstitute/hellbender/tools/walkers/mutect/Mutect2IntegrationTest.java +++ b/src/test/java/org/broadinstitute/hellbender/tools/walkers/mutect/Mutect2IntegrationTest.java @@ -688,6 +688,42 @@ public Object[][] vcfsForFiltering() { }; } + @Test + public void testThing() { + Utils.resetRandomGenerator(); + + //NOTE: AlleleSpecific support in the VCF mode is implemented but bogus for now. + // This test should not be treated as a strict check of correctness. + final File output = createTempFile("testVCFModeIsConsistentWithPastResults", ".vcf"); +// final File expected = new File(TEST_FILES_DIR + "expected.testVCFMode.gatk4.alleleSpecific.vcf"); + +// final String outputPath = UPDATE_EXACT_MATCH_EXPECTED_OUTPUTS ? expected.getAbsolutePath() : output.getAbsolutePath(); + + final String[] args = { + "-R", + "gs://broad-dsp-spec-ops/scratch/andrea/mtb/Mycobacterium_tuberculosis_H37Rv.fasta", + "-I", + "gs://broad-dsp-spec-ops-cromwell-execution/MicrobialGenomePipeline/3625b1d1-38a1-40de-a810-23b347d51b14/call-AlignToRef/MicrobialAlignmentPipeline/87d3ba55-4497-474c-9232-44144c7c3ef4/call-AlignAndMarkDuplicates/D1CLVACXX.1.Solexa-125092.aligned.realigned.bam", + "-O", output.getAbsolutePath(), + "-L", "/Users/emeryj/hellbender/UserLiason/debugM2Graph/Mycobacterium_tuberculosis_H37Rv.intervals", + "--annotation","StrandBiasBySample", + "--num-matching-bases-in-dangling-end-to-recover", + "1", + "--max-reads-per-alignment-start", + "75", + "--max-mnp-distance", + "0"}; + + runCommandLine(args); + + // Test for an exact match against past results +// if ( ! UPDATE_EXACT_MATCH_EXPECTED_OUTPUTS ) { +// IntegrationTestSpec.assertEqualTextFiles(output, expected); +// } + + } + + @Test(dataProvider = "vcfsForFiltering") public void testFilterMitochondria(File unfiltered, final double minAlleleFraction, final List intervals, List> expectedFilters, List> expectedASFilters) { final File filteredVcf = createTempFile("filtered", ".vcf"); From c987a1ad782f7f7b866cd902fffe20a249e7b24f Mon Sep 17 00:00:00 2001 From: James Date: Fri, 22 Jan 2021 15:56:48 -0500 Subject: [PATCH 3/5] responding to review comments --- .../mutect/Mutect2IntegrationTest.java | 37 ------------------- 1 file changed, 37 deletions(-) diff --git a/src/test/java/org/broadinstitute/hellbender/tools/walkers/mutect/Mutect2IntegrationTest.java b/src/test/java/org/broadinstitute/hellbender/tools/walkers/mutect/Mutect2IntegrationTest.java index 65404382b51..29f891c68d9 100644 --- a/src/test/java/org/broadinstitute/hellbender/tools/walkers/mutect/Mutect2IntegrationTest.java +++ b/src/test/java/org/broadinstitute/hellbender/tools/walkers/mutect/Mutect2IntegrationTest.java @@ -16,7 +16,6 @@ import org.broadinstitute.hellbender.engine.filters.ReadFilterLibrary; import org.broadinstitute.hellbender.engine.spark.AssemblyRegionArgumentCollection; import org.broadinstitute.hellbender.testutils.ArgumentsBuilder; -import org.broadinstitute.hellbender.testutils.IntegrationTestSpec; import org.broadinstitute.hellbender.testutils.VariantContextTestUtils; import org.broadinstitute.hellbender.tools.walkers.annotator.AnnotationUtils; import org.broadinstitute.hellbender.tools.walkers.haplotypecaller.AssemblyBasedCallerArgumentCollection; @@ -688,42 +687,6 @@ public Object[][] vcfsForFiltering() { }; } - @Test - public void testThing() { - Utils.resetRandomGenerator(); - - //NOTE: AlleleSpecific support in the VCF mode is implemented but bogus for now. - // This test should not be treated as a strict check of correctness. - final File output = createTempFile("testVCFModeIsConsistentWithPastResults", ".vcf"); -// final File expected = new File(TEST_FILES_DIR + "expected.testVCFMode.gatk4.alleleSpecific.vcf"); - -// final String outputPath = UPDATE_EXACT_MATCH_EXPECTED_OUTPUTS ? expected.getAbsolutePath() : output.getAbsolutePath(); - - final String[] args = { - "-R", - "gs://broad-dsp-spec-ops/scratch/andrea/mtb/Mycobacterium_tuberculosis_H37Rv.fasta", - "-I", - "gs://broad-dsp-spec-ops-cromwell-execution/MicrobialGenomePipeline/3625b1d1-38a1-40de-a810-23b347d51b14/call-AlignToRef/MicrobialAlignmentPipeline/87d3ba55-4497-474c-9232-44144c7c3ef4/call-AlignAndMarkDuplicates/D1CLVACXX.1.Solexa-125092.aligned.realigned.bam", - "-O", output.getAbsolutePath(), - "-L", "/Users/emeryj/hellbender/UserLiason/debugM2Graph/Mycobacterium_tuberculosis_H37Rv.intervals", - "--annotation","StrandBiasBySample", - "--num-matching-bases-in-dangling-end-to-recover", - "1", - "--max-reads-per-alignment-start", - "75", - "--max-mnp-distance", - "0"}; - - runCommandLine(args); - - // Test for an exact match against past results -// if ( ! UPDATE_EXACT_MATCH_EXPECTED_OUTPUTS ) { -// IntegrationTestSpec.assertEqualTextFiles(output, expected); -// } - - } - - @Test(dataProvider = "vcfsForFiltering") public void testFilterMitochondria(File unfiltered, final double minAlleleFraction, final List intervals, List> expectedFilters, List> expectedASFilters) { final File filteredVcf = createTempFile("filtered", ".vcf"); From ec287d83643e543146e06005219bfccd1851e9ef Mon Sep 17 00:00:00 2001 From: James Date: Tue, 29 Mar 2022 14:57:51 -0400 Subject: [PATCH 4/5] Mreged with master (elected to leave the pileupcaller code in the same place it was before despite the GGA code having been moved). And fixed a broken integration test --- .../engine/AlignmentAndReferenceContext.java | 32 +++ .../hellbender/engine/AssemblyRegion.java | 52 +++- .../engine/AssemblyRegionIterator.java | 48 +++- .../engine/AssemblyRegionWalker.java | 10 +- .../engine/LocusWalkerByInterval.java | 10 +- .../spark/AssemblyRegionWalkerSpark.java | 2 +- .../spark/FindAssemblyRegionsSpark.java | 10 +- .../tools/HaplotypeCallerSpark.java | 2 +- .../examples/ExampleAssemblyRegionWalker.java | 5 + ...AssemblyBasedCallerArgumentCollection.java | 40 +-- .../AssemblyBasedCallerUtils.java | 254 +++++++++++++++--- .../AssemblyRegionTrimmer.java | 2 +- .../haplotypecaller/HaplotypeCaller.java | 5 + .../HaplotypeCallerEngine.java | 14 +- .../PileupDetectionArgumentCollection.java | 97 +++++++ ...dThreadingAssemblerArgumentCollection.java | 3 + .../AbstractReadThreadingGraph.java | 6 +- .../tools/walkers/mutect/Mutect2.java | 5 + .../tools/walkers/mutect/Mutect2Engine.java | 9 +- .../FilterAlignmentArtifacts.java | 2 +- .../utils/pileup/PileupBasedAlleles.java | 196 ++++++++++++++ .../AssemblyRegionIteratorUnitTest.java | 2 +- .../fasta/ShiftFastaIntegrationTest.java | 1 - .../AssemblyBasedCallerUtilsUnitTest.java | 110 +++++++- .../HaplotypeCallerIntegrationTest.java | 111 ++++++++ .../mutect/Mutect2IntegrationTest.java | 1 + .../expected.pileupCallerDRAGEN.gatk4.vcf | 160 +++++++++++ .../expected.pileupCallerDRAGEN.gatk4.vcf.idx | Bin 0 -> 1611 bytes .../expected.pileupCallerDefaults.gatk4.vcf | 243 +++++++++++++++++ ...xpected.pileupCallerDefaults.gatk4.vcf.idx | Bin 0 -> 2877 bytes 30 files changed, 1340 insertions(+), 92 deletions(-) create mode 100644 src/main/java/org/broadinstitute/hellbender/engine/AlignmentAndReferenceContext.java create mode 100644 src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/PileupDetectionArgumentCollection.java create mode 100644 src/main/java/org/broadinstitute/hellbender/utils/pileup/PileupBasedAlleles.java create mode 100644 src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/expected.pileupCallerDRAGEN.gatk4.vcf create mode 100644 src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/expected.pileupCallerDRAGEN.gatk4.vcf.idx create mode 100644 src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/expected.pileupCallerDefaults.gatk4.vcf create mode 100644 src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/expected.pileupCallerDefaults.gatk4.vcf.idx diff --git a/src/main/java/org/broadinstitute/hellbender/engine/AlignmentAndReferenceContext.java b/src/main/java/org/broadinstitute/hellbender/engine/AlignmentAndReferenceContext.java new file mode 100644 index 00000000000..4e235e964fb --- /dev/null +++ b/src/main/java/org/broadinstitute/hellbender/engine/AlignmentAndReferenceContext.java @@ -0,0 +1,32 @@ +package org.broadinstitute.hellbender.engine; + +/** + * Bundles together and AlignmentContext and a ReferenceContext + */ +public class AlignmentAndReferenceContext { + + private final AlignmentContext alignmentContext; + private final ReferenceContext referenceContext; + + public AlignmentAndReferenceContext(final AlignmentContext alignmentContext, + final ReferenceContext referenceContext) { + this.alignmentContext = alignmentContext; + this.referenceContext = referenceContext; + } + + /** + * getter for the AlignmentContect + * @return the alignmentContext + */ + public AlignmentContext getAlignmentContext() { + return alignmentContext; + } + + /** + * getter for the ReferenceContect + * @return the referenceContext + */ + public ReferenceContext getReferenceContext() { + return referenceContext; + } +} diff --git a/src/main/java/org/broadinstitute/hellbender/engine/AssemblyRegion.java b/src/main/java/org/broadinstitute/hellbender/engine/AssemblyRegion.java index c2dcc502903..060dd9d2e20 100644 --- a/src/main/java/org/broadinstitute/hellbender/engine/AssemblyRegion.java +++ b/src/main/java/org/broadinstitute/hellbender/engine/AssemblyRegion.java @@ -6,9 +6,7 @@ import htsjdk.samtools.reference.ReferenceSequenceFile; import htsjdk.samtools.util.Locatable; import org.broadinstitute.hellbender.exceptions.UserException; -import org.broadinstitute.hellbender.tools.walkers.haplotypecaller.AssemblyBasedCallerUtils; import org.broadinstitute.hellbender.utils.IntervalUtils; -import org.broadinstitute.hellbender.utils.SequenceDictionaryUtils; import org.broadinstitute.hellbender.utils.SimpleInterval; import org.broadinstitute.hellbender.utils.Utils; import org.broadinstitute.hellbender.utils.clipping.ReadClipper; @@ -49,6 +47,11 @@ public final class AssemblyRegion implements Locatable { */ private final List reads; + /** + * The reads are specifically used for haplotype generation to kmerize reads to match with haplotype kmers. + */ + private final List hardClippedPileupReads; + /** * The active span in which this AssemblyRegion is responsible for calling variants */ @@ -70,6 +73,8 @@ public final class AssemblyRegion implements Locatable { */ private boolean hasBeenFinalized; + private List alignmentData = new ArrayList<>(); + /** * Create a new AssemblyRegion containing no reads * @param activeSpan the span of this active region @@ -104,6 +109,7 @@ public AssemblyRegion(final SimpleInterval activeSpan, final SimpleInterval padd Utils.validate(paddedSpan.contains(activeSpan), "Padded span must contain active span."); reads = new ArrayList<>(); + hardClippedPileupReads = new ArrayList<>(); this.isActive = isActive; } @@ -114,6 +120,23 @@ public AssemblyRegion(final SimpleInterval activeSpan, final int padding, final this(activeSpan, true, padding, header); } + /** + * Method for obtaining the alignment data which is attached to the assembly region. + * + * @return The list of AlignmentData objects associated with ActiveRegion. + */ + public List getAlignmentData() { + return alignmentData; + } + + /** + * Method for adding alignment data to the collection of AlignmentData associated with + * the ActiveRegion. + */ + public void addAllAlignmentData(List alignmentData) { + this.alignmentData.addAll(alignmentData); + } + @Override public String getContig() { return activeSpan.getContig(); @@ -176,6 +199,16 @@ public List getReads(){ return Collections.unmodifiableList(new ArrayList<>(reads)); } + /** + * Get an unmodifiable copy of the list of reads currently in this assembly region. + * + * The reads are sorted by their coordinate position. + * @return an unmodifiable and inmutable copy of the reads in the assembly region. + */ + public List getHardClippedPileupReads(){ + return Collections.unmodifiableList(new ArrayList<>(hardClippedPileupReads)); + } + /** * Returns the header for the reads in this region. */ @@ -252,20 +285,24 @@ public AssemblyRegion trim(final SimpleInterval span, final SimpleInterval padde * @param read a non-null GATKRead */ public void add( final GATKRead read ) { + addToReadCollectionAndValidate(read, reads); + } + + private void addToReadCollectionAndValidate(final GATKRead read, final List collection) { Utils.nonNull(read, "Read cannot be null"); final SimpleInterval readLoc = new SimpleInterval( read ); Utils.validateArg(paddedSpan.overlaps(read), () -> "Read location " + readLoc + " doesn't overlap with active region padded span " + paddedSpan); - if ( ! reads.isEmpty() ) { - final GATKRead lastRead = reads.get(size() - 1); + if ( ! collection.isEmpty() ) { + final GATKRead lastRead = collection.get(collection.size() - 1); Utils.validateArg(Objects.equals(lastRead.getContig(), read.getContig()), () -> "Attempting to add a read to ActiveRegion not on the same contig as other reads: lastRead " + lastRead + " attempting to add " + read); Utils.validateArg( read.getStart() >= lastRead.getStart(), () -> "Attempting to add a read to ActiveRegion out of order w.r.t. other reads: lastRead " + lastRead + " at " + lastRead.getStart() + " attempting to add " + read + " at " + read.getStart()); } - reads.add( read ); + collection.add( read ); } /** @@ -279,6 +316,7 @@ public void add( final GATKRead read ) { */ public void clearReads() { reads.clear(); + hardClippedPileupReads.clear(); } /** @@ -298,6 +336,10 @@ public void addAll(final Collection readsToAdd){ Utils.nonNull(readsToAdd).forEach(r -> add(r)); } + public void addHardClippedPileupReads(final Collection readsToAdd) { + Utils.nonNull(readsToAdd).forEach(r -> addToReadCollectionAndValidate(r, hardClippedPileupReads)); + } + /** * Get the reference bases from referenceReader spanned by the padded span of this region, * including additional padding bp on either side. If this expanded region would exceed the boundaries diff --git a/src/main/java/org/broadinstitute/hellbender/engine/AssemblyRegionIterator.java b/src/main/java/org/broadinstitute/hellbender/engine/AssemblyRegionIterator.java index 79bc7658b4a..196ee1203e8 100644 --- a/src/main/java/org/broadinstitute/hellbender/engine/AssemblyRegionIterator.java +++ b/src/main/java/org/broadinstitute/hellbender/engine/AssemblyRegionIterator.java @@ -50,6 +50,7 @@ public class AssemblyRegionIterator implements Iterator { private final Iterator locusIterator; private final LocusIteratorByState libs; private final ActivityProfile activityProfile; + private Queue pendingAlignmentData; /** * Constructs an AssemblyRegionIterator over a provided read shard @@ -65,7 +66,8 @@ public AssemblyRegionIterator(final MultiIntervalShard readShard, final ReferenceDataSource reference, final FeatureManager features, final AssemblyRegionEvaluator evaluator, - final AssemblyRegionArgumentCollection assemblyRegionArgs) { + final AssemblyRegionArgumentCollection assemblyRegionArgs, + final boolean trackPileups ) { Utils.nonNull(readShard); Utils.nonNull(readHeader); @@ -86,6 +88,7 @@ public AssemblyRegionIterator(final MultiIntervalShard readShard, this.readCachingIterator = new ReadCachingIterator(readShard.iterator()); this.readCache = new ArrayDeque<>(); this.activityProfile = new BandPassActivityProfile(assemblyRegionArgs.maxProbPropagationDistance, assemblyRegionArgs.activeProbThreshold, BandPassActivityProfile.MAX_FILTER_SIZE, BandPassActivityProfile.DEFAULT_SIGMA, readHeader); + this.pendingAlignmentData = trackPileups ? new ArrayDeque<>() : null; // We wrap our LocusIteratorByState inside an IntervalAlignmentContextIterator so that we get empty loci // for uncovered locations. This is critical for reproducing GATK 3.x behavior! @@ -103,7 +106,7 @@ public boolean hasNext() { @Override public AssemblyRegion next() { - if ( ! hasNext() ) { + if (!hasNext()) { throw new NoSuchElementException("next() called when there were no more elements"); } @@ -132,6 +135,9 @@ private AssemblyRegion loadNextAssemblyRegion() { final SimpleInterval pileupInterval = new SimpleInterval(pileup); final ReferenceContext pileupRefContext = new ReferenceContext(reference, pileupInterval); final FeatureContext pileupFeatureContext = new FeatureContext(features, pileupInterval); + if (pendingAlignmentData!=null) { + pendingAlignmentData.add(new AlignmentAndReferenceContext(pileup, pileupRefContext)); + } final ActivityProfileState profile = evaluator.isActive(pileup, pileupRefContext, pileupFeatureContext); activityProfile.add(profile); @@ -169,6 +175,8 @@ private AssemblyRegion loadNextAssemblyRegion() { // If there's a region ready, fill it with reads before returning if ( nextRegion != null ) { fillNextAssemblyRegionWithReads(nextRegion); + // fillnextessemblyregion; check you are on correct chr; if alignment data is not in the assembly region then pop it + fillNextAssemblyRegionWithPileupData(nextRegion); } return nextRegion; @@ -209,6 +217,42 @@ private void fillNextAssemblyRegionWithReads( final AssemblyRegion region ) { } } + private void fillNextAssemblyRegionWithPileupData(final AssemblyRegion region){ + // Save ourselves the memory footprint and work of saving the pileups in the event they aren't needed for processing. + if (pendingAlignmentData == null){ + return; + } + final List overlappingAlignmentData = new ArrayList<>(); + final Queue previousAlignmentData = new ArrayDeque<>(); + + while (!pendingAlignmentData.isEmpty()) { + final AlignmentContext pendingAlignmentContext = pendingAlignmentData.peek().getAlignmentContext(); + if (!pendingAlignmentContext.contigsMatch(region) || + pendingAlignmentContext.getStart() < region.getStart()) { + pendingAlignmentData.poll(); // pop this + } else { + break; + } + } + while (!pendingAlignmentData.isEmpty()) { + final AlignmentContext pendingAlignmentContext = pendingAlignmentData.peek().getAlignmentContext(); + + if (!pendingAlignmentContext.contigsMatch(region) || + pendingAlignmentContext.getStart() <= region.getEnd()) { + overlappingAlignmentData.add(pendingAlignmentData.poll()); // pop into overlappingAlignmentData + } else { + break; + } + } + + // reconstructing queue to contain items that may be in the next assembly region + previousAlignmentData.addAll(overlappingAlignmentData); + previousAlignmentData.addAll(pendingAlignmentData); + pendingAlignmentData = previousAlignmentData; + + region.addAllAlignmentData(overlappingAlignmentData); + } + @Override public void remove() { throw new UnsupportedOperationException("remove() not supported by AssemblyRegionIterator"); diff --git a/src/main/java/org/broadinstitute/hellbender/engine/AssemblyRegionWalker.java b/src/main/java/org/broadinstitute/hellbender/engine/AssemblyRegionWalker.java index f3373a221a6..969d1ec3204 100644 --- a/src/main/java/org/broadinstitute/hellbender/engine/AssemblyRegionWalker.java +++ b/src/main/java/org/broadinstitute/hellbender/engine/AssemblyRegionWalker.java @@ -1,9 +1,7 @@ package org.broadinstitute.hellbender.engine; -import org.broadinstitute.barclay.argparser.Advanced; import org.broadinstitute.barclay.argparser.Argument; import org.broadinstitute.barclay.argparser.ArgumentCollection; -import org.broadinstitute.barclay.argparser.CommandLineException; import org.broadinstitute.hellbender.engine.filters.CountingReadFilter; import org.broadinstitute.hellbender.engine.filters.ReadFilter; import org.broadinstitute.hellbender.engine.filters.ReadFilterLibrary; @@ -185,7 +183,7 @@ public void traverse() { * @param features FeatureManager */ private void processReadShard(MultiIntervalLocalReadShard shard, ReferenceDataSource reference, FeatureManager features ) { - final Iterator assemblyRegionIter = new AssemblyRegionIterator(shard, getHeaderForReads(), reference, features, assemblyRegionEvaluator(), assemblyRegionArgs); + final Iterator assemblyRegionIter = new AssemblyRegionIterator(shard, getHeaderForReads(), reference, features, assemblyRegionEvaluator(), assemblyRegionArgs, shouldTrackPileupsForAssemblyRegions()); // Call into the tool implementation to process each assembly region from this shard. while ( assemblyRegionIter.hasNext() ) { @@ -236,6 +234,12 @@ protected final void onShutdown() { */ public abstract AssemblyRegionEvaluator assemblyRegionEvaluator(); + /** + * Allows implementing tools to decide whether pileups must be tracked and attached to assembly regions for later processing. + * This is configurable for now in order to save on potential increases in memory consumption variant calling machinery. + */ + public abstract boolean shouldTrackPileupsForAssemblyRegions(); + /** * Process an individual AssemblyRegion. Must be implemented by tool authors. * diff --git a/src/main/java/org/broadinstitute/hellbender/engine/LocusWalkerByInterval.java b/src/main/java/org/broadinstitute/hellbender/engine/LocusWalkerByInterval.java index 575ab7417a9..55e22384641 100644 --- a/src/main/java/org/broadinstitute/hellbender/engine/LocusWalkerByInterval.java +++ b/src/main/java/org/broadinstitute/hellbender/engine/LocusWalkerByInterval.java @@ -1,17 +1,15 @@ package org.broadinstitute.hellbender.engine; -import htsjdk.samtools.SAMFileHeader; -import htsjdk.samtools.SAMReadGroupRecord; import htsjdk.samtools.util.Locatable; import htsjdk.samtools.util.OverlapDetector; import org.apache.commons.collections4.SetUtils; import org.broadinstitute.hellbender.engine.filters.CountingReadFilter; import org.broadinstitute.hellbender.utils.SimpleInterval; -import org.broadinstitute.hellbender.utils.locusiterator.AlignmentContextIteratorBuilder; -import org.broadinstitute.hellbender.utils.read.GATKRead; -import java.util.*; -import java.util.stream.Collectors; +import java.util.Iterator; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; /** * An implementation of {@link LocusWalker} that supports arbitrary interval side inputs. diff --git a/src/main/java/org/broadinstitute/hellbender/engine/spark/AssemblyRegionWalkerSpark.java b/src/main/java/org/broadinstitute/hellbender/engine/spark/AssemblyRegionWalkerSpark.java index e71df1f3ade..3213a80c376 100644 --- a/src/main/java/org/broadinstitute/hellbender/engine/spark/AssemblyRegionWalkerSpark.java +++ b/src/main/java/org/broadinstitute/hellbender/engine/spark/AssemblyRegionWalkerSpark.java @@ -107,7 +107,7 @@ intervalShards, assemblyRegionEvaluatorSupplierBroadcast(ctx), shardingArgs, ass } else { return FindAssemblyRegionsSpark.getAssemblyRegionsFast(ctx, getReads(), getHeaderForReads(), sequenceDictionary, referenceFileName, features, intervalShards, assemblyRegionEvaluatorSupplierBroadcast(ctx), shardingArgs, assemblyRegionArgs, - shuffle); + shuffle, false); } } diff --git a/src/main/java/org/broadinstitute/hellbender/engine/spark/FindAssemblyRegionsSpark.java b/src/main/java/org/broadinstitute/hellbender/engine/spark/FindAssemblyRegionsSpark.java index fd4a1d26b50..bf05b560852 100644 --- a/src/main/java/org/broadinstitute/hellbender/engine/spark/FindAssemblyRegionsSpark.java +++ b/src/main/java/org/broadinstitute/hellbender/engine/spark/FindAssemblyRegionsSpark.java @@ -63,11 +63,12 @@ public static JavaRDD getAssemblyRegionsFast( final Broadcast> assemblyRegionEvaluatorSupplierBroadcast, final AssemblyRegionReadShardArgumentCollection shardingArgs, final AssemblyRegionArgumentCollection assemblyRegionArgs, - final boolean shuffle) { + final boolean shuffle, + final boolean trackPileups) { JavaRDD> shardedReads = SparkSharder.shard(ctx, reads, GATKRead.class, sequenceDictionary, intervalShards, shardingArgs.readShardSize, shuffle); Broadcast bFeatureManager = features == null ? null : ctx.broadcast(features); return shardedReads.mapPartitions(getAssemblyRegionsFunctionFast(referenceFileName, bFeatureManager, header, - assemblyRegionEvaluatorSupplierBroadcast, assemblyRegionArgs)); + assemblyRegionEvaluatorSupplierBroadcast, assemblyRegionArgs, trackPileups)); } private static FlatMapFunction>, AssemblyRegionWalkerContext> getAssemblyRegionsFunctionFast( @@ -75,7 +76,8 @@ private static FlatMapFunction>, AssemblyRegionWalkerCo final Broadcast bFeatureManager, final SAMFileHeader header, final Broadcast> supplierBroadcast, - final AssemblyRegionArgumentCollection assemblyRegionArgs) { + final AssemblyRegionArgumentCollection assemblyRegionArgs, + final boolean trackPileups) { return (FlatMapFunction>, AssemblyRegionWalkerContext>) shardedReadIterator -> { final ReferenceDataSource reference = referenceFileName == null ? null : new ReferenceFileSource(IOUtils.getPath(SparkFiles.get(referenceFileName))); final FeatureManager features = bFeatureManager == null ? null : bFeatureManager.getValue(); @@ -90,7 +92,7 @@ private static FlatMapFunction>, AssemblyRegionWalkerCo .map(downsampledShardedRead -> { final Iterator assemblyRegionIter = new AssemblyRegionIterator( new ShardToMultiIntervalShardAdapter<>(downsampledShardedRead), - header, reference, features, assemblyRegionEvaluator, assemblyRegionArgs); + header, reference, features, assemblyRegionEvaluator, assemblyRegionArgs, trackPileups); return Utils.stream(assemblyRegionIter).map(assemblyRegion -> new AssemblyRegionWalkerContext(assemblyRegion, new ReferenceContext(reference, assemblyRegion.getPaddedSpan()), diff --git a/src/main/java/org/broadinstitute/hellbender/tools/HaplotypeCallerSpark.java b/src/main/java/org/broadinstitute/hellbender/tools/HaplotypeCallerSpark.java index 4158c5ecbe6..c14a8c2bef4 100644 --- a/src/main/java/org/broadinstitute/hellbender/tools/HaplotypeCallerSpark.java +++ b/src/main/java/org/broadinstitute/hellbender/tools/HaplotypeCallerSpark.java @@ -273,7 +273,7 @@ public static void callVariantsWithHaplotypeCallerAndWriteOutput( Broadcast> assemblyRegionEvaluatorSupplierBroadcast = assemblyRegionEvaluatorSupplierBroadcast(ctx, hcArgs, assemblyRegionArgs, header, reference, annotations); JavaRDD assemblyRegions = strict ? FindAssemblyRegionsSpark.getAssemblyRegionsStrict(ctx, reads, header, sequenceDictionary, referenceFileName, null, intervalShards, assemblyRegionEvaluatorSupplierBroadcast, shardingArgs, assemblyRegionArgs, false) : - FindAssemblyRegionsSpark.getAssemblyRegionsFast(ctx, reads, header, sequenceDictionary, referenceFileName, null, intervalShards, assemblyRegionEvaluatorSupplierBroadcast, shardingArgs, assemblyRegionArgs, false); + FindAssemblyRegionsSpark.getAssemblyRegionsFast(ctx, reads, header, sequenceDictionary, referenceFileName, null, intervalShards, assemblyRegionEvaluatorSupplierBroadcast, shardingArgs, assemblyRegionArgs, false, hcArgs.pileupDetectionArgs.usePileupDetection); processAssemblyRegions(assemblyRegions, ctx, header, reference, hcArgs, assemblyRegionArgs, output, annotations, logger, createOutputVariantIndex); } } diff --git a/src/main/java/org/broadinstitute/hellbender/tools/examples/ExampleAssemblyRegionWalker.java b/src/main/java/org/broadinstitute/hellbender/tools/examples/ExampleAssemblyRegionWalker.java index f37cb5c2688..13b58c188a9 100644 --- a/src/main/java/org/broadinstitute/hellbender/tools/examples/ExampleAssemblyRegionWalker.java +++ b/src/main/java/org/broadinstitute/hellbender/tools/examples/ExampleAssemblyRegionWalker.java @@ -40,6 +40,11 @@ public AssemblyRegionEvaluator assemblyRegionEvaluator() { return (locusPileup, referenceContext, featureContext) -> new ActivityProfileState(new SimpleInterval(locusPileup), 1.0); } + @Override + public boolean shouldTrackPileupsForAssemblyRegions() { + return false; + } + @Override public void onTraversalStart() { try { diff --git a/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/AssemblyBasedCallerArgumentCollection.java b/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/AssemblyBasedCallerArgumentCollection.java index a0a74a3da42..ca506d06547 100644 --- a/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/AssemblyBasedCallerArgumentCollection.java +++ b/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/AssemblyBasedCallerArgumentCollection.java @@ -34,6 +34,8 @@ public abstract class AssemblyBasedCallerArgumentCollection { public static final String EMIT_REF_CONFIDENCE_SHORT_NAME = "ERC"; public static final String ALLELE_EXTENSION_LONG_NAME = "allele-informative-reads-overlap-margin"; + public static final String PILEUP_DETECTION_LONG_NAME = "pileup-detection"; + public static final String SMITH_WATERMAN_DANGLING_END_MATCH_VALUE_LONG_NAME = "smith-waterman-dangling-end-match-value"; public static final String SMITH_WATERMAN_DANGLING_END_MISMATCH_PENALTY_LONG_NAME = "smith-waterman-dangling-end-mismatch-penalty"; public static final String SMITH_WATERMAN_DANGLING_END_GAP_OPEN_PENALTY_LONG_NAME = "smith-waterman-dangling-end-gap-open-penalty"; @@ -47,11 +49,17 @@ public abstract class AssemblyBasedCallerArgumentCollection { public static final String SMITH_WATERMAN_READ_TO_HAPLOTYPE_GAP_OPEN_PENALTY_LONG_NAME = "smith-waterman-read-to-haplotype-gap-open-penalty"; public static final String SMITH_WATERMAN_READ_TO_HAPLOTYPE_GAP_EXTEND_PENALTY_LONG_NAME = "smith-waterman-read-to-haplotype-gap-extend-penalty"; - /** See documentation at {@link SmithWatermanAlignmentConstants#STANDARD_NGS}. */ + /** + * See documentation at {@link SmithWatermanAlignmentConstants#STANDARD_NGS}. + */ private static final SWParameters DEFAULT_DANGLING_END_SMITH_WATERMAN_PARAMETERS = SmithWatermanAlignmentConstants.STANDARD_NGS; - /** See documentation at {@link SmithWatermanAlignmentConstants#NEW_SW_PARAMETERS}. */ + /** + * See documentation at {@link SmithWatermanAlignmentConstants#NEW_SW_PARAMETERS}. + */ private static final SWParameters DEFAULT_HAPLOTYPE_TO_REFERENCE_SMITH_WATERMAN_PARAMETERS = SmithWatermanAlignmentConstants.NEW_SW_PARAMETERS; - /** See documentation at {@link SmithWatermanAlignmentConstants#ALIGNMENT_TO_BEST_HAPLOTYPE_SW_PARAMETERS}. */ + /** + * See documentation at {@link SmithWatermanAlignmentConstants#ALIGNMENT_TO_BEST_HAPLOTYPE_SW_PARAMETERS}. + */ private static final SWParameters DEFAULT_READ_TO_HAPLOTYPE_SMITH_WATERMAN_PARAMETERS = SmithWatermanAlignmentConstants.ALIGNMENT_TO_BEST_HAPLOTYPE_SW_PARAMETERS; public ReadThreadingAssembler createReadThreadingAssembler() { @@ -70,38 +78,40 @@ public ReadThreadingAssembler createReadThreadingAssembler() { @ArgumentCollection public LikelihoodEngineArgumentCollection likelihoodArgs = new LikelihoodEngineArgumentCollection(); + @ArgumentCollection + public PileupDetectionArgumentCollection pileupDetectionArgs = new PileupDetectionArgumentCollection(); + /** * The assembled haplotypes and locally realigned reads will be written as BAM to this file if requested. Really * for debugging purposes only. Note that the output here does not include uninformative reads so that not every * input read is emitted to the bam. - * + *

* Turning on this mode may result in serious performance cost for the caller. It's really only appropriate to * use in specific areas where you want to better understand why the caller is making specific calls. - * + *

* The reads are written out containing an "HC" tag (integer) that encodes which haplotype each read best matches * according to the haplotype caller's likelihood calculation. The use of this tag is primarily intended * to allow good coloring of reads in IGV. Simply go to "Color Alignments By > Tag" and enter "HC" to more * easily see which reads go with these haplotype. - * + *

* Note that the haplotypes (called or all, depending on mode) are emitted as single reads covering the entire * active region, coming from sample "HC" and a special read group called "ArtificialHaplotype". This will increase the * pileup depth compared to what would be expected from the reads only, especially in complex regions. - * + *

* Note also that only reads that are actually informative about the haplotypes are emitted. By informative we mean * that there's a meaningful difference in the likelihood of the read coming from one haplotype compared to * its next best haplotype. - * + *

* If multiple BAMs are passed as input to the tool (as is common for M2), then they will be combined in the bamout * output and tagged with the appropriate sample names. - * + *

* The best way to visualize the output of this mode is with IGV. Tell IGV to color the alignments by tag, * and give it the "HC" tag, so you can see which reads support each haplotype. Finally, you can tell IGV * to group by sample, which will separate the potential haplotypes from the reads. All of this can be seen in * this screenshot - * */ @Advanced - @Argument(fullName= BAM_OUTPUT_LONG_NAME, shortName= BAM_OUTPUT_SHORT_NAME, doc="File to which assembled haplotypes should be written", optional = true) + @Argument(fullName = BAM_OUTPUT_LONG_NAME, shortName = BAM_OUTPUT_SHORT_NAME, doc = "File to which assembled haplotypes should be written", optional = true) public String bamOutputPath = null; /** @@ -109,7 +119,7 @@ public ReadThreadingAssembler createReadThreadingAssembler() { * considered (top 128 max) or just the ones that were selected as alleles and assigned to samples. */ @Advanced - @Argument(fullName= BAM_WRITER_TYPE_LONG_NAME, doc="Which haplotypes should be written to the BAM", optional = true) + @Argument(fullName = BAM_WRITER_TYPE_LONG_NAME, doc = "Which haplotypes should be written to the BAM", optional = true) public HaplotypeBAMWriter.WriterType bamWriterType = HaplotypeBAMWriter.WriterType.CALLED_HAPLOTYPES; // ----------------------------------------------------------------------------------------------- @@ -140,7 +150,7 @@ public ReadThreadingAssembler createReadThreadingAssembler() { * For Mutect2, this is a BETA feature that functions similarly to the HaplotypeCaller reference confidence/GVCF mode. */ @Advanced - @Argument(fullName= EMIT_REF_CONFIDENCE_LONG_NAME, shortName= EMIT_REF_CONFIDENCE_SHORT_NAME, doc="Mode for emitting reference confidence scores (For Mutect2, this is a BETA feature)", optional = true) + @Argument(fullName = EMIT_REF_CONFIDENCE_LONG_NAME, shortName = EMIT_REF_CONFIDENCE_SHORT_NAME, doc = "Mode for emitting reference confidence scores (For Mutect2, this is a BETA feature)", optional = true) public ReferenceConfidenceMode emitReferenceConfidence = ReferenceConfidenceMode.NONE; protected abstract int getDefaultMaxMnpDistance(); @@ -153,7 +163,7 @@ public ReadThreadingAssembler createReadThreadingAssembler() { doc = "Two or more phased substitutions separated by this distance or less are merged into MNPs.", optional = true) public int maxMnpDistance = getDefaultMaxMnpDistance(); - @Argument(fullName= FORCE_CALL_ALLELES_LONG_NAME, doc="The set of alleles to force-call regardless of evidence", optional=true) + @Argument(fullName = FORCE_CALL_ALLELES_LONG_NAME, doc = "The set of alleles to force-call regardless of evidence", optional = true) public FeatureInput alleles; @Advanced @@ -290,4 +300,4 @@ public SWParameters getReadToHaplotypeSWParameters() { smithWatermanReadToHaplotypeGapOpenPenalty, smithWatermanReadToHaplotypeGapExtendPenalty); } -} +} \ No newline at end of file diff --git a/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/AssemblyBasedCallerUtils.java b/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/AssemblyBasedCallerUtils.java index 47ecc288a25..d6fb4284ec8 100644 --- a/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/AssemblyBasedCallerUtils.java +++ b/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/AssemblyBasedCallerUtils.java @@ -17,6 +17,7 @@ import org.broadinstitute.hellbender.engine.AssemblyRegion; import org.broadinstitute.hellbender.tools.walkers.ReferenceConfidenceVariantContextMerger; import org.broadinstitute.hellbender.tools.walkers.haplotypecaller.readthreading.ReadThreadingAssembler; +import org.broadinstitute.hellbender.utils.IntervalUtils; import org.broadinstitute.hellbender.utils.QualityUtils; import org.broadinstitute.hellbender.utils.SimpleInterval; import org.broadinstitute.hellbender.utils.Utils; @@ -24,7 +25,9 @@ import org.broadinstitute.hellbender.utils.dragstr.DragstrParamUtils; import org.broadinstitute.hellbender.utils.fragments.FragmentCollection; import org.broadinstitute.hellbender.utils.fragments.FragmentUtils; -import org.broadinstitute.hellbender.utils.genotyper.*; +import org.broadinstitute.hellbender.utils.genotyper.AlleleLikelihoods; +import org.broadinstitute.hellbender.utils.genotyper.IndexedAlleleList; +import org.broadinstitute.hellbender.utils.genotyper.SampleList; import org.broadinstitute.hellbender.utils.haplotype.Haplotype; import org.broadinstitute.hellbender.utils.haplotype.HaplotypeBAMWriter; import org.broadinstitute.hellbender.utils.io.IOUtils; @@ -115,7 +118,8 @@ public static void finalizeRegion(final AssemblyRegion region, final SAMFileHeader readsHeader, final SampleList samplesList, final boolean correctOverlappingBaseQualities, - final boolean softClipLowQualityEnds) { + final boolean softClipLowQualityEnds, + final boolean trackHardclippedReads) { if ( region.isFinalized() ) { return; } @@ -123,40 +127,59 @@ public static void finalizeRegion(final AssemblyRegion region, final byte minTailQualityToUse = errorCorrectReads ? HaplotypeCallerEngine.MIN_TAIL_QUALITY_WITH_ERROR_CORRECTION : minTailQuality; final List readsToUse = new ArrayList<>(); - for (GATKRead originalRead : region.getReads()) { + final List hardClippedReadsToUse = new ArrayList<>(); + + for (final GATKRead originalRead : region.getReads()) { // TODO unclipping soft clips may introduce bases that aren't in the extended region if the unclipped bases // TODO include a deletion w.r.t. the reference. We must remove kmers that occur before the reference haplotype start - GATKRead read = (dontUseSoftClippedBases || ! ReadUtils.hasWellDefinedFragmentSize(originalRead) ? + final GATKRead readTemp = (dontUseSoftClippedBases || !ReadUtils.hasWellDefinedFragmentSize(originalRead) ? ReadClipper.hardClipSoftClippedBases(originalRead) : ReadClipper.revertSoftClippedBases(originalRead)); - read = (softClipLowQualityEnds ? ReadClipper.softClipLowQualEnds(read, minTailQualityToUse) : - ReadClipper.hardClipLowQualEnds(read, minTailQualityToUse)); - if (read.getStart() <= read.getEnd()) { - read = (read.isUnmapped() ? read : ReadClipper.hardClipAdaptorSequence(read)); + final GATKRead read = (softClipLowQualityEnds ? ReadClipper.softClipLowQualEnds(readTemp, minTailQualityToUse) : + ReadClipper.hardClipLowQualEnds(readTemp, minTailQualityToUse)); + HardClipAndPossiblyAddToCollection(region, readsToUse, originalRead, read); - if (!read.isEmpty() && read.getCigar().getReadLength() > 0) { - read = ReadClipper.hardClipToRegion(read, region.getPaddedSpan().getStart(), region.getPaddedSpan().getEnd() ); + if (trackHardclippedReads) { + final GATKRead hardClippedRead = ReadClipper.hardClipLowQualEnds(ReadClipper.hardClipSoftClippedBases(originalRead), minTailQualityToUse); - if (read.getStart() <= read.getEnd() && read.getLength() > 0 && read.overlaps(region.getPaddedSpan())) { - // NOTE: here we make a defensive copy of the read if it has not been modified by the above operations - // which might only make copies in the case that the read is actually clipped - readsToUse.add(read == originalRead? read.copy() : read); - } - } + HardClipAndPossiblyAddToCollection(region, hardClippedReadsToUse, originalRead, hardClippedRead); } } + readsToUse.sort(new ReadCoordinateComparator(readsHeader)); + hardClippedReadsToUse.sort(new ReadCoordinateComparator(readsHeader)); // handle overlapping read pairs from the same fragment if (correctOverlappingBaseQualities) { cleanOverlappingReadPairs(readsToUse, samplesList, readsHeader, true, OptionalInt.empty(), OptionalInt.empty()); } + // handle overlapping read pairs from the same fragment + if (correctOverlappingBaseQualities) { + cleanOverlappingReadPairs(hardClippedReadsToUse, samplesList, readsHeader, true, OptionalInt.empty(), OptionalInt.empty()); + } region.clearReads(); region.addAll(readsToUse); + region.addHardClippedPileupReads(hardClippedReadsToUse); region.setFinalized(true); } + private static void HardClipAndPossiblyAddToCollection(final AssemblyRegion region, final List readsToUse, final GATKRead originalRead, final GATKRead read) { + if (read.getStart() <= read.getEnd() && !read.isUnmapped()) { + final GATKRead adaptorClippedRead = ReadClipper.hardClipAdaptorSequence(read); + + if (!adaptorClippedRead.isEmpty() && adaptorClippedRead.getCigar().getReadLength() > 0) { + final GATKRead adaptorAndRegionClippedRead = ReadClipper.hardClipToRegion(adaptorClippedRead, region.getPaddedSpan().getStart(), region.getPaddedSpan().getEnd()); + + if (adaptorAndRegionClippedRead.getStart() <= adaptorAndRegionClippedRead.getEnd() && adaptorAndRegionClippedRead.getLength() > 0 && adaptorClippedRead.overlaps(region.getPaddedSpan())) { + // NOTE: here we make a defensive copy of the read if it has not been modified by the above operations + // which might only make copies in the case that the read is actually clipped + readsToUse.add(adaptorAndRegionClippedRead == originalRead ? adaptorAndRegionClippedRead.copy() : adaptorAndRegionClippedRead); + } + } + } + } + /** * Modify base qualities when paired reads overlap to account for the possibility of PCR error. * @@ -259,6 +282,7 @@ public static VariantContext makeMergedVariantContext(final List * for further HC steps */ public static AssemblyResultSet assembleReads(final AssemblyRegion region, + final List forcedPileupAlleles, final AssemblyBasedCallerArgumentCollection argumentCollection, final SAMFileHeader header, final SampleList sampleList, @@ -267,7 +291,7 @@ public static AssemblyResultSet assembleReads(final AssemblyRegion region, final ReadThreadingAssembler assemblyEngine, final SmithWatermanAligner aligner, final boolean correctOverlappingBaseQualities){ - finalizeRegion(region, argumentCollection.assemblerArgs.errorCorrectReads, argumentCollection.dontUseSoftClippedBases, (byte)(argumentCollection.minBaseQualityScore - 1), header, sampleList, correctOverlappingBaseQualities, argumentCollection.softClipLowQualityEnds); + finalizeRegion(region, argumentCollection.assemblerArgs.errorCorrectReads, argumentCollection.dontUseSoftClippedBases, (byte)(argumentCollection.minBaseQualityScore - 1), header, sampleList, correctOverlappingBaseQualities, argumentCollection.softClipLowQualityEnds, true); if( argumentCollection.assemblerArgs.debugAssembly) { logger.info("Assembling " + region.getSpan() + " with " + region.size() + " reads: (with overlap region = " + region.getPaddedSpan() + ")"); } @@ -290,6 +314,10 @@ public static AssemblyResultSet assembleReads(final AssemblyRegion region, try { final AssemblyResultSet assemblyResultSet = assemblyEngine.runLocalAssembly(region, refHaplotype, fullReferenceWithPadding, paddedReferenceLoc, readErrorCorrector, header, aligner, danglingEndSWParameters, haplotypeToReferenceSWParameters); + + if (!forcedPileupAlleles.isEmpty()) { + processPileupAlleles(region, forcedPileupAlleles, argumentCollection.pileupDetectionArgs.snpAdajacentToAssemblyIndel, argumentCollection.maxMnpDistance, aligner, refHaplotype, assemblyResultSet, argumentCollection.pileupDetectionArgs.numHaplotypesToIterate, argumentCollection.pileupDetectionArgs.filteringKmerSize, argumentCollection.getHaplotypeToReferenceSWParameters()); + } assemblyResultSet.setDebug(argumentCollection.assemblerArgs.debugAssembly); assemblyResultSet.debugDump(logger); return assemblyResultSet; @@ -306,7 +334,76 @@ public static AssemblyResultSet assembleReads(final AssemblyRegion region, } } - public static void addGivenAlleles(final List givenAlleles, final int maxMnpDistance, final SmithWatermanAligner aligner, + /** + * Handle pileup detected alternate alleles. + */ + @VisibleForTesting + static void processPileupAlleles(final AssemblyRegion region, final List givenAlleles, final int maxMnpDistance, + final int snpAdjacentToIndelLimit, final SmithWatermanAligner aligner, final Haplotype refHaplotype, + final AssemblyResultSet assemblyResultSet, final int numHaplotypesPerIteration, final int hapFilteringKmerSize, + final SWParameters haplotypeToReferenceSWParameters) { + final int assemblyRegionStart = region.getPaddedSpan().getStart(); + final int activeRegionStart = refHaplotype.getAlignmentStartHapwrtRef(); + final Map assembledVariants = assemblyResultSet.getVariationEvents(maxMnpDistance).stream() + .collect(Collectors.groupingBy(VariantContext::getStart, Collectors.collectingAndThen(Collectors.toList(), AssemblyBasedCallerUtils::makeMergedVariantContext))); + final Collection assembledIndels = assemblyResultSet.getVariationEvents(maxMnpDistance).stream().filter(VariantContext::isIndel) + .collect(Collectors.groupingBy(VariantContext::getStart, Collectors.collectingAndThen(Collectors.toList(), AssemblyBasedCallerUtils::makeMergedVariantContext))).values(); + + Set baseHaplotypes = new TreeSet<>(); + baseHaplotypes.addAll(assemblyResultSet.getHaplotypeList().stream() + .sorted(Comparator.comparingInt((Haplotype hap) -> hap.isReference() ? 1 : 0).thenComparingDouble(hap -> hap.getScore()).reversed()) + .limit(NUM_HAPLOTYPES_TO_INJECT_FORCE_CALLING_ALLELES_INTO) + .collect(Collectors.toList())); + + //TODO its unclear whether the correct answer here is to use the hardclipped pileup reads (which we used in generating the pileup alleles for specificty reasons) + //TODO or if it would be more accurate to use the softclipped bases here in filtering down the haplotypes. I suspect the latter but I will evaluate later. + Map kmerReadCounts = getKmerReadCounts(region.getHardClippedPileupReads(), hapFilteringKmerSize); + + // Remove SNPs that are too close to assembled indels. + final List givenAllelesFiltered = givenAlleles.stream().filter(vc -> vc.isIndel() || assembledIndels.stream().noneMatch(indel -> vc.withinDistanceOf(indel, snpAdjacentToIndelLimit))).collect(Collectors.toList()); + + for (final VariantContext givenVC : givenAllelesFiltered) { + final VariantContext assembledVC = assembledVariants.get(givenVC.getStart()); + final int givenVCRefLength = givenVC.getReference().length(); + final Allele longerRef = (assembledVC == null || givenVCRefLength > assembledVC.getReference().length()) ? givenVC.getReference() : assembledVC.getReference(); + final List unassembledGivenAlleles = getAllelesNotPresentInAssembly(givenVC, assembledVC, givenVCRefLength, longerRef); + + final List unassembledNonSymbolicAlleles = unassembledGivenAlleles.stream().filter(a -> { + final byte[] bases = a.getBases(); + return !(Allele.wouldBeNoCallAllele(bases) || Allele.wouldBeNullAllele(bases) || Allele.wouldBeStarAllele(bases) || Allele.wouldBeSymbolicAllele(bases)); + }).collect(Collectors.toList()); + + final List newPileupHaplotypes = new ArrayList<>(); + for (final Allele givenAllele : unassembledNonSymbolicAlleles) { + for (final Haplotype baseHaplotype : baseHaplotypes) { + // make sure this allele doesn't collide with a variant on the haplotype + if (baseHaplotype.getEventMap() == null || baseHaplotype.getEventMap().getVariantContexts().stream().noneMatch(vc -> vc.overlaps(givenVC))) { + // BG & AH this is the right way to insert a new haplotype + final Haplotype insertedHaplotype = baseHaplotype.insertAllele(longerRef, givenAllele, givenVC.getStart()); + if (insertedHaplotype != null) { // can be null if the requested allele can't be inserted into the haplotype + final Cigar cigar = CigarUtils.calculateCigar(refHaplotype.getBases(), insertedHaplotype.getBases(), aligner, haplotypeToReferenceSWParameters, SWOverhangStrategy.INDEL); + insertedHaplotype.setCigar(cigar); + insertedHaplotype.setGenomeLocation(refHaplotype.getGenomeLocation()); + insertedHaplotype.setAlignmentStartHapwrtRef(activeRegionStart); + + // and add to our internal list so we get haplotypes that contain all given alleles + // do we want a flag to control this behavior + newPileupHaplotypes.add(insertedHaplotype); + } + } + + } + } + + baseHaplotypes.addAll(filterPileupHaplotypes(newPileupHaplotypes, kmerReadCounts, numHaplotypesPerIteration, hapFilteringKmerSize)); + + } + baseHaplotypes.forEach(assemblyResultSet::add); + assemblyResultSet.regenerateVariationEvents(maxMnpDistance); + } + + @VisibleForTesting + public static void addGivenAlleles(final List givenAlleles, final int maxMnpDistance, final SmithWatermanAligner aligner, final SWParameters haplotypeToReferenceSWParameters, final AssemblyResultSet assemblyResultSet) { if (givenAlleles.isEmpty()) { return; @@ -320,17 +417,7 @@ public static void addGivenAlleles(final List givenAlleles, fina final VariantContext assembledVC = assembledVariants.get(givenVC.getStart()); final int givenVCRefLength = givenVC.getReference().length(); final Allele longerRef = (assembledVC == null || givenVCRefLength > assembledVC.getReference().length()) ? givenVC.getReference() : assembledVC.getReference(); - final List unassembledGivenAlleles; - if (assembledVC == null) { - unassembledGivenAlleles = givenVC.getAlternateAlleles(); - } else { - // map all alleles to the longest common reference - final Set assembledAlleleSet = new HashSet<>(longerRef.length() == assembledVC.getReference().length() ? assembledVC.getAlternateAlleles() : - ReferenceConfidenceVariantContextMerger.remapAlleles(assembledVC, longerRef)); - final Set givenAlleleSet = new HashSet<>(longerRef.length() == givenVCRefLength ? givenVC.getAlternateAlleles() : - ReferenceConfidenceVariantContextMerger.remapAlleles(givenVC, longerRef)); - unassembledGivenAlleles = givenAlleleSet.stream().filter(a -> !assembledAlleleSet.contains(a)).collect(Collectors.toList()); - } + final List unassembledGivenAlleles = getAllelesNotPresentInAssembly(givenVC, assembledVC, givenVCRefLength, longerRef); final List unassembledNonSymbolicAlleles = unassembledGivenAlleles.stream().filter(a -> { final byte[] bases = a.getBases(); @@ -364,6 +451,112 @@ public static void addGivenAlleles(final List givenAlleles, fina assemblyResultSet.regenerateVariationEvents(maxMnpDistance); } + private static List getAllelesNotPresentInAssembly(VariantContext givenVC, VariantContext assembledVC, int givenVCRefLength, Allele longerRef) { + List unassembledGivenAlleles; + if (assembledVC == null) { + unassembledGivenAlleles = givenVC.getAlternateAlleles(); + } else { + // map all alleles to the longest common reference + final Set assembledAlleleSet = new HashSet<>(longerRef.length() == assembledVC.getReference().length() ? assembledVC.getAlternateAlleles() : + ReferenceConfidenceVariantContextMerger.remapAlleles(assembledVC, longerRef)); + final Set givenAlleleSet = new HashSet<>(longerRef.length() == givenVCRefLength ? givenVC.getAlternateAlleles() : + ReferenceConfidenceVariantContextMerger.remapAlleles(givenVC, longerRef)); + unassembledGivenAlleles = givenAlleleSet.stream().filter(a -> !assembledAlleleSet.contains(a)).collect(Collectors.toList()); + } + return unassembledGivenAlleles; + } + + /** + * Returns a map of kmer -> count of total unique occurrences across all of the provided reads. This is a necessary step + * in the {@link AssemblyBasedCallerUtils#processPileupAlleles} pileup + * haplotype filtering. + * + * @param hardClippedPileupReads Reads to scan to genreate kmer counts from + * @param kmerSize kmer size to use in kmerizing the reads + * @return a map of kmer to the number of occurences in the data. + */ + static Map getKmerReadCounts(final List hardClippedPileupReads, int kmerSize) { + Map kmerReadCounts = new HashMap<>(); + hardClippedPileupReads.forEach(read -> kmerizeAndCountOccurences(read.getBases(), kmerSize, kmerReadCounts)); + return kmerReadCounts; + } + + /** + * Method for filtering combinatorial expansion of the number of extra artifical haplotypes that have been created to + * a more tractable number. It works in the following way: + * - For each kmer in the kmerReadsCounts, find haplotypes that also contain that kmer and increment a score for each + * found haplotype by the support found for the kmer. + * - Once this is done select the top #kmerSize haplotypes from the list as the most probable. + * + * @return A set of artificial haplotypes limited to at most numPileupHaplotypes + */ + @VisibleForTesting + static Set filterPileupHaplotypes(final List onlyNewHaplotypes, + final Map kmerReadCounts, + final int numPileupHaplotypes, + final int kmerSize ) { + + // Get haplotypes from assemblyResultSet and kmerize. for each haplotype create a set of kmers. + // for each haplotype, look up the kmers in the read-map and sum the counts fo the haplotype score + // create a Map + LinkedHashMap haplotypeScores = new LinkedHashMap<>(); + for (Haplotype haplotype : onlyNewHaplotypes) { + // TODO this code might use some normalizing based on haplotype length in the future + Set hapKmers = kmerizeBytes(haplotype.getBases(), kmerSize); + int hapKmerCount = 0; + for(Kmer kmer : hapKmers) { + hapKmerCount += kmerReadCounts.containsKey(kmer) ? 1 : 0; + } + + haplotypeScores.put(haplotype, hapKmerCount); + } + + // Select the top haplotypes in order of how many of their kmers have supports in the underlying reads + Map topScoringHaplotypes = + haplotypeScores.entrySet().stream() + .sorted(Collections.reverseOrder(Map.Entry.comparingByValue())) + .limit(numPileupHaplotypes) + .collect(Collectors.toMap( + Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e1, LinkedHashMap::new)); + + return topScoringHaplotypes.keySet(); + } + + /** A utility method that increments a counter-map + * or sets the counter to 1 if the key is missing. + * + * @param map a Map + * @param key The Key to increment + * @param the type that Maps to an Integer + * + */ + synchronized private static void increment(Map map, Type key){ + if (!map.containsKey(key)) { + map.put(key, 1); + } else { + map.put(key, map.get(key) + 1); + } + } + + static void kmerizeAndCountOccurences(byte[] sequence, int kmerSize, Map results){ + final int stopPosition = sequence.length - kmerSize; + for (int i = 0; i <= stopPosition; i++) { + final Kmer kmer = new Kmer(sequence, i, kmerSize); + increment(results, kmer); + } + } + + + static Set kmerizeBytes(byte[] sequence, int kmerSize){ + final Set allKmers = new LinkedHashSet<>(); + final int stopPosition = sequence.length - kmerSize; + for (int i = 0; i <= stopPosition; i++) { + final Kmer kmer = new Kmer(sequence, i, kmerSize); + allKmers.add(kmer); + } + return allKmers; + } + /** * Annotates reads in AlleleLikelihoods with alignment region (the ref region spanned by the haplotype the read is aligned to) and * callable region (the ref region over which a caller is using these AlleleLikelihoods to call variants) @@ -680,8 +873,7 @@ static Map> constructHaplotypeMapping(final List< * from within the current variant context. */ private static Allele getSiteSpecificAlternateAllele(final VariantContext call) { - final Allele allele = call.getAlternateAlleles().stream().filter(a -> isSiteSpecificAltAllele(a)).findFirst().orElse(null); - return allele; + return call.getAlternateAlleles().stream().filter(AssemblyBasedCallerUtils::isSiteSpecificAltAllele).findFirst().orElse(null); } /** diff --git a/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/AssemblyRegionTrimmer.java b/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/AssemblyRegionTrimmer.java index be16e0cb7ab..26e179b221f 100644 --- a/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/AssemblyRegionTrimmer.java +++ b/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/AssemblyRegionTrimmer.java @@ -290,4 +290,4 @@ private Pair nonVariantTargetRegions(final Assem return Pair.of(null, null); } } -} \ No newline at end of file +} 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 85bfe8309a7..9b61743896c 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 @@ -206,6 +206,11 @@ public AssemblyRegionEvaluator assemblyRegionEvaluator() { return hcEngine; } + @Override + public boolean shouldTrackPileupsForAssemblyRegions() { + return hcArgs.pileupDetectionArgs.usePileupDetection; + } + @Override public void onTraversalStart() { if (hcArgs.emitReferenceConfidence == ReferenceConfidenceMode.GVCF && hcArgs.maxMnpDistance > 0) { 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 9ee332838ba..3308722aac1 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 @@ -22,6 +22,7 @@ import org.broadinstitute.hellbender.tools.walkers.annotator.*; import org.broadinstitute.hellbender.tools.walkers.genotyper.*; import org.broadinstitute.hellbender.tools.walkers.haplotypecaller.readthreading.ReadThreadingAssembler; +import org.broadinstitute.hellbender.utils.pileup.PileupBasedAlleles; import org.broadinstitute.hellbender.transformers.IUPACReadTransformer; import org.broadinstitute.hellbender.transformers.ReadTransformer; import org.broadinstitute.hellbender.utils.MathUtils; @@ -582,14 +583,19 @@ public List callRegion(final AssemblyRegion region, final Featur } } + List forcedPileupAlleles = Collections.emptyList(); + if(hcArgs.pileupDetectionArgs.usePileupDetection){ + forcedPileupAlleles = PileupBasedAlleles.getPileupVariantContexts(region.getAlignmentData(), hcArgs.pileupDetectionArgs, readsHeader); + } + // run the local assembler, getting back a collection of information on how we should proceed - final AssemblyResultSet untrimmedAssemblyResult = AssemblyBasedCallerUtils.assembleReads(region, hcArgs, readsHeader, samplesList, logger, referenceReader, assemblyEngine, aligner, !hcArgs.doNotCorrectOverlappingBaseQualities); + final AssemblyResultSet untrimmedAssemblyResult = AssemblyBasedCallerUtils.assembleReads(region, forcedPileupAlleles, hcArgs, readsHeader, samplesList, logger, referenceReader, assemblyEngine, aligner, !hcArgs.doNotCorrectOverlappingBaseQualities); ReadThreadingAssembler.addAssembledVariantsToEventMapOutput(untrimmedAssemblyResult, assembledEventMapVariants, hcArgs.maxMnpDistance, assembledEventMapVcfOutputWriter); if (assemblyDebugOutStream != null) { try { assemblyDebugOutStream.write("\nThere were " + untrimmedAssemblyResult.getHaplotypeList().size() + " haplotypes found. Here they are:\n"); - for (String haplotype : untrimmedAssemblyResult.getHaplotypeList().stream().map(haplotype -> haplotype.toString()).sorted().collect(Collectors.toList())) { + for (String haplotype : untrimmedAssemblyResult.getHaplotypeList().stream().map(Haplotype::toString).sorted().collect(Collectors.toList())) { assemblyDebugOutStream.write(haplotype); assemblyDebugOutStream.append('\n'); } @@ -769,10 +775,8 @@ private boolean containsCalls(final CalledHaplotypes calledHaplotypes) { */ private List referenceModelForNoVariation(final AssemblyRegion region, final boolean needsToBeFinalized, final List VCpriors) { if ( emitReferenceConfidence() ) { - //TODO - why the activeRegion cannot manage its own one-time finalization and filtering? - //TODO - perhaps we can remove the last parameter of this method and the three lines bellow? if ( needsToBeFinalized ) { - AssemblyBasedCallerUtils.finalizeRegion(region, hcArgs.assemblerArgs.errorCorrectReads, hcArgs.dontUseSoftClippedBases, minTailQuality, readsHeader, samplesList, ! hcArgs.doNotCorrectOverlappingBaseQualities, hcArgs.softClipLowQualityEnds); + AssemblyBasedCallerUtils.finalizeRegion(region, hcArgs.assemblerArgs.errorCorrectReads, hcArgs.dontUseSoftClippedBases, minTailQuality, readsHeader, samplesList, ! hcArgs.doNotCorrectOverlappingBaseQualities, hcArgs.softClipLowQualityEnds, hcArgs.pileupDetectionArgs.usePileupDetection); } filterNonPassingReads(region); diff --git a/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/PileupDetectionArgumentCollection.java b/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/PileupDetectionArgumentCollection.java new file mode 100644 index 00000000000..a4b8e4ef369 --- /dev/null +++ b/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/PileupDetectionArgumentCollection.java @@ -0,0 +1,97 @@ +package org.broadinstitute.hellbender.tools.walkers.haplotypecaller; + +import org.broadinstitute.barclay.argparser.Advanced; +import org.broadinstitute.barclay.argparser.Argument; +import org.broadinstitute.barclay.argparser.Hidden; + +/** + * Set of arguments for configuring the pileup detection code + */ +public final class PileupDetectionArgumentCollection { + + public static final String PILEUP_DETECTION_LONG_NAME = "pileup-detection"; + public static final String PILEUP_DETECTION_ENABLE_INDELS = "pileup-detection-enable-indel-pileup-calling"; + public static final String PILEUP_DETECTION_SNP_THRESHOLD = "pileup-detection-snp-alt-threshold"; + public static final String PILEUP_DETECTION_ABSOLUTE_ALT_DEPTH = "pileup-detection-absolute-alt-depth"; + public static final String PILEUP_DETECTION_INDEL_THRESHOLD = "pileup-detection-indel-alt-threshold"; + public static final String PILEUP_DETECTION_FILTER_COVERAGE_LONG_NAME = "pileup-detection-filter-coverage-threshold"; + + //TODO we currently don't see the same threshold from active region determination... + public static final String PILEUP_DETECTION_ACETIVE_REGION_LOD_THRESHOLD_LONG_NAME = "pileup-detection-active-region-lod-threshold"; + + // Arguments related to DRAGEN heuristics related to "read badness" intended to filter out false positives from the pileup detection code + public static final String PILEUP_DETECTION_BAD_READ_RATIO_LONG_NAME = "pileup-detection-bad-read-tolerance"; + public static final String PILEUP_DETECTION_PROPER_PAIR_READ_BADNESS_LONG_NAME = "pileup-detection-proper-pair-read-badness"; + public static final String PILEUP_DETECTION_EDIT_DISTANCE_BADNESS_LONG_NAME = "pileup-detection-edit-distance-read-badness-threshold"; + public static final String PILEUP_DETECTION_CHIMERIC_READ_BADNESS_LONG_NAME = "pileup-detection-chimeric-read-badness"; + //TODO these need to be implemented with some input from Illumina + public static final String PILEUP_DETECTION_TLEN_MEAN_LONG_NAME = "pileup-detection-template-mean-badness-threshold"; + public static final String PILEUP_DETECTION_TLEN_STD_LONG_NAME = "pileup-detection-template-std-badness-threshold"; + + // Argumetns related to filtering the list at the assembly graph level + public static final String PILEUP_DETECTION_INDEL_SNP_BLOCKING_RANGE = "pileup-detection-snp-adjacent-to-assembled-indel-range"; + + /** + * Enables pileup-based haplotype creation and variant detection + * + * NOTE: --pileup-detection is a beta feature. Use this mode at your own risk. + */ + @Advanced + @Argument(fullName= PILEUP_DETECTION_LONG_NAME, doc = "If enabled, the variant caller will create pileup-based haplotypes in addition to the assembly-based haplotype generation.", optional = true) + public boolean usePileupDetection = false; + + /** + * Enables detection of indels from the pileups in. (EXPERIMENTAL FEATURE) + */ + @Hidden + @Argument(fullName= PILEUP_DETECTION_ENABLE_INDELS, doc = "Pileup Detection: If enabled, pileup detection code will attempt to detect indels missing from assembly. (Requires '--"+PILEUP_DETECTION_LONG_NAME+"' argument)", optional = true) + public boolean detectIndels = false; + + @Advanced + @Hidden + @Argument(fullName= "num-artificial-haplotypes-to-add-per-allele", doc = "Pileup Detection: This argument limits the maximum number of novel haplotypes to be added to the assembly haplotypes per pileup allele added. (Requires '--"+PILEUP_DETECTION_LONG_NAME+"'` argument)", optional = true) + public int numHaplotypesToIterate = 5; + @Advanced + @Hidden + @Argument(fullName= "artifical-haplotype-filtering-kmer-size", doc = "Pileup Detection: Controls what size to kmerize reads to in order to select best supported artificial haplotypes. (Requires '--"+PILEUP_DETECTION_LONG_NAME+"' argument)", optional = true) + public int filteringKmerSize = 10; + + /** + * Percentage of reads required to support the alt for a variant to be considered + */ + @Hidden + @Argument(fullName= PILEUP_DETECTION_SNP_THRESHOLD, doc = "Pileup Detection: Percentage of alt supporting reads in order to consider alt SNP. (Requires '--"+PILEUP_DETECTION_LONG_NAME+"' argument)", optional = true) + public double snpThreshold = 0.1; + @Hidden + @Argument(fullName= PILEUP_DETECTION_INDEL_THRESHOLD, doc = "Pileup Detection: Percentage of alt supporting reads in order to consider alt indel. (Requires '--"+PILEUP_DETECTION_LONG_NAME+"' argument)", optional = true) + public double indelThreshold = 0.5; + + @Hidden + @Argument(fullName= PILEUP_DETECTION_ABSOLUTE_ALT_DEPTH, doc = "Pileup Detection: Absolute number of alt reads necessary to be included in pileup events. (Requires '--"+PILEUP_DETECTION_LONG_NAME+"' argument)", optional = true) + public double pileupAbsoluteDepth = 0; + @Hidden + @Argument(fullName= PILEUP_DETECTION_INDEL_SNP_BLOCKING_RANGE, doc = "Pileup Detection: Filters out pileup snps within this many bases of an assembled indel. (Requires '--"+PILEUP_DETECTION_LONG_NAME+"' argument)", optional = true) + public int snpAdajacentToAssemblyIndel = 5; + + /** + * Arguments related to the "bad read filtering" where alleles that are supported primarily by reads that fail at least one of a number of heuristics will be filtered out + */ + @Hidden + @Argument(fullName= PILEUP_DETECTION_BAD_READ_RATIO_LONG_NAME, doc = "Pileup Detection: Threshold of Alt reads rejected by bad reads heuristics to allow the variant. (Requires '--"+PILEUP_DETECTION_LONG_NAME+"' argument)", optional = true) + public double badReadThreshold = 0.0; + @Hidden + @Argument(fullName= PILEUP_DETECTION_PROPER_PAIR_READ_BADNESS_LONG_NAME, doc = "Pileup Detection: Reject alt reads not in proper-pairs. (Requires '--"+PILEUP_DETECTION_LONG_NAME+"' argument)", optional = true) + public boolean badReadProperPair = true; + @Hidden + @Argument(fullName= PILEUP_DETECTION_EDIT_DISTANCE_BADNESS_LONG_NAME, doc = "Pileup Detection: Reject alt reads with greater than this fraction of mismatching bases from the reference (proxied using the NM tag). (Requires '--"+PILEUP_DETECTION_LONG_NAME+"' argument)", optional = true) + public double badReadEditDistance = 0.08; + @Hidden + @Argument(fullName= PILEUP_DETECTION_CHIMERIC_READ_BADNESS_LONG_NAME, doc = "Pileup Detection: Reject reads that are chimeric or supplementary. (Requires '--"+PILEUP_DETECTION_LONG_NAME+"' argument)", optional = true) + public boolean badReadSecondaryOrSupplementary = true; + @Hidden + @Argument(fullName= PILEUP_DETECTION_TLEN_MEAN_LONG_NAME, doc = "Pileup Detection: Mean template length (T LEN) to consider for read badness. Requires '--"+PILEUP_DETECTION_TLEN_STD_LONG_NAME+"' to also be set.", optional = true) + public double templateLengthMean = 0.0; + @Hidden + @Argument(fullName= PILEUP_DETECTION_TLEN_STD_LONG_NAME, doc = "Pileup Detection: Standard deviation template length (T LEN) to consider for read badness. Requires '--"+PILEUP_DETECTION_TLEN_MEAN_LONG_NAME+"' to also be set.", optional = true) + public double templateLengthStd = 0.0; +} diff --git a/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/ReadThreadingAssemblerArgumentCollection.java b/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/ReadThreadingAssemblerArgumentCollection.java index e4acd7aaec3..da462b10794 100644 --- a/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/ReadThreadingAssemblerArgumentCollection.java +++ b/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/ReadThreadingAssemblerArgumentCollection.java @@ -27,6 +27,8 @@ public abstract class ReadThreadingAssemblerArgumentCollection implements Serial public static final String DONT_INCREASE_KMER_SIZE_LONG_NAME = "dont-increase-kmer-sizes-for-cycles"; public static final String LINKED_DE_BRUIJN_GRAPH_LONG_NAME = "linked-de-bruijn-graph"; + + // ----------------------------------------------------------------------------------------------- // arguments to control internal behavior of the read threading assembler // ----------------------------------------------------------------------------------------------- @@ -143,6 +145,7 @@ public abstract class ReadThreadingAssemblerArgumentCollection implements Serial @Argument(fullName= LINKED_DE_BRUIJN_GRAPH_LONG_NAME, doc = "If enabled, the Assembly Engine will construct a Linked De Bruijn graph to recover better haplotypes", optional = true) public boolean useLinkedDeBruijnGraph = false; + /** * This is used to disable the recovery of paths that were dropped in the graph based on the junction trees. Disabling this * will affect sensitivity but improve phasing and runtime somewhat. diff --git a/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/readthreading/AbstractReadThreadingGraph.java b/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/readthreading/AbstractReadThreadingGraph.java index 13501a4d265..bedc7a4a4ea 100644 --- a/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/readthreading/AbstractReadThreadingGraph.java +++ b/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/readthreading/AbstractReadThreadingGraph.java @@ -591,7 +591,7 @@ int mergeDanglingHeadLegacy(final DanglingChainMergeHelper danglingHeadMergeResu final List elements = danglingHeadMergeResult.cigar.getCigarElements(); final CigarElement firstElement = elements.get(0); - Utils.validateArg( firstElement.getOperator() == CigarOperator.M, "The first Cigar element must be an M"); + Utils.validateArg(firstElement.getOperator() == CigarOperator.M, "The first Cigar element must be an M"); final int indexesToMerge = bestPrefixMatchLegacy(danglingHeadMergeResult.referencePathString, danglingHeadMergeResult.danglingPathString, firstElement.getLength()); if (indexesToMerge <= 0) { @@ -599,7 +599,7 @@ int mergeDanglingHeadLegacy(final DanglingChainMergeHelper danglingHeadMergeResu } // we can't push back the reference path - if ( indexesToMerge.getKey() >= danglingHeadMergeResult.referencePath.size() - 1 ) { + if (indexesToMerge >= danglingHeadMergeResult.referencePath.size() - 1) { return 0; } @@ -609,7 +609,7 @@ int mergeDanglingHeadLegacy(final DanglingChainMergeHelper danglingHeadMergeResu return 0; } - addEdge(danglingHeadMergeResult.referencePath.get(indexesToMerge.getKey()), danglingHeadMergeResult.danglingPath.get(indexesToMerge.getValue()), ((MyEdgeFactory)getEdgeFactory()).createEdge(false, 1)); + addEdge(danglingHeadMergeResult.referencePath.get(indexesToMerge + 1), danglingHeadMergeResult.danglingPath.get(indexesToMerge), ((MyEdgeFactory) getEdgeFactory()).createEdge(false, 1)); return 1; } diff --git a/src/main/java/org/broadinstitute/hellbender/tools/walkers/mutect/Mutect2.java b/src/main/java/org/broadinstitute/hellbender/tools/walkers/mutect/Mutect2.java index 697ae1b33c3..4e706ae5e0e 100644 --- a/src/main/java/org/broadinstitute/hellbender/tools/walkers/mutect/Mutect2.java +++ b/src/main/java/org/broadinstitute/hellbender/tools/walkers/mutect/Mutect2.java @@ -255,6 +255,11 @@ protected ReadsDownsampler createDownsampler() { @Override public AssemblyRegionEvaluator assemblyRegionEvaluator() { return m2Engine; } + @Override + public boolean shouldTrackPileupsForAssemblyRegions() { + return MTAC.pileupDetectionArgs.usePileupDetection; + } + @Override public void onTraversalStart() { VariantAnnotatorEngine annotatorEngine = new VariantAnnotatorEngine(makeVariantAnnotations(), null, Collections.emptyList(), false, false); diff --git a/src/main/java/org/broadinstitute/hellbender/tools/walkers/mutect/Mutect2Engine.java b/src/main/java/org/broadinstitute/hellbender/tools/walkers/mutect/Mutect2Engine.java index f29d913bad7..55d98517960 100644 --- a/src/main/java/org/broadinstitute/hellbender/tools/walkers/mutect/Mutect2Engine.java +++ b/src/main/java/org/broadinstitute/hellbender/tools/walkers/mutect/Mutect2Engine.java @@ -45,6 +45,7 @@ import org.broadinstitute.hellbender.utils.haplotype.Haplotype; import org.broadinstitute.hellbender.utils.haplotype.HaplotypeBAMWriter; import org.broadinstitute.hellbender.utils.io.IOUtils; +import org.broadinstitute.hellbender.utils.pileup.PileupBasedAlleles; import org.broadinstitute.hellbender.utils.pileup.PileupElement; import org.broadinstitute.hellbender.utils.pileup.ReadPileup; import org.broadinstitute.hellbender.utils.read.GATKRead; @@ -246,7 +247,11 @@ public List callRegion(final AssemblyRegion originalAssemblyRegi final List givenAlleles = featureContext.getValues(MTAC.alleles).stream() .filter(vc -> MTAC.forceCallFiltered || vc.isNotFiltered()).collect(Collectors.toList()); - final AssemblyResultSet untrimmedAssemblyResult = AssemblyBasedCallerUtils.assembleReads(originalAssemblyRegion, MTAC, header, samplesList, logger, referenceReader, assemblyEngine, aligner, false); + final List forcedPileupAlleles= MTAC.pileupDetectionArgs.usePileupDetection ? + PileupBasedAlleles.getPileupVariantContexts(originalAssemblyRegion.getAlignmentData(), MTAC.pileupDetectionArgs, header) : + Collections.emptyList(); + + final AssemblyResultSet untrimmedAssemblyResult = AssemblyBasedCallerUtils.assembleReads(originalAssemblyRegion, forcedPileupAlleles, MTAC, header, samplesList, logger, referenceReader, assemblyEngine, aligner, false); ReadThreadingAssembler.addAssembledVariantsToEventMapOutput(untrimmedAssemblyResult, assembledEventMapVariants, MTAC.maxMnpDistance, assembledEventMapVcfOutputWriter); final SortedSet allVariationEvents = untrimmedAssemblyResult.getVariationEvents(MTAC.maxMnpDistance); @@ -497,7 +502,7 @@ public boolean emitReferenceConfidence() { */ private List referenceModelForNoVariation(final AssemblyRegion region) { // don't correct overlapping base qualities because we did that upstream - AssemblyBasedCallerUtils.finalizeRegion(region, false, true, (byte)9, header, samplesList, false, false); //take off soft clips and low Q tails before we calculate likelihoods + AssemblyBasedCallerUtils.finalizeRegion(region, false, true, (byte)9, header, samplesList, false, false, MTAC.pileupDetectionArgs.usePileupDetection); //take off soft clips and low Q tails before we calculate likelihoods final SimpleInterval paddedLoc = region.getPaddedSpan(); final Haplotype refHaplotype = AssemblyBasedCallerUtils.createReferenceHaplotype(region, paddedLoc, referenceReader); final List haplotypes = Collections.singletonList(refHaplotype); diff --git a/src/main/java/org/broadinstitute/hellbender/tools/walkers/realignmentfilter/FilterAlignmentArtifacts.java b/src/main/java/org/broadinstitute/hellbender/tools/walkers/realignmentfilter/FilterAlignmentArtifacts.java index 24ffaab8054..dc3c0681e9b 100644 --- a/src/main/java/org/broadinstitute/hellbender/tools/walkers/realignmentfilter/FilterAlignmentArtifacts.java +++ b/src/main/java/org/broadinstitute/hellbender/tools/walkers/realignmentfilter/FilterAlignmentArtifacts.java @@ -213,7 +213,7 @@ public void apply(List variantContexts, ReferenceContext referen // TODO: give this tool M2 Assembler args to allow override default M2ArgumentCollection? - final AssemblyResultSet assemblyResult = AssemblyBasedCallerUtils.assembleReads(assemblyRegion, MTAC, bamHeader, samplesList, logger, referenceReader, assemblyEngine, smithWatermanAligner, false); + final AssemblyResultSet assemblyResult = AssemblyBasedCallerUtils.assembleReads(assemblyRegion, Collections.emptyList(), MTAC, bamHeader, samplesList, logger, referenceReader, assemblyEngine, smithWatermanAligner, false); final AssemblyRegion regionForGenotyping = assemblyResult.getRegionForGenotyping(); final Map> reads = AssemblyBasedCallerUtils.splitReadsBySample(samplesList, bamHeader, regionForGenotyping.getReads()); diff --git a/src/main/java/org/broadinstitute/hellbender/utils/pileup/PileupBasedAlleles.java b/src/main/java/org/broadinstitute/hellbender/utils/pileup/PileupBasedAlleles.java new file mode 100644 index 00000000000..b18ffef18a6 --- /dev/null +++ b/src/main/java/org/broadinstitute/hellbender/utils/pileup/PileupBasedAlleles.java @@ -0,0 +1,196 @@ +package org.broadinstitute.hellbender.utils.pileup; + +import com.google.common.annotations.VisibleForTesting; +import htsjdk.samtools.SAMFileHeader; +import htsjdk.samtools.SAMRecord; +import htsjdk.samtools.util.SequenceUtil; +import htsjdk.variant.variantcontext.Allele; +import htsjdk.variant.variantcontext.VariantContext; +import htsjdk.variant.variantcontext.VariantContextBuilder; +import org.broadinstitute.hellbender.engine.AlignmentAndReferenceContext; +import org.broadinstitute.hellbender.engine.AlignmentContext; +import org.broadinstitute.hellbender.engine.ReferenceContext; +import org.broadinstitute.hellbender.tools.walkers.haplotypecaller.PileupDetectionArgumentCollection; +import org.broadinstitute.hellbender.utils.SimpleInterval; +import org.broadinstitute.hellbender.utils.read.GATKRead; + +import java.util.*; + + +/** + * Helper class for handling pileup allele detection supplement for assembly. This code is analogous but not exactly + * equivalent to the DRAGEN ColumnwiseDetection approach. + */ +public final class PileupBasedAlleles { + + /** + * Accepts the raw per-base pileups stored from the active region detection code and parses them for potential variants + * that are visible in the pileups but might be dropped from assembly for any number of reasons. The basic algorithm works + * as follows: + * - iterate over every pileup and count alt bases + * - (beta) detect insertions overlapping this site (CURRENTLY ONLY WORKS FOR INSERTIONS) + * - count "bad" reads as defined by Illumina filtering for pileup detection of variants {@Link #evaluateBadRead} + * - For each detected alt, evaluate if the number of alternate bases are sufficient to make the call and make a VariantContext. + * + * @param alignmentAndReferenceContextList List of stored pileups and reference context information where every element is a base from the active region. + * NOTE: the expectation is that the stored pileups are based off of the ORIGINAL (un-clipped) reads from active region determination. + * @param args Configuration arguments to use for filtering/annotations + * @param headerForReads Header for the reads (only necessary for SAM file conversion) + * @return A list of variant context objects corresponding to potential variants that pass our heuristics. + */ + public static ArrayList getPileupVariantContexts(final List alignmentAndReferenceContextList, final PileupDetectionArgumentCollection args, final SAMFileHeader headerForReads) { + + final ArrayList pileupVariantList = new ArrayList<>(); + + // Iterate over every base + for(AlignmentAndReferenceContext alignmentAndReferenceContext : alignmentAndReferenceContextList) { + final AlignmentContext alignmentContext = alignmentAndReferenceContext.getAlignmentContext(); + final ReferenceContext referenceContext = alignmentAndReferenceContext.getReferenceContext(); + final int numOfBases = alignmentContext.size(); + final ReadPileup pileup = alignmentContext.getBasePileup(); + final byte refBase = referenceContext.getBase(); + + Map insertionCounts = new HashMap<>(); + + Map altCounts = new HashMap<>(); + + int totalAltReads = 0; + int totalAltBadReads = 0; + + for (PileupElement element : pileup) { + final byte eachBase = element.getBase(); + + // check to see that the base is not ref (and non-deletion) and increment the alt counts (and evaluate if the read is "bad") + if (refBase != eachBase && eachBase != 'D') { + incrementAltCount(eachBase, altCounts); + totalAltReads++; + // Handle the "badness" + if (evaluateBadRead(element.getRead(), referenceContext, args, headerForReads)) { + totalAltBadReads++; + } + } + + // TODO currently this only handles Insertions. + if (args.detectIndels) { + // now look for indels + if (element.isBeforeInsertion()) { + incrementInsertionCount(element.getBasesOfImmediatelyFollowingInsertion(), insertionCounts); + } + + //TODO this is possibly double dipping if there are snps adjacent to indels? + totalAltReads++; + // Handle the "badness" + if (evaluateBadRead(element.getRead(), referenceContext, args, headerForReads)) { + totalAltBadReads++; + } + } + + } + + // Evaluate the detected SNP alleles for this site + final List alleles = new ArrayList<>(); + alleles.add(Allele.create(referenceContext.getBase(), true)); + final Optional> maxAlt = altCounts.entrySet().stream().max(Comparator.comparingInt(Map.Entry::getValue)); + if (maxAlt.isPresent() + && passesFilters(args, false, numOfBases, totalAltBadReads, totalAltReads, maxAlt.get())) { + + alleles.add(Allele.create(maxAlt.get().getKey())); + final VariantContextBuilder pileupSNP = new VariantContextBuilder("pileup", alignmentContext.getContig(), alignmentContext.getStart(), alignmentContext.getEnd(), alleles); + pileupVariantList.add(pileupSNP.make()); + } + + // Evaluate the detected INDEL alleles for this site + if (args.detectIndels) { + final List indelAlleles = new ArrayList<>(); + indelAlleles.add(Allele.create(referenceContext.getBase(), true)); + final Optional> maxIns = insertionCounts.entrySet().stream().max(Comparator.comparingInt(Map.Entry::getValue)); + if (maxIns.isPresent() + && passesFilters(args, true, numOfBases, totalAltBadReads, totalAltReads, maxIns.get())) { + + indelAlleles.add(Allele.create((char)referenceContext.getBase() + maxIns.get().getKey())); + final VariantContextBuilder pileupInsertion = new VariantContextBuilder("pileup", alignmentContext.getContig(), alignmentContext.getStart(), alignmentContext.getEnd(), indelAlleles); + pileupVariantList.add(pileupInsertion.make()); + } + } + } + + return pileupVariantList; + } + + /** + * Apply the filters to discovered alleles + * - Does it have greater than snpThreshold fraction of bases support in the pileups? + * - Does it have greater than pileupAbsoluteDepth number of reads supporting it? + * - Are the reads supporting alts at the site greater than badReadThreshold percent "good"? //TODO evaluate if this is worth doing on a per-allele basis or otherwise + */ + private static boolean passesFilters(final PileupDetectionArgumentCollection args, boolean indel, final int numOfBases, final int totalAltBadReads, final int totalAltReads, final Map.Entry maxAlt) { + return ((float) maxAlt.getValue() / (float) numOfBases) > (indel ? args.indelThreshold : args.snpThreshold) + && numOfBases >= args.pileupAbsoluteDepth + && ((args.badReadThreshold <= 0.0) || (float) totalAltBadReads / (float)totalAltReads <= args.badReadThreshold); + } + + /** + * Based on the illumina PileupDetection filtering code: We apply a number of configurable heuristics to the reads that support + * alt alleles that may be added and for each read evaluate if its "bad" or not by each of the heurisitcs. Currently they are: + * - Secondary/SA tag reads are bad + * - Improperly paired reads are bad + * - Reads with > 8% per-base edit distance to the reference are bad + * - Reads 2 std deviations away from the standard insert size are bad (not implemented) + * + * @param read + * @param referenceContext + * @param args + * @param headerForRead TODO get rid of this sam record conversion + * @return true if any of the "badness" heuristics suggest we should consider the read suspect, false otherwise. + */ + @VisibleForTesting + static boolean evaluateBadRead(final GATKRead read, final ReferenceContext referenceContext, final PileupDetectionArgumentCollection args, final SAMFileHeader headerForRead) { + if (args.badReadThreshold <= 0.0) { + return false; + } + if (args.badReadProperPair && !read.isProperlyPaired()) { + return true; + } + if (args.badReadSecondaryOrSupplementary && (read.isSecondaryAlignment() || read.hasAttribute("SA"))) { + return true; + } + + + //TODO this conversion is really unnecessary. Perhaps we should expose a new SequenceUtil like NM tag calculation?... + SAMRecord samRecordForRead = read.convertToSAMRecord(headerForRead); + + // Assert that the edit distance for the read is in line + if (args.badReadEditDistance > 0.0) { + final int nmScore; + if (! read.hasAttribute("NM")) { + nmScore = SequenceUtil.calculateSamNmTag(samRecordForRead, referenceContext.getBases(new SimpleInterval(read)), read.getStart() - 1); + } else { + nmScore = read.getAttributeAsInteger("NM"); + } + if (nmScore > (read.getLength() * args.badReadEditDistance)) { + return true; + } + } + + //TODO add threshold descibed by illumina about insert size compared to the average + if (args.templateLengthStd > 0 && args.templateLengthMean > 0) { + int templateLength = samRecordForRead.getInferredInsertSize(); + // This is an illumina magic number... Its possible none of this is particularly important for Functional Equivalency. + if (templateLength < args.templateLengthMean - 2.25 * args.templateLengthStd + || templateLength > args.templateLengthMean + 2.25 * args.templateLengthStd) { + return true; + } + } + return false; + } + + private static void incrementInsertionCount(String insertion, Map insertionCounts){ + insertionCounts.put(insertion, + insertionCounts.getOrDefault(insertion,0) + 1); + } + + private static void incrementAltCount(byte base, Map altCounts){ + altCounts.put(base, + altCounts.getOrDefault(base,0) + 1); + } +} diff --git a/src/test/java/org/broadinstitute/hellbender/engine/AssemblyRegionIteratorUnitTest.java b/src/test/java/org/broadinstitute/hellbender/engine/AssemblyRegionIteratorUnitTest.java index 96802168701..542938af228 100644 --- a/src/test/java/org/broadinstitute/hellbender/engine/AssemblyRegionIteratorUnitTest.java +++ b/src/test/java/org/broadinstitute/hellbender/engine/AssemblyRegionIteratorUnitTest.java @@ -75,7 +75,7 @@ public void testRegionsHaveCorrectReadsAndSize( final String reads, final String final CountingReadFilter combinedReadFilter = CountingReadFilter.fromList(readFilters, readsSource.getHeader()); readShard.setReadFilter(combinedReadFilter); - final AssemblyRegionIterator iter = new AssemblyRegionIterator(readShard, readsSource.getHeader(), refSource, null, evaluator, assemblyRegionArgs); + final AssemblyRegionIterator iter = new AssemblyRegionIterator(readShard, readsSource.getHeader(), refSource, null, evaluator, assemblyRegionArgs, false); AssemblyRegion previousRegion = null; while ( iter.hasNext() ) { diff --git a/src/test/java/org/broadinstitute/hellbender/tools/walkers/fasta/ShiftFastaIntegrationTest.java b/src/test/java/org/broadinstitute/hellbender/tools/walkers/fasta/ShiftFastaIntegrationTest.java index 606aac8deac..1812f52ed5f 100644 --- a/src/test/java/org/broadinstitute/hellbender/tools/walkers/fasta/ShiftFastaIntegrationTest.java +++ b/src/test/java/org/broadinstitute/hellbender/tools/walkers/fasta/ShiftFastaIntegrationTest.java @@ -1,7 +1,6 @@ package org.broadinstitute.hellbender.tools.walkers.fasta; import org.broadinstitute.hellbender.CommandLineProgramTest; -import org.broadinstitute.hellbender.GATKBaseTest; import org.broadinstitute.hellbender.testutils.ArgumentsBuilder; import org.broadinstitute.hellbender.testutils.BaseTest; import org.broadinstitute.hellbender.testutils.FastaTestUtils; diff --git a/src/test/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/AssemblyBasedCallerUtilsUnitTest.java b/src/test/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/AssemblyBasedCallerUtilsUnitTest.java index 425016e615e..9ea23d022b0 100644 --- a/src/test/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/AssemblyBasedCallerUtilsUnitTest.java +++ b/src/test/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/AssemblyBasedCallerUtilsUnitTest.java @@ -2,11 +2,12 @@ import com.google.common.collect.Maps; import htsjdk.samtools.*; -import htsjdk.variant.variantcontext.*; - import htsjdk.samtools.util.Locatable; +import htsjdk.variant.variantcontext.*; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; import org.broadinstitute.gatk.nativebindings.smithwaterman.SWParameters; +import org.broadinstitute.hellbender.GATKBaseTest; import org.broadinstitute.hellbender.engine.AssemblyRegion; import org.broadinstitute.hellbender.testutils.VariantContextTestUtils; import org.broadinstitute.hellbender.utils.BaseUtils; @@ -18,12 +19,6 @@ import org.broadinstitute.hellbender.utils.read.ArtificialReadUtils; import org.broadinstitute.hellbender.utils.read.GATKRead; import org.broadinstitute.hellbender.utils.read.SAMRecordToGATKReadAdapter; -import org.apache.commons.lang3.StringUtils; - -import java.util.*; -import java.util.stream.Collectors; - -import org.broadinstitute.hellbender.GATKBaseTest; import org.broadinstitute.hellbender.utils.smithwaterman.SmithWatermanAligner; import org.broadinstitute.hellbender.utils.smithwaterman.SmithWatermanAlignmentConstants; import org.broadinstitute.hellbender.utils.variant.GATKVCFConstants; @@ -31,11 +26,14 @@ import org.testng.annotations.DataProvider; import org.testng.annotations.Test; +import java.util.*; +import java.util.stream.Collectors; + import static org.broadinstitute.hellbender.tools.walkers.haplotypecaller.AssemblyBasedCallerUtils.*; public class AssemblyBasedCallerUtilsUnitTest extends GATKBaseTest { private static final SWParameters HAPLOTYPE_TO_REFERENCE_SW_PARAMETERS = SmithWatermanAlignmentConstants.NEW_SW_PARAMETERS; - + final SAMFileHeader header = ArtificialReadUtils.createArtificialSamHeader(1, 1, 100000000); final SAMLineParser parser = new SAMLineParser(header); @@ -73,7 +71,7 @@ public void testfinalizeRegion() { SampleList sampleList = SampleList.singletonSampleList("tumor"); Byte minbq = 9; // NOTE: this test MUST be run with correctOverlappingBaseQualities enabled otherwise this test can succeed even with unsafe code - AssemblyBasedCallerUtils.finalizeRegion(activeRegion, false, false, minbq, header, sampleList, true, false); + AssemblyBasedCallerUtils.finalizeRegion(activeRegion, false, false, minbq, header, sampleList, true, false, false); // make sure that the original reads are not changed due to finalizeRegion() Assert.assertTrue(reads.get(0).convertToSAMRecord(header).equals(orgRead0)); @@ -1383,4 +1381,96 @@ public void testGivenAllelesHugeInsertion() { Assert.assertEquals(assemblyResultSet.getHaplotypeCount(), 2); Assert.assertEquals(assemblyResultSet.getHaplotypeList().get(1).getBaseString(), "AA" + new String(insertedBases) + "AACCCCGGGGTTTT"); } + + + @DataProvider(name = "filterPileupHaplotypesDataProvider") + public Object[][] filterPileupHaplotypesDataProvider() { + final Haplotype hapA = new Haplotype("ACCTGTA".getBytes()); + final Haplotype hapB = new Haplotype("ATCTGTA".getBytes()); + final Haplotype hapC = new Haplotype("ATCTGAA".getBytes()); + final Haplotype hapD = new Haplotype("ACCTGAA".getBytes()); + final Haplotype hapF = new Haplotype("GAAGAAG".getBytes()); // testing repeated kmers + + Map flatSupportAllKmers = new HashMap() { + private static final long serialVersionUID = 0L; { + put(new Kmer("ACC"), 1); + put(new Kmer("CCT"), 1); + put(new Kmer("CTG"), 1); + put(new Kmer("TGT"), 1); + put(new Kmer("GTA"), 1); + put(new Kmer("ATC"), 1); + put(new Kmer("TCT"), 1); + put(new Kmer("TGA"), 1); + put(new Kmer("GAA"), 1); + put(new Kmer("AGA"), 1); + put(new Kmer("AAG"), 1); + }}; + + Map hapDKmersHighSupport = new HashMap() { + private static final long serialVersionUID = 0L;{ + put(new Kmer("ACC"), 10); + put(new Kmer("CCT"), 10); + put(new Kmer("CTG"), 10); + put(new Kmer("TGT"), 1); + put(new Kmer("GTA"), 1); + put(new Kmer("ATC"), 1); + put(new Kmer("TCT"), 1); + put(new Kmer("TGA"), 10); + put(new Kmer("GAA"), 10); + put(new Kmer("AGA"), 1); + put(new Kmer("AAG"), 1); + }}; + + Map hapDKmers = new HashMap() { + private static final long serialVersionUID = 0L; { + put(new Kmer("ACC"), 10); + put(new Kmer("CCT"), 10); + put(new Kmer("CTG"), 10); + put(new Kmer("TGA"), 10); + put(new Kmer("GAA"), 10); + }}; + + Map hapFRepeatedKmers = new HashMap() { + private static final long serialVersionUID = 0L; { + put(new Kmer("GAA"), 1); + }}; + + + Object[][] tests = new Object[][] { + new Object[]{Arrays.asList(hapA,hapB,hapC,hapD),flatSupportAllKmers,5,3,Arrays.asList(hapA,hapB,hapC,hapD)}, //returns all when no filtering required + // These haplotypes are all equivalent, these test stability of the filtering + new Object[]{Arrays.asList(hapA,hapB,hapC,hapD),flatSupportAllKmers,1,3,Arrays.asList(hapA)}, + new Object[]{Arrays.asList(hapA,hapB,hapC,hapD),flatSupportAllKmers,2,3,Arrays.asList(hapA,hapB)}, + new Object[]{Arrays.asList(hapA,hapB,hapC,hapD),flatSupportAllKmers,3,3,Arrays.asList(hapA,hapB,hapC)}, + + // Repetitive kmers in hapF don't get double counted + new Object[]{Arrays.asList(hapA,hapB,hapD,hapF),hapFRepeatedKmers,2,3,Arrays.asList(hapF,hapD)}, + new Object[]{Arrays.asList(hapA,hapB,hapD,hapF),hapFRepeatedKmers,1,3,Arrays.asList(hapD)}, //currently repeated kmers only count as singular evidence + + // These tests demonstrate that the weights in the map don't matter + new Object[]{Arrays.asList(hapA,hapB,hapC,hapD),hapDKmersHighSupport,1,3,Arrays.asList(hapA)}, + new Object[]{Arrays.asList(hapA,hapB,hapC,hapD),hapDKmersHighSupport,2,3,Arrays.asList(hapA,hapB)}, + new Object[]{Arrays.asList(hapA,hapB,hapC,hapD),hapDKmersHighSupport,3,3,Arrays.asList(hapA,hapB,hapC)}, // Despite hapD having good support it is not weighted higher + + // Test of the output when only one hap has support + new Object[]{Arrays.asList(hapA,hapB,hapC,hapD,hapF),hapDKmers,1,3,Arrays.asList(hapD)}, + new Object[]{Arrays.asList(hapA,hapB,hapC,hapD,hapF),hapDKmers,2,3,Arrays.asList(hapD,hapA)}, + new Object[]{Arrays.asList(hapA,hapB,hapC,hapD,hapF),hapDKmers,3,3,Arrays.asList(hapD,hapA,hapC)}, + new Object[]{Arrays.asList(hapA,hapB,hapC,hapD,hapF),hapDKmers,4,3,Arrays.asList(hapD,hapA,hapC,hapB)}, + }; + + return tests; + } + + // This test is intended to record the current behavior of the filtering code. This may be revised in the future. + @Test (dataProvider = "filterPileupHaplotypesDataProvider") + public void testFilterPileupHaplotypes(final List inputHaplotypes, + final Map kmerReadCounts, + final int numPileupHaplotypes, + final int kmerSize, + final List expected) { + Set actual = AssemblyBasedCallerUtils.filterPileupHaplotypes(inputHaplotypes, kmerReadCounts, numPileupHaplotypes, kmerSize); + + Assert.assertEquals(actual, new HashSet<>(expected)); + } } 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 0e963e07247..3dd7ed97e2e 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 @@ -1609,6 +1609,117 @@ private static boolean isGVCFReferenceBlock( final VariantContext vc ) { vc.getAlternateAllele(0).equals(Allele.NON_REF_ALLELE); } + /* + * Test that in VCF mode we're consistent with past GATK4 results + */ + @Test(dataProvider="HaplotypeCallerTestInputs") + public void testPileupCallingDefaultsConsistentWithPastResults(final String inputFileName, final String referenceFileName) throws Exception { + Utils.resetRandomGenerator(); + + final File output = createTempFile("testVCFModeIsConsistentWithPastResults", ".vcf"); + final File expected = new File(TEST_FILES_DIR, "expected.pileupCallerDefaults.gatk4.vcf"); + + final String outputPath = UPDATE_EXACT_MATCH_EXPECTED_OUTPUTS ? expected.getAbsolutePath() : output.getAbsolutePath(); + + final String[] args = { + "-I", inputFileName, + "-R", referenceFileName, + "-L", "20:10000000-10100000", + "-O", outputPath, + "-pairHMM", "AVX_LOGLESS_CACHING", + + // NOTE: These arguments are intended to force the assembly to fail at all sites in order to test what gets recovered by the pileup code + "--" + ReadThreadingAssemblerArgumentCollection.KMER_SIZE_LONG_NAME, "1", + "--" + ReadThreadingAssemblerArgumentCollection.DONT_INCREASE_KMER_SIZE_LONG_NAME, + + // Pileup Caller args + "--" + PileupDetectionArgumentCollection.PILEUP_DETECTION_LONG_NAME, + "--" + PileupDetectionArgumentCollection.PILEUP_DETECTION_ENABLE_INDELS, + "--" + StandardArgumentDefinitions.ADD_OUTPUT_VCF_COMMANDLINE, "false" + }; + + runCommandLine(args); + + // Test for an exact match against past results + if ( ! UPDATE_EXACT_MATCH_EXPECTED_OUTPUTS ) { + IntegrationTestSpec.assertEqualTextFiles(output, expected); + } + } + + /* + * Test that in VCF mode we're consistent with past GATK4 results + */ + @Test(dataProvider="HaplotypeCallerTestInputs") + public void testPileupCallingDRAGENModeConsistentWithPastResultsWithIndels(final String inputFileName, final String referenceFileName) throws Exception { + Utils.resetRandomGenerator(); + + final File output = createTempFile("testVCFModeIsConsistentWithPastResults", ".vcf"); + final File expected = new File(TEST_FILES_DIR, "expected.pileupCallerDRAGEN.WithIndels.gatk4.vcf"); + + final String outputPath = UPDATE_EXACT_MATCH_EXPECTED_OUTPUTS ? expected.getAbsolutePath() : output.getAbsolutePath(); + + final String[] args = { + "-I", inputFileName, + "-R", referenceFileName, + "-L", "20:10000000-10100000", + "-O", outputPath, + "-pairHMM", "AVX_LOGLESS_CACHING", + + // NOTE: These arguments are intended to force the assembly to fail at all sites in order to test what gets recovered by the pileup code + "--" + ReadThreadingAssemblerArgumentCollection.KMER_SIZE_LONG_NAME, "1", + "--" + ReadThreadingAssemblerArgumentCollection.DONT_INCREASE_KMER_SIZE_LONG_NAME, + + // Pileup Caller args + "--" + PileupDetectionArgumentCollection.PILEUP_DETECTION_LONG_NAME, + "--" + PileupDetectionArgumentCollection.PILEUP_DETECTION_ABSOLUTE_ALT_DEPTH, "0", + "--" + PileupDetectionArgumentCollection.PILEUP_DETECTION_BAD_READ_RATIO_LONG_NAME, "0.01", // an excessive strict read badness filter designed to amplify the effect (the default here is 40%) + "--" + PileupDetectionArgumentCollection.PILEUP_DETECTION_ENABLE_INDELS, + "--" + StandardArgumentDefinitions.ADD_OUTPUT_VCF_COMMANDLINE, "false" + }; + + runCommandLine(args); + + // Test for an exact match against past results + if ( ! UPDATE_EXACT_MATCH_EXPECTED_OUTPUTS ) { + IntegrationTestSpec.assertEqualTextFiles(output, expected); + } + } + + @Test(dataProvider="HaplotypeCallerTestInputs") + public void testPileupCallingDRAGENModeConsistentWithPastResults(final String inputFileName, final String referenceFileName) throws Exception { + Utils.resetRandomGenerator(); + + final File output = createTempFile("testVCFModeIsConsistentWithPastResults", ".vcf"); + final File expected = new File(TEST_FILES_DIR, "expected.pileupCallerDRAGEN.gatk4.vcf"); + + final String outputPath = UPDATE_EXACT_MATCH_EXPECTED_OUTPUTS ? expected.getAbsolutePath() : output.getAbsolutePath(); + + final String[] args = { + "-I", inputFileName, + "-R", referenceFileName, + "-L", "20:10000000-10100000", + "-O", outputPath, + "-pairHMM", "AVX_LOGLESS_CACHING", + + // NOTE: These arguments are intended to force the assembly to fail at all sites in order to test what gets recovered by the pileup code + "--" + ReadThreadingAssemblerArgumentCollection.KMER_SIZE_LONG_NAME, "1", + "--" + ReadThreadingAssemblerArgumentCollection.DONT_INCREASE_KMER_SIZE_LONG_NAME, + + // Pileup Caller args + "--" + PileupDetectionArgumentCollection.PILEUP_DETECTION_LONG_NAME, + "--" + PileupDetectionArgumentCollection.PILEUP_DETECTION_ABSOLUTE_ALT_DEPTH, "0", + "--" + PileupDetectionArgumentCollection.PILEUP_DETECTION_BAD_READ_RATIO_LONG_NAME, "0.01", // an excessive strict read badness filter designed to amplify the effect (the default here is 40%) + "--" + StandardArgumentDefinitions.ADD_OUTPUT_VCF_COMMANDLINE, "false" + }; + + runCommandLine(args); + + // Test for an exact match against past results + if ( ! UPDATE_EXACT_MATCH_EXPECTED_OUTPUTS ) { + IntegrationTestSpec.assertEqualTextFiles(output, expected); + } + } + @DataProvider(name="PairHMMResultsModes") public Object[][] PairHMMResultsModes() { diff --git a/src/test/java/org/broadinstitute/hellbender/tools/walkers/mutect/Mutect2IntegrationTest.java b/src/test/java/org/broadinstitute/hellbender/tools/walkers/mutect/Mutect2IntegrationTest.java index 29f891c68d9..1c409b22928 100644 --- a/src/test/java/org/broadinstitute/hellbender/tools/walkers/mutect/Mutect2IntegrationTest.java +++ b/src/test/java/org/broadinstitute/hellbender/tools/walkers/mutect/Mutect2IntegrationTest.java @@ -16,6 +16,7 @@ import org.broadinstitute.hellbender.engine.filters.ReadFilterLibrary; import org.broadinstitute.hellbender.engine.spark.AssemblyRegionArgumentCollection; import org.broadinstitute.hellbender.testutils.ArgumentsBuilder; +import org.broadinstitute.hellbender.testutils.IntegrationTestSpec; import org.broadinstitute.hellbender.testutils.VariantContextTestUtils; import org.broadinstitute.hellbender.tools.walkers.annotator.AnnotationUtils; import org.broadinstitute.hellbender.tools.walkers.haplotypecaller.AssemblyBasedCallerArgumentCollection; diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/expected.pileupCallerDRAGEN.gatk4.vcf b/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/expected.pileupCallerDRAGEN.gatk4.vcf new file mode 100644 index 00000000000..337246864fb --- /dev/null +++ b/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/expected.pileupCallerDRAGEN.gatk4.vcf @@ -0,0 +1,160 @@ +##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 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 10001474 . C T 2625.06 . AC=2;AF=1.00;AN=2;DP=76;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=45.04;QD=28.73;SOR=1.483 GT:AD:DP:GQ:PL 1/1:0,72:72:99:2639,216,0 +20 10002138 . C G 2026.06 . AC=2;AF=1.00;AN=2;DP=56;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=57.01;QD=30.97;SOR=0.770 GT:AD:DP:GQ:PL 1/1:0,52:52:99:2040,156,0 +20 10002142 . G C 1976.06 . AC=2;AF=1.00;AN=2;DP=55;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=56.45;QD=27.24;SOR=0.813 GT:AD:DP:GQ:PL 1/1:0,51:51:99:1990,153,0 +20 10002470 . C T 1588.06 . AC=2;AF=1.00;AN=2;DP=54;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=52.22;QD=32.41;SOR=0.733 GT:AD:DP:GQ:PL 1/1:0,49:49:99:1602,147,0 +20 10002478 . A T 215.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.664;DP=58;ExcessHet=0.0000;FS=35.852;MLEAC=1;MLEAF=0.500;MQ=52.80;MQRankSum=-2.518;QD=4.07;ReadPosRankSum=2.003;SOR=4.287 GT:AD:DP:GQ:PL 0/1:36,17:53:99:223,0,943 +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 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=28.20;SOR=1.473 GT:AD:DP:GQ:PL 1/1:0,66:66:99:2734,199,0 +20 10004147 . A G 1819.06 . AC=2;AF=1.00;AN=2;DP=53;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=55.56;QD=25.00;SOR=1.201 GT:AD:DP:GQ:PL 1/1:0,51:51:99:1833,153,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 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.56;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=30.62;SOR=1.143 GT:AD:DP:GQ:PL 1/1:0,62:62:99:2523,187,0 +20 10004887 . A G 151.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.700;DP=12;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=15.16;ReadPosRankSum=0.160;SOR=1.508 GT:AD:DP:GQ:PL 0/1:5,5:10:99:159,0,155 +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=28.17;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=26.80;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=26.00;SOR=1.121 GT:AD:DP:GQ:PL 1/1:0,76:76:99:3082,229,0 +20 10007150 . G C 691.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.98;ReadPosRankSum=-0.077;SOR=0.746 GT:AD:DP:GQ:PL 0/1:38,25:63:99:699,0,1321 +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,712 +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=30.02;SOR=1.054 GT:AD:DP:GQ:PL 1/1:0,69:69:99:2793,208,0 +20 10007980 . A C 3571.06 . AC=2;AF=1.00;AN=2;DP=93;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=60.69;QD=31.98;SOR=1.014 GT:AD:DP:GQ:PL 1/1:0,91:91:99:3585,273,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=27.51;SOR=0.980 GT:AD:DP:GQ:PL 1/1:0,69:69:99:2683,207,0 +20 10008951 . A C 1524.06 . AC=2;AF=1.00;AN=2;BaseQRankSum=0.599;DP=53;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=50.72;MQRankSum=1.910;QD=30.48;ReadPosRankSum=0.694;SOR=0.892 GT:AD:DP:GQ:PL 1/1:1,49:50:99:1538,118,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.11;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=28.08;SOR=1.223 GT:AD:DP:GQ:PL 1/1:0,77:77:99:3068,231,0 +20 10009871 . A G 98.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.472;DP=23;ExcessHet=0.0000;FS=5.161;MLEAC=1;MLEAF=0.500;MQ=56.86;MQRankSum=0.955;QD=5.19;ReadPosRankSum=-1.294;SOR=0.685 GT:AD:DP:GQ:PL 0/1:14,5:19:99:106,0,224 +20 10009875 . A G 92.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.191;DP=25;ExcessHet=0.0000;FS=5.379;MLEAC=1;MLEAF=0.500;MQ=56.14;MQRankSum=0.921;QD=4.63;ReadPosRankSum=-1.234;SOR=0.669 GT:AD:DP:GQ:PL 0/1:15,5:20:99:100,0,122 +20 10009886 . A G 48.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.204;DP=23;ExcessHet=0.0000;FS=3.136;MLEAC=1;MLEAF=0.500;MQ=55.79;MQRankSum=-0.792;QD=6.95;ReadPosRankSum=0.000;SOR=0.916 GT:AD:DP:GQ:PL 0/1:4,3:7:56:56,0,136 +20 10010393 . T G 1485.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-3.351;DP=79;ExcessHet=0.0000;FS=11.600;MLEAC=1;MLEAF=0.500;MQ=59.42;MQRankSum=-1.284;QD=18.81;ReadPosRankSum=-1.738;SOR=0.606 GT:AD:DP:GQ:PL 0/1:36,43:79:99:1493,0,1230 +20 10010766 . T G 2426.06 . AC=2;AF=1.00;AN=2;DP=69;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=60.00;QD=23.23;SOR=0.818 GT:AD:DP:GQ:PL 1/1:0,66:66:99:2440,199,0 +20 10011075 . C T 1346.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=5.364;DP=86;ExcessHet=0.0000;FS=1.800;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=16.22;ReadPosRankSum=-1.036;SOR=0.968 GT:AD:DP:GQ:PL 0/1:44,39:83:99:1354,0,1333 +20 10011309 . T C 2707.06 . AC=2;AF=1.00;AN=2;DP=80;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=60.00;QD=29.03;SOR=1.223 GT:AD:DP:GQ:PL 1/1:0,77:77:99:2721,231,0 +20 10011666 . C T 2976.06 . AC=2;AF=1.00;AN=2;DP=74;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.06;QD=30.67;SOR=1.103 GT:AD:DP:GQ:PL 1/1:0,73:73:99:2990,220,0 +20 10012362 . G T 850.06 . AC=2;AF=1.00;AN=2;DP=25;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=54.31;QD=26.61;SOR=4.003 GT:AD:DP:GQ:PL 1/1:0,23:23:69:864,69,0 +20 10012384 . T C 250.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.773;DP=18;ExcessHet=0.0000;FS=7.375;MLEAC=1;MLEAF=0.500;MQ=53.38;MQRankSum=-0.811;QD=13.92;ReadPosRankSum=0.800;SOR=0.044 GT:AD:DP:GQ:PL 0/1:10,8:18:99:258,0,355 +20 10012387 . T C 399.06 . AC=2;AF=1.00;AN=2;DP=18;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=53.38;QD=24.94;SOR=3.258 GT:AD:DP:GQ:PL 1/1:0,16:16:46:413,46,0 +20 10012479 . A G 541.06 . AC=2;AF=1.00;AN=2;DP=19;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=51.79;QD=30.06;SOR=0.914 GT:AD:DP:GQ:PL 1/1:0,18:18:53:555,53,0 +20 10012498 . C G 430.06 . AC=2;AF=1.00;AN=2;DP=12;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=43.92;QD=29.20;SOR=1.022 GT:AD:DP:GQ:PL 1/1:0,12:12:36:444,36,0 +20 10012518 . T C 407.06 . AC=2;AF=1.00;AN=2;DP=12;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=43.58;QD=28.55;SOR=0.859 GT:AD:DP:GQ:PL 1/1:0,11:11:33:421,33,0 +20 10012521 . C T 92.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=1.335;DP=12;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=40.86;MQRankSum=-0.376;QD=7.72;ReadPosRankSum=2.093;SOR=0.693 GT:AD:DP:GQ:PL 0/1:8,4:12:99:100,0,223 +20 10012571 . G A 317.04 . AC=2;AF=1.00;AN=2;DP=8;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=42.80;QD=34.42;SOR=2.833 GT:AD:DP:GQ:PL 1/1:0,8:8:24:331,24,0 +20 10012573 . T G 296.05 . AC=2;AF=1.00;AN=2;DP=9;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=43.79;QD=32.89;SOR=3.056 GT:AD:DP:GQ:PL 1/1:0,9:9:27:310,27,0 +20 10012636 . G C 110.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.281;DP=13;ExcessHet=0.0000;FS=8.921;MLEAC=1;MLEAF=0.500;MQ=50.79;MQRankSum=-1.691;QD=8.51;ReadPosRankSum=-0.144;SOR=0.022 GT:AD:DP:GQ:PL 0/1:8,5:13:99:118,0,202 +20 10012714 . G C 1315.06 . AC=2;AF=1.00;AN=2;DP=36;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=52.52;QD=28.53;SOR=2.964 GT:AD:DP:GQ:PL 1/1:0,35:35:99:1329,105,0 +20 10013119 . C T 1032.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.724;DP=61;ExcessHet=0.0000;FS=2.248;MLEAC=1;MLEAF=0.500;MQ=51.43;MQRankSum=-1.089;QD=17.50;ReadPosRankSum=0.159;SOR=0.405 GT:AD:DP:GQ:PL 0/1:29,30:59:99:1040,0,936 +20 10013574 . G A 1071.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=3.469;DP=73;ExcessHet=0.0000;FS=7.109;MLEAC=1;MLEAF=0.500;MQ=58.17;MQRankSum=-0.271;QD=15.53;ReadPosRankSum=0.706;SOR=1.675 GT:AD:DP:GQ:PL 0/1:38,31:69:99:1079,0,1301 +20 10015679 . C T 161.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.200;DP=10;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=16.16;ReadPosRankSum=0.497;SOR=0.693 GT:AD:DP:GQ:PL 0/1:5,5:10:99:169,0,166 +20 10015761 . T C 365.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.982;DP=23;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=58.99;MQRankSum=1.294;QD=16.62;ReadPosRankSum=1.805;SOR=0.352 GT:AD:DP:GQ:PL 0/1:9,13:22:99:373,0,284 +20 10018158 . G C 1660.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=5.213;DP=94;ExcessHet=0.0000;FS=0.808;MLEAC=1;MLEAF=0.500;MQ=59.80;MQRankSum=1.118;QD=18.87;ReadPosRankSum=1.179;SOR=0.834 GT:AD:DP:GQ:PL 0/1:40,48:88:99:1668,0,1165 +20 10018555 . G A 1588.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.627;DP=84;ExcessHet=0.0000;FS=4.241;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=19.86;ReadPosRankSum=0.815;SOR=0.627 GT:AD:DP:GQ:PL 0/1:35,45:80:99:1596,0,1211 +20 10019093 . A G 1265.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.452;DP=73;ExcessHet=0.0000;FS=1.990;MLEAC=1;MLEAF=0.500;MQ=59.68;MQRankSum=1.073;QD=18.34;ReadPosRankSum=-0.252;SOR=0.665 GT:AD:DP:GQ:PL 0/1:33,36:69:99:1273,0,1104 +20 10020229 . G A 1559.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=5.792;DP=84;ExcessHet=0.0000;FS=0.833;MLEAC=1;MLEAF=0.500;MQ=59.50;MQRankSum=0.104;QD=19.02;ReadPosRankSum=-0.549;SOR=0.573 GT:AD:DP:GQ:PL 0/1:38,44:82:99:1567,0,1130 +20 10023689 . G A 1873.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.144;DP=82;ExcessHet=0.0000;FS=0.877;MLEAC=1;MLEAF=0.500;MQ=59.77;MQRankSum=1.352;QD=23.42;ReadPosRankSum=1.162;SOR=0.549 GT:AD:DP:GQ:PL 0/1:29,51:80:99:1881,0,946 +20 10024107 . C T 1715.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=5.770;DP=89;ExcessHet=0.0000;FS=0.817;MLEAC=1;MLEAF=0.500;MQ=59.43;MQRankSum=-1.546;QD=19.95;ReadPosRankSum=0.148;SOR=0.823 GT:AD:DP:GQ:PL 0/1:38,48:86:99:1723,0,1086 +20 10024288 . C T 70.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-3.728;DP=67;ExcessHet=0.0000;FS=38.617;MLEAC=1;MLEAF=0.500;MQ=52.85;MQRankSum=-5.589;QD=1.10;ReadPosRankSum=2.599;SOR=5.132 GT:AD:DP:GQ:PL 0/1:52,12:64:78:78,0,1623 +20 10024294 . C T 189.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-4.772;DP=67;ExcessHet=0.0000;FS=64.013;MLEAC=1;MLEAF=0.500;MQ=51.67;MQRankSum=-4.001;QD=3.01;ReadPosRankSum=2.236;SOR=5.667 GT:AD:DP:GQ:PL 0/1:47,16:63:99:197,0,1450 +20 10026794 . C T 1105.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.828;DP=56;ExcessHet=0.0000;FS=2.399;MLEAC=1;MLEAF=0.500;MQ=59.59;MQRankSum=-0.719;QD=21.26;ReadPosRankSum=-0.533;SOR=0.428 GT:AD:DP:GQ:PL 0/1:19,33:52:99:1113,0,529 +20 10027868 . A G 1324.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-5.793;DP=91;ExcessHet=0.0000;FS=6.868;MLEAC=1;MLEAF=0.500;MQ=59.49;MQRankSum=0.032;QD=14.88;ReadPosRankSum=1.872;SOR=0.881 GT:AD:DP:GQ:PL 0/1:44,45:89:99:1332,0,1512 +20 10027872 . A G 1539.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-5.491;DP=88;ExcessHet=0.0000;FS=8.870;MLEAC=1;MLEAF=0.500;MQ=59.48;MQRankSum=0.101;QD=18.11;ReadPosRankSum=1.053;SOR=0.826 GT:AD:DP:GQ:PL 0/1:40,45:85:99:1547,0,1439 +20 10030188 . T A 1393.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.711;DP=82;ExcessHet=0.0000;FS=9.186;MLEAC=1;MLEAF=0.500;MQ=59.49;MQRankSum=-1.013;QD=17.21;ReadPosRankSum=-0.553;SOR=1.105 GT:AD:DP:GQ:PL 0/1:42,39:81:99:1401,0,1524 +20 10031342 . G A 1855.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=1.833;DP=93;ExcessHet=0.0000;FS=1.714;MLEAC=1;MLEAF=0.500;MQ=59.75;MQRankSum=-0.866;QD=19.95;ReadPosRankSum=-0.012;SOR=0.955 GT:AD:DP:GQ:PL 0/1:41,52:93:99:1863,0,1375 +20 10031798 . G A 4311.06 . AC=2;AF=1.00;AN=2;DP=107;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.61;QD=27.23;SOR=0.900 GT:AD:DP:GQ:PL 1/1:0,104:104:99:4325,313,0 +20 10032094 . G A 1241.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=5.488;DP=86;ExcessHet=0.0000;FS=6.039;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=14.96;ReadPosRankSum=-0.579;SOR=0.260 GT:AD:DP:GQ:PL 0/1:47,36:83:99:1249,0,1497 +20 10032882 . A T 1223.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-3.697;DP=76;ExcessHet=0.0000;FS=4.673;MLEAC=1;MLEAF=0.500;MQ=59.70;MQRankSum=-1.014;QD=16.32;ReadPosRankSum=0.626;SOR=0.338 GT:AD:DP:GQ:PL 0/1:39,36:75:99:1231,0,1406 +20 10034306 . T C 803.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-3.661;DP=80;ExcessHet=0.0000;FS=0.890;MLEAC=1;MLEAF=0.500;MQ=59.48;MQRankSum=1.150;QD=10.72;ReadPosRankSum=0.539;SOR=0.685 GT:AD:DP:GQ:PL 0/1:46,29:75:99:811,0,1593 +20 10037037 . C T 1460.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=3.541;DP=87;ExcessHet=0.0000;FS=0.916;MLEAC=1;MLEAF=0.500;MQ=60.08;MQRankSum=-1.210;QD=18.26;ReadPosRankSum=-1.577;SOR=0.523 GT:AD:DP:GQ:PL 0/1:38,42:80:99:1468,0,1085 +20 10037709 . A T 1024.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.367;DP=73;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=59.68;MQRankSum=0.934;QD=14.43;ReadPosRankSum=0.040;SOR=0.608 GT:AD:DP:GQ:PL 0/1:39,32:71:99:1032,0,1354 +20 10039371 . T G 1345.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-3.260;DP=76;ExcessHet=0.0000;FS=6.144;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=18.18;ReadPosRankSum=0.391;SOR=1.031 GT:AD:DP:GQ:PL 0/1:34,40:74:99:1353,0,1194 +20 10042761 . A G 3536.06 . AC=2;AF=1.00;AN=2;DP=93;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=60.00;QD=29.52;SOR=1.364 GT:AD:DP:GQ:PL 1/1:0,90:90:99:3550,269,0 +20 10043002 . A T 1308.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=3.986;DP=89;ExcessHet=0.0000;FS=2.877;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=15.22;ReadPosRankSum=-0.035;SOR=0.434 GT:AD:DP:GQ:PL 0/1:48,38:86:99:1316,0,1658 +20 10044849 . A G 2106.06 . AC=2;AF=1.00;AN=2;DP=59;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.61;QD=33.47;SOR=1.316 GT:AD:DP:GQ:PL 1/1:0,59:59:99:2120,177,0 +20 10046537 . A G 840.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-3.909;DP=57;ExcessHet=0.0000;FS=3.724;MLEAC=1;MLEAF=0.500;MQ=54.50;MQRankSum=0.395;QD=14.75;ReadPosRankSum=0.727;SOR=1.262 GT:AD:DP:GQ:PL 0/1:28,29:57:99:848,0,902 +20 10050828 . T C 1248.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.704;DP=91;ExcessHet=0.0000;FS=2.887;MLEAC=1;MLEAF=0.500;MQ=59.54;MQRankSum=0.892;QD=14.52;ReadPosRankSum=-0.140;SOR=0.521 GT:AD:DP:GQ:PL 0/1:49,37:86:99:1256,0,1768 +20 10052688 . C A 1083.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.180;DP=83;ExcessHet=0.0000;FS=3.135;MLEAC=1;MLEAF=0.500;MQ=59.78;MQRankSum=0.870;QD=14.07;ReadPosRankSum=1.443;SOR=0.379 GT:AD:DP:GQ:PL 0/1:45,32:77:99:1091,0,1645 +20 10058022 . T C 996.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.346;DP=72;ExcessHet=0.0000;FS=0.920;MLEAC=1;MLEAF=0.500;MQ=59.16;MQRankSum=0.466;QD=14.66;ReadPosRankSum=0.018;SOR=0.849 GT:AD:DP:GQ:PL 0/1:36,32:68:99:1004,0,1261 +20 10067264 . G A 2937.06 . AC=2;AF=1.00;AN=2;DP=73;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.37;QD=32.91;SOR=0.776 GT:AD:DP:GQ:PL 1/1:0,73:73:99:2951,219,0 +20 10067722 . A C 2161.06 . AC=2;AF=1.00;AN=2;DP=59;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=60.00;QD=31.31;SOR=0.846 GT:AD:DP:GQ:PL 1/1:0,54:54:99:2175,163,0 +20 10068172 . G A 480.06 . AC=2;AF=1.00;AN=2;DP=15;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=58.45;QD=31.45;SOR=0.836 GT:AD:DP:GQ:PL 1/1:0,13:13:39:494,39,0 +20 10068981 . G A 2444.06 . AC=2;AF=1.00;AN=2;DP=63;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=60.00;QD=33.27;SOR=0.950 GT:AD:DP:GQ:PL 1/1:0,59:59:99:2458,178,0 +20 10070602 . T C 2706.06 . AC=2;AF=1.00;AN=2;DP=76;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=58.78;QD=31.26;SOR=0.749 GT:AD:DP:GQ:PL 1/1:0,72:72:99:2720,216,0 +20 10071135 . C T 3272.06 . AC=2;AF=1.00;AN=2;DP=88;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.21;QD=27.76;SOR=1.003 GT:AD:DP:GQ:PL 1/1:0,79:79:99:3286,238,0 +20 10071187 . G A 3425.06 . AC=2;AF=1.00;AN=2;DP=85;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.73;QD=29.09;SOR=1.367 GT:AD:DP:GQ:PL 1/1:0,82:82:99:3439,246,0 +20 10072505 . A G 2114.06 . AC=2;AF=1.00;AN=2;DP=67;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=60.00;QD=33.03;SOR=0.822 GT:AD:DP:GQ:PL 1/1:0,64:64:99:2128,191,0 +20 10074187 . A G 3005.06 . AC=2;AF=1.00;AN=2;DP=78;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.41;QD=26.08;SOR=0.859 GT:AD:DP:GQ:PL 1/1:0,76:76:99:3019,229,0 +20 10074716 . G A 2444.06 . AC=2;AF=1.00;AN=2;DP=71;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.68;QD=33.85;SOR=1.249 GT:AD:DP:GQ:PL 1/1:0,65:65:99:2458,195,0 +20 10074806 . G A 2832.06 . AC=2;AF=1.00;AN=2;DP=75;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.38;QD=27.08;SOR=0.840 GT:AD:DP:GQ:PL 1/1:0,71:71:99:2846,213,0 +20 10075043 . T C 2420.06 . AC=2;AF=1.00;AN=2;DP=64;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.64;QD=25.42;SOR=1.107 GT:AD:DP:GQ:PL 1/1:0,61:61:99:2434,184,0 +20 10075168 . C T 3627.06 . AC=2;AF=1.00;AN=2;DP=91;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.37;QD=27.65;SOR=0.997 GT:AD:DP:GQ:PL 1/1:0,88:88:99:3641,264,0 +20 10076250 . A G 1128.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-3.386;DP=82;ExcessHet=0.0000;FS=7.546;MLEAC=1;MLEAF=0.500;MQ=59.41;MQRankSum=-1.423;QD=14.29;ReadPosRankSum=0.270;SOR=0.344 GT:AD:DP:GQ:PL 0/1:40,39:79:99:1136,0,1339 +20 10076339 . A G 1330.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.069;DP=76;ExcessHet=0.0000;FS=1.992;MLEAC=1;MLEAF=0.500;MQ=59.70;MQRankSum=-0.866;QD=18.48;ReadPosRankSum=1.015;SOR=0.446 GT:AD:DP:GQ:PL 0/1:32,40:72:99:1338,0,1035 +20 10076399 . G A 1828.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=4.154;DP=95;ExcessHet=0.0000;FS=1.680;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=19.45;ReadPosRankSum=-1.058;SOR=0.952 GT:AD:DP:GQ:PL 0/1:44,50:94:99:1836,0,1544 +20 10077752 . T C 1366.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-6.503;DP=83;ExcessHet=0.0000;FS=4.458;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=17.30;ReadPosRankSum=-0.352;SOR=1.251 GT:AD:DP:GQ:PL 0/1:34,45:79:99:1374,0,1187 +20 10079476 . T G 35.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-4.780;DP=57;ExcessHet=0.0000;FS=58.877;MLEAC=1;MLEAF=0.500;MQ=58.86;MQRankSum=-0.779;QD=0.77;ReadPosRankSum=1.477;SOR=5.130 GT:AD:DP:GQ:PL 0/1:34,12:46:43:43,0,1163 +20 10081750 . C A 1374.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.670;DP=92;ExcessHet=0.0000;FS=0.824;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=16.56;ReadPosRankSum=-0.406;SOR=0.664 GT:AD:DP:GQ:PL 0/1:44,39:83:99:1382,0,1525 +20 10081800 . C T 1130.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.241;DP=69;ExcessHet=0.0000;FS=11.086;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=16.63;ReadPosRankSum=-2.622;SOR=0.143 GT:AD:DP:GQ:PL 0/1:35,33:68:99:1138,0,1222 +20 10082892 . C T 1673.06 . AC=2;AF=1.00;AN=2;DP=44;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.48;QD=29.48;SOR=0.836 GT:AD:DP:GQ:PL 1/1:0,43:43:99:1687,129,0 +20 10085211 . A T 1231.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.501;DP=81;ExcessHet=0.0000;FS=0.870;MLEAC=1;MLEAF=0.500;MQ=59.72;MQRankSum=-1.028;QD=16.21;ReadPosRankSum=-1.405;SOR=0.723 GT:AD:DP:GQ:PL 0/1:40,36:76:99:1239,0,1443 +20 10086110 . G A 1295.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.343;DP=83;ExcessHet=0.0000;FS=1.810;MLEAC=1;MLEAF=0.500;MQ=59.16;MQRankSum=-0.680;QD=16.00;ReadPosRankSum=0.170;SOR=0.495 GT:AD:DP:GQ:PL 0/1:43,38:81:99:1303,0,1506 +20 10086283 . G T 1046.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.304;DP=86;ExcessHet=0.0000;FS=0.855;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=12.46;ReadPosRankSum=1.889;SOR=0.529 GT:AD:DP:GQ:PL 0/1:52,32:84:99:1054,0,1771 +20 10086619 . T A 817.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.256;DP=76;ExcessHet=0.0000;FS=0.958;MLEAC=1;MLEAF=0.500;MQ=59.70;MQRankSum=-1.312;QD=11.68;ReadPosRankSum=-0.760;SOR=0.846 GT:AD:DP:GQ:PL 0/1:45,25:70:99:825,0,1603 +20 10086853 . G A 1023.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=3.915;DP=75;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=59.44;MQRankSum=-0.177;QD=14.02;ReadPosRankSum=-0.100;SOR=0.767 GT:AD:DP:GQ:PL 0/1:41,32:73:99:1031,0,1280 +20 10086954 . G A 1116.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.606;DP=70;ExcessHet=0.0000;FS=4.812;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=16.42;ReadPosRankSum=-0.534;SOR=1.185 GT:AD:DP:GQ:PL 0/1:34,34:68:99:1124,0,1051 +20 10087394 . T G 1709.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.340;DP=85;ExcessHet=0.0000;FS=4.225;MLEAC=1;MLEAF=0.500;MQ=59.46;MQRankSum=1.207;QD=20.35;ReadPosRankSum=0.885;SOR=0.436 GT:AD:DP:GQ:PL 0/1:35,49:84:99:1717,0,1186 +20 10087754 . T G 1403.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.239;DP=87;ExcessHet=0.0000;FS=0.851;MLEAC=1;MLEAF=0.500;MQ=60.60;MQRankSum=2.166;QD=17.77;ReadPosRankSum=-0.378;SOR=0.596 GT:AD:DP:GQ:PL 0/1:37,42:79:99:1411,0,1236 +20 10088699 . C T 797.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=3.803;DP=67;ExcessHet=0.0000;FS=16.952;MLEAC=1;MLEAF=0.500;MQ=56.90;MQRankSum=-3.140;QD=12.87;ReadPosRankSum=-1.456;SOR=1.914 GT:AD:DP:GQ:PL 0/1:36,26:62:99:805,0,1088 +20 10088730 . G A 961.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.224;DP=57;ExcessHet=0.0000;FS=9.673;MLEAC=1;MLEAF=0.500;MQ=52.92;MQRankSum=-5.143;QD=17.48;ReadPosRankSum=0.581;SOR=1.025 GT:AD:DP:GQ:PL 0/1:29,26:55:99:969,0,956 +20 10088736 . A C 884.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.282;DP=60;ExcessHet=0.0000;FS=9.673;MLEAC=1;MLEAF=0.500;MQ=52.86;MQRankSum=-5.169;QD=16.08;ReadPosRankSum=0.573;SOR=0.851 GT:AD:DP:GQ:PL 0/1:28,27:55:99:892,0,854 +20 10088747 . A G 798.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-3.877;DP=56;ExcessHet=0.0000;FS=7.653;MLEAC=1;MLEAF=0.500;MQ=52.20;MQRankSum=-4.907;QD=14.79;ReadPosRankSum=0.009;SOR=1.092 GT:AD:DP:GQ:PL 0/1:25,29:54:99:806,0,854 +20 10088895 . C T 556.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.330;DP=43;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=57.80;MQRankSum=0.260;QD=13.92;ReadPosRankSum=1.238;SOR=0.727 GT:AD:DP:GQ:PL 0/1:22,18:40:99:564,0,651 +20 10088980 . T C 357.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.826;DP=60;ExcessHet=0.0000;FS=4.045;MLEAC=1;MLEAF=0.500;MQ=55.36;MQRankSum=-3.210;QD=6.62;ReadPosRankSum=0.950;SOR=1.295 GT:AD:DP:GQ:PL 0/1:37,17:54:99:365,0,1159 +20 10088985 . T C 456.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.437;DP=63;ExcessHet=0.0000;FS=2.347;MLEAC=1;MLEAF=0.500;MQ=55.03;MQRankSum=-3.151;QD=7.61;ReadPosRankSum=0.799;SOR=1.056 GT:AD:DP:GQ:PL 0/1:42,18:60:99:464,0,1357 +20 10089441 . A G 1200.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-4.885;DP=79;ExcessHet=0.0000;FS=6.071;MLEAC=1;MLEAF=0.500;MQ=59.71;MQRankSum=-0.948;QD=15.80;ReadPosRankSum=-0.156;SOR=1.363 GT:AD:DP:GQ:PL 0/1:37,39:76:99:1208,0,1313 +20 10089525 . C T 1569.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=5.859;DP=83;ExcessHet=0.0000;FS=4.260;MLEAC=1;MLEAF=0.500;MQ=59.50;MQRankSum=1.531;QD=19.38;ReadPosRankSum=0.862;SOR=0.617 GT:AD:DP:GQ:PL 0/1:38,43:81:99:1577,0,1088 +20 10090764 . A G 861.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.659;DP=67;ExcessHet=0.0000;FS=4.975;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=13.68;ReadPosRankSum=1.207;SOR=0.310 GT:AD:DP:GQ:PL 0/1:34,29:63:99:869,0,1207 +20 10090970 . T C 1278.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.484;DP=70;ExcessHet=0.0000;FS=0.927;MLEAC=1;MLEAF=0.500;MQ=59.47;MQRankSum=1.509;QD=18.53;ReadPosRankSum=-0.072;SOR=0.518 GT:AD:DP:GQ:PL 0/1:33,36:69:99:1286,0,1092 +20 10092415 . A G 1656.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-6.731;DP=103;ExcessHet=0.0000;FS=0.741;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=16.40;ReadPosRankSum=0.082;SOR=0.665 GT:AD:DP:GQ:PL 0/1:52,49:101:99:1664,0,1901 +20 10092927 . G T 127.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.507;DP=83;ExcessHet=0.0000;FS=60.191;MLEAC=1;MLEAF=0.500;MQ=59.16;MQRankSum=-3.009;QD=1.77;ReadPosRankSum=-0.220;SOR=5.279 GT:AD:DP:GQ:PL 0/1:59,13:72:99:135,0,1864 +20 10093923 . T A 1096.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.667;DP=73;ExcessHet=0.0000;FS=0.924;MLEAC=1;MLEAF=0.500;MQ=59.25;MQRankSum=0.358;QD=16.37;ReadPosRankSum=-1.583;SOR=0.772 GT:AD:DP:GQ:PL 0/1:35,32:67:99:1104,0,1257 +20 10094251 . T A 1291.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.251;DP=67;ExcessHet=0.0000;FS=11.483;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=20.83;ReadPosRankSum=1.806;SOR=1.211 GT:AD:DP:GQ:PL 0/1:26,36:62:99:1299,0,781 +20 10095741 . A G 1096.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.534;DP=72;ExcessHet=0.0000;FS=4.721;MLEAC=1;MLEAF=0.500;MQ=57.39;MQRankSum=-2.313;QD=15.67;ReadPosRankSum=-0.500;SOR=0.515 GT:AD:DP:GQ:PL 0/1:36,34:70:99:1104,0,1233 +20 10096293 . C T 1376.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=4.664;DP=79;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=58.64;MQRankSum=1.397;QD=18.36;ReadPosRankSum=-1.135;SOR=0.638 GT:AD:DP:GQ:PL 0/1:37,38:75:99:1384,0,1258 +20 10096596 . C T 1583.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.728;DP=91;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=58.82;MQRankSum=0.612;QD=18.20;ReadPosRankSum=-0.170;SOR=0.640 GT:AD:DP:GQ:PL 0/1:40,47:87:99:1591,0,1273 +20 10096768 . A C 1703.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.764;DP=96;ExcessHet=0.0000;FS=3.983;MLEAC=1;MLEAF=0.500;MQ=59.28;MQRankSum=-1.609;QD=18.72;ReadPosRankSum=0.613;SOR=0.445 GT:AD:DP:GQ:PL 0/1:42,49:91:99:1711,0,1452 +20 10096958 . G A 566.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=1.277;DP=64;ExcessHet=0.0000;FS=7.479;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=8.99;ReadPosRankSum=-2.151;SOR=0.784 GT:AD:DP:GQ:PL 0/1:44,19:63:99:574,0,1571 +20 10097075 . T G 1440.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.398;DP=95;ExcessHet=0.0000;FS=6.783;MLEAC=1;MLEAF=0.500;MQ=58.12;MQRankSum=-1.398;QD=15.83;ReadPosRankSum=0.242;SOR=0.694 GT:AD:DP:GQ:PL 0/1:44,47:91:99:1448,0,1485 +20 10097437 . T C 457.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.666;DP=65;ExcessHet=0.0000;FS=3.846;MLEAC=1;MLEAF=0.500;MQ=56.58;MQRankSum=-4.652;QD=7.04;ReadPosRankSum=-4.566;SOR=0.325 GT:AD:DP:GQ:PL 0/1:45,20:65:99:465,0,1547 +20 10097789 . T C 709.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.157;DP=60;ExcessHet=0.0000;FS=5.374;MLEAC=1;MLEAF=0.500;MQ=58.05;MQRankSum=-2.805;QD=12.45;ReadPosRankSum=0.220;SOR=0.756 GT:AD:DP:GQ:PL 0/1:34,23:57:99:717,0,1190 +20 10097928 . G A 591.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.203;DP=37;ExcessHet=0.0000;FS=1.315;MLEAC=1;MLEAF=0.500;MQ=58.11;MQRankSum=-1.654;QD=16.43;ReadPosRankSum=-0.079;SOR=0.951 GT:AD:DP:GQ:PL 0/1:17,19:36:99:599,0,586 +20 10098110 . G C 493.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.074;DP=34;ExcessHet=0.0000;FS=7.278;MLEAC=1;MLEAF=0.500;MQ=58.63;MQRankSum=-1.574;QD=14.52;ReadPosRankSum=-0.833;SOR=0.053 GT:AD:DP:GQ:PL 0/1:19,15:34:99:501,0,637 +20 10098786 . C T 32.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.431;DP=9;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=54.65;MQRankSum=-2.200;QD=3.63;ReadPosRankSum=-1.383;SOR=0.132 GT:AD:DP:GQ:PL 0/1:7,2:9:40:40,0,217 +20 10099220 . A G 598.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.664;DP=47;ExcessHet=0.0000;FS=1.137;MLEAC=1;MLEAF=0.500;MQ=57.74;MQRankSum=-2.596;QD=13.30;ReadPosRankSum=0.629;SOR=0.519 GT:AD:DP:GQ:PL 0/1:25,20:45:99:606,0,873 +20 10099535 . G A 1356.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=5.034;DP=68;ExcessHet=0.0000;FS=2.172;MLEAC=1;MLEAF=0.500;MQ=59.04;MQRankSum=-1.418;QD=20.87;ReadPosRankSum=-0.777;SOR=0.408 GT:AD:DP:GQ:PL 0/1:26,39:65:99:1364,0,686 +20 10099565 . C T 1367.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=4.595;DP=70;ExcessHet=0.0000;FS=8.736;MLEAC=1;MLEAF=0.500;MQ=59.40;MQRankSum=-1.266;QD=19.82;ReadPosRankSum=1.225;SOR=0.191 GT:AD:DP:GQ:PL 0/1:31,38:69:99:1375,0,994 diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/expected.pileupCallerDRAGEN.gatk4.vcf.idx b/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/expected.pileupCallerDRAGEN.gatk4.vcf.idx new file mode 100644 index 0000000000000000000000000000000000000000..b82a7046a7304fd255d50d41c5d8aa9873dc7d3e GIT binary patch literal 1611 zcmeHH%}#?r5FTUVp^xFk8w<3Uwl@N6C8?MoG~Nh>X^XCf>~0%-(p%rc_wfmQ7f%it zjPVf+lg#dyZ+3RR?9ar3e}4i1r{t?r;FK|zD3prf6UxH_+n^9j+!iR=I@6C#$((6a znn_gEPUfgsCD&{ztE?!uN|$=4@pqQ4DxugWt3{;`HRhQRv==@T)L0lb72VZd%leT! z

i85#S01@C*3MfQ3=_;_h#Hg-nt2VOk2O}HGIw&M`^CM+0@EqgMaIB>V z=iw~APH(syf@PS0`McOpeZBybLd}}A%Uifn;D#P=BOU48CSeTL(1At_m4#1$H-eqE cBjNdghJNnPp??ScKlsOe;KFaO_oqpJ0l}M;E&u=k literal 0 HcmV?d00001 diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/expected.pileupCallerDefaults.gatk4.vcf b/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/expected.pileupCallerDefaults.gatk4.vcf new file mode 100644 index 00000000000..ec8e8e20ba2 --- /dev/null +++ b/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/expected.pileupCallerDefaults.gatk4.vcf @@ -0,0 +1,243 @@ +##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 4009.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:4023,286,0 +20 10001661 . T C 3177.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.193 GT:AD:DP:GQ:PL 1/1:0,81:81:99:3191,243,0 +20 10001670 . T G 3232.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.995 GT:AD:DP:GQ:PL 1/1:0,81:81:99:3246,244,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 2113.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.730 GT:AD:DP:GQ:PL 1/1:0,53:53:99:2127,159,0 +20 10002142 . G C 2003.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.853 GT:AD:DP:GQ:PL 1/1:0,52:52:99:2017,156,0 +20 10002470 . C T 1588.06 . AC=2;AF=1.00;AN=2;DP=54;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=52.22;QD=32.41;SOR=0.733 GT:AD:DP:GQ:PL 1/1:0,49:49:99:1602,147,0 +20 10002478 . A T 215.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.664;DP=58;ExcessHet=0.0000;FS=35.852;MLEAC=1;MLEAF=0.500;MQ=52.80;MQRankSum=-2.518;QD=4.07;ReadPosRankSum=2.003;SOR=4.287 GT:AD:DP:GQ:PL 0/1:36,17:53:99:223,0,943 +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=31.98;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=27.51;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=29.11;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=28.08;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=23.23;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=29.03;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 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=30.67;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=26.61;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=29.20;SOR=0.761 GT:AD:DP:GQ:PL 1/1:0,89:89:99:3654,267,0 +20 10004725 . A G 965.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.968;DP=66;ExcessHet=0.0000;FS=13.765;MLEAC=1;MLEAF=0.500;MQ=54.97;MQRankSum=2.956;QD=15.09;ReadPosRankSum=1.964;SOR=0.503 GT:AD:DP:GQ:PL 0/1:35,29:64:99:973,0,1171 +20 10004874 . A C 3447.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.55;SOR=1.286 GT:AD:DP:GQ:PL 1/1:0,87:87:99:3461,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=34.42;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=28.53;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=27.23;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=29.52;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=33.47;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=32.91;SOR=1.179 GT:AD:DP:GQ:PL 1/1:0,73:73:99:2903,219,0 +20 10007150 . G C 691.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.98;ReadPosRankSum=-0.077;SOR=0.746 GT:AD:DP:GQ:PL 0/1:38,25:63:99:699,0,1321 +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,712 +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.31;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=31.45;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=33.27;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 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=31.26;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=27.76;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 10008951 . A C 1524.06 . AC=2;AF=1.00;AN=2;BaseQRankSum=0.599;DP=53;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=50.72;MQRankSum=1.910;QD=30.48;ReadPosRankSum=0.694;SOR=0.892 GT:AD:DP:GQ:PL 1/1:1,49:50:99:1538,118,0 +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=29.09;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=26.08;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=33.85;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 1921.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=27.08;SOR=1.514 GT:AD:DP:GQ:PL 1/1:0,47:47:99:1935,141,0 +20 10009844 . G A 1703.06 . AC=2;AF=1.00;AN=2;BaseQRankSum=1.130;DP=48;ExcessHet=0.0000;FS=3.297;MLEAC=2;MLEAF=1.00;MQ=56.01;MQRankSum=2.656;QD=25.42;ReadPosRankSum=-1.079;SOR=0.499 GT:AD:DP:GQ:PL 1/1:1,46:47:99:1717,113,0 +20 10009871 . A G 1326.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.305;DP=55;ExcessHet=0.0000;FS=5.432;MLEAC=1;MLEAF=0.500;MQ=52.86;MQRankSum=0.468;QD=24.57;ReadPosRankSum=1.080;SOR=0.620 GT:AD:DP:GQ:PL 0/1:9,45:54:20:1334,0,20 +20 10009875 . A G 1404.06 . AC=2;AF=1.00;AN=2;BaseQRankSum=1.365;DP=52;ExcessHet=0.0000;FS=31.135;MLEAC=2;MLEAF=1.00;MQ=52.42;MQRankSum=-0.433;QD=27.53;ReadPosRankSum=-0.052;SOR=1.193 GT:AD:DP:GQ:PL 1/1:8,43:51:76:1418,76,0 +20 10009879 . A G 1491.06 . AC=2;AF=1.00;AN=2;BaseQRankSum=2.034;DP=52;ExcessHet=0.0000;FS=8.236;MLEAC=2;MLEAF=1.00;MQ=52.39;MQRankSum=0.347;QD=30.43;ReadPosRankSum=1.801;SOR=0.948 GT:AD:DP:GQ:PL 1/1:5,44:49:99:1505,114,0 +20 10009883 . A G 1582.06 . AC=2;AF=1.00;AN=2;BaseQRankSum=1.900;DP=50;ExcessHet=0.0000;FS=8.491;MLEAC=2;MLEAF=1.00;MQ=53.14;MQRankSum=2.036;QD=33.66;ReadPosRankSum=1.028;SOR=1.171 GT:AD:DP:GQ:PL 1/1:2,45:47:99:1596,128,0 +20 10010393 . T G 1485.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-3.351;DP=79;ExcessHet=0.0000;FS=11.600;MLEAC=1;MLEAF=0.500;MQ=59.42;MQRankSum=-1.284;QD=18.81;ReadPosRankSum=-1.738;SOR=0.606 GT:AD:DP:GQ:PL 0/1:36,43:79:99:1493,0,1230 +20 10010536 . G GA 2455.03 . AC=2;AF=1.00;AN=2;DP=92;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=61.74;QD=30.69;SOR=0.850 GT:AD:DP:GQ:PL 1/1:0,80:80:99:2469,240,0 +20 10010766 . T G 2426.06 . AC=2;AF=1.00;AN=2;DP=70;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=60.00;QD=27.65;SOR=0.818 GT:AD:DP:GQ:PL 1/1:0,66:66:99:2440,199,0 +20 10010832 . T C 2966.06 . AC=2;AF=1.00;AN=2;DP=76;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.51;QD=29.48;SOR=1.091 GT:AD:DP:GQ:PL 1/1:0,75:75:99:2980,226,0 +20 10011075 . C T 1346.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=5.364;DP=86;ExcessHet=0.0000;FS=1.800;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=16.22;ReadPosRankSum=-1.036;SOR=0.968 GT:AD:DP:GQ:PL 0/1:44,39:83:99:1354,0,1333 +20 10011309 . T C 2707.06 . AC=2;AF=1.00;AN=2;DP=80;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=60.00;QD=30.56;SOR=1.223 GT:AD:DP:GQ:PL 1/1:0,77:77:99:2721,231,0 +20 10011666 . C T 2976.06 . AC=2;AF=1.00;AN=2;DP=74;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.06;QD=33.63;SOR=1.103 GT:AD:DP:GQ:PL 1/1:0,73:73:99:2990,220,0 +20 10011939 . C T 2603.06 . AC=2;AF=1.00;AN=2;DP=68;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=56.15;QD=30.55;SOR=1.306 GT:AD:DP:GQ:PL 1/1:0,64:64:99:2617,193,0 +20 10012362 . G T 850.06 . AC=2;AF=1.00;AN=2;DP=25;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=54.31;QD=32.62;SOR=4.003 GT:AD:DP:GQ:PL 1/1:0,23:23:69:864,69,0 +20 10012384 . T C 250.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.773;DP=18;ExcessHet=0.0000;FS=7.375;MLEAC=1;MLEAF=0.500;MQ=53.38;MQRankSum=-0.811;QD=13.92;ReadPosRankSum=0.800;SOR=0.044 GT:AD:DP:GQ:PL 0/1:10,8:18:99:258,0,355 +20 10012387 . T C 399.06 . AC=2;AF=1.00;AN=2;DP=18;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=53.38;QD=24.94;SOR=3.258 GT:AD:DP:GQ:PL 1/1:0,16:16:46:413,46,0 +20 10012479 . A G 507.06 . AC=2;AF=1.00;AN=2;DP=18;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=51.29;QD=29.83;SOR=0.804 GT:AD:DP:GQ:PL 1/1:0,17:17:50:521,50,0 +20 10012498 . C G 406.06 . AC=2;AF=1.00;AN=2;DP=11;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=42.15;QD=29.33;SOR=1.270 GT:AD:DP:GQ:PL 1/1:0,11:11:33:420,33,0 +20 10012518 . T C 407.06 . AC=2;AF=1.00;AN=2;DP=12;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=43.58;QD=35.36;SOR=0.859 GT:AD:DP:GQ:PL 1/1:0,11:11:33:421,33,0 +20 10012521 . C T 92.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=1.335;DP=12;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=40.86;MQRankSum=-0.376;QD=7.72;ReadPosRankSum=2.093;SOR=0.693 GT:AD:DP:GQ:PL 0/1:8,4:12:99:100,0,223 +20 10012570 . G GCA 434.02 . AC=2;AF=1.00;AN=2;DP=10;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=40.42;QD=34.30;SOR=3.258 GT:AD:DP:GQ:PL 1/1:0,10:10:30:448,30,0 +20 10012573 . T G 195.05 . AC=2;AF=1.00;AN=2;DP=11;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=41.49;QD=17.73;SOR=3.442 GT:AD:DP:GQ:PL 1/1:0,11:11:26:209,26,0 +20 10012631 . C CG 514.60 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.659;DP=21;ExcessHet=0.0000;FS=8.822;MLEAC=1;MLEAF=0.500;MQ=48.34;MQRankSum=-1.670;QD=24.50;ReadPosRankSum=-1.777;SOR=0.048 GT:AD:DP:GQ:PL 0/1:8,13:21:99:522,0,237 +20 10012636 . G C 397.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.575;DP=22;ExcessHet=0.0000;FS=5.959;MLEAC=1;MLEAF=0.500;MQ=48.93;MQRankSum=-1.513;QD=18.07;ReadPosRankSum=-1.777;SOR=0.058 GT:AD:DP:GQ:PL 0/1:8,14:22:99:405,0,294 +20 10012714 . G C 1315.06 . AC=2;AF=1.00;AN=2;DP=36;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=52.52;QD=27.00;SOR=2.964 GT:AD:DP:GQ:PL 1/1:0,35:35:99:1329,105,0 +20 10012751 . T C 952.06 . AC=2;AF=1.00;AN=2;DP=31;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=50.73;QD=31.74;SOR=0.976 GT:AD:DP:GQ:PL 1/1:0,30:30:89:966,89,0 +20 10013119 . C T 1032.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.724;DP=61;ExcessHet=0.0000;FS=2.248;MLEAC=1;MLEAF=0.500;MQ=51.43;MQRankSum=-1.089;QD=17.50;ReadPosRankSum=0.159;SOR=0.405 GT:AD:DP:GQ:PL 0/1:29,30:59:99:1040,0,936 +20 10013574 . G A 1071.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=3.469;DP=73;ExcessHet=0.0000;FS=7.109;MLEAC=1;MLEAF=0.500;MQ=58.17;MQRankSum=-0.271;QD=15.53;ReadPosRankSum=0.706;SOR=1.675 GT:AD:DP:GQ:PL 0/1:38,31:69:99:1079,0,1301 +20 10015679 . C T 161.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.200;DP=10;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=16.16;ReadPosRankSum=0.497;SOR=0.693 GT:AD:DP:GQ:PL 0/1:5,5:10:99:169,0,166 +20 10015761 . T C 365.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.982;DP=23;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=58.99;MQRankSum=1.294;QD=16.62;ReadPosRankSum=1.805;SOR=0.352 GT:AD:DP:GQ:PL 0/1:9,13:22:99:373,0,284 +20 10018158 . G C 1660.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=5.213;DP=94;ExcessHet=0.0000;FS=0.808;MLEAC=1;MLEAF=0.500;MQ=59.80;MQRankSum=1.118;QD=18.87;ReadPosRankSum=1.179;SOR=0.834 GT:AD:DP:GQ:PL 0/1:40,48:88:99:1668,0,1165 +20 10018555 . G A 1588.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.627;DP=84;ExcessHet=0.0000;FS=4.241;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=19.86;ReadPosRankSum=0.815;SOR=0.627 GT:AD:DP:GQ:PL 0/1:35,45:80:99:1596,0,1211 +20 10019093 . A G 1265.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.452;DP=73;ExcessHet=0.0000;FS=1.990;MLEAC=1;MLEAF=0.500;MQ=59.68;MQRankSum=1.073;QD=18.34;ReadPosRankSum=-0.252;SOR=0.665 GT:AD:DP:GQ:PL 0/1:33,36:69:99:1273,0,1104 +20 10020229 . G A 1559.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=5.792;DP=84;ExcessHet=0.0000;FS=0.833;MLEAC=1;MLEAF=0.500;MQ=59.50;MQRankSum=0.104;QD=19.02;ReadPosRankSum=-0.549;SOR=0.573 GT:AD:DP:GQ:PL 0/1:38,44:82:99:1567,0,1130 +20 10023689 . G A 1873.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.144;DP=82;ExcessHet=0.0000;FS=0.877;MLEAC=1;MLEAF=0.500;MQ=59.77;MQRankSum=1.352;QD=23.42;ReadPosRankSum=1.162;SOR=0.549 GT:AD:DP:GQ:PL 0/1:29,51:80:99:1881,0,946 +20 10024107 . C T 1715.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=5.770;DP=89;ExcessHet=0.0000;FS=0.817;MLEAC=1;MLEAF=0.500;MQ=59.43;MQRankSum=-1.546;QD=19.95;ReadPosRankSum=0.148;SOR=0.823 GT:AD:DP:GQ:PL 0/1:38,48:86:99:1723,0,1086 +20 10024288 . C T 70.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-3.728;DP=67;ExcessHet=0.0000;FS=38.617;MLEAC=1;MLEAF=0.500;MQ=52.85;MQRankSum=-5.589;QD=1.10;ReadPosRankSum=2.599;SOR=5.132 GT:AD:DP:GQ:PL 0/1:52,12:64:78:78,0,1623 +20 10024294 . C T 189.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-4.772;DP=67;ExcessHet=0.0000;FS=64.013;MLEAC=1;MLEAF=0.500;MQ=51.67;MQRankSum=-4.001;QD=3.01;ReadPosRankSum=2.236;SOR=5.667 GT:AD:DP:GQ:PL 0/1:47,16:63:99:197,0,1450 +20 10026357 . T C 1187.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.700;DP=63;ExcessHet=0.0000;FS=8.911;MLEAC=1;MLEAF=0.500;MQ=58.43;MQRankSum=-0.148;QD=18.85;ReadPosRankSum=-0.076;SOR=0.722 GT:AD:DP:GQ:PL 0/1:28,35:63:99:1195,0,932 +20 10026794 . C T 1105.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.828;DP=56;ExcessHet=0.0000;FS=2.399;MLEAC=1;MLEAF=0.500;MQ=59.59;MQRankSum=-0.719;QD=21.26;ReadPosRankSum=-0.533;SOR=0.428 GT:AD:DP:GQ:PL 0/1:19,33:52:99:1113,0,529 +20 10027868 . A G 1324.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-5.793;DP=91;ExcessHet=0.0000;FS=6.868;MLEAC=1;MLEAF=0.500;MQ=59.49;MQRankSum=0.032;QD=14.88;ReadPosRankSum=1.872;SOR=0.881 GT:AD:DP:GQ:PL 0/1:44,45:89:99:1332,0,1512 +20 10027872 . A G 1539.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-5.491;DP=88;ExcessHet=0.0000;FS=8.870;MLEAC=1;MLEAF=0.500;MQ=59.48;MQRankSum=0.101;QD=18.11;ReadPosRankSum=1.053;SOR=0.826 GT:AD:DP:GQ:PL 0/1:40,45:85:99:1547,0,1439 +20 10030188 . T A 1393.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.711;DP=82;ExcessHet=0.0000;FS=9.186;MLEAC=1;MLEAF=0.500;MQ=59.49;MQRankSum=-1.013;QD=17.21;ReadPosRankSum=-0.553;SOR=1.105 GT:AD:DP:GQ:PL 0/1:42,39:81:99:1401,0,1524 +20 10031254 . A AT 1493.60 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.091;DP=90;ExcessHet=0.0000;FS=9.250;MLEAC=1;MLEAF=0.500;MQ=59.91;MQRankSum=0.017;QD=17.57;ReadPosRankSum=0.663;SOR=0.211 GT:AD:DP:GQ:PL 0/1:38,47:85:99:1501,0,1159 +20 10031342 . G A 1855.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=1.833;DP=93;ExcessHet=0.0000;FS=1.714;MLEAC=1;MLEAF=0.500;MQ=59.75;MQRankSum=-0.866;QD=19.95;ReadPosRankSum=-0.012;SOR=0.955 GT:AD:DP:GQ:PL 0/1:41,52:93:99:1863,0,1375 +20 10031798 . G A 4311.06 . AC=2;AF=1.00;AN=2;DP=107;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.61;QD=30.82;SOR=0.900 GT:AD:DP:GQ:PL 1/1:0,104:104:99:4325,313,0 +20 10031827 . C T 2025.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=3.552;DP=115;ExcessHet=0.0000;FS=4.729;MLEAC=1;MLEAF=0.500;MQ=59.84;MQRankSum=-0.945;QD=18.76;ReadPosRankSum=-1.396;SOR=0.382 GT:AD:DP:GQ:PL 0/1:52,56:108:99:2033,0,1798 +20 10032094 . G A 1241.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=5.488;DP=86;ExcessHet=0.0000;FS=6.039;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=14.96;ReadPosRankSum=-0.579;SOR=0.260 GT:AD:DP:GQ:PL 0/1:47,36:83:99:1249,0,1497 +20 10032413 . T G 890.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-6.142;DP=66;ExcessHet=0.0000;FS=10.444;MLEAC=1;MLEAF=0.500;MQ=59.43;MQRankSum=-0.065;QD=13.49;ReadPosRankSum=-1.003;SOR=1.293 GT:AD:DP:GQ:PL 0/1:35,31:66:99:898,0,1277 +20 10032882 . A T 1223.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-3.697;DP=76;ExcessHet=0.0000;FS=4.673;MLEAC=1;MLEAF=0.500;MQ=59.70;MQRankSum=-1.014;QD=16.32;ReadPosRankSum=0.626;SOR=0.338 GT:AD:DP:GQ:PL 0/1:39,36:75:99:1231,0,1406 +20 10034306 . T C 803.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-3.661;DP=80;ExcessHet=0.0000;FS=0.890;MLEAC=1;MLEAF=0.500;MQ=59.48;MQRankSum=1.150;QD=10.72;ReadPosRankSum=0.539;SOR=0.685 GT:AD:DP:GQ:PL 0/1:46,29:75:99:811,0,1593 +20 10037037 . C T 1457.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=3.504;DP=88;ExcessHet=0.0000;FS=1.943;MLEAC=1;MLEAF=0.500;MQ=60.08;MQRankSum=-1.193;QD=18.00;ReadPosRankSum=-1.609;SOR=0.495 GT:AD:DP:GQ:PL 0/1:39,42:81:99:1465,0,1124 +20 10037110 . T TGATA 2455.03 . AC=2;AF=1.00;AN=2;DP=70;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=58.84;QD=29.27;SOR=1.061 GT:AD:DP:GQ:PL 1/1:0,55:55:99:2469,165,0 +20 10037709 . A T 1024.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.367;DP=73;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=59.68;MQRankSum=0.934;QD=14.43;ReadPosRankSum=0.040;SOR=0.608 GT:AD:DP:GQ:PL 0/1:39,32:71:99:1032,0,1354 +20 10039371 . T G 1345.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-3.260;DP=76;ExcessHet=0.0000;FS=6.144;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=18.18;ReadPosRankSum=0.391;SOR=1.031 GT:AD:DP:GQ:PL 0/1:34,40:74:99:1353,0,1194 +20 10040772 . C CT 1990.03 . AC=2;AF=1.00;AN=2;DP=84;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=52.53;QD=28.84;SOR=0.844 GT:AD:DP:GQ:PL 1/1:0,69:69:99:2004,207,0 +20 10040821 . T A 1111.96 . AC=2;AF=1.00;AN=2;BaseQRankSum=0.204;DP=75;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=50.40;MQRankSum=-1.355;QD=26.48;ReadPosRankSum=1.979;SOR=0.436 GT:AD:DP:GQ:PL 1/1:3,39:42:16:1126,16,0 +20 10041304 . C T 2780.06 . AC=2;AF=1.00;AN=2;DP=68;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.39;QD=35.92;SOR=0.693 GT:AD:DP:GQ:PL 1/1:0,68:68:99:2794,204,0 +20 10041701 . A ATATG 2854.03 . AC=2;AF=1.00;AN=2;BaseQRankSum=1.731;DP=80;ExcessHet=0.0000;FS=5.755;MLEAC=2;MLEAF=1.00;MQ=58.93;MQRankSum=1.185;QD=29.63;ReadPosRankSum=0.347;SOR=0.107 GT:AD:DP:GQ:PL 1/1:3,73:76:99:2868,178,0 +20 10042319 . C T 2673.06 . AC=2;AF=1.00;AN=2;DP=69;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.06;QD=28.76;SOR=1.033 GT:AD:DP:GQ:PL 1/1:0,66:66:99:2687,199,0 +20 10042761 . A G 3568.06 . AC=2;AF=1.00;AN=2;DP=94;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=60.00;QD=29.94;SOR=1.389 GT:AD:DP:GQ:PL 1/1:0,91:91:99:3582,272,0 +20 10042829 . A G 3070.06 . AC=2;AF=1.00;AN=2;DP=82;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.77;QD=31.54;SOR=0.855 GT:AD:DP:GQ:PL 1/1:0,78:78:99:3084,235,0 +20 10043002 . A T 1308.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=3.986;DP=89;ExcessHet=0.0000;FS=2.877;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=15.22;ReadPosRankSum=-0.035;SOR=0.434 GT:AD:DP:GQ:PL 0/1:48,38:86:99:1316,0,1658 +20 10044849 . A G 2106.06 . AC=2;AF=1.00;AN=2;DP=59;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.61;QD=28.86;SOR=1.316 GT:AD:DP:GQ:PL 1/1:0,59:59:99:2120,177,0 +20 10045078 . G T 3286.06 . AC=2;AF=1.00;AN=2;DP=84;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=58.78;QD=29.41;SOR=0.876 GT:AD:DP:GQ:PL 1/1:0,81:81:99:3300,244,0 +20 10045642 . G C 3127.06 . AC=2;AF=1.00;AN=2;DP=82;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.77;QD=31.11;SOR=0.821 GT:AD:DP:GQ:PL 1/1:0,81:81:99:3141,243,0 +20 10046537 . A G 840.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-3.909;DP=57;ExcessHet=0.0000;FS=3.724;MLEAC=1;MLEAF=0.500;MQ=54.50;MQRankSum=0.395;QD=14.75;ReadPosRankSum=0.727;SOR=1.262 GT:AD:DP:GQ:PL 0/1:28,29:57:99:848,0,902 +20 10050828 . T C 1248.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.704;DP=91;ExcessHet=0.0000;FS=2.887;MLEAC=1;MLEAF=0.500;MQ=59.54;MQRankSum=0.892;QD=14.52;ReadPosRankSum=-0.140;SOR=0.521 GT:AD:DP:GQ:PL 0/1:49,37:86:99:1256,0,1768 +20 10051448 . T C 1155.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.501;DP=71;ExcessHet=0.0000;FS=3.687;MLEAC=1;MLEAF=0.500;MQ=59.41;MQRankSum=-1.404;QD=16.51;ReadPosRankSum=-0.705;SOR=0.302 GT:AD:DP:GQ:PL 0/1:35,35:70:99:1163,0,1150 +20 10052688 . C A 1083.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.180;DP=83;ExcessHet=0.0000;FS=3.135;MLEAC=1;MLEAF=0.500;MQ=59.78;MQRankSum=0.870;QD=14.07;ReadPosRankSum=1.443;SOR=0.379 GT:AD:DP:GQ:PL 0/1:45,32:77:99:1091,0,1645 +20 10058022 . T C 996.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.346;DP=72;ExcessHet=0.0000;FS=0.920;MLEAC=1;MLEAF=0.500;MQ=59.16;MQRankSum=0.466;QD=14.66;ReadPosRankSum=0.018;SOR=0.849 GT:AD:DP:GQ:PL 0/1:36,32:68:99:1004,0,1261 +20 10067090 . C A 1820.06 . AC=2;AF=1.00;AN=2;DP=47;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=57.70;QD=34.66;SOR=0.919 GT:AD:DP:GQ:PL 1/1:0,47:47:99:1834,141,0 +20 10067264 . G A 2937.06 . AC=2;AF=1.00;AN=2;DP=73;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.37;QD=29.40;SOR=0.776 GT:AD:DP:GQ:PL 1/1:0,73:73:99:2951,219,0 +20 10067722 . A C 2161.06 . AC=2;AF=1.00;AN=2;DP=59;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=60.00;QD=36.76;SOR=0.846 GT:AD:DP:GQ:PL 1/1:0,54:54:99:2175,163,0 +20 10068172 . G A 480.06 . AC=2;AF=1.00;AN=2;DP=15;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=58.45;QD=30.54;SOR=0.836 GT:AD:DP:GQ:PL 1/1:0,13:13:39:494,39,0 +20 10068981 . G A 2444.06 . AC=2;AF=1.00;AN=2;DP=63;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=60.00;QD=21.53;SOR=0.950 GT:AD:DP:GQ:PL 1/1:0,59:59:99:2458,178,0 +20 10070602 . T C 2706.06 . AC=2;AF=1.00;AN=2;DP=76;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=58.78;QD=34.87;SOR=0.749 GT:AD:DP:GQ:PL 1/1:0,72:72:99:2720,216,0 +20 10070936 . T A 3330.06 . AC=2;AF=1.00;AN=2;DP=86;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=58.96;QD=31.04;SOR=0.876 GT:AD:DP:GQ:PL 1/1:0,81:81:99:3344,244,0 +20 10070938 . G GA 2934.03 . AC=2;AF=1.00;AN=2;DP=85;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.07;QD=27.86;SOR=0.824 GT:AD:DP:GQ:PL 1/1:0,79:79:99:2948,238,0 +20 10071135 . C T 3272.06 . AC=2;AF=1.00;AN=2;DP=88;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.21;QD=34.17;SOR=1.003 GT:AD:DP:GQ:PL 1/1:0,79:79:99:3286,238,0 +20 10071187 . G A 3425.06 . AC=2;AF=1.00;AN=2;DP=85;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.73;QD=28.60;SOR=1.367 GT:AD:DP:GQ:PL 1/1:0,82:82:99:3439,246,0 +20 10071890 . T C 1989.06 . AC=2;AF=1.00;AN=2;DP=61;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.31;QD=34.90;SOR=0.728 GT:AD:DP:GQ:PL 1/1:0,57:57:99:2003,171,0 +20 10072505 . A G 2114.06 . AC=2;AF=1.00;AN=2;DP=67;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=60.00;QD=33.03;SOR=0.822 GT:AD:DP:GQ:PL 1/1:0,64:64:99:2128,191,0 +20 10074187 . A G 3116.06 . AC=2;AF=1.00;AN=2;DP=81;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.14;QD=25.57;SOR=0.881 GT:AD:DP:GQ:PL 1/1:0,79:79:99:3130,238,0 +20 10074240 . T C 3421.06 . AC=2;AF=1.00;AN=2;DP=89;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.79;QD=33.11;SOR=0.922 GT:AD:DP:GQ:PL 1/1:0,85:85:99:3435,255,0 +20 10074716 . G A 2444.06 . AC=2;AF=1.00;AN=2;DP=71;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.68;QD=30.20;SOR=1.249 GT:AD:DP:GQ:PL 1/1:0,65:65:99:2458,195,0 +20 10074806 . G A 2832.06 . AC=2;AF=1.00;AN=2;DP=75;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.38;QD=30.49;SOR=0.840 GT:AD:DP:GQ:PL 1/1:0,71:71:99:2846,213,0 +20 10075043 . T C 2420.06 . AC=2;AF=1.00;AN=2;DP=64;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.64;QD=31.67;SOR=1.107 GT:AD:DP:GQ:PL 1/1:0,61:61:99:2434,184,0 +20 10075168 . C T 3627.06 . AC=2;AF=1.00;AN=2;DP=91;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.37;QD=29.53;SOR=0.997 GT:AD:DP:GQ:PL 1/1:0,88:88:99:3641,264,0 +20 10076250 . A G 1128.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-3.386;DP=82;ExcessHet=0.0000;FS=7.546;MLEAC=1;MLEAF=0.500;MQ=59.41;MQRankSum=-1.423;QD=14.29;ReadPosRankSum=0.270;SOR=0.344 GT:AD:DP:GQ:PL 0/1:40,39:79:99:1136,0,1339 +20 10076339 . A G 1330.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.069;DP=76;ExcessHet=0.0000;FS=1.992;MLEAC=1;MLEAF=0.500;MQ=59.70;MQRankSum=-0.866;QD=18.48;ReadPosRankSum=1.015;SOR=0.446 GT:AD:DP:GQ:PL 0/1:32,40:72:99:1338,0,1035 +20 10076399 . G A 1828.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=4.154;DP=95;ExcessHet=0.0000;FS=1.680;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=19.45;ReadPosRankSum=-1.058;SOR=0.952 GT:AD:DP:GQ:PL 0/1:44,50:94:99:1836,0,1544 +20 10077752 . T C 1366.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-6.503;DP=83;ExcessHet=0.0000;FS=4.458;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=17.30;ReadPosRankSum=-0.352;SOR=1.251 GT:AD:DP:GQ:PL 0/1:34,45:79:99:1374,0,1187 +20 10079476 . T G 35.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-4.780;DP=57;ExcessHet=0.0000;FS=58.877;MLEAC=1;MLEAF=0.500;MQ=58.86;MQRankSum=-0.779;QD=0.77;ReadPosRankSum=1.477;SOR=5.130 GT:AD:DP:GQ:PL 0/1:34,12:46:43:43,0,1163 +20 10081750 . C A 1374.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.670;DP=92;ExcessHet=0.0000;FS=0.824;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=16.56;ReadPosRankSum=-0.406;SOR=0.664 GT:AD:DP:GQ:PL 0/1:44,39:83:99:1382,0,1525 +20 10081800 . C T 1130.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.241;DP=69;ExcessHet=0.0000;FS=11.086;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=16.63;ReadPosRankSum=-2.622;SOR=0.143 GT:AD:DP:GQ:PL 0/1:35,33:68:99:1138,0,1222 +20 10082892 . C T 1673.06 . AC=2;AF=1.00;AN=2;DP=44;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.48;QD=32.63;SOR=0.836 GT:AD:DP:GQ:PL 1/1:0,43:43:99:1687,129,0 +20 10085211 . A T 1231.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.501;DP=81;ExcessHet=0.0000;FS=0.870;MLEAC=1;MLEAF=0.500;MQ=59.72;MQRankSum=-1.028;QD=16.21;ReadPosRankSum=-1.405;SOR=0.723 GT:AD:DP:GQ:PL 0/1:40,36:76:99:1239,0,1443 +20 10086110 . G A 1295.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.343;DP=83;ExcessHet=0.0000;FS=1.810;MLEAC=1;MLEAF=0.500;MQ=59.16;MQRankSum=-0.680;QD=16.00;ReadPosRankSum=0.170;SOR=0.495 GT:AD:DP:GQ:PL 0/1:43,38:81:99:1303,0,1506 +20 10086283 . G T 1046.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.304;DP=86;ExcessHet=0.0000;FS=0.855;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=12.46;ReadPosRankSum=1.889;SOR=0.529 GT:AD:DP:GQ:PL 0/1:52,32:84:99:1054,0,1771 +20 10086619 . T A 817.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.256;DP=76;ExcessHet=0.0000;FS=0.958;MLEAC=1;MLEAF=0.500;MQ=59.70;MQRankSum=-1.312;QD=11.68;ReadPosRankSum=-0.760;SOR=0.846 GT:AD:DP:GQ:PL 0/1:45,25:70:99:825,0,1603 +20 10086853 . G A 1023.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=3.915;DP=75;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=59.44;MQRankSum=-0.177;QD=14.02;ReadPosRankSum=-0.100;SOR=0.767 GT:AD:DP:GQ:PL 0/1:41,32:73:99:1031,0,1280 +20 10086954 . G A 1116.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.606;DP=70;ExcessHet=0.0000;FS=4.812;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=16.42;ReadPosRankSum=-0.534;SOR=1.185 GT:AD:DP:GQ:PL 0/1:34,34:68:99:1124,0,1051 +20 10087230 . A G 1863.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.407;DP=101;ExcessHet=0.0000;FS=3.860;MLEAC=1;MLEAF=0.500;MQ=58.94;MQRankSum=1.707;QD=19.41;ReadPosRankSum=0.307;SOR=0.960 GT:AD:DP:GQ:PL 0/1:42,54:96:99:1871,0,1428 +20 10087394 . T G 1709.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.340;DP=85;ExcessHet=0.0000;FS=4.225;MLEAC=1;MLEAF=0.500;MQ=59.46;MQRankSum=1.207;QD=20.35;ReadPosRankSum=0.885;SOR=0.436 GT:AD:DP:GQ:PL 0/1:35,49:84:99:1717,0,1186 +20 10087754 . T G 1403.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.239;DP=86;ExcessHet=0.0000;FS=0.851;MLEAC=1;MLEAF=0.500;MQ=60.49;MQRankSum=2.166;QD=17.77;ReadPosRankSum=-0.378;SOR=0.596 GT:AD:DP:GQ:PL 0/1:37,42:79:99:1411,0,1236 +20 10087804 . C T 1322.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.441;DP=91;ExcessHet=0.0000;FS=2.891;MLEAC=1;MLEAF=0.500;MQ=60.24;MQRankSum=2.839;QD=14.86;ReadPosRankSum=0.668;SOR=0.425 GT:AD:DP:GQ:PL 0/1:49,40:89:99:1330,0,1507 +20 10088063 . C T 1438.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=3.405;DP=94;ExcessHet=0.0000;FS=2.739;MLEAC=1;MLEAF=0.500;MQ=59.36;MQRankSum=0.515;QD=15.47;ReadPosRankSum=0.285;SOR=1.053 GT:AD:DP:GQ:PL 0/1:49,44:93:99:1446,0,1403 +20 10088699 . C T 797.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=3.803;DP=67;ExcessHet=0.0000;FS=16.952;MLEAC=1;MLEAF=0.500;MQ=56.90;MQRankSum=-3.140;QD=12.87;ReadPosRankSum=-1.456;SOR=1.914 GT:AD:DP:GQ:PL 0/1:36,26:62:99:805,0,1088 +20 10088730 . G A 961.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.224;DP=57;ExcessHet=0.0000;FS=9.673;MLEAC=1;MLEAF=0.500;MQ=52.92;MQRankSum=-5.143;QD=17.48;ReadPosRankSum=0.581;SOR=1.025 GT:AD:DP:GQ:PL 0/1:29,26:55:99:969,0,956 +20 10088736 . A C 973.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.282;DP=60;ExcessHet=0.0000;FS=9.673;MLEAC=1;MLEAF=0.500;MQ=52.86;MQRankSum=-5.169;QD=17.70;ReadPosRankSum=0.573;SOR=0.851 GT:AD:DP:GQ:PL 0/1:28,27:55:99:981,0,854 +20 10088747 . A G 798.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-3.877;DP=56;ExcessHet=0.0000;FS=7.653;MLEAC=1;MLEAF=0.500;MQ=52.20;MQRankSum=-4.907;QD=14.79;ReadPosRankSum=0.009;SOR=1.092 GT:AD:DP:GQ:PL 0/1:25,29:54:99:806,0,854 +20 10088799 . G A 1039.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=5.503;DP=54;ExcessHet=0.0000;FS=10.098;MLEAC=1;MLEAF=0.500;MQ=53.34;MQRankSum=-2.498;QD=19.62;ReadPosRankSum=1.075;SOR=1.003 GT:AD:DP:GQ:PL 0/1:22,31:53:99:1047,0,617 +20 10088895 . C T 556.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.330;DP=43;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=57.80;MQRankSum=0.260;QD=13.92;ReadPosRankSum=1.238;SOR=0.727 GT:AD:DP:GQ:PL 0/1:22,18:40:99:564,0,651 +20 10088980 . T C 357.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.826;DP=60;ExcessHet=0.0000;FS=4.045;MLEAC=1;MLEAF=0.500;MQ=55.36;MQRankSum=-3.210;QD=6.62;ReadPosRankSum=0.950;SOR=1.295 GT:AD:DP:GQ:PL 0/1:37,17:54:99:365,0,1159 +20 10088985 . T C 456.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.437;DP=63;ExcessHet=0.0000;FS=2.347;MLEAC=1;MLEAF=0.500;MQ=55.03;MQRankSum=-3.151;QD=7.61;ReadPosRankSum=0.799;SOR=1.056 GT:AD:DP:GQ:PL 0/1:42,18:60:99:464,0,1357 +20 10089441 . A G 1200.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-4.885;DP=79;ExcessHet=0.0000;FS=6.071;MLEAC=1;MLEAF=0.500;MQ=59.71;MQRankSum=-0.948;QD=15.80;ReadPosRankSum=-0.156;SOR=1.363 GT:AD:DP:GQ:PL 0/1:37,39:76:99:1208,0,1313 +20 10089525 . C T 1569.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=5.859;DP=83;ExcessHet=0.0000;FS=4.260;MLEAC=1;MLEAF=0.500;MQ=59.50;MQRankSum=1.531;QD=19.38;ReadPosRankSum=0.862;SOR=0.617 GT:AD:DP:GQ:PL 0/1:38,43:81:99:1577,0,1088 +20 10090764 . A G 861.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.659;DP=67;ExcessHet=0.0000;FS=4.975;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=13.68;ReadPosRankSum=1.207;SOR=0.310 GT:AD:DP:GQ:PL 0/1:34,29:63:99:869,0,1207 +20 10090970 . T C 1278.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.484;DP=70;ExcessHet=0.0000;FS=0.927;MLEAC=1;MLEAF=0.500;MQ=59.47;MQRankSum=1.509;QD=18.53;ReadPosRankSum=-0.072;SOR=0.518 GT:AD:DP:GQ:PL 0/1:33,36:69:99:1286,0,1092 +20 10091214 . C T 1270.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.361;DP=73;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=59.74;MQRankSum=-0.916;QD=18.15;ReadPosRankSum=-0.035;SOR=0.625 GT:AD:DP:GQ:PL 0/1:33,37:70:99:1278,0,1110 +20 10092415 . A G 1656.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-6.731;DP=103;ExcessHet=0.0000;FS=0.741;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=16.40;ReadPosRankSum=0.082;SOR=0.665 GT:AD:DP:GQ:PL 0/1:52,49:101:99:1664,0,1901 +20 10092927 . G T 127.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.507;DP=83;ExcessHet=0.0000;FS=60.191;MLEAC=1;MLEAF=0.500;MQ=59.16;MQRankSum=-3.009;QD=1.77;ReadPosRankSum=-0.220;SOR=5.279 GT:AD:DP:GQ:PL 0/1:59,13:72:99:135,0,1864 +20 10093923 . T A 1096.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.667;DP=73;ExcessHet=0.0000;FS=0.924;MLEAC=1;MLEAF=0.500;MQ=59.25;MQRankSum=0.358;QD=16.37;ReadPosRankSum=-1.583;SOR=0.772 GT:AD:DP:GQ:PL 0/1:35,32:67:99:1104,0,1257 +20 10094251 . T A 1291.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.251;DP=67;ExcessHet=0.0000;FS=11.483;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=20.83;ReadPosRankSum=1.806;SOR=1.211 GT:AD:DP:GQ:PL 0/1:26,36:62:99:1299,0,781 +20 10094582 . A G 944.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.388;DP=73;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=59.43;MQRankSum=1.270;QD=13.69;ReadPosRankSum=-0.018;SOR=0.772 GT:AD:DP:GQ:PL 0/1:39,30:69:99:952,0,1350 +20 10094774 . C T 1057.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.784;DP=81;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=59.43;MQRankSum=0.962;QD=14.10;ReadPosRankSum=0.197;SOR=0.690 GT:AD:DP:GQ:PL 0/1:40,35:75:99:1065,0,1282 +20 10095741 . A G 1096.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.534;DP=72;ExcessHet=0.0000;FS=4.721;MLEAC=1;MLEAF=0.500;MQ=57.39;MQRankSum=-2.313;QD=15.67;ReadPosRankSum=-0.500;SOR=0.515 GT:AD:DP:GQ:PL 0/1:36,34:70:99:1104,0,1233 +20 10096293 . C T 1376.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=4.664;DP=79;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=58.64;MQRankSum=1.397;QD=18.36;ReadPosRankSum=-1.135;SOR=0.638 GT:AD:DP:GQ:PL 0/1:37,38:75:99:1384,0,1258 +20 10096596 . C T 1583.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.728;DP=91;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=58.82;MQRankSum=0.612;QD=18.20;ReadPosRankSum=-0.170;SOR=0.640 GT:AD:DP:GQ:PL 0/1:40,47:87:99:1591,0,1273 +20 10096768 . A C 1703.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.764;DP=96;ExcessHet=0.0000;FS=3.983;MLEAC=1;MLEAF=0.500;MQ=59.28;MQRankSum=-1.609;QD=18.72;ReadPosRankSum=0.613;SOR=0.445 GT:AD:DP:GQ:PL 0/1:42,49:91:99:1711,0,1452 +20 10096899 . G T 1101.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.758;DP=76;ExcessHet=0.0000;FS=12.891;MLEAC=1;MLEAF=0.500;MQ=59.20;MQRankSum=-1.552;QD=15.52;ReadPosRankSum=0.538;SOR=2.079 GT:AD:DP:GQ:PL 0/1:39,32:71:99:1109,0,1390 +20 10096933 . G C 1336.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.914;DP=89;ExcessHet=0.0000;FS=23.320;MLEAC=1;MLEAF=0.500;MQ=59.32;MQRankSum=-1.802;QD=15.73;ReadPosRankSum=0.383;SOR=1.534 GT:AD:DP:GQ:PL 0/1:44,41:85:99:1344,0,1514 +20 10096958 . G A 1628.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.697;DP=93;ExcessHet=0.0000;FS=19.237;MLEAC=1;MLEAF=0.500;MQ=59.35;MQRankSum=-1.682;QD=17.90;ReadPosRankSum=-1.593;SOR=1.375 GT:AD:DP:GQ:PL 0/1:44,47:91:99:1636,0,1487 +20 10097075 . T G 1440.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.398;DP=95;ExcessHet=0.0000;FS=6.783;MLEAC=1;MLEAF=0.500;MQ=58.12;MQRankSum=-1.398;QD=15.83;ReadPosRankSum=0.242;SOR=0.694 GT:AD:DP:GQ:PL 0/1:44,47:91:99:1448,0,1485 +20 10097437 . T C 457.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.666;DP=65;ExcessHet=0.0000;FS=3.846;MLEAC=1;MLEAF=0.500;MQ=56.58;MQRankSum=-4.652;QD=7.04;ReadPosRankSum=-4.566;SOR=0.325 GT:AD:DP:GQ:PL 0/1:45,20:65:99:465,0,1547 +20 10097626 . C A 647.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=1.085;DP=54;ExcessHet=0.0000;FS=2.701;MLEAC=1;MLEAF=0.500;MQ=58.00;MQRankSum=-1.331;QD=13.49;ReadPosRankSum=1.015;SOR=0.324 GT:AD:DP:GQ:PL 0/1:28,20:48:99:655,0,957 +20 10097789 . T C 709.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.157;DP=60;ExcessHet=0.0000;FS=5.374;MLEAC=1;MLEAF=0.500;MQ=58.05;MQRankSum=-2.805;QD=12.45;ReadPosRankSum=0.220;SOR=0.756 GT:AD:DP:GQ:PL 0/1:34,23:57:99:717,0,1190 +20 10097928 . G A 591.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.203;DP=37;ExcessHet=0.0000;FS=1.315;MLEAC=1;MLEAF=0.500;MQ=58.11;MQRankSum=-1.654;QD=16.43;ReadPosRankSum=-0.079;SOR=0.951 GT:AD:DP:GQ:PL 0/1:17,19:36:99:599,0,586 +20 10098110 . G C 573.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.510;DP=36;ExcessHet=0.0000;FS=6.658;MLEAC=1;MLEAF=0.500;MQ=58.71;MQRankSum=-1.477;QD=15.93;ReadPosRankSum=-0.730;SOR=0.069 GT:AD:DP:GQ:PL 0/1:19,17:36:99:581,0,631 +20 10098135 . C A 436.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.155;DP=39;ExcessHet=0.0000;FS=4.337;MLEAC=1;MLEAF=0.500;MQ=59.65;MQRankSum=1.546;QD=11.49;ReadPosRankSum=-0.591;SOR=0.075 GT:AD:DP:GQ:PL 0/1:24,14:38:99:444,0,874 +20 10098786 . C T 32.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.431;DP=9;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=54.65;MQRankSum=-2.200;QD=3.63;ReadPosRankSum=-1.383;SOR=0.132 GT:AD:DP:GQ:PL 0/1:7,2:9:40:40,0,217 +20 10098945 . T C 412.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=1.475;DP=22;ExcessHet=0.0000;FS=3.882;MLEAC=1;MLEAF=0.500;MQ=51.15;MQRankSum=-2.504;QD=18.76;ReadPosRankSum=1.038;SOR=2.368 GT:AD:DP:GQ:PL 0/1:9,13:22:99:420,0,248 +20 10098987 . C T 400.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=3.127;DP=25;ExcessHet=0.0000;FS=7.005;MLEAC=1;MLEAF=0.500;MQ=51.36;MQRankSum=-2.734;QD=16.69;ReadPosRankSum=0.436;SOR=2.925 GT:AD:DP:GQ:PL 0/1:11,13:24:99:408,0,350 +20 10099029 . T C 358.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.809;DP=30;ExcessHet=0.0000;FS=2.032;MLEAC=1;MLEAF=0.500;MQ=52.93;MQRankSum=-3.641;QD=12.81;ReadPosRankSum=-1.224;SOR=1.329 GT:AD:DP:GQ:PL 0/1:18,10:28:99:366,0,634 +20 10099034 . C A 338.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.757;DP=29;ExcessHet=0.0000;FS=4.265;MLEAC=1;MLEAF=0.500;MQ=53.57;MQRankSum=-3.641;QD=12.09;ReadPosRankSum=-1.850;SOR=1.721 GT:AD:DP:GQ:PL 0/1:18,10:28:99:346,0,578 +20 10099044 . A C 283.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.016;DP=28;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=52.21;MQRankSum=-4.390;QD=12.33;ReadPosRankSum=-1.905;SOR=0.416 GT:AD:DP:GQ:PL 0/1:15,8:23:99:291,0,484 +20 10099046 . T C 279.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.141;DP=23;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=50.36;MQRankSum=-4.390;QD=12.16;ReadPosRankSum=-2.003;SOR=0.416 GT:AD:DP:GQ:PL 0/1:15,8:23:99:287,0,606 +20 10099055 . T C 195.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.513;DP=23;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=51.34;MQRankSum=-4.285;QD=8.89;ReadPosRankSum=-1.693;SOR=0.527 GT:AD:DP:GQ:PL 0/1:15,7:22:99:203,0,599 +20 10099079 . C T 65.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=1.397;DP=24;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=55.20;MQRankSum=-3.719;QD=2.73;ReadPosRankSum=0.533;SOR=0.904 GT:AD:DP:GQ:PL 0/1:19,5:24:73:73,0,548 +20 10099140 . G T 556.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.057;DP=48;ExcessHet=0.0000;FS=6.781;MLEAC=1;MLEAF=0.500;MQ=60.43;MQRankSum=1.930;QD=12.10;ReadPosRankSum=-0.191;SOR=1.835 GT:AD:DP:GQ:PL 0/1:28,18:46:99:564,0,935 +20 10099190 . G T 1055.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.034;DP=65;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=57.56;MQRankSum=-1.711;QD=16.24;ReadPosRankSum=-1.260;SOR=0.776 GT:AD:DP:GQ:PL 0/1:33,32:65:99:1063,0,1154 +20 10099220 . A G 598.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.664;DP=47;ExcessHet=0.0000;FS=1.137;MLEAC=1;MLEAF=0.500;MQ=57.74;MQRankSum=-2.596;QD=13.30;ReadPosRankSum=0.629;SOR=0.519 GT:AD:DP:GQ:PL 0/1:25,20:45:99:606,0,873 +20 10099250 . G A 697.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=3.170;DP=39;ExcessHet=0.0000;FS=7.195;MLEAC=1;MLEAF=0.500;MQ=56.89;MQRankSum=-2.272;QD=18.86;ReadPosRankSum=0.583;SOR=0.162 GT:AD:DP:GQ:PL 0/1:16,21:37:99:705,0,424 +20 10099535 . G A 1356.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=5.034;DP=68;ExcessHet=0.0000;FS=2.172;MLEAC=1;MLEAF=0.500;MQ=59.04;MQRankSum=-1.418;QD=20.87;ReadPosRankSum=-0.777;SOR=0.408 GT:AD:DP:GQ:PL 0/1:26,39:65:99:1364,0,686 +20 10099565 . C T 1367.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=4.595;DP=70;ExcessHet=0.0000;FS=8.736;MLEAC=1;MLEAF=0.500;MQ=59.40;MQRankSum=-1.266;QD=19.82;ReadPosRankSum=1.225;SOR=0.191 GT:AD:DP:GQ:PL 0/1:31,38:69:99:1375,0,994 +20 10099755 . C T 1119.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=1.550;DP=66;ExcessHet=0.0000;FS=2.074;MLEAC=1;MLEAF=0.500;MQ=59.37;MQRankSum=-0.022;QD=17.23;ReadPosRankSum=-0.230;SOR=0.446 GT:AD:DP:GQ:PL 0/1:33,32:65:99:1127,0,1148 +20 10099832 . A G 1094.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-4.563;DP=75;ExcessHet=0.0000;FS=4.632;MLEAC=1;MLEAF=0.500;MQ=59.00;MQRankSum=0.869;QD=15.20;ReadPosRankSum=-1.023;SOR=0.871 GT:AD:DP:GQ:PL 0/1:39,33:72:99:1102,0,1430 diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/expected.pileupCallerDefaults.gatk4.vcf.idx b/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/expected.pileupCallerDefaults.gatk4.vcf.idx new file mode 100644 index 0000000000000000000000000000000000000000..dd1283b33a740322e814a26b5f5a92110d76fc62 GIT binary patch literal 2877 zcmeHJ!AiqG5FHUb_%Ycew$c_aA&DBO5!$4Pmyjltwsvj8?ndmv{#O6Rix=@9yg5k- zh<_mL!0Zffc6Nqk_OVgmJ)8i*DQU6cIAM&%5`|>=jAH-9*2wu1cR32SO4XK0kuil* zF@dtIMTU} z=1Lk(rGfF16%ZV$F_P->HHsSKZw1-1-I>3U#$g;cFY){Zm=tREBz@k(nFUVh`fa2K-TOF Date: Tue, 29 Mar 2022 16:08:48 -0400 Subject: [PATCH 5/5] added a missing test file that was forgotten --- ...ed.pileupCallerDRAGEN.WithIndels.gatk4.vcf | 148 ++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/expected.pileupCallerDRAGEN.WithIndels.gatk4.vcf diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/expected.pileupCallerDRAGEN.WithIndels.gatk4.vcf b/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/expected.pileupCallerDRAGEN.WithIndels.gatk4.vcf new file mode 100644 index 00000000000..9920b30b5cb --- /dev/null +++ b/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/expected.pileupCallerDRAGEN.WithIndels.gatk4.vcf @@ -0,0 +1,148 @@ +##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 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 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 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.73;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=30.97;SOR=1.516 GT:AD:DP:GQ:PL 1/1:0,73:73:99:2669,219,0 +20 10002138 . C G 2026.06 . AC=2;AF=1.00;AN=2;DP=56;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=57.01;QD=27.24;SOR=0.770 GT:AD:DP:GQ:PL 1/1:0,52:52:99:2040,156,0 +20 10002142 . G C 1976.06 . AC=2;AF=1.00;AN=2;DP=55;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=56.45;QD=28.20;SOR=0.813 GT:AD:DP:GQ:PL 1/1:0,51:51:99:1990,153,0 +20 10002470 . C T 1588.06 . AC=2;AF=1.00;AN=2;DP=54;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=52.22;QD=32.41;SOR=0.733 GT:AD:DP:GQ:PL 1/1:0,49:49:99:1602,147,0 +20 10002478 . A T 215.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.664;DP=58;ExcessHet=0.0000;FS=35.852;MLEAC=1;MLEAF=0.500;MQ=52.80;MQRankSum=-2.518;QD=4.07;ReadPosRankSum=2.003;SOR=4.287 GT:AD:DP:GQ:PL 0/1:36,17:53:99:223,0,943 +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 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=25.00;SOR=1.473 GT:AD:DP:GQ:PL 1/1:0,66:66:99:2734,199,0 +20 10004147 . A G 1855.06 . AC=2;AF=1.00;AN=2;DP=54;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=55.65;QD=29.56;SOR=1.244 GT:AD:DP:GQ:PL 1/1:0,52:52:99:1869,156,0 +20 10004193 . G T 968.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.276;DP=56;ExcessHet=0.0000;FS=2.311;MLEAC=1;MLEAF=0.500;MQ=59.17;MQRankSum=3.395;QD=18.28;ReadPosRankSum=1.833;SOR=1.071 GT:AD:DP:GQ:PL 0/1:24,29:53:99:976,0,780 +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=30.62;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.17;SOR=1.143 GT:AD:DP:GQ:PL 1/1:0,62:62:99:2523,187,0 +20 10004887 . A G 151.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.700;DP=12;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=15.16;ReadPosRankSum=0.160;SOR=1.508 GT:AD:DP:GQ:PL 0/1:5,5:10:99:159,0,155 +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=26.80;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=26.00;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=30.02;SOR=1.121 GT:AD:DP:GQ:PL 1/1:0,76:76:99:3082,229,0 +20 10007150 . G C 691.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.98;ReadPosRankSum=-0.077;SOR=0.746 GT:AD:DP:GQ:PL 0/1:38,25:63:99:699,0,1321 +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,712 +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.98;SOR=1.054 GT:AD:DP:GQ:PL 1/1:0,69:69:99:2793,208,0 +20 10007980 . A C 3571.06 . AC=2;AF=1.00;AN=2;DP=93;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=60.69;QD=27.51;SOR=1.014 GT:AD:DP:GQ:PL 1/1:0,91:91:99:3585,273,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=29.11;SOR=0.980 GT:AD:DP:GQ:PL 1/1:0,69:69:99:2683,207,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=28.08;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=23.23;SOR=1.223 GT:AD:DP:GQ:PL 1/1:0,77:77:99:3068,231,0 +20 10009871 . A G 41.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.394;DP=18;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=57.39;MQRankSum=0.696;QD=2.97;ReadPosRankSum=-2.638;SOR=0.368 GT:AD:DP:GQ:PL 0/1:11,3:14:49:49,0,128 +20 10009875 . A G 52.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.856;DP=20;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=56.45;MQRankSum=0.820;QD=3.29;ReadPosRankSum=-2.619;SOR=0.260 GT:AD:DP:GQ:PL 0/1:13,3:16:50:60,0,50 +20 10010393 . T G 1485.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-3.351;DP=79;ExcessHet=0.0000;FS=11.600;MLEAC=1;MLEAF=0.500;MQ=59.42;MQRankSum=-1.284;QD=18.81;ReadPosRankSum=-1.738;SOR=0.606 GT:AD:DP:GQ:PL 0/1:36,43:79:99:1493,0,1230 +20 10010536 . G GA 2455.03 . AC=2;AF=1.00;AN=2;DP=92;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=61.74;QD=30.69;SOR=0.850 GT:AD:DP:GQ:PL 1/1:0,80:80:99:2469,240,0 +20 10010766 . T G 2426.06 . AC=2;AF=1.00;AN=2;DP=69;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=60.00;QD=29.03;SOR=0.818 GT:AD:DP:GQ:PL 1/1:0,66:66:99:2440,199,0 +20 10011075 . C T 1346.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=5.364;DP=86;ExcessHet=0.0000;FS=1.800;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=16.22;ReadPosRankSum=-1.036;SOR=0.968 GT:AD:DP:GQ:PL 0/1:44,39:83:99:1354,0,1333 +20 10011309 . T C 2707.06 . AC=2;AF=1.00;AN=2;DP=80;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=60.00;QD=30.67;SOR=1.223 GT:AD:DP:GQ:PL 1/1:0,77:77:99:2721,231,0 +20 10011666 . C T 2976.06 . AC=2;AF=1.00;AN=2;DP=74;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.06;QD=26.61;SOR=1.103 GT:AD:DP:GQ:PL 1/1:0,73:73:99:2990,220,0 +20 10012362 . G T 850.06 . AC=2;AF=1.00;AN=2;DP=25;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=54.31;QD=29.20;SOR=4.003 GT:AD:DP:GQ:PL 1/1:0,23:23:69:864,69,0 +20 10012384 . T C 250.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.773;DP=18;ExcessHet=0.0000;FS=7.375;MLEAC=1;MLEAF=0.500;MQ=53.38;MQRankSum=-0.811;QD=13.92;ReadPosRankSum=0.800;SOR=0.044 GT:AD:DP:GQ:PL 0/1:10,8:18:99:258,0,355 +20 10012387 . T C 399.06 . AC=2;AF=1.00;AN=2;DP=18;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=53.38;QD=24.94;SOR=3.258 GT:AD:DP:GQ:PL 1/1:0,16:16:46:413,46,0 +20 10012479 . A G 507.06 . AC=2;AF=1.00;AN=2;DP=18;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=51.29;QD=29.83;SOR=0.804 GT:AD:DP:GQ:PL 1/1:0,17:17:50:521,50,0 +20 10012498 . C G 406.06 . AC=2;AF=1.00;AN=2;DP=11;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=42.15;QD=28.55;SOR=1.270 GT:AD:DP:GQ:PL 1/1:0,11:11:33:420,33,0 +20 10012518 . T C 407.06 . AC=2;AF=1.00;AN=2;DP=12;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=43.58;QD=34.42;SOR=0.859 GT:AD:DP:GQ:PL 1/1:0,11:11:33:421,33,0 +20 10012521 . C T 92.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=1.335;DP=12;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=40.86;MQRankSum=-0.376;QD=7.72;ReadPosRankSum=2.093;SOR=0.693 GT:AD:DP:GQ:PL 0/1:8,4:12:99:100,0,223 +20 10012570 . G GCA 434.02 . AC=2;AF=1.00;AN=2;DP=10;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=40.42;QD=28.53;SOR=3.258 GT:AD:DP:GQ:PL 1/1:0,10:10:30:448,30,0 +20 10012573 . T G 195.05 . AC=2;AF=1.00;AN=2;DP=11;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=41.49;QD=17.73;SOR=3.442 GT:AD:DP:GQ:PL 1/1:0,11:11:26:209,26,0 +20 10012631 . C CG 514.60 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.659;DP=21;ExcessHet=0.0000;FS=8.822;MLEAC=1;MLEAF=0.500;MQ=48.34;MQRankSum=-1.670;QD=24.50;ReadPosRankSum=-1.777;SOR=0.048 GT:AD:DP:GQ:PL 0/1:8,13:21:99:522,0,237 +20 10012636 . G C 397.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.575;DP=22;ExcessHet=0.0000;FS=5.959;MLEAC=1;MLEAF=0.500;MQ=48.93;MQRankSum=-1.513;QD=18.07;ReadPosRankSum=-1.777;SOR=0.058 GT:AD:DP:GQ:PL 0/1:8,14:22:99:405,0,294 +20 10012714 . G C 1315.06 . AC=2;AF=1.00;AN=2;DP=36;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=52.52;QD=27.23;SOR=2.964 GT:AD:DP:GQ:PL 1/1:0,35:35:99:1329,105,0 +20 10013119 . C T 1032.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.724;DP=61;ExcessHet=0.0000;FS=2.248;MLEAC=1;MLEAF=0.500;MQ=51.43;MQRankSum=-1.089;QD=17.50;ReadPosRankSum=0.159;SOR=0.405 GT:AD:DP:GQ:PL 0/1:29,30:59:99:1040,0,936 +20 10015679 . C T 161.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.200;DP=10;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=16.16;ReadPosRankSum=0.497;SOR=0.693 GT:AD:DP:GQ:PL 0/1:5,5:10:99:169,0,166 +20 10015761 . T C 365.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.982;DP=23;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=58.99;MQRankSum=1.294;QD=16.62;ReadPosRankSum=1.805;SOR=0.352 GT:AD:DP:GQ:PL 0/1:9,13:22:99:373,0,284 +20 10018158 . G C 1660.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=5.213;DP=94;ExcessHet=0.0000;FS=0.808;MLEAC=1;MLEAF=0.500;MQ=59.80;MQRankSum=1.118;QD=18.87;ReadPosRankSum=1.179;SOR=0.834 GT:AD:DP:GQ:PL 0/1:40,48:88:99:1668,0,1165 +20 10018555 . G A 1588.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.627;DP=84;ExcessHet=0.0000;FS=4.241;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=19.86;ReadPosRankSum=0.815;SOR=0.627 GT:AD:DP:GQ:PL 0/1:35,45:80:99:1596,0,1211 +20 10019093 . A G 1265.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.452;DP=73;ExcessHet=0.0000;FS=1.990;MLEAC=1;MLEAF=0.500;MQ=59.68;MQRankSum=1.073;QD=18.34;ReadPosRankSum=-0.252;SOR=0.665 GT:AD:DP:GQ:PL 0/1:33,36:69:99:1273,0,1104 +20 10020229 . G A 1559.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=5.792;DP=84;ExcessHet=0.0000;FS=0.833;MLEAC=1;MLEAF=0.500;MQ=59.50;MQRankSum=0.104;QD=19.02;ReadPosRankSum=-0.549;SOR=0.573 GT:AD:DP:GQ:PL 0/1:38,44:82:99:1567,0,1130 +20 10023689 . G A 1873.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.144;DP=82;ExcessHet=0.0000;FS=0.877;MLEAC=1;MLEAF=0.500;MQ=59.77;MQRankSum=1.352;QD=23.42;ReadPosRankSum=1.162;SOR=0.549 GT:AD:DP:GQ:PL 0/1:29,51:80:99:1881,0,946 +20 10024107 . C T 1715.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=5.770;DP=89;ExcessHet=0.0000;FS=0.817;MLEAC=1;MLEAF=0.500;MQ=59.43;MQRankSum=-1.546;QD=19.95;ReadPosRankSum=0.148;SOR=0.823 GT:AD:DP:GQ:PL 0/1:38,48:86:99:1723,0,1086 +20 10024288 . C T 70.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-3.728;DP=67;ExcessHet=0.0000;FS=38.617;MLEAC=1;MLEAF=0.500;MQ=52.85;MQRankSum=-5.589;QD=1.10;ReadPosRankSum=2.599;SOR=5.132 GT:AD:DP:GQ:PL 0/1:52,12:64:78:78,0,1623 +20 10024294 . C T 189.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-4.772;DP=67;ExcessHet=0.0000;FS=64.013;MLEAC=1;MLEAF=0.500;MQ=51.67;MQRankSum=-4.001;QD=3.01;ReadPosRankSum=2.236;SOR=5.667 GT:AD:DP:GQ:PL 0/1:47,16:63:99:197,0,1450 +20 10026794 . C T 1105.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.828;DP=56;ExcessHet=0.0000;FS=2.399;MLEAC=1;MLEAF=0.500;MQ=59.59;MQRankSum=-0.719;QD=21.26;ReadPosRankSum=-0.533;SOR=0.428 GT:AD:DP:GQ:PL 0/1:19,33:52:99:1113,0,529 +20 10027868 . A G 1324.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-5.793;DP=91;ExcessHet=0.0000;FS=6.868;MLEAC=1;MLEAF=0.500;MQ=59.49;MQRankSum=0.032;QD=14.88;ReadPosRankSum=1.872;SOR=0.881 GT:AD:DP:GQ:PL 0/1:44,45:89:99:1332,0,1512 +20 10027872 . A G 1539.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-5.491;DP=88;ExcessHet=0.0000;FS=8.870;MLEAC=1;MLEAF=0.500;MQ=59.48;MQRankSum=0.101;QD=18.11;ReadPosRankSum=1.053;SOR=0.826 GT:AD:DP:GQ:PL 0/1:40,45:85:99:1547,0,1439 +20 10030188 . T A 1393.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.711;DP=82;ExcessHet=0.0000;FS=9.186;MLEAC=1;MLEAF=0.500;MQ=59.49;MQRankSum=-1.013;QD=17.21;ReadPosRankSum=-0.553;SOR=1.105 GT:AD:DP:GQ:PL 0/1:42,39:81:99:1401,0,1524 +20 10031342 . G A 1855.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=1.833;DP=93;ExcessHet=0.0000;FS=1.714;MLEAC=1;MLEAF=0.500;MQ=59.75;MQRankSum=-0.866;QD=19.95;ReadPosRankSum=-0.012;SOR=0.955 GT:AD:DP:GQ:PL 0/1:41,52:93:99:1863,0,1375 +20 10031798 . G A 4311.06 . AC=2;AF=1.00;AN=2;DP=107;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.61;QD=29.52;SOR=0.900 GT:AD:DP:GQ:PL 1/1:0,104:104:99:4325,313,0 +20 10032094 . G A 1241.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=5.488;DP=86;ExcessHet=0.0000;FS=6.039;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=14.96;ReadPosRankSum=-0.579;SOR=0.260 GT:AD:DP:GQ:PL 0/1:47,36:83:99:1249,0,1497 +20 10032882 . A T 1223.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-3.697;DP=76;ExcessHet=0.0000;FS=4.673;MLEAC=1;MLEAF=0.500;MQ=59.70;MQRankSum=-1.014;QD=16.32;ReadPosRankSum=0.626;SOR=0.338 GT:AD:DP:GQ:PL 0/1:39,36:75:99:1231,0,1406 +20 10034306 . T C 803.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-3.661;DP=80;ExcessHet=0.0000;FS=0.890;MLEAC=1;MLEAF=0.500;MQ=59.48;MQRankSum=1.150;QD=10.72;ReadPosRankSum=0.539;SOR=0.685 GT:AD:DP:GQ:PL 0/1:46,29:75:99:811,0,1593 +20 10037709 . A T 1024.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.367;DP=73;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=59.68;MQRankSum=0.934;QD=14.43;ReadPosRankSum=0.040;SOR=0.608 GT:AD:DP:GQ:PL 0/1:39,32:71:99:1032,0,1354 +20 10039371 . T G 1345.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-3.260;DP=76;ExcessHet=0.0000;FS=6.144;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=18.18;ReadPosRankSum=0.391;SOR=1.031 GT:AD:DP:GQ:PL 0/1:34,40:74:99:1353,0,1194 +20 10042761 . A G 3536.06 . AC=2;AF=1.00;AN=2;DP=93;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=60.00;QD=33.47;SOR=1.364 GT:AD:DP:GQ:PL 1/1:0,90:90:99:3550,269,0 +20 10043002 . A T 1308.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=3.986;DP=89;ExcessHet=0.0000;FS=2.877;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=15.22;ReadPosRankSum=-0.035;SOR=0.434 GT:AD:DP:GQ:PL 0/1:48,38:86:99:1316,0,1658 +20 10044849 . A G 2106.06 . AC=2;AF=1.00;AN=2;DP=59;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.61;QD=32.91;SOR=1.316 GT:AD:DP:GQ:PL 1/1:0,59:59:99:2120,177,0 +20 10050828 . T C 1248.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.704;DP=91;ExcessHet=0.0000;FS=2.887;MLEAC=1;MLEAF=0.500;MQ=59.54;MQRankSum=0.892;QD=14.52;ReadPosRankSum=-0.140;SOR=0.521 GT:AD:DP:GQ:PL 0/1:49,37:86:99:1256,0,1768 +20 10052688 . C A 1083.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.180;DP=83;ExcessHet=0.0000;FS=3.135;MLEAC=1;MLEAF=0.500;MQ=59.78;MQRankSum=0.870;QD=14.07;ReadPosRankSum=1.443;SOR=0.379 GT:AD:DP:GQ:PL 0/1:45,32:77:99:1091,0,1645 +20 10067264 . G A 2937.06 . AC=2;AF=1.00;AN=2;DP=73;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.37;QD=31.31;SOR=0.776 GT:AD:DP:GQ:PL 1/1:0,73:73:99:2951,219,0 +20 10067722 . A C 2161.06 . AC=2;AF=1.00;AN=2;DP=59;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=60.00;QD=31.45;SOR=0.846 GT:AD:DP:GQ:PL 1/1:0,54:54:99:2175,163,0 +20 10068981 . G A 2444.06 . AC=2;AF=1.00;AN=2;DP=63;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=60.00;QD=33.27;SOR=0.950 GT:AD:DP:GQ:PL 1/1:0,59:59:99:2458,178,0 +20 10070602 . T C 2706.06 . AC=2;AF=1.00;AN=2;DP=76;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=58.78;QD=31.26;SOR=0.749 GT:AD:DP:GQ:PL 1/1:0,72:72:99:2720,216,0 +20 10071135 . C T 3272.06 . AC=2;AF=1.00;AN=2;DP=88;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.21;QD=27.76;SOR=1.003 GT:AD:DP:GQ:PL 1/1:0,79:79:99:3286,238,0 +20 10071187 . G A 3425.06 . AC=2;AF=1.00;AN=2;DP=85;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.73;QD=29.09;SOR=1.367 GT:AD:DP:GQ:PL 1/1:0,82:82:99:3439,246,0 +20 10072505 . A G 2114.06 . AC=2;AF=1.00;AN=2;DP=67;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=60.00;QD=33.03;SOR=0.822 GT:AD:DP:GQ:PL 1/1:0,64:64:99:2128,191,0 +20 10074187 . A G 3005.06 . AC=2;AF=1.00;AN=2;DP=78;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.41;QD=26.08;SOR=0.859 GT:AD:DP:GQ:PL 1/1:0,76:76:99:3019,229,0 +20 10074716 . G A 2444.06 . AC=2;AF=1.00;AN=2;DP=71;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.68;QD=33.85;SOR=1.249 GT:AD:DP:GQ:PL 1/1:0,65:65:99:2458,195,0 +20 10074806 . G A 2832.06 . AC=2;AF=1.00;AN=2;DP=75;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.38;QD=27.08;SOR=0.840 GT:AD:DP:GQ:PL 1/1:0,71:71:99:2846,213,0 +20 10075043 . T C 2420.06 . AC=2;AF=1.00;AN=2;DP=64;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.64;QD=25.42;SOR=1.107 GT:AD:DP:GQ:PL 1/1:0,61:61:99:2434,184,0 +20 10075168 . C T 3627.06 . AC=2;AF=1.00;AN=2;DP=91;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.37;QD=27.65;SOR=0.997 GT:AD:DP:GQ:PL 1/1:0,88:88:99:3641,264,0 +20 10076250 . A G 1128.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-3.386;DP=82;ExcessHet=0.0000;FS=7.546;MLEAC=1;MLEAF=0.500;MQ=59.41;MQRankSum=-1.423;QD=14.29;ReadPosRankSum=0.270;SOR=0.344 GT:AD:DP:GQ:PL 0/1:40,39:79:99:1136,0,1339 +20 10076339 . A G 1330.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.069;DP=76;ExcessHet=0.0000;FS=1.992;MLEAC=1;MLEAF=0.500;MQ=59.70;MQRankSum=-0.866;QD=18.48;ReadPosRankSum=1.015;SOR=0.446 GT:AD:DP:GQ:PL 0/1:32,40:72:99:1338,0,1035 +20 10076399 . G A 1828.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=4.154;DP=95;ExcessHet=0.0000;FS=1.680;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=19.45;ReadPosRankSum=-1.058;SOR=0.952 GT:AD:DP:GQ:PL 0/1:44,50:94:99:1836,0,1544 +20 10077752 . T C 1366.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-6.503;DP=83;ExcessHet=0.0000;FS=4.458;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=17.30;ReadPosRankSum=-0.352;SOR=1.251 GT:AD:DP:GQ:PL 0/1:34,45:79:99:1374,0,1187 +20 10081750 . C A 1374.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.670;DP=92;ExcessHet=0.0000;FS=0.824;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=16.56;ReadPosRankSum=-0.406;SOR=0.664 GT:AD:DP:GQ:PL 0/1:44,39:83:99:1382,0,1525 +20 10081800 . C T 1130.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.241;DP=69;ExcessHet=0.0000;FS=11.086;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=16.63;ReadPosRankSum=-2.622;SOR=0.143 GT:AD:DP:GQ:PL 0/1:35,33:68:99:1138,0,1222 +20 10082892 . C T 1673.06 . AC=2;AF=1.00;AN=2;DP=44;ExcessHet=0.0000;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=59.48;QD=29.48;SOR=0.836 GT:AD:DP:GQ:PL 1/1:0,43:43:99:1687,129,0 +20 10085211 . A T 1231.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.501;DP=81;ExcessHet=0.0000;FS=0.870;MLEAC=1;MLEAF=0.500;MQ=59.72;MQRankSum=-1.028;QD=16.21;ReadPosRankSum=-1.405;SOR=0.723 GT:AD:DP:GQ:PL 0/1:40,36:76:99:1239,0,1443 +20 10086110 . G A 1295.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.343;DP=83;ExcessHet=0.0000;FS=1.810;MLEAC=1;MLEAF=0.500;MQ=59.16;MQRankSum=-0.680;QD=16.00;ReadPosRankSum=0.170;SOR=0.495 GT:AD:DP:GQ:PL 0/1:43,38:81:99:1303,0,1506 +20 10086283 . G T 1046.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.304;DP=86;ExcessHet=0.0000;FS=0.855;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=12.46;ReadPosRankSum=1.889;SOR=0.529 GT:AD:DP:GQ:PL 0/1:52,32:84:99:1054,0,1771 +20 10086619 . T A 817.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.256;DP=76;ExcessHet=0.0000;FS=0.958;MLEAC=1;MLEAF=0.500;MQ=59.70;MQRankSum=-1.312;QD=11.68;ReadPosRankSum=-0.760;SOR=0.846 GT:AD:DP:GQ:PL 0/1:45,25:70:99:825,0,1603 +20 10086853 . G A 1023.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=3.915;DP=75;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=59.44;MQRankSum=-0.177;QD=14.02;ReadPosRankSum=-0.100;SOR=0.767 GT:AD:DP:GQ:PL 0/1:41,32:73:99:1031,0,1280 +20 10086954 . G A 1116.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.606;DP=70;ExcessHet=0.0000;FS=4.812;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=16.42;ReadPosRankSum=-0.534;SOR=1.185 GT:AD:DP:GQ:PL 0/1:34,34:68:99:1124,0,1051 +20 10087394 . T G 1709.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.340;DP=85;ExcessHet=0.0000;FS=4.225;MLEAC=1;MLEAF=0.500;MQ=59.46;MQRankSum=1.207;QD=20.35;ReadPosRankSum=0.885;SOR=0.436 GT:AD:DP:GQ:PL 0/1:35,49:84:99:1717,0,1186 +20 10087754 . T G 1403.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.239;DP=87;ExcessHet=0.0000;FS=0.851;MLEAC=1;MLEAF=0.500;MQ=60.60;MQRankSum=2.166;QD=17.77;ReadPosRankSum=-0.378;SOR=0.596 GT:AD:DP:GQ:PL 0/1:37,42:79:99:1411,0,1236 +20 10088730 . G A 637.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.224;DP=57;ExcessHet=0.0000;FS=15.383;MLEAC=1;MLEAF=0.500;MQ=52.92;MQRankSum=-4.839;QD=12.26;ReadPosRankSum=0.581;SOR=1.592 GT:AD:DP:GQ:PL 0/1:29,23:52:99:645,0,965 +20 10088736 . A C 774.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.282;DP=60;ExcessHet=0.0000;FS=9.673;MLEAC=1;MLEAF=0.500;MQ=52.86;MQRankSum=-5.169;QD=14.08;ReadPosRankSum=0.573;SOR=0.851 GT:AD:DP:GQ:PL 0/1:28,27:55:99:782,0,854 +20 10088747 . A G 798.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-3.877;DP=56;ExcessHet=0.0000;FS=7.653;MLEAC=1;MLEAF=0.500;MQ=52.20;MQRankSum=-4.907;QD=14.79;ReadPosRankSum=0.009;SOR=1.092 GT:AD:DP:GQ:PL 0/1:25,29:54:99:806,0,854 +20 10088895 . C T 556.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.330;DP=43;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=57.80;MQRankSum=0.260;QD=13.92;ReadPosRankSum=1.238;SOR=0.727 GT:AD:DP:GQ:PL 0/1:22,18:40:99:564,0,651 +20 10088980 . T C 357.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.826;DP=60;ExcessHet=0.0000;FS=4.045;MLEAC=1;MLEAF=0.500;MQ=55.36;MQRankSum=-3.210;QD=6.62;ReadPosRankSum=0.950;SOR=1.295 GT:AD:DP:GQ:PL 0/1:37,17:54:99:365,0,1159 +20 10088985 . T C 456.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.437;DP=63;ExcessHet=0.0000;FS=2.347;MLEAC=1;MLEAF=0.500;MQ=55.03;MQRankSum=-3.151;QD=7.61;ReadPosRankSum=0.799;SOR=1.056 GT:AD:DP:GQ:PL 0/1:42,18:60:99:464,0,1357 +20 10089441 . A G 1200.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-4.885;DP=79;ExcessHet=0.0000;FS=6.071;MLEAC=1;MLEAF=0.500;MQ=59.71;MQRankSum=-0.948;QD=15.80;ReadPosRankSum=-0.156;SOR=1.363 GT:AD:DP:GQ:PL 0/1:37,39:76:99:1208,0,1313 +20 10089525 . C T 1569.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=5.859;DP=83;ExcessHet=0.0000;FS=4.260;MLEAC=1;MLEAF=0.500;MQ=59.50;MQRankSum=1.531;QD=19.38;ReadPosRankSum=0.862;SOR=0.617 GT:AD:DP:GQ:PL 0/1:38,43:81:99:1577,0,1088 +20 10090764 . A G 861.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.659;DP=67;ExcessHet=0.0000;FS=4.975;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=13.68;ReadPosRankSum=1.207;SOR=0.310 GT:AD:DP:GQ:PL 0/1:34,29:63:99:869,0,1207 +20 10092415 . A G 1656.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-6.731;DP=103;ExcessHet=0.0000;FS=0.741;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=16.40;ReadPosRankSum=0.082;SOR=0.665 GT:AD:DP:GQ:PL 0/1:52,49:101:99:1664,0,1901 +20 10092927 . G T 127.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.507;DP=83;ExcessHet=0.0000;FS=60.191;MLEAC=1;MLEAF=0.500;MQ=59.16;MQRankSum=-3.009;QD=1.77;ReadPosRankSum=-0.220;SOR=5.279 GT:AD:DP:GQ:PL 0/1:59,13:72:99:135,0,1864 +20 10093923 . T A 1096.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.667;DP=73;ExcessHet=0.0000;FS=0.924;MLEAC=1;MLEAF=0.500;MQ=59.25;MQRankSum=0.358;QD=16.37;ReadPosRankSum=-1.583;SOR=0.772 GT:AD:DP:GQ:PL 0/1:35,32:67:99:1104,0,1257 +20 10094251 . T A 1291.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.251;DP=67;ExcessHet=0.0000;FS=11.483;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=20.83;ReadPosRankSum=1.806;SOR=1.211 GT:AD:DP:GQ:PL 0/1:26,36:62:99:1299,0,781 +20 10095741 . A G 1096.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-0.534;DP=72;ExcessHet=0.0000;FS=4.721;MLEAC=1;MLEAF=0.500;MQ=57.39;MQRankSum=-2.313;QD=15.67;ReadPosRankSum=-0.500;SOR=0.515 GT:AD:DP:GQ:PL 0/1:36,34:70:99:1104,0,1233 +20 10096768 . A C 1703.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.764;DP=96;ExcessHet=0.0000;FS=3.983;MLEAC=1;MLEAF=0.500;MQ=59.28;MQRankSum=-1.609;QD=18.72;ReadPosRankSum=0.613;SOR=0.445 GT:AD:DP:GQ:PL 0/1:42,49:91:99:1711,0,1452 +20 10096958 . G A 566.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=1.277;DP=64;ExcessHet=0.0000;FS=7.479;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.000;QD=8.99;ReadPosRankSum=-2.151;SOR=0.784 GT:AD:DP:GQ:PL 0/1:44,19:63:99:574,0,1571 +20 10097075 . T G 1440.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-2.398;DP=95;ExcessHet=0.0000;FS=6.783;MLEAC=1;MLEAF=0.500;MQ=58.12;MQRankSum=-1.398;QD=15.83;ReadPosRankSum=0.242;SOR=0.694 GT:AD:DP:GQ:PL 0/1:44,47:91:99:1448,0,1485 +20 10097789 . T C 709.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.157;DP=60;ExcessHet=0.0000;FS=5.374;MLEAC=1;MLEAF=0.500;MQ=58.05;MQRankSum=-2.805;QD=12.45;ReadPosRankSum=0.220;SOR=0.756 GT:AD:DP:GQ:PL 0/1:34,23:57:99:717,0,1190 +20 10097928 . G A 591.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.203;DP=37;ExcessHet=0.0000;FS=1.315;MLEAC=1;MLEAF=0.500;MQ=58.11;MQRankSum=-1.654;QD=16.43;ReadPosRankSum=-0.079;SOR=0.951 GT:AD:DP:GQ:PL 0/1:17,19:36:99:599,0,586 +20 10098110 . G C 573.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=2.510;DP=36;ExcessHet=0.0000;FS=6.658;MLEAC=1;MLEAF=0.500;MQ=58.71;MQRankSum=-1.477;QD=15.93;ReadPosRankSum=-0.730;SOR=0.069 GT:AD:DP:GQ:PL 0/1:19,17:36:99:581,0,631 +20 10098786 . C T 32.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=0.431;DP=9;ExcessHet=0.0000;FS=0.000;MLEAC=1;MLEAF=0.500;MQ=54.65;MQRankSum=-2.200;QD=3.63;ReadPosRankSum=-1.383;SOR=0.132 GT:AD:DP:GQ:PL 0/1:7,2:9:40:40,0,217 +20 10099220 . A G 598.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=-1.664;DP=47;ExcessHet=0.0000;FS=1.137;MLEAC=1;MLEAF=0.500;MQ=57.74;MQRankSum=-2.596;QD=13.30;ReadPosRankSum=0.629;SOR=0.519 GT:AD:DP:GQ:PL 0/1:25,20:45:99:606,0,873 +20 10099535 . G A 1356.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=5.034;DP=68;ExcessHet=0.0000;FS=2.172;MLEAC=1;MLEAF=0.500;MQ=59.04;MQRankSum=-1.418;QD=20.87;ReadPosRankSum=-0.777;SOR=0.408 GT:AD:DP:GQ:PL 0/1:26,39:65:99:1364,0,686 +20 10099565 . C T 1367.64 . AC=1;AF=0.500;AN=2;BaseQRankSum=4.595;DP=70;ExcessHet=0.0000;FS=8.736;MLEAC=1;MLEAF=0.500;MQ=59.40;MQRankSum=-1.266;QD=19.82;ReadPosRankSum=1.225;SOR=0.191 GT:AD:DP:GQ:PL 0/1:31,38:69:99:1375,0,994