public Collection<String> getFilters() { return variantContext.getFilters(); }
private boolean containFilter(VariantContext variantContext, String name) { if (variantContext.getFilters().size() == 0 && "PASS".equals(name)) { // PASS is not contained in the getFilters(), // but the . neither!! return true; } Iterator<String> iterator = variantContext.getFilters().iterator(); while (iterator.hasNext()) { String filterName = iterator.next(); List<String> list = Arrays.asList(StringUtils.split(filterName, ",")); for (String element: list) { if (element.equals(name)) { return true; } } } return false; }
private void putFilter(VariantContext vc, String sampleName) { final Statistics stats = perSampleStats.get(sampleName); for (String ft : vc.getFilters()) stats.putFilter(ft); }
@Override public Object get(String name) { Object result = null; if ( attributes.containsKey(name) ) { // dynamic resolution of name -> value via map result = attributes.get(name).get(vc); } else if ( vc.hasAttribute(name)) { result = vc.getAttribute(name); } else if ( vc.getFilters().contains(name) ) { result = true_string; } return result; }
@VisibleForTesting static List<String> getFilter(VariantContext vc) { if (vc.isFiltered()) { return (List<String>) ParsingUtils.sortList(vc.getFilters()); } if (vc.filtersWereApplied()) { return Arrays.asList(VCFConstants.PASSES_FILTERS_v4); } return Arrays.asList(VCFConstants.UNFILTERED); }
public Object get(String name) { Object result = null; if ( x.containsKey(name) ) { // dynamic resolution of name -> value via map result = x.get(name).get(vc); } else if ( vc.hasAttribute(name)) { result = vc.getAttribute(name); } else if ( vc.getFilters().contains(name) ) { result = "1"; } //System.out.printf("dynamic lookup %s => %s%n", name, result); return result; }
@Override public Object get(String name) { Object result = null; if ( attributes.containsKey(name) ) { // dynamic resolution of name -> value via map result = attributes.get(name).get(vc); } else if ( vc.hasAttribute(name)) { result = vc.getAttribute(name); } else if ( vc.getFilters().contains(name) ) { result = true_string; } return result; }
getters.put("FILTER", new Getter() { public String get(VariantContext vc) { return vc.isNotFiltered() ? "PASS" : Utils.join(",", vc.getFilters()); } });
private String getFilterString(final VariantContext vc) { if (vc.isFiltered()) { for (final String filter : vc.getFilters()) { if (!this.header.hasFilterLine(filter)) fieldIsMissingFromHeaderError(vc, filter, "FILTER"); } return ParsingUtils.join(";", ParsingUtils.sortList(vc.getFilters())); } else if (vc.filtersWereApplied()) return VCFConstants.PASSES_FILTERS_v4; else return VCFConstants.UNFILTERED; }
private String getFilterString(final VariantContext vc) { if (vc.isFiltered()) { for (final String filter : vc.getFilters()) { if ( ! this.header.hasFilterLine(filter)) fieldIsMissingFromHeaderError(vc, filter, "FILTER"); } return ParsingUtils.join(";", ParsingUtils.sortList(vc.getFilters())); } else if (vc.filtersWereApplied()) return VCFConstants.PASSES_FILTERS_v4; else return VCFConstants.UNFILTERED; }
private String getFilterString(final VariantContext vc) { if (vc.isFiltered()) { for (final String filter : vc.getFilters()) { if (!this.header.hasFilterLine(filter)) fieldIsMissingFromHeaderError(vc, filter, "FILTER"); } return ParsingUtils.join(";", ParsingUtils.sortList(vc.getFilters())); } else if (vc.filtersWereApplied()) return VCFConstants.PASSES_FILTERS_v4; else return VCFConstants.UNFILTERED; }
/** * Add mask to variant context filters if it covers its location. * @param vc VariantContext * @param genomeLoc genome location * @param maskName name of the mask * @param maskExtension bases beyond the mask * @param locStart if true, start at genome location and end at VariantContext. If false, do the opposite. * @return VariantContext with the mask added if the VariantContext is within the extended mask area */ private VariantContext addMaskIfCoversVariant(VariantContext vc, final GenomeLoc genomeLoc, final String maskName, final int maskExtension, final boolean locStart) { if (doesMaskCoverVariant(vc, genomeLoc, maskName, maskExtension, locStart) ) { final Set<String> filters = new LinkedHashSet<>(vc.getFilters()); filters.add(maskName); vc = new VariantContextBuilder(vc).filters(filters).make(); } return vc; }
/** * Helper function to check if a mask covers the variant location. * * @param vc variant context * @param genomeLoc genome location * @param maskName name of the mask * @param maskExtension bases beyond the mask * @param vcBeforeLoc if true, variant context is before the genome location; if false, the converse is true. * @return true if the genome location is within the extended mask area, false otherwise */ protected static boolean doesMaskCoverVariant(VariantContext vc, GenomeLoc genomeLoc, String maskName, int maskExtension, boolean vcBeforeLoc) { final boolean needToCheckOveralpping = genomeLoc != null && // have a location genomeLoc.getContig().equals(vc.getChr()) && // it's on the same contig (vc.getFilters() == null || !vc.getFilters().contains(maskName)); // the filter hasn't already been applied if ( needToCheckOveralpping ) { return vcBeforeLoc ? (genomeLoc.getStart() - vc.getEnd() <= maskExtension) // it's within the mask area (multi-base VCs that overlap this site will always give a negative distance) : (vc.getStart() - genomeLoc.getStop() <= maskExtension); } else { return false; } } }
private void buildFilter( VariantContext vc ) throws IOException { if ( vc.isFiltered() ) { encodeStringsByRef(vc.getFilters()); } else if ( vc.filtersWereApplied() ) { encodeStringsByRef(Collections.singleton(VCFConstants.PASSES_FILTERS_v4)); } else { encoder.encodeTypedMissing(BCF2Type.INT8); } }
private void buildFilter( VariantContext vc ) throws IOException { if ( vc.isFiltered() ) { encodeStringsByRef(vc.getFilters()); } else if ( vc.filtersWereApplied() ) { encodeStringsByRef(Collections.singleton(VCFConstants.PASSES_FILTERS_v4)); } else { encoder.encodeTypedMissing(BCF2Type.INT8); } }
private void buildFilter( VariantContext vc ) throws IOException { if ( vc.isFiltered() ) { encodeStringsByRef(vc.getFilters()); } else if ( vc.filtersWereApplied() ) { encodeStringsByRef(Collections.singleton(VCFConstants.PASSES_FILTERS_v4)); } else { encoder.encodeTypedMissing(BCF2Type.INT8); } }
@Test(enabled = !DEBUG, dataProvider = "mergeFiltered") public void testMergeFiltered(MergeFilteredTest cfg) { final List<String> priority = vcs2priority(cfg.inputs); final VariantContext merged = GATKVariantContextUtils.simpleMerge( cfg.inputs, priority, cfg.type, GATKVariantContextUtils.GenotypeMergeType.PRIORITIZE, true, false, "set", false, false); // test alleles are equal Assert.assertEquals(merged.getAlleles(), cfg.expected.getAlleles()); // test set field Assert.assertEquals(merged.getAttribute("set"), cfg.setExpected); // test filter field Assert.assertEquals(merged.getFilters(), cfg.expected.getFilters()); }
public UnfinishedVariantContext(VariantContext vc) { this.name = vc.getSource(); this.id = vc.getID(); this.contig = vc.getChr(); this.start = vc.getStart(); this.stop = vc.getEnd(); this.alleles = vc.getAlleles(); this.genotypes = new HashMap<String, Genotype>(); for ( final Genotype g : vc.getGenotypes() ) { this.genotypes.put(g.getSampleName(), g); } this.log10PError = vc.getLog10PError(); this.filters = vc.filtersWereApplied() ? vc.getFilters() : null; this.attributes = new HashMap<String, Object>(vc.getAttributes()); }
public static void assertEquals(final VariantContext actual, final VariantContext expected) { if (expected == null) { Assert.assertNull(actual); return; } final String expectedString = expected.toString(); Assert.assertNotNull(actual, "null status"); Assert.assertEquals(actual.getContig(), expected.getContig(), expectedString + " Different contigs: "); Assert.assertEquals(actual.getStart(), expected.getStart(), expectedString + " Different starts: "); Assert.assertEquals(actual.getEnd(), expected.getEnd(), expectedString + " Different ends: "); Assert.assertTrue(actual.hasSameAllelesAs(expected), "Alleles differ between " + actual + " and " + expected + ": "); assertEquals(actual.getGenotypes(), expected.getGenotypes()); Assert.assertEquals(actual.getID(), expected.getID(), "IDs differ for " + expectedString); Assert.assertEquals(actual.getFilters(), expected.getFilters(), "Filters differ for " + expectedString); Assert.assertEquals(actual.getAttributes(), expected.getAttributes(), "Attributes differ for " + expectedString); }
/** * Consumes a VCF and returns a ListMap where each they keys are the IDs of filtered out sites and the values are the set of filters. */ private ListMap<String, String> slurpFilters(final File vcf) { final ListMap<String, String> map = new ListMap<>(); final VCFFileReader in = new VCFFileReader(vcf, false); for (final VariantContext ctx : in) { if (ctx.isNotFiltered()) continue; for (final String filter : ctx.getFilters()) { map.add(ctx.getID(), filter); } } in.close(); return map; } }