private VariantContextFilterState determineVariantContextState(VariantContext variantContext) { if (variantContext.filtersWereApplied()) { if (variantContext.isNotFiltered()) { return VariantContextFilterState.PASSED; } else { return VariantContextFilterState.FAILED; } } return VariantContextFilterState.UNFILTERED; }
@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); }
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); } }
public enum GenotypeAssignmentMethod { /** * set all of the genotype GT values to NO_CALL */ SET_TO_NO_CALL, /** * set all of the genotype GT values to NO_CALL and remove annotations */ SET_TO_NO_CALL_NO_ANNOTATIONS, /** * Use the subsetted PLs to greedily assigned genotypes */ USE_PLS_TO_ASSIGN, /** * Try to match the original GT calls, if at all possible * * Suppose I have 3 alleles: A/B/C and the following samples: * * original_GT best_match to A/B best_match to A/C * S1 => A/A A/A A/A * S2 => A/B A/B A/A * S3 => B/B B/B A/A * S4 => B/C A/B A/C * S5 => C/C A/A C/C * * Basically, all alleles not in the subset map to ref. It means that het-alt genotypes
out.writeInt(vc.filtersWereApplied() ? -1 : -2);
@Override public Integer map(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { if ( tracker == null ) return 0; Collection<VariantContext> vcs = tracker.getValues(variants, context.getLocation()); if ( vcs == null || vcs.size() == 0) { return 0; } for (VariantContext vc : vcs) { if (!selectedTypes.contains(vc.getType())) continue; // skip if site isn't polymorphic and if user didn't request to ignore polymorphic status if (!vc.isPolymorphicInSamples() && !IGNORE_POLYMORPHIC) continue; if (!INCLUDE_FILTERED_SITES && vc.filtersWereApplied() && vc.isFiltered()) continue; // does this site pass the criteria for the samples we are interested in? boolean passesSampleSelectionCriteria; if (samples.isEmpty()) passesSampleSelectionCriteria = true; else passesSampleSelectionCriteria = sampleSelector.selectSiteInSamples(vc); frequencyModeSelector.logCurrentSiteData(vc,passesSampleSelectionCriteria,IGNORE_GENOTYPES,IGNORE_POLYMORPHIC); } return 1; }
out.writeInt(vc.filtersWereApplied() ? -1 : -2);
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()); }
if (vc.filtersWereApplied() && vc.isFiltered()) numFilteredRecords++;
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; }
/** * Tests that all records get PASS set as their filter when extreme values are used for filtering. */ @Test(dataProvider = "goodInputVcfs") public void testNoFiltering(final File input) throws Exception { final File out = testFiltering(input, ".vcf.gz", 0, 0, 0, Double.MAX_VALUE); final VCFFileReader in = new VCFFileReader(out, false); for (final VariantContext ctx : in) { if (!ctx.filtersWereApplied() || ctx.isFiltered()) { Assert.fail("Context should not have been filtered: " + ctx.toString()); } } in.close(); }
@Test public void testFilters() { List<Allele> alleles = Arrays.asList(Aref, T); Genotype g1 = GenotypeBuilder.create("AA", Arrays.asList(Aref, Aref)); Genotype g2 = GenotypeBuilder.create("AT", Arrays.asList(Aref, T)); VariantContext vc = new VariantContextBuilder("test", snpLoc, snpLocStart, snpLocStop, alleles).genotypes(g1, g2).make(); Assert.assertTrue(vc.isNotFiltered()); Assert.assertFalse(vc.isFiltered()); Assert.assertEquals(0, vc.getFilters().size()); Assert.assertFalse(vc.filtersWereApplied()); Assert.assertNull(vc.getFiltersMaybeNull()); vc = new VariantContextBuilder(vc).filters("BAD_SNP_BAD!").make(); Assert.assertFalse(vc.isNotFiltered()); Assert.assertTrue(vc.isFiltered()); Assert.assertEquals(1, vc.getFilters().size()); Assert.assertTrue(vc.filtersWereApplied()); Assert.assertNotNull(vc.getFiltersMaybeNull()); Set<String> filters = new HashSet<>(Arrays.asList("BAD_SNP_BAD!", "REALLY_BAD_SNP", "CHRIST_THIS_IS_TERRIBLE")); vc = new VariantContextBuilder(vc).filters(filters).make(); Assert.assertFalse(vc.isNotFiltered()); Assert.assertTrue(vc.isFiltered()); Assert.assertEquals(3, vc.getFilters().size()); Assert.assertTrue(vc.filtersWereApplied()); Assert.assertNotNull(vc.getFiltersMaybeNull()); }
vcRoot.add("ALT", vc.getAlternateAlleles()); vcRoot.add("QUAL", vc.hasLog10PError() ? vc.getLog10PError() * -10 : VCFConstants.MISSING_VALUE_v4); vcRoot.add("FILTER", ! vc.filtersWereApplied() // needs null to differentiate between PASS and . ? VCFConstants.MISSING_VALUE_v4 : ( vc.getFilters().isEmpty() ? VCFConstants.PASSES_FILTERS_v4 : vc.getFilters()) );
public static void assertVariantContextsAreEqual( final VariantContext actual, final VariantContext expected ) { Assert.assertNotNull(actual, "VariantContext expected not null"); Assert.assertEquals(actual.getChr(), expected.getChr(), "chr"); Assert.assertEquals(actual.getStart(), expected.getStart(), "start"); Assert.assertEquals(actual.getEnd(), expected.getEnd(), "end"); Assert.assertEquals(actual.getID(), expected.getID(), "id"); Assert.assertEquals(actual.getAlleles(), expected.getAlleles(), "alleles for " + expected + " vs " + actual); assertAttributesEquals(actual.getAttributes(), expected.getAttributes()); Assert.assertEquals(actual.filtersWereApplied(), expected.filtersWereApplied(), "filtersWereApplied"); Assert.assertEquals(actual.isFiltered(), expected.isFiltered(), "isFiltered"); assertEqualsSet(actual.getFilters(), expected.getFilters(), "filters"); assertEqualsDoubleSmart(actual.getPhredScaledQual(), expected.getPhredScaledQual()); Assert.assertEquals(actual.hasGenotypes(), expected.hasGenotypes(), "hasGenotypes"); if ( expected.hasGenotypes() ) { assertEqualsSet(actual.getSampleNames(), expected.getSampleNames(), "sample names set"); Assert.assertEquals(actual.getSampleNamesOrderedByName(), expected.getSampleNamesOrderedByName(), "sample names"); final Set<String> samples = expected.getSampleNames(); for ( final String sample : samples ) { assertGenotypesAreEqual(actual.getGenotype(sample), expected.getGenotype(sample)); } } }
/** * Assert that two variant contexts are actually equal * @param actual * @param expected */ public static void assertEquals( final VariantContext actual, final VariantContext expected ) { Assert.assertNotNull(actual, "VariantContext expected not null"); Assert.assertEquals(actual.getContig(), expected.getContig(), "chr"); Assert.assertEquals(actual.getStart(), expected.getStart(), "start"); Assert.assertEquals(actual.getEnd(), expected.getEnd(), "end"); Assert.assertEquals(actual.getID(), expected.getID(), "id"); Assert.assertEquals(actual.getAlleles(), expected.getAlleles(), "alleles for " + expected + " vs " + actual); assertAttributesEquals(actual.getAttributes(), expected.getAttributes()); Assert.assertEquals(actual.filtersWereApplied(), expected.filtersWereApplied(), "filtersWereApplied"); Assert.assertEquals(actual.isFiltered(), expected.isFiltered(), "isFiltered"); VariantBaseTest.assertEqualsSet(actual.getFilters(), expected.getFilters(), "filters"); VariantBaseTest.assertEqualsDoubleSmart(actual.getPhredScaledQual(), expected.getPhredScaledQual()); Assert.assertEquals(actual.hasGenotypes(), expected.hasGenotypes(), "hasGenotypes"); if ( expected.hasGenotypes() ) { VariantBaseTest.assertEqualsSet(actual.getSampleNames(), expected.getSampleNames(), "sample names set"); Assert.assertEquals(actual.getSampleNamesOrderedByName(), expected.getSampleNamesOrderedByName(), "sample names"); final Set<String> samples = expected.getSampleNames(); for ( final String sample : samples ) { assertEquals(actual.getGenotype(sample), expected.getGenotype(sample)); } } }
/** * Asserts that the two provided VariantContext objects are equal. * * @param actual actual VariantContext object * @param expected expected VariantContext to compare against */ public static void assertVariantContextsAreEqual( final VariantContext actual, final VariantContext expected ) { Assert.assertNotNull(actual, "VariantContext expected not null"); Assert.assertEquals(actual.getContig(), expected.getContig(), "chr"); Assert.assertEquals(actual.getStart(), expected.getStart(), "start"); Assert.assertEquals(actual.getEnd(), expected.getEnd(), "end"); Assert.assertEquals(actual.getID(), expected.getID(), "id"); Assert.assertEquals(actual.getAlleles(), expected.getAlleles(), "alleles for " + expected + " vs " + actual); assertAttributesEquals(actual.getAttributes(), expected.getAttributes()); Assert.assertEquals(actual.filtersWereApplied(), expected.filtersWereApplied(), "filtersWereApplied"); Assert.assertEquals(actual.isFiltered(), expected.isFiltered(), "isFiltered"); assertEqualsSet(actual.getFilters(), expected.getFilters(), "filters"); assertEqualsDoubleSmart(actual.getPhredScaledQual(), expected.getPhredScaledQual()); Assert.assertEquals(actual.hasGenotypes(), expected.hasGenotypes(), "hasGenotypes"); if ( expected.hasGenotypes() ) { assertEqualsSet(actual.getSampleNames(), expected.getSampleNames(), "sample names set"); Assert.assertEquals(actual.getSampleNamesOrderedByName(), expected.getSampleNamesOrderedByName(), "sample names"); final Set<String> samples = expected.getSampleNames(); for ( final String sample : samples ) { assertGenotypesAreEqual(actual.getGenotype(sample), expected.getGenotype(sample)); } } }