New mode for CombineVariants to assume the incoming VCFs have the same samples and disjoint calls. Drastically reduces the runtime for routine combining operations. Very useful with Queue.
git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@5356 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
parent
5e4b321f86
commit
8e1aa6059a
|
|
@ -79,6 +79,9 @@ public class CombineVariants extends RodWalker<Integer, Integer> {
|
||||||
@Argument(fullName="setKey", shortName="setKey", doc="Key, by default set, in the INFO key=value tag emitted describing which set the combined VCF record came from. Set to null if you don't want the set field emitted.", required=false)
|
@Argument(fullName="setKey", shortName="setKey", doc="Key, by default set, in the INFO key=value tag emitted describing which set the combined VCF record came from. Set to null if you don't want the set field emitted.", required=false)
|
||||||
public String SET_KEY = "set";
|
public String SET_KEY = "set";
|
||||||
|
|
||||||
|
@Argument(fullName="assumeIdenticalSamples", shortName="assumeIdenticalSamples", doc="If true, assume input VCFs have identical sample sets and disjoint calls so that one can simply perform a merge sort to combine the VCFs into one, drastically reducing the runtime.", required=false)
|
||||||
|
public boolean ASSUME_IDENTICAL_SAMPLES = false;
|
||||||
|
|
||||||
private List<String> priority = null;
|
private List<String> priority = null;
|
||||||
|
|
||||||
public void initialize() {
|
public void initialize() {
|
||||||
|
|
@ -127,6 +130,15 @@ public class CombineVariants extends RodWalker<Integer, Integer> {
|
||||||
// Need to provide reference bases to simpleMerge starting at current locus
|
// Need to provide reference bases to simpleMerge starting at current locus
|
||||||
Collection<VariantContext> vcs = tracker.getAllVariantContexts(ref, context.getLocation());
|
Collection<VariantContext> vcs = tracker.getAllVariantContexts(ref, context.getLocation());
|
||||||
|
|
||||||
|
if ( ASSUME_IDENTICAL_SAMPLES ) {
|
||||||
|
final VariantContext vc = vcs.iterator().next();
|
||||||
|
if( vc != null ) {
|
||||||
|
vcfWriter.add( vc, ref.getBase() );
|
||||||
|
}
|
||||||
|
|
||||||
|
return vcs.isEmpty() ? 0 : 1;
|
||||||
|
}
|
||||||
|
|
||||||
VariantContext mergedVC = null;
|
VariantContext mergedVC = null;
|
||||||
if ( variantMergeOption == VariantContextUtils.VariantMergeType.MASTER ) {
|
if ( variantMergeOption == VariantContextUtils.VariantMergeType.MASTER ) {
|
||||||
mergedVC = VariantContextUtils.masterMerge(vcs, "master");
|
mergedVC = VariantContextUtils.masterMerge(vcs, "master");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue