(1) changes in catVariants (work still under development) (2) changes to CV to throw an error when GenotypeMergeType is PRIORITIZE but no priority (rod_priority_list) is not given. Reported by TechnicalVault on the forum on Nov 14 2012
This commit is contained in:
parent
5d78a61f7a
commit
3a420d163e
|
|
@ -228,7 +228,7 @@ 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 ( PRIORITY_STRING != null || genotypeMergeOption == VariantContextUtils.GenotypeMergeType.PRIORITIZE ){
|
||||||
priority = new ArrayList<String>(Arrays.asList(PRIORITY_STRING.split(",")));
|
priority = new ArrayList<String>(Arrays.asList(PRIORITY_STRING.split(",")));
|
||||||
if ( rodNames.size() != priority.size() )
|
if ( rodNames.size() != priority.size() )
|
||||||
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", "The priority list must contain exactly one rod binding per ROD provided to the GATK: rodNames=" + rodNames + " priority=" + priority);
|
||||||
|
|
|
||||||
|
|
@ -451,7 +451,7 @@ public class VariantContextUtils {
|
||||||
if ( unsortedVCs == null || unsortedVCs.size() == 0 )
|
if ( unsortedVCs == null || unsortedVCs.size() == 0 )
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
if ( annotateOrigin && priorityListOfVCs == null && genotypeMergeOptions == GenotypeMergeType.PRIORITIZE)
|
if ( annotateOrigin && priorityListOfVCs == null )
|
||||||
throw new IllegalArgumentException("Cannot merge calls and annotate their origins without a complete priority list of VariantContexts");
|
throw new IllegalArgumentException("Cannot merge calls and annotate their origins without a complete priority list of VariantContexts");
|
||||||
|
|
||||||
if ( genotypeMergeOptions == GenotypeMergeType.REQUIRE_UNIQUE )
|
if ( genotypeMergeOptions == GenotypeMergeType.REQUIRE_UNIQUE )
|
||||||
|
|
@ -597,7 +597,7 @@ public class VariantContextUtils {
|
||||||
|
|
||||||
if ( annotateOrigin ) { // we care about where the call came from
|
if ( annotateOrigin ) { // we care about where the call came from
|
||||||
String setValue;
|
String setValue;
|
||||||
if ( nFiltered == 0 && variantSources.size() == preFilteredVCs.size() ) // nothing was unfiltered
|
if ( nFiltered == 0 && variantSources.size() == priorityListOfVCs.size() ) // nothing was unfiltered
|
||||||
setValue = MERGE_INTERSECTION;
|
setValue = MERGE_INTERSECTION;
|
||||||
else if ( nFiltered == VCs.size() ) // everything was filtered out
|
else if ( nFiltered == VCs.size() ) // everything was filtered out
|
||||||
setValue = MERGE_FILTER_IN_ALL;
|
setValue = MERGE_FILTER_IN_ALL;
|
||||||
|
|
@ -840,11 +840,8 @@ 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 ( mergeOption != GenotypeMergeType.PRIORITIZE ){
|
if ( priorityListOfVCs == null || mergeOption == GenotypeMergeType.UNSORTED )
|
||||||
if (priorityListOfVCs != null )
|
|
||||||
logger.info("Priority string was provided but is not used since GenotypeMergeType is not PRIORITIZE");
|
|
||||||
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));
|
||||||
|
|
@ -982,40 +979,6 @@ public class VariantContextUtils {
|
||||||
private static final List<Allele> NO_CALL_ALLELES = Arrays.asList(Allele.NO_CALL, Allele.NO_CALL);
|
private static final List<Allele> NO_CALL_ALLELES = Arrays.asList(Allele.NO_CALL, Allele.NO_CALL);
|
||||||
public static final double SUM_GL_THRESH_NOCALL = -0.1; // if sum(gl) is bigger than this threshold, we treat GL's as non-informative and will force a no-call.
|
public static final double SUM_GL_THRESH_NOCALL = -0.1; // if sum(gl) is bigger than this threshold, we treat GL's as non-informative and will force a no-call.
|
||||||
|
|
||||||
/**
|
|
||||||
* Split variant context into its biallelic components if there are more than 2 alleles
|
|
||||||
*
|
|
||||||
* For VC has A/B/C alleles, returns A/B and A/C contexts.
|
|
||||||
* Genotypes are all no-calls now (it's not possible to fix them easily)
|
|
||||||
* Alleles are right trimmed to satisfy VCF conventions
|
|
||||||
*
|
|
||||||
* If vc is biallelic or non-variant it is just returned
|
|
||||||
*
|
|
||||||
* Chromosome counts are updated (but they are by definition 0)
|
|
||||||
*
|
|
||||||
* @param vc a potentially multi-allelic variant context
|
|
||||||
* @return a list of bi-allelic (or monomorphic) variant context
|
|
||||||
*/
|
|
||||||
public static List<VariantContext> splitVariantContextToBiallelics(final VariantContext vc) {
|
|
||||||
if ( ! vc.isVariant() || vc.isBiallelic() )
|
|
||||||
// non variant or biallelics already satisfy the contract
|
|
||||||
return Collections.singletonList(vc);
|
|
||||||
else {
|
|
||||||
final List<VariantContext> biallelics = new LinkedList<VariantContext>();
|
|
||||||
|
|
||||||
for ( final Allele alt : vc.getAlternateAlleles() ) {
|
|
||||||
VariantContextBuilder builder = new VariantContextBuilder(vc);
|
|
||||||
final List<Allele> alleles = Arrays.asList(vc.getReference(), alt);
|
|
||||||
builder.alleles(alleles);
|
|
||||||
builder.genotypes(VariantContextUtils.subsetDiploidAlleles(vc, alleles, false));
|
|
||||||
calculateChromosomeCounts(builder, true);
|
|
||||||
biallelics.add(reverseTrimAlleles(builder.make()));
|
|
||||||
}
|
|
||||||
|
|
||||||
return biallelics;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* subset the Variant Context to the specific set of alleles passed in (pruning the PLs appropriately)
|
* subset the Variant Context to the specific set of alleles passed in (pruning the PLs appropriately)
|
||||||
*
|
*
|
||||||
|
|
@ -1270,7 +1233,7 @@ public class VariantContextUtils {
|
||||||
* @param testString String to test
|
* @param testString String to test
|
||||||
* @return Number of repetitions (0 if testString is not a concatenation of n repeatUnit's
|
* @return Number of repetitions (0 if testString is not a concatenation of n repeatUnit's
|
||||||
*/
|
*/
|
||||||
public static int findNumberofRepetitions(byte[] repeatUnit, byte[] testString) {
|
protected static int findNumberofRepetitions(byte[] repeatUnit, byte[] testString) {
|
||||||
int numRepeats = 0;
|
int numRepeats = 0;
|
||||||
for (int start = 0; start < testString.length; start += repeatUnit.length) {
|
for (int start = 0; start < testString.length; start += repeatUnit.length) {
|
||||||
int end = start + repeatUnit.length;
|
int end = start + repeatUnit.length;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue