/** * Completely replaces the contig records in this header with those in the given SAMSequenceDictionary. */ public void setSequenceDictionary(final SAMSequenceDictionary dictionary) { this.contigMetaData.clear(); for (final SAMSequenceRecord record : dictionary.getSequences()) { contigMetaData.add(new VCFContigHeaderLine(record, null)); } this.mMetaData.addAll(contigMetaData); }
private static VCFContigHeaderLine makeContigHeaderLine(final SAMSequenceRecord contig, final String assembly) { final Map<String, String> map = new LinkedHashMap<>(3); map.put("ID", contig.getSequenceName()); map.put("length", String.valueOf(contig.getSequenceLength())); if (assembly != null) map.put("assembly", assembly); return new VCFContigHeaderLine(map, contig.getSequenceIndex()); }
private static VCFContigHeaderLine makeContigHeaderLine(final SAMSequenceRecord contig, final String assembly) { final Map<String, String> map = new LinkedHashMap<>(3); map.put("ID", contig.getSequenceName()); map.put("length", String.valueOf(contig.getSequenceLength())); if (assembly != null) map.put("assembly", assembly); return new VCFContigHeaderLine(map, contig.getSequenceIndex()); }
private static VCFContigHeaderLine makeContigHeaderLine(final SAMSequenceRecord contig, final String assembly) { final Map<String, String> map = new LinkedHashMap<String, String>(3); map.put("ID", contig.getSequenceName()); map.put("length", String.valueOf(contig.getSequenceLength())); if ( assembly != null ) map.put("assembly", assembly); return new VCFContigHeaderLine(map, contig.getSequenceIndex()); }
/** * Completely replaces the contig records in this header with those in the given SAMSequenceDictionary. */ public void setSequenceDictionary(final SAMSequenceDictionary dictionary) { this.contigMetaData.clear(); // Also need to remove contig record lines from mMetaData final List<VCFHeaderLine> toRemove = new ArrayList<VCFHeaderLine>(); for (final VCFHeaderLine line : mMetaData) { if (line instanceof VCFContigHeaderLine) { toRemove.add(line); } } mMetaData.removeAll(toRemove); for (final SAMSequenceRecord record : dictionary.getSequences()) { addMetaDataLine(new VCFContigHeaderLine(record, record.getAssembly())); } }
/** * Completely replaces the contig records in this header with those in the given SAMSequenceDictionary. */ public void setSequenceDictionary(final SAMSequenceDictionary dictionary) { this.contigMetaData.clear(); // Also need to remove contig record lines from mMetaData final List<VCFHeaderLine> toRemove = new ArrayList<VCFHeaderLine>(); for (final VCFHeaderLine line : mMetaData) { if (line instanceof VCFContigHeaderLine) { toRemove.add(line); } } mMetaData.removeAll(toRemove); for (final SAMSequenceRecord record : dictionary.getSequences()) { addMetaDataLine(new VCFContigHeaderLine(record, record.getAssembly())); } }
private Set<VCFHeaderLine> createSyntheticMetadata() { final Set<VCFHeaderLine> metaData = new TreeSet<VCFHeaderLine>(); metaData.add(new VCFContigHeaderLine(Collections.singletonMap("ID", "1"), 0)); metaData.add(new VCFFormatHeaderLine("GT", 1, VCFHeaderLineType.String, "x")); metaData.add(new VCFFormatHeaderLine("AA", 1, VCFHeaderLineType.String, "aa")); metaData.add(new VCFFormatHeaderLine("BB", 1, VCFHeaderLineType.Integer, "bb")); return metaData; }
metaData.add(format); } else if ( str.startsWith(VCFConstants.CONTIG_HEADER_START) ) { final VCFContigHeaderLine contig = new VCFContigHeaderLine(str.substring(9), version, VCFConstants.CONTIG_HEADER_START.substring(2), contigCounter++); metaData.add(contig); } else if ( str.startsWith(VCFConstants.ALT_HEADER_START) ) {
metaData.add(format); } else if ( str.startsWith(VCFConstants.CONTIG_HEADER_START) ) { final VCFContigHeaderLine contig = new VCFContigHeaderLine(str.substring(9), version, VCFConstants.CONTIG_HEADER_START.substring(2), contigCounter++); metaData.add(contig); } else if ( str.startsWith(VCFConstants.ALT_HEADER_START) ) {
metaData.add(format); } else if ( str.startsWith(VCFConstants.CONTIG_HEADER_START) ) { final VCFContigHeaderLine contig = new VCFContigHeaderLine(str.substring(9), version, VCFConstants.CONTIG_HEADER_START.substring(2), contigCounter++); metaData.add(contig); } else if ( str.startsWith(VCFConstants.ALT_HEADER_START) ) {
@Test public void testVCFHeaderAddContigLine() { final VCFHeader header = getHiSeqVCFHeader(); final VCFContigHeaderLine contigLine = new VCFContigHeaderLine( "<ID=chr1,length=1234567890,assembly=FAKE,md5=f126cdf8a6e0c7f379d618ff66beb2da,species=\"Homo sapiens\">", VCFHeaderVersion.VCF4_0, VCFHeader.CONTIG_KEY, 0); header.addMetaDataLine(contigLine); Assert.assertTrue(header.getContigLines().contains(contigLine), "Test contig line not found in contig header lines"); Assert.assertTrue(header.getMetaDataInInputOrder().contains(contigLine), "Test contig line not found in set of all header lines"); Assert.assertFalse(header.getInfoHeaderLines().contains(contigLine), "Test contig line present in info header lines"); Assert.assertFalse(header.getFormatHeaderLines().contains(contigLine), "Test contig line present in format header lines"); Assert.assertFalse(header.getFilterLines().contains(contigLine), "Test contig line present in filter header lines"); Assert.assertFalse(header.getOtherHeaderLines().contains(contigLine), "Test contig line present in other header lines"); }
@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); }
long chrSize = entry.getValue(); newLines.add(new VCFContigHeaderLine(VCFHeaderLine.toStringEncoding( createContigEntry(currName, chrSize, ARGS.targetAssembly, ARGS.species)), version, VCFConstants.CONTIG_HEADER_KEY, i++));
@Test public void testVCFHeaderHonorContigLineOrder() throws IOException { try (final VCFFileReader vcfReader = new VCFFileReader(new File(variantTestDataRoot + "dbsnp_135.b37.1000.vcf"), false)) { // start with a header with a bunch of contig lines final VCFHeader header = vcfReader.getFileHeader(); final List<VCFContigHeaderLine> originalHeaderList = header.getContigLines(); Assert.assertTrue(originalHeaderList.size() > 0); // copy the contig lines to a new list, sticking an extra contig line in the middle final List<VCFContigHeaderLine> orderedList = new ArrayList<>(); final int splitInTheMiddle = originalHeaderList.size() / 2; orderedList.addAll(originalHeaderList.subList(0, splitInTheMiddle)); final VCFContigHeaderLine outrageousContigLine = new VCFContigHeaderLine( "<ID=outrageousID,length=1234567890,assembly=FAKE,md5=f126cdf8a6e0c7f379d618ff66beb2da,species=\"Homo sapiens\">", VCFHeaderVersion.VCF4_2, VCFHeader.CONTIG_KEY, 0); orderedList.add(outrageousContigLine); // make sure the extra contig line is outrageous enough to not collide with a real contig ID Assert.assertTrue(orderedList.contains(outrageousContigLine)); orderedList.addAll(originalHeaderList.subList(splitInTheMiddle, originalHeaderList.size())); Assert.assertEquals(originalHeaderList.size() + 1, orderedList.size()); // crete a new header from the ordered list, and test that getContigLines honors the input order final VCFHeader orderedHeader = new VCFHeader(); orderedList.forEach(hl -> orderedHeader.addMetaDataLine(hl)); Assert.assertEquals(orderedList, orderedHeader.getContigLines()); } }
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")); extraLines.add(new VCFContigHeaderLine(Collections.singletonMap("ID", String.valueOf(counter++)), counter)); extraLines.add(new VCFInfoHeaderLine(String.valueOf(counter++), VCFHeaderLineCount.UNBOUNDED, VCFHeaderLineType.Integer, "x")); extraLines.add(new VCFFormatHeaderLine(String.valueOf(counter++), VCFHeaderLineCount.UNBOUNDED, VCFHeaderLineType.Integer, "x"));
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; }
map.putAll(line.getGenericFields()); if (line.getKey().equals("contig")) { headerLine = new VCFContigHeaderLine(map, contigIndex++); } else { headerLine = new VCFSimpleHeaderLine(line.getKey(), map);
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); }