VcfFilter(String name, String description) { this.filterheader = new VCFFilterHeaderLine(name, description); } /**
@Override public List<VCFFilterHeaderLine> headerLines() { return CollectionUtil.makeList( new VCFFilterHeaderLine(this.filterName, "Variant Filtered by Javascript file " + this.scriptFile)); } }
@Override public List<VCFFilterHeaderLine> headerLines() { return CollectionUtil.makeList(new VCFFilterHeaderLine(AB_FILTER, "Heterozygote allele balance below required threshold.")); }
@Override public List<VCFFilterHeaderLine> headerLines() { return CollectionUtil.makeList(new VCFFilterHeaderLine(FILTER_NAME, "Site exhibits QD value below a hard limit.")); } }
@Override public List<VCFFilterHeaderLine> headerLines() { return CollectionUtil.makeList( new VCFFilterHeaderLine(this.filterName, "Variant Filtered by Javascript file " + this.scriptFile)); } }
@Override public List<VCFFilterHeaderLine> headerLines() { return CollectionUtil.makeList(new VCFFilterHeaderLine("StrandBias", "Site exhibits excessive allele/strand correlation.")); }
@Override public List<VCFFilterHeaderLine> headerLines() { return CollectionUtil.makeList(new VCFFilterHeaderLine(FILTER_NAME, "Site exhibits QD value below a hard limit.")); } }
@Override public List<VCFFilterHeaderLine> headerLines() { return CollectionUtil.makeList(new VCFFilterHeaderLine("StrandBias", "Site exhibits excessive allele/strand correlation.")); }
@Override public List<VCFFilterHeaderLine> headerLines() { return CollectionUtil.makeList(new VCFFilterHeaderLine(AB_FILTER, "Heterozygote allele balance below required threshold.")); }
/** * @return list of additional {@link VCFHeaderLine}s to write out, * explaining the Jannovar and Exomiser INFO and FILTER fields */ private List<VCFHeaderLine> getAdditionalHeaderLines() { List<VCFHeaderLine> lines = new ArrayList<>(); // add INFO descriptions for (ExomiserVcfInfoField infoField : ExomiserVcfInfoField.values()) { lines.add(infoField.getVcfHeaderLine()); } // add FILTER descriptions for (FilterType ft : FilterType.values()) { lines.add(new VCFFilterHeaderLine(ft.toVcfValue(), ft.toString())); } return lines; }
hInfo.add(new VCFFilterHeaderLine(CLUSTERED_SNP_FILTER_NAME, "SNPs found in clusters")); hInfo.add(new VCFFilterHeaderLine(exp.name, possiblyInvertFilterExpression(exp.exp.toString()))); hInfo.add(new VCFFilterHeaderLine(exp.name, possiblyInvertFilterExpression(exp.exp.toString()))); hInfo.add(new VCFFilterHeaderLine(maskName, filterRecordsNotInMask ? "Doesn't overlap a user-input mask" : "Overlaps a user-input mask"));
/** * Add header entries. * * @param header * The {@link VCFHeader} to extend. */ public void addHeaders(VCFHeader header) { // add INFO line for standardized ANN field header.addMetaDataLine( new VCFInfoHeaderLine("ANN", 1, VCFHeaderLineType.String, Annotation.VCF_ANN_DESCRIPTION_STRING)); // add FILTER line for standardized OffExome filter header.addMetaDataLine( new VCFFilterHeaderLine(FILTER_EFFECT_OFF_EXOME, "Variant off-exome in all effect predictions")); }
/** * Gets the header lines for the VCF writer * * @return A set of VCF header lines */ private static Set<VCFHeaderLine> getHeaderInfo() { Set<VCFHeaderLine> headerLines = new HashSet<>(); // INFO fields for overall data headerLines.add(VCFStandardHeaderLines.getInfoLine(VCFConstants.END_KEY)); headerLines.add(GATKVCFHeaderLines.getInfoLine(GATKVCFConstants.AVG_INTERVAL_DP_KEY)); headerLines.add(GATKVCFHeaderLines.getInfoLine(GATKVCFConstants.INTERVAL_GC_CONTENT_KEY)); headerLines.add(new VCFInfoHeaderLine("Diagnose Targets", 0, VCFHeaderLineType.Flag, "DiagnoseTargets mode")); // FORMAT fields for each genotype headerLines.add(VCFStandardHeaderLines.getFormatLine(VCFConstants.GENOTYPE_FILTER_KEY)); headerLines.add(GATKVCFHeaderLines.getFormatLine(GATKVCFConstants.AVG_INTERVAL_DP_BY_SAMPLE_KEY)); headerLines.add(GATKVCFHeaderLines.getFormatLine(GATKVCFConstants.LOW_COVERAGE_LOCI)); headerLines.add(GATKVCFHeaderLines.getFormatLine(GATKVCFConstants.ZERO_COVERAGE_LOCI)); // FILTER fields for (CallableStatus stat : CallableStatus.values()) headerLines.add(new VCFFilterHeaderLine(stat.name(), stat.description)); return headerLines; }
header.addMetaDataLine(new VCFFilterHeaderLine(FILTER_GT_MAX_COV, "Genotype has coverage >" + options.getMaxCov())); header.addMetaDataLine(new VCFFilterHeaderLine(FILTER_GT_MIN_COV_HET, "Het. genotype call has coverage <" + options.getMinGtCovHet())); header.addMetaDataLine(new VCFFilterHeaderLine(FILTER_GT_MIN_COV_HOM_ALT, "Hom. alt genotype call has coverage <" + options.getMinGtCovHomAlt())); header.addMetaDataLine(new VCFFilterHeaderLine(FILTER_GT_MIN_GQ, "Genotype has quality (GQ) <" + options.getMinGtGq())); header.addMetaDataLine(new VCFFilterHeaderLine(FILTER_GT_MIN_AAF_HET, "Het. genotype has alternative allele fraction <" + options.getMinGtAafHet())); header.addMetaDataLine(new VCFFilterHeaderLine(FILTER_GT_MAX_AAF_HET, "Het. genotype has alternative allele fraction >" + options.getMaxGtAafHet())); header.addMetaDataLine(new VCFFilterHeaderLine(FILTER_GT_MIN_AAF_HOM_ALT, "Hom. alt genotype has alternative allele fraction <" + options.getMinGtAafHomAlt())); header.addMetaDataLine(new VCFFilterHeaderLine(FILTER_GT_MAX_AAF_HOM_REF, "Wild-type genotype has AAF >" + options.getMaxGtAafHomRef())); header.addMetaDataLine(new VCFFilterHeaderLine(FILTER_VAR_ALL_AFFECTED_GTS_FILTERED, "The genotype calls of all affected individuals have been filtered for this variant.")); header.addMetaDataLine(new VCFFilterHeaderLine(FILTER_VAR_MAX_FREQUENCY_AD, "Variant frequency >" + options.getMaxAlleleFrequencyAd() + " (threshold for AD inheritance), variant will be annotated with " + "compatibility with dominant inheritance regardlessly")); header.addMetaDataLine(new VCFFilterHeaderLine(FILTER_VAR_MAX_FREQUENCY_AR, "Variant frequency >" + options.getMaxAlleleFrequencyAd() + " (threshold for AR inheritance), variant will not be considered for "
/** * Add header entries. * * @param header The {@link VCFHeader} to extend. */ public void addHeaders(VCFHeader header) { header.addMetaDataLine(new VCFFilterHeaderLine(FILTER_GT_DE_NOVO_PARENT_AD2, "Supporting read count for alternative allele in tentative de novo call > " + options.getDeNovoMaxParentAd2())); header.addMetaDataLine(new VCFFilterHeaderLine(FILTER_GT_DE_NOVO_IN_SIBLING, "Non-ref genotype also seen in sibling")); header.addMetaDataLine( new VCFFormatHeaderLine(FORMAT_GT_DE_NOVO, 1, VCFHeaderLineType.Character, "Whether the variant looks de novo by genotype, one of {'Y', 'N'}.")); header.addMetaDataLine( new VCFFormatHeaderLine(FORMAT_PARENTS_REF, 1, VCFHeaderLineType.Character, "Whether both parent's genotype is reference, one of {'Y', 'N'}.")); header.addMetaDataLine(new VCFFilterHeaderLine(FILTER_GT_ONE_PARENT_FILTERED, "One parent was filtered or no-call, filter child as well, important for inheritance " + "filtration as filtered variants count as no-call which counts as " + "wild-card by default; \"one/both parents filtered\" don't count. (enabled: " + options.isApplyParentGtFilteredFilters() + ")")); header.addMetaDataLine(new VCFFilterHeaderLine(FILTER_GT_BOTH_PARENTS_FILTERED, "Both parents are filtered or no-call, filter child as well, important for inheritance " + "filtration as filtered variants count as no-call which counts as " + "wild-card by default; \"one/both parents filtered\" don't count. (enabled: " + options.isApplyParentGtFilteredFilters() + ")")); }
@Test public void testCreateDictionary() { final List<VCFHeaderLine> inputLines = new ArrayList<VCFHeaderLine>(); int counter = 0; inputLines.add(new VCFFilterHeaderLine(String.valueOf(counter++))); inputLines.add(new VCFFilterHeaderLine(String.valueOf(counter++))); inputLines.add(new VCFContigHeaderLine(Collections.singletonMap("ID", String.valueOf(counter++)), counter)); inputLines.add(new VCFContigHeaderLine(Collections.singletonMap("ID", String.valueOf(counter++)), counter)); inputLines.add(new VCFInfoHeaderLine(String.valueOf(counter++), VCFHeaderLineCount.UNBOUNDED, VCFHeaderLineType.Integer, "x")); inputLines.add(new VCFInfoHeaderLine(String.valueOf(counter++), VCFHeaderLineCount.UNBOUNDED, VCFHeaderLineType.Integer, "x")); inputLines.add(new VCFHeaderLine("x", "misc")); inputLines.add(new VCFHeaderLine("y", "misc")); inputLines.add(new VCFSimpleHeaderLine("GATKCommandLine","z","misc")); inputLines.add(new VCFFormatHeaderLine(String.valueOf(counter++), VCFHeaderLineCount.UNBOUNDED, VCFHeaderLineType.Integer, "x")); inputLines.add(new VCFFormatHeaderLine(String.valueOf(counter++), VCFHeaderLineCount.UNBOUNDED, VCFHeaderLineType.Integer, "x")); final int inputLineCounter = counter; final VCFHeader inputHeader = new VCFHeader(new LinkedHashSet<VCFHeaderLine>(inputLines)); final ArrayList<String> dict = BCF2Utils.makeDictionary(inputHeader); final int dict_size = dict.size(); Assert.assertEquals(7,dict_size); }
@Test public void testVCFHeaderAddFilterLine() { final VCFHeader header = getHiSeqVCFHeader(); final String filterDesc = "TestFilterLine Description"; final VCFFilterHeaderLine filterLine = new VCFFilterHeaderLine("TestFilterLine",filterDesc); Assert.assertEquals(filterDesc,filterLine.getDescription()); header.addMetaDataLine(filterLine); Assert.assertTrue(header.getFilterLines().contains(filterLine), "TestFilterLine not found in filter header lines"); Assert.assertTrue(header.getMetaDataInInputOrder().contains(filterLine), "TestFilterLine not found in set of all header lines"); Assert.assertNotNull(header.getFilterHeaderLine("TestFilterLine"), "Lookup for TestFilterLine by key failed"); Assert.assertFalse(header.getInfoHeaderLines().contains(filterLine), "TestFilterLine present in info header lines"); Assert.assertFalse(header.getFormatHeaderLines().contains(filterLine), "TestFilterLine present in format header lines"); Assert.assertFalse(header.getContigLines().contains(filterLine), "TestFilterLine present in contig header lines"); Assert.assertFalse(header.getOtherHeaderLines().contains(filterLine), "TestFilterLine present in other header lines"); }
private VariantContextWriter openOutputFile() { VariantContextWriterBuilder builder = new VariantContextWriterBuilder() .setReferenceDictionary(fasta.getSequenceDictionary()).setOutputFile(options.getPathOutputVCF()); if (options.getPathOutputVCF().endsWith(".gz") || options.getPathOutputVCF().endsWith(".bcf")) builder.setOption(Options.INDEX_ON_THE_FLY); else builder.unsetOption(Options.INDEX_ON_THE_FLY); VariantContextWriter writer = builder.build(); VCFHeader header = new VCFHeader(); int i = 0; for (SAMSequenceRecord record : fasta.getSequenceDictionary().getSequences()) { Map<String, String> mapping = new TreeMap<String, String>(); mapping.put("ID", record.getSequenceName()); mapping.put("length", Integer.toString(record.getSequenceLength())); header.addMetaDataLine(new VCFContigHeaderLine(mapping, i++)); } header.addMetaDataLine(new VCFSimpleHeaderLine("ALT", "ERROR", "Error in conversion")); header.addMetaDataLine(new VCFFilterHeaderLine("PARSE_ERROR", "Problem in parsing original HGVS variant string, written out as variant at 1:g.1N>N")); header.addMetaDataLine(new VCFInfoHeaderLine("ERROR_MESSAGE", 1, VCFHeaderLineType.String, "Error message")); header.addMetaDataLine(new VCFInfoHeaderLine("ORIG_VAR", 1, VCFHeaderLineType.String, "Original HGVS variant string from input file to hgvs-to-vcf")); writer.writeHeader(header); return writer; }
headerLine = new VCFFilterHeaderLine(line.getId(), line.getDescription()); break; case "contig":
private static void createSyntheticHeader() { Set<VCFHeaderLine> metaData = new TreeSet<VCFHeaderLine>(); addHeaderLine(metaData, "STRING1", 1, VCFHeaderLineType.String); addHeaderLine(metaData, "END", 1, VCFHeaderLineType.Integer); addHeaderLine(metaData, "STRING3", 3, VCFHeaderLineType.String); addHeaderLine(metaData, "STRING20", 20, VCFHeaderLineType.String); addHeaderLine(metaData, "VAR.INFO.STRING", VCFHeaderLineCount.UNBOUNDED, VCFHeaderLineType.String); addHeaderLine(metaData, "GT", 1, VCFHeaderLineType.String); addHeaderLine(metaData, "GQ", 1, VCFHeaderLineType.Integer); addHeaderLine(metaData, "ADA", VCFHeaderLineCount.A, VCFHeaderLineType.Integer); addHeaderLine(metaData, "PL", VCFHeaderLineCount.G, VCFHeaderLineType.Integer); addHeaderLine(metaData, "GS", 2, VCFHeaderLineType.String); addHeaderLine(metaData, "GV", VCFHeaderLineCount.UNBOUNDED, VCFHeaderLineType.String); addHeaderLine(metaData, "FT", 1, VCFHeaderLineType.String); // prep the header metaData.add(new VCFContigHeaderLine(Collections.singletonMap("ID", "1"), 0)); metaData.add(new VCFFilterHeaderLine("FILTER1")); metaData.add(new VCFFilterHeaderLine("FILTER2")); addHeaderLine(metaData, "INT1", 1, VCFHeaderLineType.Integer); addHeaderLine(metaData, "INT3", 3, VCFHeaderLineType.Integer); addHeaderLine(metaData, "INT20", 20, VCFHeaderLineType.Integer); addHeaderLine(metaData, "INT.VAR", VCFHeaderLineCount.UNBOUNDED, VCFHeaderLineType.Integer); addHeaderLine(metaData, "FLOAT1", 1, VCFHeaderLineType.Float); addHeaderLine(metaData, "FLOAT3", 3, VCFHeaderLineType.Float); addHeaderLine(metaData, "FLAG", 0, VCFHeaderLineType.Flag); syntheticHeader = new VCFHeader(metaData); }