Added exception for GQB values greater than MAX_GENOTYPE_QUAL and tests.
This commit is contained in:
parent
9b32cf5291
commit
3daed9e5a1
|
|
@ -367,10 +367,10 @@ public class HaplotypeCaller extends ActiveRegionWalker<List<VariantContext>, In
|
|||
*
|
||||
* This argument allows you to set the GQ boundaries. HC expects a list of multiple GQ threshold values. To pass
|
||||
* multiple values, you provide them one by one with the argument, as in `-GQB 10 -GQB 20 -GQB 30` and so on. Note
|
||||
* that GQ values are capped at 99 in the GATK.
|
||||
* that GQ values are capped at 99 in the GATK, so values must be integers in [1, 99].
|
||||
*/
|
||||
@Advanced
|
||||
@Argument(fullName="GVCFGQBands", shortName="GQB", doc="GQ thresholds for reference confidence bands", required = false)
|
||||
@Argument(fullName="GVCFGQBands", shortName="GQB", doc="GQ thresholds for reference confidence bands (must be in [1, 99] and specified in increasing order)", required = false)
|
||||
protected List<Integer> GVCFGQBands = new ArrayList<Integer>(70) {{
|
||||
for (int i=1; i<=60; ++i) add(i);
|
||||
add(70); add(80); add(90); add(99);
|
||||
|
|
@ -754,8 +754,8 @@ public class HaplotypeCaller extends ActiveRegionWalker<List<VariantContext>, In
|
|||
|
||||
try {
|
||||
vcfWriter = new GVCFWriter(vcfWriter, GVCFGQBands, HCAC.genotypeArgs.samplePloidy);
|
||||
} catch ( IllegalArgumentException e ) {
|
||||
throw new UserException.BadArgumentValue("GQBands", "are malformed: " + e.getMessage());
|
||||
} catch ( final IllegalArgumentException e ) {
|
||||
throw new UserException.BadArgumentValue("GVCFGQBands", e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,13 +74,15 @@ import java.util.List;
|
|||
*/
|
||||
public class GVCFWriter implements VariantContextWriter {
|
||||
|
||||
private static final int MAX_GENOTYPE_QUAL = VCFConstants.MAX_GENOTYPE_QUAL;
|
||||
|
||||
//
|
||||
// Final fields initialized in constructor
|
||||
//
|
||||
/** Where we'll ultimately write our VCF records */
|
||||
final private VariantContextWriter underlyingWriter;
|
||||
private final VariantContextWriter underlyingWriter;
|
||||
|
||||
final private List<HomRefBlock> GQPartitions;
|
||||
private final List<HomRefBlock> GQPartitions;
|
||||
|
||||
/** fields updated on the fly during GVCFWriter operation */
|
||||
int nextAvailableStart = -1;
|
||||
|
|
@ -90,26 +92,28 @@ public class GVCFWriter implements VariantContextWriter {
|
|||
private final int defaultPloidy;
|
||||
|
||||
/**
|
||||
* Is the proposed GQ partitions well-formed?
|
||||
* Are the proposed GQ partitions well-formed?
|
||||
*
|
||||
* @param GQPartitions proposed GQ partitions
|
||||
* @return a non-null string if something is wrong (string explains issue)
|
||||
*/
|
||||
protected static List<HomRefBlock> parsePartitions(final List<Integer> GQPartitions, final int defaultPloidy) {
|
||||
if ( GQPartitions == null ) throw new IllegalArgumentException("GQpartitions cannot be null");
|
||||
if ( GQPartitions.isEmpty() ) throw new IllegalArgumentException("GQpartitions cannot be empty");
|
||||
if ( GQPartitions == null ) throw new IllegalArgumentException("The list of GQ partitions cannot be null.");
|
||||
if ( GQPartitions.isEmpty() ) throw new IllegalArgumentException("The list of GQ partitions cannot be empty.");
|
||||
|
||||
final List<HomRefBlock> result = new LinkedList<>();
|
||||
int lastThreshold = 0;
|
||||
for ( final Integer value : GQPartitions ) {
|
||||
if ( value == null ) throw new IllegalArgumentException("GQPartitions contains a null integer");
|
||||
if ( value < lastThreshold ) throw new IllegalArgumentException("GQPartitions is out of order. Last is " + lastThreshold + " but next is " + value);
|
||||
if ( value == lastThreshold ) throw new IllegalArgumentException("GQPartitions is equal elements: Last is " + lastThreshold + " but next is " + value);
|
||||
result.add(new HomRefBlock(lastThreshold, value,defaultPloidy));
|
||||
if ( value == null || value <= 0 ) throw new IllegalArgumentException("The list of GQ partitions contains a null or non-positive integer.");
|
||||
if ( value < lastThreshold ) throw new IllegalArgumentException(String.format("The list of GQ partitions is out of order. Previous value is %d but the next is %d.", lastThreshold, value));
|
||||
if ( value == lastThreshold ) throw new IllegalArgumentException(String.format("The value %d appears more than once in the list of GQ partitions.", value));
|
||||
if ( value > MAX_GENOTYPE_QUAL ) throw new IllegalArgumentException(String.format("The value %d in the list of GQ partitions is greater than VCFConstants.MAX_GENOTYPE_QUAL = %d.", value, VCFConstants.MAX_GENOTYPE_QUAL));
|
||||
result.add(new HomRefBlock(lastThreshold, value, defaultPloidy));
|
||||
lastThreshold = value;
|
||||
}
|
||||
result.add(new HomRefBlock(lastThreshold, Integer.MAX_VALUE,defaultPloidy));
|
||||
|
||||
if (lastThreshold <= MAX_GENOTYPE_QUAL ) {
|
||||
result.add(new HomRefBlock(lastThreshold, MAX_GENOTYPE_QUAL + 1, defaultPloidy));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
@ -209,10 +213,14 @@ public class GVCFWriter implements VariantContextWriter {
|
|||
}
|
||||
|
||||
private boolean genotypeCanBeMergedInCurrentBlock(final Genotype g) {
|
||||
return currentBlock != null && currentBlock.withinBounds(g.getGQ()) && currentBlock.getPloidy() == g.getPloidy()
|
||||
return currentBlock != null && currentBlock.withinBounds(capToMaxGQ(g.getGQ())) && currentBlock.getPloidy() == g.getPloidy()
|
||||
&& (currentBlock.getMinPLs() == null || !g.hasPL() || (currentBlock.getMinPLs().length == g.getPL().length));
|
||||
}
|
||||
|
||||
private int capToMaxGQ(final int gq) {
|
||||
return Math.min(gq, MAX_GENOTYPE_QUAL);
|
||||
}
|
||||
|
||||
/**
|
||||
* Flush the current hom-ref block, if necessary, to the underlying writer, and reset the currentBlock to null
|
||||
*/
|
||||
|
|
@ -268,7 +276,7 @@ public class GVCFWriter implements VariantContextWriter {
|
|||
// figure out the GQ limits to use based on the GQ of g
|
||||
HomRefBlock partition = null;
|
||||
for ( final HomRefBlock maybePartition : GQPartitions ) {
|
||||
if ( maybePartition.withinBounds(g.getGQ()) ) {
|
||||
if ( maybePartition.withinBounds(capToMaxGQ(g.getGQ())) ) {
|
||||
partition = maybePartition;
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,6 +51,7 @@
|
|||
|
||||
package org.broadinstitute.gatk.tools.walkers.haplotypecaller;
|
||||
|
||||
import htsjdk.variant.vcf.VCFConstants;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.apache.log4j.Level;
|
||||
import org.broadinstitute.gatk.engine.GATKVCFUtils;
|
||||
|
|
@ -67,6 +68,7 @@ import java.util.ArrayList;
|
|||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class HaplotypeCallerGVCFIntegrationTest extends WalkerTest {
|
||||
|
||||
|
|
@ -87,10 +89,10 @@ public class HaplotypeCallerGVCFIntegrationTest extends WalkerTest {
|
|||
//tests.add(new Object[]{NA12878_PCRFREE, ReferenceConfidenceMode.NONE, PCRFreeIntervals, "7f09c261950bf86e435edfa69ed2ec71"});
|
||||
tests.add(new Object[]{NA12878_PCRFREE, ReferenceConfidenceMode.NONE, PCRFreeIntervals, "8d30370465d74fd549d76dd31adc4c0c"});
|
||||
tests.add(new Object[]{NA12878_PCRFREE, ReferenceConfidenceMode.BP_RESOLUTION, PCRFreeIntervals, "cf5545094ebb264fa8eb879fd848d9ef"});
|
||||
tests.add(new Object[]{NA12878_PCRFREE, ReferenceConfidenceMode.GVCF, PCRFreeIntervals, "a6bbc30b82e7864baf64163d55f5aee5"});
|
||||
tests.add(new Object[]{NA12878_PCRFREE, ReferenceConfidenceMode.GVCF, PCRFreeIntervals, "0086cc735cf792a9f236ec057c73b750"});
|
||||
tests.add(new Object[]{NA12878_WEx, ReferenceConfidenceMode.NONE, WExIntervals, "2e81881e92061ad4eb29025ffdc129c7"});
|
||||
tests.add(new Object[]{NA12878_WEx, ReferenceConfidenceMode.BP_RESOLUTION, WExIntervals, "2c67bdc08c8784f2114c2039270b9766"});
|
||||
tests.add(new Object[]{NA12878_WEx, ReferenceConfidenceMode.GVCF, WExIntervals, "63fa5841a21e2c13f1e1a8e2d4ea3380"});
|
||||
tests.add(new Object[]{NA12878_WEx, ReferenceConfidenceMode.GVCF, WExIntervals, "861fa31b135d200f765914126b422cf4"});
|
||||
|
||||
return tests.toArray(new Object[][]{});
|
||||
}
|
||||
|
|
@ -106,11 +108,11 @@ public class HaplotypeCallerGVCFIntegrationTest extends WalkerTest {
|
|||
// this functionality can be adapted to provide input data for whatever you might want in your data
|
||||
tests.add(new Object[]{NA12878_PCRFREE, ReferenceConfidenceMode.NONE, PCRFreeIntervals, "3ae2c7e570855f6d6ca58ddd1089a970"});
|
||||
tests.add(new Object[]{NA12878_PCRFREE, ReferenceConfidenceMode.BP_RESOLUTION, PCRFreeIntervals, "8bb824886fb0e77d0e8317d69f9d1b62"});
|
||||
tests.add(new Object[]{NA12878_PCRFREE, ReferenceConfidenceMode.GVCF, PCRFreeIntervals, "ca87b62a070801e4954d72169b88fb9c"});
|
||||
tests.add(new Object[]{NA12878_PCRFREE, ReferenceConfidenceMode.GVCF, PCRFreeIntervals, "1f19c2b2b528dff502bc1a47701edde7"});
|
||||
tests.add(new Object[]{NA12878_WEx, ReferenceConfidenceMode.NONE, WExIntervals, "63ff771eed3e62340c8938b4963d0add"});
|
||||
tests.add(new Object[]{NA12878_WEx, ReferenceConfidenceMode.BP_RESOLUTION, WExIntervals, "1122a0b3849f42d1c4a654f93b660e1b"});
|
||||
|
||||
final String NA12878bandedResolutionMD5 = "8d4a51af32cd13ba4b3e33dd00c58398";
|
||||
final String NA12878bandedResolutionMD5 = "7240907ec3dc2ed49b55c9956546ba13";
|
||||
tests.add(new Object[]{NA12878_WEx, ReferenceConfidenceMode.GVCF, WExIntervals, NA12878bandedResolutionMD5});
|
||||
tests.add(new Object[]{NA12878_WEx + " -I " + privateTestDir + "NA20313.highCoverageRegion.bam -sn NA12878",
|
||||
ReferenceConfidenceMode.GVCF, WExIntervals, NA12878bandedResolutionMD5});
|
||||
|
|
@ -129,10 +131,10 @@ public class HaplotypeCallerGVCFIntegrationTest extends WalkerTest {
|
|||
// this functionality can be adapted to provide input data for whatever you might want in your data
|
||||
tests.add(new Object[]{NA12878_PCRFREE, ReferenceConfidenceMode.NONE, PCRFreeIntervals, "8bf132d73cf6b0851ae73c6799f19ba9"});
|
||||
tests.add(new Object[]{NA12878_PCRFREE, ReferenceConfidenceMode.BP_RESOLUTION, PCRFreeIntervals, "450906ce3c11860c25b90cf0a56bb1a0"});
|
||||
tests.add(new Object[]{NA12878_PCRFREE, ReferenceConfidenceMode.GVCF, PCRFreeIntervals, "3c0346d41a7e57b45b85a920cc04f51f"});
|
||||
tests.add(new Object[]{NA12878_PCRFREE, ReferenceConfidenceMode.GVCF, PCRFreeIntervals, "49f41972e19f6897659e497d32730dde"});
|
||||
tests.add(new Object[]{NA12878_WEx, ReferenceConfidenceMode.NONE, WExIntervals, "6ad7855dbf6dda2060aa93a3ee010b3e"});
|
||||
tests.add(new Object[]{NA12878_WEx, ReferenceConfidenceMode.BP_RESOLUTION, WExIntervals, "50e628de2a79cd6887af020b713ca3b8"});
|
||||
tests.add(new Object[]{NA12878_WEx, ReferenceConfidenceMode.GVCF, WExIntervals, "8123d8b68b6fa77ef084f292e191622a"});
|
||||
tests.add(new Object[]{NA12878_WEx, ReferenceConfidenceMode.GVCF, WExIntervals, "e48bbcf453e63a6ea5eeda05f6865f94"});
|
||||
|
||||
return tests.toArray(new Object[][]{});
|
||||
}
|
||||
|
|
@ -147,15 +149,14 @@ public class HaplotypeCallerGVCFIntegrationTest extends WalkerTest {
|
|||
// this functionality can be adapted to provide input data for whatever you might want in your data
|
||||
tests.add(new Object[]{NA12878_PCRFREE, ReferenceConfidenceMode.NONE, PCRFreeIntervals, "6662cfc41393257dfd6c39f1af1e3843"});
|
||||
tests.add(new Object[]{NA12878_PCRFREE, ReferenceConfidenceMode.BP_RESOLUTION, PCRFreeIntervals, "0bc1ca3bff07381a344685b048e76ee4"});
|
||||
tests.add(new Object[]{NA12878_PCRFREE, ReferenceConfidenceMode.GVCF, PCRFreeIntervals, "9d1724150feccb0a09b6fad522605bb1"});
|
||||
tests.add(new Object[]{NA12878_PCRFREE, ReferenceConfidenceMode.GVCF, PCRFreeIntervals, "3ff7e3cd9f6b1949d19f52fab53bdb5e"});
|
||||
tests.add(new Object[]{NA12878_WEx, ReferenceConfidenceMode.NONE, WExIntervals, "af0fe243e3b96e59097187cd16ba1597"});
|
||||
tests.add(new Object[]{NA12878_WEx, ReferenceConfidenceMode.BP_RESOLUTION, WExIntervals, "8a094080fb25bbcd39325dcdd62bcf65"});
|
||||
tests.add(new Object[]{NA12878_WEx, ReferenceConfidenceMode.GVCF, WExIntervals, "f35192d245babba9764128abad669019"});
|
||||
tests.add(new Object[]{NA12878_WEx, ReferenceConfidenceMode.GVCF, WExIntervals, "685025831ac783784d7838e568e35f46"});
|
||||
|
||||
return tests.toArray(new Object[][]{});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Test HaplotypeCaller, using MyDataProvider
|
||||
*/
|
||||
|
|
@ -276,7 +277,7 @@ public class HaplotypeCallerGVCFIntegrationTest extends WalkerTest {
|
|||
public void testWrongGVCFNonVariantRecordOrderBugFix() {
|
||||
final String commandLine = String.format("-T HaplotypeCaller --pcr_indel_model NONE -pairHMMSub %s %s -R %s -I %s -L %s -ERC GVCF --no_cmdline_in_header -variant_index_type %s -variant_index_parameter %d",
|
||||
HMM_SUB_IMPLEMENTATION, ALWAYS_LOAD_VECTOR_HMM, b37KGReference, WRONG_GVCF_RECORD_ORDER_BUGFIX_BAM, WRONG_GVCF_RECORD_ORDER_BUGFIX_INTERVALS, GATKVCFUtils.DEFAULT_GVCF_INDEX_TYPE, GATKVCFUtils.DEFAULT_GVCF_INDEX_PARAMETER);
|
||||
final WalkerTestSpec spec = new WalkerTestSpec(commandLine + " -o %s", Arrays.asList("6facd3d2cf9f52877182d627cef1c872"));
|
||||
final WalkerTestSpec spec = new WalkerTestSpec(commandLine + " -o %s", Arrays.asList("f70b7052dfeb065ee8c7d796f1a1f84a"));
|
||||
spec.disableShadowBCF();
|
||||
executeTest("testMissingGVCFIndexingStrategyException", spec);
|
||||
}
|
||||
|
|
@ -293,7 +294,7 @@ public class HaplotypeCallerGVCFIntegrationTest extends WalkerTest {
|
|||
public void testNoCallGVCFMissingPLsBugFix() {
|
||||
final String commandLine = String.format("-T HaplotypeCaller --pcr_indel_model NONE -pairHMMSub %s %s -R %s -I %s -L %s -ERC GVCF --no_cmdline_in_header -variant_index_type %s -variant_index_parameter %d",
|
||||
HMM_SUB_IMPLEMENTATION, ALWAYS_LOAD_VECTOR_HMM, b37KGReference, NOCALL_GVCF_BUGFIX_BAM, NOCALL_GVCF_BUGFIX_INTERVALS, GATKVCFUtils.DEFAULT_GVCF_INDEX_TYPE, GATKVCFUtils.DEFAULT_GVCF_INDEX_PARAMETER);
|
||||
final WalkerTestSpec spec = new WalkerTestSpec(commandLine + " -o %s", Arrays.asList("9fc3c68f46e747b730615c0be98cb013"));
|
||||
final WalkerTestSpec spec = new WalkerTestSpec(commandLine + " -o %s", Arrays.asList("66f242cf3f1f1776c743505b84505f94"));
|
||||
spec.disableShadowBCF();
|
||||
executeTest("testNoCallGVCFMissingPLsBugFix", spec);
|
||||
}
|
||||
|
|
@ -326,7 +327,7 @@ public class HaplotypeCallerGVCFIntegrationTest extends WalkerTest {
|
|||
public void testAlleleSpecificAnnotations() {
|
||||
final String commandLine = String.format("-T HaplotypeCaller --pcr_indel_model NONE -pairHMMSub %s %s -R %s -I %s -L %s -ERC GVCF --no_cmdline_in_header -variant_index_type %s -variant_index_parameter %d -G Standard -G AS_Standard --disableDithering",
|
||||
HMM_SUB_IMPLEMENTATION, ALWAYS_LOAD_VECTOR_HMM, b37KGReference, privateTestDir + "NA12878.HiSeq.b37.chr20.10_11mb.bam", "20:10433000-10437000", GATKVCFUtils.DEFAULT_GVCF_INDEX_TYPE, GATKVCFUtils.DEFAULT_GVCF_INDEX_PARAMETER);
|
||||
final WalkerTestSpec spec = new WalkerTestSpec(commandLine + " -o %s", Collections.singletonList("d986868d83057c0ecdf7ba177b8282f3"));
|
||||
final WalkerTestSpec spec = new WalkerTestSpec(commandLine + " -o %s", Collections.singletonList("5877ccbc99bbaffbcd5fe3aaa3d7e7f7"));
|
||||
spec.disableShadowBCF();
|
||||
executeTest(" testAlleleSpecificAnnotations", spec);
|
||||
}
|
||||
|
|
@ -335,7 +336,7 @@ public class HaplotypeCallerGVCFIntegrationTest extends WalkerTest {
|
|||
public void testASMQMateRankSumAnnotation() {
|
||||
final String commandLine = String.format("-T HaplotypeCaller --pcr_indel_model NONE -pairHMMSub %s %s -R %s -I %s -L %s -ERC GVCF --no_cmdline_in_header -variant_index_type %s -variant_index_parameter %d -A AS_MQMateRankSumTest --disableDithering",
|
||||
HMM_SUB_IMPLEMENTATION, ALWAYS_LOAD_VECTOR_HMM, b37KGReference, privateTestDir + "NA12878.HiSeq.b37.chr20.10_11mb.bam", "20:10433000-10437000", GATKVCFUtils.DEFAULT_GVCF_INDEX_TYPE, GATKVCFUtils.DEFAULT_GVCF_INDEX_PARAMETER);
|
||||
final WalkerTestSpec spec = new WalkerTestSpec(commandLine + " -o %s", Collections.singletonList("87723bd4442c7ec25f65a77d6434957a"));
|
||||
final WalkerTestSpec spec = new WalkerTestSpec(commandLine + " -o %s", Collections.singletonList("0381fec3b0d21508b28fa62c2a61ccfc"));
|
||||
spec.disableShadowBCF();
|
||||
executeTest(" testASMQMateRankSumAnnotation", spec);
|
||||
}
|
||||
|
|
@ -344,7 +345,7 @@ public class HaplotypeCallerGVCFIntegrationTest extends WalkerTest {
|
|||
public void testASInsertSizeRankSum() {
|
||||
final String commandLine = String.format("-T HaplotypeCaller --pcr_indel_model NONE -pairHMMSub %s %s -R %s -I %s -L %s -ERC GVCF --no_cmdline_in_header -variant_index_type %s -variant_index_parameter %d -G Standard -G AS_Standard --disableDithering -A AS_InsertSizeRankSum",
|
||||
HMM_SUB_IMPLEMENTATION, ALWAYS_LOAD_VECTOR_HMM, b37KGReference, privateTestDir + "NA12878.HiSeq.b37.chr20.10_11mb.bam", "20:10433000-10437000", GATKVCFUtils.DEFAULT_GVCF_INDEX_TYPE, GATKVCFUtils.DEFAULT_GVCF_INDEX_PARAMETER);
|
||||
final WalkerTestSpec spec = new WalkerTestSpec(commandLine + " -o %s", Collections.singletonList("a63d6912b2f2fab7debee9488fbbd0b0"));
|
||||
final WalkerTestSpec spec = new WalkerTestSpec(commandLine + " -o %s", Collections.singletonList("4599a591427c188c117f09ac40cc866f"));
|
||||
spec.disableShadowBCF();
|
||||
executeTest(" testASInsertSizeRankSum", spec);
|
||||
}
|
||||
|
|
@ -353,7 +354,7 @@ public class HaplotypeCallerGVCFIntegrationTest extends WalkerTest {
|
|||
public void testHaplotypeCallerMultiAllelicNonRef() {
|
||||
final String commandLine = String.format("-T HaplotypeCaller -R %s -I %s -L %s -ERC GVCF --no_cmdline_in_header -variant_index_type %s -variant_index_parameter %d -A StrandAlleleCountsBySample",
|
||||
b37KGReference, privateTestDir + "multiallelic-nonref.bam", "2:47641259-47641859", GATKVCFUtils.DEFAULT_GVCF_INDEX_TYPE, GATKVCFUtils.DEFAULT_GVCF_INDEX_PARAMETER);
|
||||
final WalkerTestSpec spec = new WalkerTestSpec(commandLine + " -o %s", Collections.singletonList("182aa78f42235d2b4dabb87cc6c8a433"));
|
||||
final WalkerTestSpec spec = new WalkerTestSpec(commandLine + " -o %s", Collections.singletonList("19fc2c5218d907fcdcd36de2afbef19c"));
|
||||
spec.disableShadowBCF();
|
||||
executeTest(" testHaplotypeCallerMultiAllelicNonRef", spec);
|
||||
}
|
||||
|
|
@ -362,7 +363,7 @@ public class HaplotypeCallerGVCFIntegrationTest extends WalkerTest {
|
|||
public void testHaplotypeCallerMaxNumPLValues() {
|
||||
final String commandLine = String.format("-T HaplotypeCaller -R %s -I %s -L %s -ERC GVCF --no_cmdline_in_header -variant_index_type %s -variant_index_parameter %d -ploidy 4 -maxNumPLValues 70",
|
||||
b37KGReference, privateTestDir + "NA12878.HiSeq.b37.chr20.10_11mb.bam", validationDataLocation + "NA12878.HiSeq.b37.chr20.10_11mb.test.intervals", GATKVCFUtils.DEFAULT_GVCF_INDEX_TYPE, GATKVCFUtils.DEFAULT_GVCF_INDEX_PARAMETER);
|
||||
final WalkerTestSpec spec = new WalkerTestSpec(commandLine + " -o %s", Collections.singletonList("446604d4398d4c1bad41b9506624ab91"));
|
||||
final WalkerTestSpec spec = new WalkerTestSpec(commandLine + " -o %s", Collections.singletonList("b2adc744d9dff2f488149bcc96d6bb6d"));
|
||||
spec.disableShadowBCF();
|
||||
executeTest("testHaplotypeCallerMaxNumPLValues", spec);
|
||||
}
|
||||
|
|
@ -379,7 +380,7 @@ public class HaplotypeCallerGVCFIntegrationTest extends WalkerTest {
|
|||
final String commandLine = String.format("-T HaplotypeCaller -R %s -I %s -L %s -ERC GVCF --no_cmdline_in_header -variant_index_type %s -variant_index_parameter %d -ploidy 4 -maxNumPLValues 30 -log %s",
|
||||
b37KGReference, privateTestDir + "NA12878.HiSeq.b37.chr20.10_11mb.bam", validationDataLocation + "NA12878.HiSeq.b37.chr20.10_11mb.test.intervals",
|
||||
GATKVCFUtils.DEFAULT_GVCF_INDEX_TYPE, GATKVCFUtils.DEFAULT_GVCF_INDEX_PARAMETER, logFileName);
|
||||
final WalkerTestSpec spec = new WalkerTestSpec(commandLine + " -o %s", Arrays.asList("a01abc7e0b4a486125967d3a1ebcc33f"));
|
||||
final WalkerTestSpec spec = new WalkerTestSpec(commandLine + " -o %s", Arrays.asList("cbd37b492f77c50d2da744d5e00c6f90"));
|
||||
spec.disableShadowBCF();
|
||||
executeTest("testHaplotypeCallerMaxNumPLValuesExceededWithWarnLogLevel", spec);
|
||||
// Make sure the "Maximum allowed number of PLs exceeded" messages are in the log
|
||||
|
|
@ -404,7 +405,7 @@ public class HaplotypeCallerGVCFIntegrationTest extends WalkerTest {
|
|||
final String commandLine = String.format("-T HaplotypeCaller -R %s -I %s -L %s -ERC GVCF --no_cmdline_in_header -variant_index_type %s -variant_index_parameter %d -ploidy 4 -maxNumPLValues 30 -log %s",
|
||||
b37KGReference, privateTestDir + "NA12878.HiSeq.b37.chr20.10_11mb.bam", validationDataLocation + "NA12878.HiSeq.b37.chr20.10_11mb.test.intervals",
|
||||
GATKVCFUtils.DEFAULT_GVCF_INDEX_TYPE, GATKVCFUtils.DEFAULT_GVCF_INDEX_PARAMETER, logFileName);
|
||||
final WalkerTestSpec spec = new WalkerTestSpec(commandLine + " -o %s", Arrays.asList("a01abc7e0b4a486125967d3a1ebcc33f"));
|
||||
final WalkerTestSpec spec = new WalkerTestSpec(commandLine + " -o %s", Arrays.asList("cbd37b492f77c50d2da744d5e00c6f90"));
|
||||
spec.disableShadowBCF();
|
||||
executeTest("testHaplotypeCallerMaxNumPLValuesExceededWithDebugLogLevel", spec);
|
||||
// Make sure the "Maximum allowed number of PLs exceeded" messages are in the log
|
||||
|
|
@ -420,8 +421,27 @@ public class HaplotypeCallerGVCFIntegrationTest extends WalkerTest {
|
|||
public void testHaplotypeCallerGVCFBlocks() {
|
||||
final String commandLine = String.format("-T HaplotypeCaller -R %s -I %s -L 1:1-1000000 -ERC GVCF --no_cmdline_in_header -variant_index_type %s -variant_index_parameter %d",
|
||||
b37KGReference, privateTestDir + "gvcf_blocks_test.bam", GATKVCFUtils.DEFAULT_GVCF_INDEX_TYPE, GATKVCFUtils.DEFAULT_GVCF_INDEX_PARAMETER);
|
||||
final WalkerTestSpec spec = new WalkerTestSpec(commandLine + " -o %s", Arrays.asList("802c53621bd2004d9052a8e81d91df3e"));
|
||||
final WalkerTestSpec spec = new WalkerTestSpec(commandLine + " -o %s", Arrays.asList("0cdf4d6d0a45def15fb11ea30c78e470"));
|
||||
spec.disableShadowBCF();
|
||||
executeTest("testHaplotypeCallerGVCFBlocks", spec);
|
||||
}
|
||||
|
||||
@DataProvider(name = "dataBadGQBValues")
|
||||
public Object[][] dataBadGQBValues() {
|
||||
return new Object[][]{
|
||||
{Arrays.asList(-1, 10, 20)},
|
||||
{Arrays.asList(10, 20, 1)},
|
||||
{Arrays.asList(10, 10, 20)},
|
||||
{Arrays.asList(10, 20, VCFConstants.MAX_GENOTYPE_QUAL + 1)}
|
||||
};
|
||||
}
|
||||
@Test(dataProvider = "dataBadGQBValues")
|
||||
public void testBadGQBValues(final List<Integer> inputGQBValues) {
|
||||
final String inputGQBValuesString = inputGQBValues.stream().map(gqb -> "-GQB " + gqb).collect(Collectors.joining(" "));
|
||||
final String commandLine = String.format("-T HaplotypeCaller -R %s -I %s -L 1:1-1000000 -ERC GVCF %s --no_cmdline_in_header -variant_index_type %s -variant_index_parameter %d",
|
||||
b37KGReference, privateTestDir + "gvcf_blocks_test.bam", inputGQBValuesString, GATKVCFUtils.DEFAULT_GVCF_INDEX_TYPE, GATKVCFUtils.DEFAULT_GVCF_INDEX_PARAMETER);
|
||||
final WalkerTestSpec spec = new WalkerTestSpec(commandLine + " -o %s", 1, UserException.BadArgumentValue.class);
|
||||
spec.disableShadowBCF();
|
||||
executeTest("testBadGQBValues", spec);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -282,7 +282,7 @@ public class GenotypeGVCFsIntegrationTest extends WalkerTest {
|
|||
final WalkerTestSpec spec = new WalkerTestSpec(
|
||||
baseTestString(" -V " + gVCF.getAbsolutePath(), b37KGReference),
|
||||
1,
|
||||
Collections.singletonList("34d76dc8dabc6a97e6d8f5365d7531e5"));
|
||||
Collections.singletonList("5d8fff160ec6eedb8e02c9207e256073"));
|
||||
spec.disableShadowBCF(); //TODO: Remove when BaseTest.assertAttributesEquals() works with SAC
|
||||
executeTest("testStrandAlleleCountsBySample", spec);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,6 +69,7 @@ import java.util.ArrayList;
|
|||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class GVCFWriterUnitTest extends BaseTest {
|
||||
private static class MockWriter implements VariantContextWriter {
|
||||
|
|
@ -378,25 +379,30 @@ public class GVCFWriterUnitTest extends BaseTest {
|
|||
public Object[][] makeBandPartitionData() {
|
||||
List<Object[]> tests = new ArrayList<>();
|
||||
|
||||
tests.add(new Object[]{null, false});
|
||||
tests.add(new Object[]{Collections.emptyList(), false});
|
||||
tests.add(new Object[]{Arrays.asList(1), true});
|
||||
tests.add(new Object[]{Arrays.asList(1, 10), true});
|
||||
tests.add(new Object[]{Arrays.asList(1, 10, 30), true});
|
||||
tests.add(new Object[]{Arrays.asList(10, 1, 30), false});
|
||||
tests.add(new Object[]{Arrays.asList(-1, 1), false});
|
||||
tests.add(new Object[]{Arrays.asList(1, null, 10), false});
|
||||
tests.add(new Object[]{null, false, null});
|
||||
tests.add(new Object[]{Collections.emptyList(), false, null});
|
||||
tests.add(new Object[]{Collections.singletonList(1), true, Arrays.asList(0, 1)});
|
||||
tests.add(new Object[]{Arrays.asList(1, 10), true, Arrays.asList(0, 1, 10)});
|
||||
tests.add(new Object[]{Arrays.asList(1, 10, 30), true, Arrays.asList(0, 1, 10, 30)});
|
||||
tests.add(new Object[]{Arrays.asList(10, 1, 30), false, null});
|
||||
tests.add(new Object[]{Arrays.asList(-1, 1), false, null});
|
||||
tests.add(new Object[]{Arrays.asList(1, null, 10), false, null});
|
||||
tests.add(new Object[]{Arrays.asList(1, 1, 10), false, null});
|
||||
tests.add(new Object[]{Arrays.asList(1, 10, VCFConstants.MAX_GENOTYPE_QUAL - 1), true, Arrays.asList(0, 1, 10, VCFConstants.MAX_GENOTYPE_QUAL - 1)});
|
||||
tests.add(new Object[]{Arrays.asList(1, 10, VCFConstants.MAX_GENOTYPE_QUAL), true, Arrays.asList(0, 1, 10, VCFConstants.MAX_GENOTYPE_QUAL)});
|
||||
tests.add(new Object[]{Arrays.asList(1, 10, VCFConstants.MAX_GENOTYPE_QUAL + 1), false, null});
|
||||
|
||||
return tests.toArray(new Object[][]{});
|
||||
}
|
||||
|
||||
@Test(dataProvider = "BandPartitionData")
|
||||
public void testMyData(final List<Integer> partitions, final boolean expectedGood) {
|
||||
public void testBandPartitionData(final List<Integer> partitions, final boolean expectedGood, final List<Integer> expectedPartitionLowerBounds) {
|
||||
try {
|
||||
GVCFWriter.parsePartitions(partitions,2);
|
||||
final List<Integer> resultPartitionLowerBounds = GVCFWriter.parsePartitions(partitions, 2).stream().map(HomRefBlock::getGQLowerBound).collect(Collectors.toList());
|
||||
Assert.assertTrue(expectedGood, "Expected to fail but didn't");
|
||||
} catch ( Exception e ) {
|
||||
Assert.assertTrue(! expectedGood, "Expected to succeed but failed with message " + e.getMessage());
|
||||
Assert.assertEquals(resultPartitionLowerBounds, expectedPartitionLowerBounds);
|
||||
} catch ( final Exception e ) {
|
||||
Assert.assertTrue(!expectedGood, "Expected to succeed but failed with message " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue