Fix bug in GenotypeAndValidate where it doesn't check vc.hasAttribute() before using vc.getAttribute().
This commit is contained in:
parent
6e421a72d6
commit
5b7b42356b
|
|
@ -245,24 +245,21 @@ public class GenotypeAndValidate extends RodWalker<GenotypeAndValidate.CountedDa
|
||||||
@Argument(fullName="condition_on_depth", shortName="depth", doc="Condition validation on a minimum depth of coverage by the reads", required=false)
|
@Argument(fullName="condition_on_depth", shortName="depth", doc="Condition validation on a minimum depth of coverage by the reads", required=false)
|
||||||
private int minDepth = -1;
|
private int minDepth = -1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If your VCF or BAM file has more than one sample and you only want to validate one, use this parameter to choose it.
|
|
||||||
*/
|
|
||||||
@Hidden
|
|
||||||
@Argument(fullName ="sample", shortName ="sn", doc="Name of the sample to validate (in case your VCF/BAM has more than one sample)", required=false)
|
|
||||||
private String sample = "";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Print out discordance sites to standard out.
|
* Print out discordance sites to standard out.
|
||||||
*/
|
*/
|
||||||
@Hidden
|
@Hidden
|
||||||
@Argument(fullName ="print_interesting_sites", shortName ="print_interesting", doc="Print out interesting sites to standard out", required=false)
|
@Argument(fullName ="print_interesting_sites", shortName ="print_interesting", doc="Print out interesting sites to standard out", required=false)
|
||||||
private boolean printInterestingSites;
|
private boolean printInterestingSites = false;
|
||||||
|
|
||||||
private UnifiedGenotyperEngine snpEngine;
|
private UnifiedGenotyperEngine snpEngine;
|
||||||
private UnifiedGenotyperEngine indelEngine;
|
private UnifiedGenotyperEngine indelEngine;
|
||||||
private Set<String> samples;
|
private Set<String> samples;
|
||||||
|
|
||||||
|
private enum GVstatus {
|
||||||
|
T, F, NONE
|
||||||
|
}
|
||||||
|
|
||||||
public static class CountedData {
|
public static class CountedData {
|
||||||
private long nAltCalledAlt = 0L;
|
private long nAltCalledAlt = 0L;
|
||||||
private long nAltCalledRef = 0L;
|
private long nAltCalledRef = 0L;
|
||||||
|
|
@ -368,9 +365,10 @@ public class GenotypeAndValidate extends RodWalker<GenotypeAndValidate.CountedDa
|
||||||
// Do not operate on variants that are not covered to the optional minimum depth
|
// Do not operate on variants that are not covered to the optional minimum depth
|
||||||
if (!context.hasReads() || (minDepth > 0 && context.getBasePileup().getBases().length < minDepth)) {
|
if (!context.hasReads() || (minDepth > 0 && context.getBasePileup().getBases().length < minDepth)) {
|
||||||
counter.nUncovered = 1L;
|
counter.nUncovered = 1L;
|
||||||
if (vcComp.getAttribute("GV").equals("T"))
|
final GVstatus status = getGVstatus(vcComp);
|
||||||
|
if ( status == GVstatus.T )
|
||||||
counter.nAltNotCalled = 1L;
|
counter.nAltNotCalled = 1L;
|
||||||
else if (vcComp.getAttribute("GV").equals("F"))
|
else if ( status == GVstatus.F )
|
||||||
counter.nRefNotCalled = 1L;
|
counter.nRefNotCalled = 1L;
|
||||||
else
|
else
|
||||||
counter.nNoStatusNotCalled = 1L;
|
counter.nNoStatusNotCalled = 1L;
|
||||||
|
|
@ -427,10 +425,11 @@ public class GenotypeAndValidate extends RodWalker<GenotypeAndValidate.CountedDa
|
||||||
// if (!vcComp.hasExtendedAttribute("GV"))
|
// if (!vcComp.hasExtendedAttribute("GV"))
|
||||||
// throw new UserException.BadInput("Variant has no GV annotation in the INFO field. " + vcComp.getChr() + ":" + vcComp.getStart());
|
// throw new UserException.BadInput("Variant has no GV annotation in the INFO field. " + vcComp.getChr() + ":" + vcComp.getStart());
|
||||||
|
|
||||||
|
final GVstatus status = getGVstatus(vcComp);
|
||||||
if (call.isCalledAlt(callConf)) {
|
if (call.isCalledAlt(callConf)) {
|
||||||
if (vcComp.getAttribute("GV").equals("T"))
|
if ( status == GVstatus.T )
|
||||||
counter.nAltCalledAlt = 1L;
|
counter.nAltCalledAlt = 1L;
|
||||||
else if (vcComp.getAttribute("GV").equals("F")) {
|
else if ( status == GVstatus.F ) {
|
||||||
counter.nRefCalledAlt = 1L;
|
counter.nRefCalledAlt = 1L;
|
||||||
if ( printInterestingSites )
|
if ( printInterestingSites )
|
||||||
System.out.println("Truth=REF Call=ALT at " + call.getChr() + ":" + call.getStart());
|
System.out.println("Truth=REF Call=ALT at " + call.getChr() + ":" + call.getStart());
|
||||||
|
|
@ -439,12 +438,12 @@ public class GenotypeAndValidate extends RodWalker<GenotypeAndValidate.CountedDa
|
||||||
counter.nNoStatusCalledAlt = 1L;
|
counter.nNoStatusCalledAlt = 1L;
|
||||||
}
|
}
|
||||||
else if (call.isCalledRef(callConf)) {
|
else if (call.isCalledRef(callConf)) {
|
||||||
if (vcComp.getAttribute("GV").equals("T")) {
|
if ( status == GVstatus.T ) {
|
||||||
counter.nAltCalledRef = 1L;
|
counter.nAltCalledRef = 1L;
|
||||||
if ( printInterestingSites )
|
if ( printInterestingSites )
|
||||||
System.out.println("Truth=ALT Call=REF at " + call.getChr() + ":" + call.getStart());
|
System.out.println("Truth=ALT Call=REF at " + call.getChr() + ":" + call.getStart());
|
||||||
}
|
}
|
||||||
else if (vcComp.getAttribute("GV").equals("F"))
|
else if ( status == GVstatus.F )
|
||||||
counter.nRefCalledRef = 1L;
|
counter.nRefCalledRef = 1L;
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
@ -452,9 +451,9 @@ public class GenotypeAndValidate extends RodWalker<GenotypeAndValidate.CountedDa
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
counter.nNotConfidentCalls = 1L;
|
counter.nNotConfidentCalls = 1L;
|
||||||
if (vcComp.getAttribute("GV").equals("T"))
|
if ( status == GVstatus.T )
|
||||||
counter.nAltNotCalled = 1L;
|
counter.nAltNotCalled = 1L;
|
||||||
else if (vcComp.getAttribute("GV").equals("F"))
|
else if ( status == GVstatus.F )
|
||||||
counter.nRefNotCalled = 1L;
|
counter.nRefNotCalled = 1L;
|
||||||
else
|
else
|
||||||
counter.nNoStatusNotCalled = 1L;
|
counter.nNoStatusNotCalled = 1L;
|
||||||
|
|
@ -475,6 +474,10 @@ public class GenotypeAndValidate extends RodWalker<GenotypeAndValidate.CountedDa
|
||||||
return counter;
|
return counter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private GVstatus getGVstatus(final VariantContext vc) {
|
||||||
|
return ( !vc.hasAttribute("GV") ) ? GVstatus.NONE : (vc.getAttribute("GV").equals("T") ? GVstatus.T : GVstatus.F);
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// reduce
|
// reduce
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue