/** * create a VCF info header line * * @param line the header line * @param version the vcf header version * @param key the key for this header line * @param expectedTagOrdering the tag ordering expected for this header line */ public VCFSimpleHeaderLine(final String line, final VCFHeaderVersion version, final String key, final List<String> expectedTagOrdering) { this(key, VCFHeaderLineTranslator.parseLine(version, line, expectedTagOrdering)); }
/** * create a VCF info header line * * @param line the header line * @param version the vcf header version * @param key the key for this header line * @param expectedTagOrdering the tag ordering expected for this header line */ public VCFSimpleHeaderLine(final String line, final VCFHeaderVersion version, final String key, final List<String> expectedTagOrdering) { this(key, VCFHeaderLineTranslator.parseLine(version, line, expectedTagOrdering)); }
/** * create a VCF info header line * * @param line the header line * @param version the vcf header version * @param key the key for this header line * @param expectedTagOrdering the tag ordering expected for this header line * @param recommendedTags tags that are optional for this header line */ public VCFSimpleHeaderLine(final String line, final VCFHeaderVersion version, final String key, final List<String> expectedTagOrdering, final List<String> recommendedTags) { this(key, VCFHeaderLineTranslator.parseLine(version, line, expectedTagOrdering, recommendedTags)); }
public static Map<String,String> parseLine(VCFHeaderVersion version, String valueLine, List<String> expectedTagOrder) { return parseLine(version, valueLine, expectedTagOrder, Collections.emptyList()); }
private static void callTranslator(final String line, final List<String> expectedTagOrder, final List<String> recommendedTags) { // To cover both constructors for code coverage if (recommendedTags.isEmpty()) { VCFHeaderLineTranslator.parseLine(VCFHeaderVersion.VCF4_2, line, expectedTagOrder); } else { VCFHeaderLineTranslator.parseLine(VCFHeaderVersion.VCF4_2, line, expectedTagOrder, recommendedTags); } }
@Test(dataProvider = "vcfv3", expectedExceptions = TribbleException.class) public void testVcfV3FailsRecommendedTags(final VCFHeaderVersion vcfVersion) { VCFHeaderLineTranslator.parseLine( vcfVersion, "<ID=X,Description=\"Y\">", Arrays.asList("ID"), Arrays.asList("Description") ); } }
if ( version.isAtLeastAsRecentAs(VCFHeaderVersion.VCF4_2) ) expectedTags.add("Version"); final Map<String,String> mapping = VCFHeaderLineTranslator.parseLine(version, line, expectedTags); name = mapping.get("ID"); count = -1;
if (version.isAtLeastAsRecentAs(VCFHeaderVersion.VCF4_2)) expectedTags.add("Version"); final Map<String, String> mapping = VCFHeaderLineTranslator.parseLine(version, line, expectedTags); name = mapping.get("ID"); count = -1;
recommendedTags = Collections.emptyList(); final Map<String, String> mapping = VCFHeaderLineTranslator.parseLine(version, line, expectedTags, recommendedTags); name = mapping.get("ID"); count = -1;
final Map<String,String> values = VCFHeaderLineTranslator.parseLine(VCFHeaderVersion.VCF4_2, "<ID=SnpCluster,Description=\"SNPs found in clusters\">", null); Assert.assertEquals(values.size(), 2); Assert.assertEquals(values.get("ID"), "SnpCluster"); final Map<String,String> values2 = VCFHeaderLineTranslator.parseLine(VCFHeaderVersion.VCF4_2, "<ID=ANNOTATION,Description=\"ANNOTATION != \\\"NA\\\" || ANNOTATION <= 0.01\">", null); Assert.assertEquals(values2.size(), 2); Assert.assertEquals(values2.get("ID"), "ANNOTATION"); final Map<String,String> values3 = VCFHeaderLineTranslator.parseLine(VCFHeaderVersion.VCF4_2, "<ID=ANNOTATION,Description=\"ANNOTATION \\\\= \\\"NA\\\" || ANNOTATION <= 0.01\">", null); Assert.assertEquals(values3.size(), 2); Assert.assertEquals(values3.get("ID"), "ANNOTATION"); final Map<String,String> values4 = VCFHeaderLineTranslator.parseLine(VCFHeaderVersion.VCF4_2, "<ID=ANNOTATION,Description=\"ANNOTATION \\\\= \\\"NA\\\" || ANNOTATION <= 0.01\", Description2=\"foo\\\"bar\">", null); Assert.assertEquals(values4.size(), 3); Assert.assertEquals(values4.get("ID"), "ANNOTATION"); final Map<String,String> values5 = VCFHeaderLineTranslator.parseLine(VCFHeaderVersion.VCF4_2, "<ID=ANNOTATION,Description=\"ANNOTATION \\n with a newline in it\">", null); Assert.assertEquals(values5.size(), 2); Assert.assertEquals(values5.get("ID"), "ANNOTATION"); final Map<String,String> values6 = VCFHeaderLineTranslator.parseLine(VCFHeaderVersion.VCF4_2, "<ID=ANNOTATION,Description=\"ANNOTATION \\n with a newline in it>", null); Assert.fail("Should have thrown a TribbleException for having an unclosed quote in the description line"); final Map<String,String> values7 = VCFHeaderLineTranslator.parseLine(VCFHeaderVersion.VCF4_2, "<ID=ANNOTATION,Description=\"ANNOTATION \\n with a newline in it\\\">", null); Assert.fail("Should have thrown a TribbleException for having an unclosed quote in the description line");
@Override public VcfHeader convert(VCFHeader header) { VcfHeader avroVcfHeader = new VcfHeader(); LinkedHashMap<String, List<Object>> meta = new LinkedHashMap<>(); avroVcfHeader.setMeta(meta); for (VCFHeaderLine line : header.getMetaDataInInputOrder()) { if (line.getKey().equalsIgnoreCase("fileFormat")) { avroVcfHeader.setFileFormat(line.getValue()); continue; } Object value; if (line.getValue().isEmpty()) { value = VCFHeaderLineTranslator.parseLine(VCFHeaderVersion.VCF4_2, line.toString(), null); } else { value = line.getValue(); } if (!meta.containsKey(line.getKey())) { meta.put(line.getKey(), new LinkedList<>()); } meta.get(line.getKey()).add(value); } return avroVcfHeader; }
Map<String, String> map = VCFHeaderLineTranslator.parseLine(VCFHeaderVersion.VCF4_2, line.toString(), null); VariantFileHeaderComplexLine.Builder builder = VariantFileHeaderComplexLine.newBuilder(); setValue(map, "ID", builder::setId);