change the way CombineVariants check the priority arguments in order to throw error when the genotypeMergeOption argument is set to PRIORITIZE but PRIORITY_STRING is not provided
This commit is contained in:
parent
d07f3d4a5a
commit
4714ccc284
|
|
@ -134,7 +134,7 @@ public class CombineVariants extends RodWalker<Integer, Integer> implements Tree
|
||||||
protected VariantContextWriter vcfWriter = null;
|
protected VariantContextWriter vcfWriter = null;
|
||||||
|
|
||||||
@Argument(shortName="genotypeMergeOptions", doc="Determines how we should merge genotype records for samples shared across the ROD files", required=false)
|
@Argument(shortName="genotypeMergeOptions", doc="Determines how we should merge genotype records for samples shared across the ROD files", required=false)
|
||||||
public VariantContextUtils.GenotypeMergeType genotypeMergeOption = VariantContextUtils.GenotypeMergeType.PRIORITIZE;
|
public VariantContextUtils.GenotypeMergeType genotypeMergeOption = null;
|
||||||
|
|
||||||
@Argument(shortName="filteredRecordsMergeType", doc="Determines how we should handle records seen at the same site in the VCF, but with different FILTER fields", required=false)
|
@Argument(shortName="filteredRecordsMergeType", doc="Determines how we should handle records seen at the same site in the VCF, but with different FILTER fields", required=false)
|
||||||
public VariantContextUtils.FilteredRecordMergeType filteredRecordsMergeType = VariantContextUtils.FilteredRecordMergeType.KEEP_IF_ANY_UNFILTERED;
|
public VariantContextUtils.FilteredRecordMergeType filteredRecordsMergeType = VariantContextUtils.FilteredRecordMergeType.KEEP_IF_ANY_UNFILTERED;
|
||||||
|
|
@ -200,13 +200,13 @@ public class CombineVariants extends RodWalker<Integer, Integer> implements Tree
|
||||||
} else
|
} else
|
||||||
logger.warn("VCF output file not an instance of VCFWriterStub; cannot enable sites only output option");
|
logger.warn("VCF output file not an instance of VCFWriterStub; cannot enable sites only output option");
|
||||||
|
|
||||||
if ( PRIORITY_STRING == null ) {
|
validateAnnotateUnionArguments();
|
||||||
|
if ( PRIORITY_STRING == null && genotypeMergeOption == null) {
|
||||||
genotypeMergeOption = VariantContextUtils.GenotypeMergeType.UNSORTED;
|
genotypeMergeOption = VariantContextUtils.GenotypeMergeType.UNSORTED;
|
||||||
//PRIORITY_STRING = Utils.join(",", vcfRods.keySet()); Deleted by Ami (7/10/12)
|
//PRIORITY_STRING = Utils.join(",", vcfRods.keySet()); Deleted by Ami (7/10/12)
|
||||||
logger.info("Priority string not provided, using arbitrary genotyping order: " + PRIORITY_STRING);
|
logger.info("Priority string not provided, using arbitrary genotyping order: "+priority);
|
||||||
}
|
}
|
||||||
|
|
||||||
validateAnnotateUnionArguments();
|
|
||||||
samples = sitesOnlyVCF ? Collections.<String>emptySet() : SampleUtils.getSampleList(vcfRods, genotypeMergeOption);
|
samples = sitesOnlyVCF ? Collections.<String>emptySet() : SampleUtils.getSampleList(vcfRods, genotypeMergeOption);
|
||||||
|
|
||||||
if ( SET_KEY.toLowerCase().equals("null") )
|
if ( SET_KEY.toLowerCase().equals("null") )
|
||||||
|
|
@ -228,16 +228,15 @@ public class CombineVariants extends RodWalker<Integer, Integer> implements Tree
|
||||||
if ( genotypeMergeOption == VariantContextUtils.GenotypeMergeType.PRIORITIZE && PRIORITY_STRING == null )
|
if ( genotypeMergeOption == VariantContextUtils.GenotypeMergeType.PRIORITIZE && PRIORITY_STRING == null )
|
||||||
throw new UserException.MissingArgument("rod_priority_list", "Priority string must be provided if you want to prioritize genotypes");
|
throw new UserException.MissingArgument("rod_priority_list", "Priority string must be provided if you want to prioritize genotypes");
|
||||||
|
|
||||||
if ( genotypeMergeOption == VariantContextUtils.GenotypeMergeType.PRIORITIZE )
|
if ( genotypeMergeOption == VariantContextUtils.GenotypeMergeType.PRIORITIZE ){
|
||||||
priority = new ArrayList<String>(Arrays.asList(PRIORITY_STRING.split(",")));
|
priority = new ArrayList<String>(Arrays.asList(PRIORITY_STRING.split(",")));
|
||||||
else
|
if ( rodNames.size() != priority.size() )
|
||||||
priority = new ArrayList<String>(rodNames);
|
throw new UserException.BadArgumentValue("rod_priority_list", "The priority list must contain exactly one rod binding per ROD provided to the GATK: rodNames=" + rodNames + " priority=" + priority);
|
||||||
|
|
||||||
if ( rodNames.size() != priority.size() )
|
if ( ! rodNames.containsAll(priority) )
|
||||||
throw new UserException.BadArgumentValue("rod_priority_list", "The priority list must contain exactly one rod binding per ROD provided to the GATK: rodNames=" + rodNames + " priority=" + priority);
|
throw new UserException.BadArgumentValue("rod_priority_list", "Not all priority elements provided as input RODs: " + PRIORITY_STRING);
|
||||||
|
}
|
||||||
|
|
||||||
if ( ! rodNames.containsAll(priority) )
|
|
||||||
throw new UserException.BadArgumentValue("rod_priority_list", "Not all priority elements provided as input RODs: " + PRIORITY_STRING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Integer map(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) {
|
public Integer map(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) {
|
||||||
|
|
|
||||||
|
|
@ -840,8 +840,11 @@ public class VariantContextUtils {
|
||||||
if ( mergeOption == GenotypeMergeType.PRIORITIZE && priorityListOfVCs == null )
|
if ( mergeOption == GenotypeMergeType.PRIORITIZE && priorityListOfVCs == null )
|
||||||
throw new IllegalArgumentException("Cannot merge calls by priority with a null priority list");
|
throw new IllegalArgumentException("Cannot merge calls by priority with a null priority list");
|
||||||
|
|
||||||
if ( priorityListOfVCs == null || mergeOption == GenotypeMergeType.UNSORTED )
|
if ( mergeOption == GenotypeMergeType.UNSORTED ){
|
||||||
|
if (priorityListOfVCs != null )
|
||||||
|
logger.info("Priority string was provided but is not used since GenotypeMergeType is UNSORTED");
|
||||||
return new ArrayList<VariantContext>(unsortedVCs);
|
return new ArrayList<VariantContext>(unsortedVCs);
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
ArrayList<VariantContext> sorted = new ArrayList<VariantContext>(unsortedVCs);
|
ArrayList<VariantContext> sorted = new ArrayList<VariantContext>(unsortedVCs);
|
||||||
Collections.sort(sorted, new CompareByPriority(priorityListOfVCs));
|
Collections.sort(sorted, new CompareByPriority(priorityListOfVCs));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue