Adding option to VariantAnnotator to do strict allele matching when annotating with comp track concordance.

This commit is contained in:
Ryan Poplin 2011-12-18 15:27:23 -05:00
parent 953998dcd0
commit bc842ab3a5
2 changed files with 14 additions and 4 deletions

View File

@ -170,6 +170,9 @@ public class VariantAnnotator extends RodWalker<Integer, Integer> implements Ann
@Argument(fullName="MendelViolationGenotypeQualityThreshold",shortName="mvq",required=false,doc="The genotype quality treshold in order to annotate mendelian violation ratio")
public double minGenotypeQualityP = 0.0;
@Argument(fullName="requireStrictAlleleMatch", shortName="strict", doc="If provided only comp tracks that exactly match both reference and alternate alleles will be counted as concordant", required=false)
private boolean requireStrictAlleleMatch = false;
private VariantAnnotatorEngine engine;
private Collection<VariantContext> indelBufferContext;
@ -211,6 +214,7 @@ public class VariantAnnotator extends RodWalker<Integer, Integer> implements Ann
else
engine = new VariantAnnotatorEngine(annotationGroupsToUse, annotationsToUse, annotationsToExclude, this, getToolkit());
engine.initializeExpressions(expressionsToUse);
engine.setRequireStrictAlleleMatch(requireStrictAlleleMatch);
// setup the header fields
// note that if any of the definitions conflict with our new ones, then we want to overwrite the old ones

View File

@ -47,9 +47,11 @@ public class VariantAnnotatorEngine {
private List<GenotypeAnnotation> requestedGenotypeAnnotations;
private List<VAExpression> requestedExpressions = new ArrayList<VAExpression>();
private HashMap<RodBinding<VariantContext>, String> dbAnnotations = new HashMap<RodBinding<VariantContext>, String>();
private AnnotatorCompatibleWalker walker;
private GenomeAnalysisEngine toolkit;
private final HashMap<RodBinding<VariantContext>, String> dbAnnotations = new HashMap<RodBinding<VariantContext>, String>();
private final AnnotatorCompatibleWalker walker;
private final GenomeAnalysisEngine toolkit;
private boolean requireStrictAlleleMatch = false;
protected static class VAExpression {
@ -163,6 +165,10 @@ public class VariantAnnotatorEngine {
return descriptions;
}
public void setRequireStrictAlleleMatch( final boolean requireStrictAlleleMatch ) {
this.requireStrictAlleleMatch = requireStrictAlleleMatch;
}
public VariantContext annotateContext(RefMetaDataTracker tracker, ReferenceContext ref, Map<String, AlignmentContext> stratifiedContexts, VariantContext vc) {
Map<String, Object> infoAnnotations = new LinkedHashMap<String, Object>(vc.getAttributes());
@ -197,7 +203,7 @@ public class VariantAnnotatorEngine {
} else {
boolean overlapsComp = false;
for ( VariantContext comp : tracker.getValues(dbSet.getKey(), ref.getLocus()) ) {
if ( !comp.isFiltered() ) {
if ( !comp.isFiltered() && ( !requireStrictAlleleMatch || comp.getAlleles().equals(vc.getAlleles()) ) ) {
overlapsComp = true;
break;
}