/** * For each site of interest, annotate based on the requested annotation types * * @param tracker the meta-data tracker * @param ref the reference base * @param context the context for the given locus * @return 1 if the locus was successfully processed, 0 if otherwise */ public Integer map(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { if (tracker == null) return 0; // get the variant contexts for all the variants at the location Collection<VariantContext> VCs = tracker.getValues(variantCollection.variants, context.getLocation()); if (VCs.isEmpty()) return 0; Collection<VariantContext> annotatedVCs = VCs; // if the reference base is not ambiguous, we can annotate Map<String, AlignmentContext> stratifiedContexts; if (BaseUtils.simpleBaseToBaseIndex(ref.getBase()) != -1) { stratifiedContexts = AlignmentContextUtils.splitContextBySampleName(context.getBasePileup()); annotatedVCs = new ArrayList<>(VCs.size()); for (VariantContext vc : VCs) annotatedVCs.add(engine.annotateContext(tracker, ref, stratifiedContexts, vc)); } for (VariantContext annotatedVC : annotatedVCs) vcfWriter.add(annotatedVC); return 1; }