Now requires a minimum genotype LOD before applying tests
git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@1471 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
parent
37a9b84276
commit
dc9d40eb9a
|
|
@ -8,9 +8,11 @@ import org.broadinstitute.sting.utils.Pair;
|
||||||
import org.broadinstitute.sting.utils.GenotypeUtils;
|
import org.broadinstitute.sting.utils.GenotypeUtils;
|
||||||
|
|
||||||
public class VECAlleleBalance implements VariantExclusionCriterion { //extends RatioFilter {
|
public class VECAlleleBalance implements VariantExclusionCriterion { //extends RatioFilter {
|
||||||
//final private static GenotypeFeatureData.Tail tail = GenotypeFeatureData.Tail.TwoTailed;
|
private static final double defaultMinGenotypeConfidenceToTest = 5.0; // TODO -- must be replaced with true confidence scoore, right now assumes LOD
|
||||||
|
|
||||||
private boolean exclude;
|
private boolean exclude;
|
||||||
private double lowThreshold = 0.1, highThreshold = 0.85;
|
private double lowThreshold = 0.1, highThreshold = 0.85;
|
||||||
|
private double minGenotypeConfidenceToTest = defaultMinGenotypeConfidenceToTest;
|
||||||
private double ratio;
|
private double ratio;
|
||||||
|
|
||||||
public void initialize(String arguments) {
|
public void initialize(String arguments) {
|
||||||
|
|
@ -18,20 +20,11 @@ public class VECAlleleBalance implements VariantExclusionCriterion { //extends
|
||||||
String[] argPieces = arguments.split(",");
|
String[] argPieces = arguments.split(",");
|
||||||
lowThreshold = Double.valueOf(argPieces[0]);
|
lowThreshold = Double.valueOf(argPieces[0]);
|
||||||
highThreshold = Double.valueOf(argPieces[1]);
|
highThreshold = Double.valueOf(argPieces[1]);
|
||||||
|
if ( argPieces.length > 2 )
|
||||||
|
minGenotypeConfidenceToTest = Double.valueOf(argPieces[2]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* We can only filter out het calls with the AlleleBalance filter
|
|
||||||
*
|
|
||||||
* @param variant
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
protected boolean applyToVariant(rodVariants variant) {
|
|
||||||
String genotype = variant.getBestGenotype();
|
|
||||||
return genotype.charAt(0) != genotype.charAt(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the count of bases matching the major (first) and minor (second) alleles as a pair.
|
* Return the count of bases matching the major (first) and minor (second) alleles as a pair.
|
||||||
*
|
*
|
||||||
|
|
@ -64,7 +57,17 @@ public class VECAlleleBalance implements VariantExclusionCriterion { //extends
|
||||||
Pair<Integer, Integer> counts = scoreVariant(ref, pileup, variant);
|
Pair<Integer, Integer> counts = scoreVariant(ref, pileup, variant);
|
||||||
int n = counts.first + counts.second;
|
int n = counts.first + counts.second;
|
||||||
ratio = counts.first.doubleValue() / (double)n;
|
ratio = counts.first.doubleValue() / (double)n;
|
||||||
exclude = GenotypeUtils.isHet(variant) && (ratio < lowThreshold || ratio > highThreshold);
|
|
||||||
|
boolean highGenotypeConfidence = variant.getConsensusConfidence() > minGenotypeConfidenceToTest;
|
||||||
|
boolean failsHetExpectation = GenotypeUtils.isHet(variant) && (ratio < lowThreshold || ratio > highThreshold);
|
||||||
|
exclude = failsHetExpectation && highGenotypeConfidence;
|
||||||
|
|
||||||
|
// if ( failsHetExpectation ) {
|
||||||
|
// String header = highGenotypeConfidence ? "FILTER-HIGH-CONFIDENCE" : "PASS-LOW-CONFIDENCE";
|
||||||
|
// System.out.printf("[%s] %s getConsensusConfidence() = %f > minGenotypeConfidenceToTest = %f exclude=%b %s%n",
|
||||||
|
// header, variant.getBestGenotype(), variant.getConsensusConfidence(), minGenotypeConfidenceToTest, exclude,
|
||||||
|
// ! highGenotypeConfidence ? variant : "" );
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean useZeroQualityReads() { return false; }
|
public boolean useZeroQualityReads() { return false; }
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,8 @@ import org.broadinstitute.sting.gatk.contexts.AlignmentContext;
|
||||||
import org.broadinstitute.sting.utils.*;
|
import org.broadinstitute.sting.utils.*;
|
||||||
|
|
||||||
public class VECOnOffGenotypeRatio implements VariantExclusionCriterion { // extends RatioFilter {
|
public class VECOnOffGenotypeRatio implements VariantExclusionCriterion { // extends RatioFilter {
|
||||||
|
private static final double minGenotypeConfidenceToTest = 5.0; // TODO -- must be replaced with true confidence scoore, right now assumes LOD
|
||||||
|
|
||||||
//final private static GenotypeFeatureData.Tail tail = GenotypeFeatureData.Tail.LeftTailed;
|
//final private static GenotypeFeatureData.Tail tail = GenotypeFeatureData.Tail.LeftTailed;
|
||||||
private boolean exclude;
|
private boolean exclude;
|
||||||
private double threshold = 0.0;
|
private double threshold = 0.0;
|
||||||
|
|
@ -16,16 +18,6 @@ public class VECOnOffGenotypeRatio implements VariantExclusionCriterion { // ext
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* On/off genotype filters can be applied to any genotype
|
|
||||||
*
|
|
||||||
* @param variant
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
protected boolean applyToVariant(rodVariants variant) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the counts of bases that are on (matching the bestGenotype) and off (not matching the
|
* Return the counts of bases that are on (matching the bestGenotype) and off (not matching the
|
||||||
* best genotype). On are in the first field, off in the second.
|
* best genotype). On are in the first field, off in the second.
|
||||||
|
|
@ -61,7 +53,8 @@ public class VECOnOffGenotypeRatio implements VariantExclusionCriterion { // ext
|
||||||
Pair<Integer, Integer> counts = scoreVariant(ref, pileup, variant);
|
Pair<Integer, Integer> counts = scoreVariant(ref, pileup, variant);
|
||||||
int n = counts.first + counts.second;
|
int n = counts.first + counts.second;
|
||||||
ratio = counts.first.doubleValue() / (double)n;
|
ratio = counts.first.doubleValue() / (double)n;
|
||||||
exclude = ratio < threshold;
|
boolean highGenotypeConfidence = variant.getConsensusConfidence() > minGenotypeConfidenceToTest;
|
||||||
|
exclude = ratio < threshold && highGenotypeConfidence;
|
||||||
}
|
}
|
||||||
|
|
||||||
public double inclusionProbability() {
|
public double inclusionProbability() {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue