public boolean hasInfoLine(final String id) { return getInfoHeaderLine(id) != null; }
listParam.append("["); for(Object unk : unknList){ listParam.append(this.formatObjectForJS(key, unk, vcfHeader.getInfoHeaderLine(key).getType()) + ", "); fmtValue= this.formatObjectForJS(key, unkValue, vcfHeader.getInfoHeaderLine(key).getType()); } catch(NullPointerException e){ if(headerLine.getType().equals(VCFHeaderLineType.Flag)){
public boolean hasInfoLine(final String id) { return getInfoHeaderLine(id) != null; }
@Test public void testVCFHeaderAddInfoLine() { final VCFHeader header = getHiSeqVCFHeader(); final VCFInfoHeaderLine infoLine = new VCFInfoHeaderLine("TestInfoLine", VCFHeaderLineCount.UNBOUNDED, VCFHeaderLineType.String, "test info line"); header.addMetaDataLine(infoLine); Assert.assertTrue(header.getInfoHeaderLines().contains(infoLine), "TestInfoLine not found in info header lines"); Assert.assertTrue(header.getMetaDataInInputOrder().contains(infoLine), "TestInfoLine not found in set of all header lines"); Assert.assertNotNull(header.getInfoHeaderLine("TestInfoLine"), "Lookup for TestInfoLine by key failed"); Assert.assertFalse(header.getFormatHeaderLines().contains(infoLine), "TestInfoLine present in format header lines"); Assert.assertFalse(header.getFilterLines().contains(infoLine), "TestInfoLine present in filter header lines"); Assert.assertFalse(header.getContigLines().contains(infoLine), "TestInfoLine present in contig header lines"); Assert.assertFalse(header.getOtherHeaderLines().contains(infoLine), "TestInfoLine present in other header lines"); }
public boolean hasInfoLine(final String id) { return getInfoHeaderLine(id) != null; }
public static void assertHeadersEquals(VCFHeader header0, VCFHeader header1) { assertEquals(header0.getColumnCount(), header1.getColumnCount()); assertEquals(header0.getGenotypeSamples(), header1.getGenotypeSamples()); assertEquals(header0.getContigLines(), header1.getContigLines()); for (VCFInfoHeaderLine line0 : header0.getInfoHeaderLines()) { VCFInfoHeaderLine line1 = header1.getInfoHeaderLine(line0.getID()); assertEquals(line0.getCount(), line1.getCount()); assertEquals(line0.getType(), line1.getType()); assertEquals(line0.getDescription(), line1.getDescription()); assertEquals(0, line0.compareTo(line1)); } } }
private void writeInfoString(final Map<String, String> infoFields, final Appendable vcfoutput) throws IOException { if ( infoFields.isEmpty() ) { vcfoutput.append(VCFConstants.EMPTY_INFO_FIELD); return; } boolean isFirst = true; for (final Map.Entry<String, String> entry : infoFields.entrySet()) { if (isFirst) isFirst = false; else vcfoutput.append(VCFConstants.INFO_FIELD_SEPARATOR); vcfoutput.append(entry.getKey()); if ( ! entry.getValue().isEmpty()) { final VCFInfoHeaderLine metaData = this.header.getInfoHeaderLine(entry.getKey()); if ( metaData == null || metaData.getCountType() != VCFHeaderLineCount.INTEGER || metaData.getCount() != 0 ) { vcfoutput.append('='); vcfoutput.append(entry.getValue()); } } } }
private void writeInfoString(final Map<String, String> infoFields, final Appendable vcfoutput) throws IOException { if ( infoFields.isEmpty() ) { vcfoutput.append(VCFConstants.EMPTY_INFO_FIELD); return; } boolean isFirst = true; for (final Map.Entry<String, String> entry : infoFields.entrySet()) { if (isFirst) isFirst = false; else vcfoutput.append(VCFConstants.INFO_FIELD_SEPARATOR); vcfoutput.append(entry.getKey()); if ( ! entry.getValue().isEmpty()) { final VCFInfoHeaderLine metaData = this.header.getInfoHeaderLine(entry.getKey()); if ( metaData == null || metaData.getCountType() != VCFHeaderLineCount.INTEGER || metaData.getCount() != 0 ) { vcfoutput.append('='); vcfoutput.append(entry.getValue()); } } } }
private void writeInfoString(final Map<String, String> infoFields, final StringBuilder builder) { if ( infoFields.isEmpty() ) { builder.append(VCFConstants.EMPTY_INFO_FIELD); return; } boolean isFirst = true; for (final Map.Entry<String, String> entry : infoFields.entrySet()) { if (isFirst) isFirst = false; else builder.append(VCFConstants.INFO_FIELD_SEPARATOR); builder.append(entry.getKey()); if ( ! entry.getValue().equals("")) { final VCFInfoHeaderLine metaData = this.header.getInfoHeaderLine(entry.getKey()); if ( metaData == null || metaData.getCountType() != VCFHeaderLineCount.INTEGER || metaData.getCount() != 0 ) { builder.append("="); builder.append(entry.getValue()); } } } }
public final static VCFCompoundHeaderLine getMetaDataForField(final VCFHeader header, final String field) { VCFCompoundHeaderLine metaData = header.getFormatHeaderLine(field); if ( metaData == null ) metaData = header.getInfoHeaderLine(field); if ( metaData == null ) { if ( ASSUME_MISSING_FIELDS_ARE_STRINGS ) { if ( ! MISSING_KEYS_WARNED_ABOUT.contains(field) ) { MISSING_KEYS_WARNED_ABOUT.add(field); if ( GeneralUtils.DEBUG_MODE_ENABLED ) System.err.println("Field " + field + " missing from VCF header, assuming it is an unbounded string type"); } return new VCFInfoHeaderLine(field, VCFHeaderLineCount.UNBOUNDED, VCFHeaderLineType.String, "Auto-generated string header for " + field); } else throw new TribbleException("Fully decoding VariantContext requires header line for all fields, but none was found for " + field); } return metaData; }
public final static VCFCompoundHeaderLine getMetaDataForField(final VCFHeader header, final String field) { VCFCompoundHeaderLine metaData = header.getFormatHeaderLine(field); if ( metaData == null ) metaData = header.getInfoHeaderLine(field); if ( metaData == null ) { if ( ASSUME_MISSING_FIELDS_ARE_STRINGS ) { if ( ! MISSING_KEYS_WARNED_ABOUT.contains(field) ) { MISSING_KEYS_WARNED_ABOUT.add(field); if ( GeneralUtils.DEBUG_MODE_ENABLED ) System.err.println("Field " + field + " missing from VCF header, assuming it is an unbounded string type"); } return new VCFInfoHeaderLine(field, VCFHeaderLineCount.UNBOUNDED, VCFHeaderLineType.String, "Auto-generated string header for " + field); } else throw new TribbleException("Fully decoding VariantContext requires header line for all fields, but none was found for " + field); } return metaData; }
public final static VCFCompoundHeaderLine getMetaDataForField(final VCFHeader header, final String field) { VCFCompoundHeaderLine metaData = header.getFormatHeaderLine(field); if ( metaData == null ) metaData = header.getInfoHeaderLine(field); if ( metaData == null ) { if ( ASSUME_MISSING_FIELDS_ARE_STRINGS ) { if ( ! MISSING_KEYS_WARNED_ABOUT.contains(field) ) { MISSING_KEYS_WARNED_ABOUT.add(field); if ( GeneralUtils.DEBUG_MODE_ENABLED ) System.err.println("Field " + field + " missing from VCF header, assuming it is an unbounded string type"); } return new VCFInfoHeaderLine(field, VCFHeaderLineCount.UNBOUNDED, VCFHeaderLineType.String, "Auto-generated string header for " + field); } else throw new TribbleException("Fully decoding VariantContext requires header line for all fields, but none was found for " + field); } return metaData; }
if ( infoValueSplit.size() == 1 ) { value = infoValueSplit.get(0); final VCFInfoHeaderLine headerLine = header.getInfoHeaderLine(key); if ( headerLine != null && headerLine.getType() == VCFHeaderLineType.Flag && value.equals("0") ) { final VCFInfoHeaderLine headerLine = header.getInfoHeaderLine(key); if ( headerLine != null && headerLine.getType() != VCFHeaderLineType.Flag ) { if ( GeneralUtils.DEBUG_MODE_ENABLED && ! warnedAboutNoEqualsForNonFlag ) {
if ( infoValueSplit.size() == 1 ) { value = infoValueSplit.get(0); final VCFInfoHeaderLine headerLine = header.getInfoHeaderLine(key); if ( headerLine != null && headerLine.getType() == VCFHeaderLineType.Flag && value.equals("0") ) { final VCFInfoHeaderLine headerLine = header.getInfoHeaderLine(key); if ( headerLine != null && headerLine.getType() != VCFHeaderLineType.Flag ) { if ( GeneralUtils.DEBUG_MODE_ENABLED && ! warnedAboutNoEqualsForNonFlag ) {
@VisibleForTesting static Map<String, ListValue> getInfo(VariantContext vc, VCFHeader header) { Map<String, ListValue> toReturn = new HashMap<>(); for (Map.Entry<String, Object> entry : vc.getAttributes().entrySet()) { String currKey = entry.getKey(); VCFInfoHeaderLine metaData = header.getInfoHeaderLine(currKey); // All info fields must have a corresponding header field. if (metaData == null) { logger.log(Level.WARNING, String.format("Could not find matching VCF header field, " + "skipping info field %s", currKey)); continue; } Object currObject = entry.getValue(); ListValue.Builder listValueBuilder = ListValue.newBuilder(); VCFHeaderLineType type = metaData.getType(); if (!(currObject instanceof List)) { toReturn.put(currKey, listValueBuilder.addValues(createTypedValue(type, currObject)).build()); continue; } List<Object> currObjectList = (List<Object>) currObject; for (Object currObj : currObjectList) { listValueBuilder.addValues(createTypedValue(type, currObj)); } toReturn.put(currKey, listValueBuilder.build()); } return toReturn; }
private void annotate(VariantContext vc, String infix, HashMap<Integer, AnnotatingRecord<VariantContext>> records, String fieldName, VariantContextBuilder builder) { final VCFInfoHeaderLine headerLine = genericVcfHeaderExtender.getFileHeader().getInfoHeaderLine(fieldName); final VCFHeaderLineCount countType = headerLine.getCountType();
@Test public void testAskingGCContent() throws IOException{ WalkerTestSpec spec = new WalkerTestSpec( baseTestString() + " --variant " + privateTestDir + "vcfexample2.vcf -I " + validationDataLocation + "low_coverage_CEU.chr1.10k-11k.bam -L 1:10,020,000-10,021,000 -A GCContent", 1, Arrays.asList("fcc42d7e0351efa7c3db0a114cbc17ed")); final File outputVCF = executeTest("test file has annotations, adding GCContent annotation", spec).getFirst().get(0); final VCFCodec codec = new VCFCodec(); final VCFHeader header = (VCFHeader) codec.readActualHeader(codec.makeSourceFromStream(new FileInputStream(outputVCF))); final VCFHeaderLine infoLineGC = header.getInfoHeaderLine(GATKVCFConstants.GC_CONTENT_KEY); // GC content must be a Float type Assert.assertTrue(infoLineGC.toString().contains("Type=Float")); }
final VCFInfoHeaderLine mleLine = header.getInfoHeaderLine(GATKVCFConstants.MLE_ALLELE_COUNT_KEY); if ( mleLine.getCountType() != VCFHeaderLineCount.A ) { throw new UserException("VCF does not have a properly formatted MLEAC field: the count type should be \"A\"");
public void addHeadersInfixes(VCFHeader header, String prefix, String infix, String note) { try (VCFFileReader reader = new VCFFileReader(new File(genericVcfOptions.getPathVcfFile()), false)) { fileHeader = reader.getFileHeader(); } for (String fieldName : genericVcfOptions.getFieldNames()) { final VCFInfoHeaderLine headerLine = fileHeader.getInfoHeaderLine(fieldName); final VCFHeaderLineCount countType = headerLine.getCountType(); // TODO(holtgrewe): support more counts, could require using "|" for nested lists VCFInfoHeaderLine line; if (countType == VCFHeaderLineCount.R) { line = new VCFInfoHeaderLine(prefix + infix + fieldName, VCFHeaderLineCount.R, headerLine.getType(), "Field " + fieldName + " from file " + genericVcfOptions.getPathVcfFile() + note); } else if (countType == VCFHeaderLineCount.A) { line = new VCFInfoHeaderLine(prefix + infix + fieldName, VCFHeaderLineCount.A, headerLine.getType(), "Field " + fieldName + " from file " + genericVcfOptions.getPathVcfFile() + note); } else if (countType == VCFHeaderLineCount.INTEGER) { if (headerLine.getCount() != 1) { throw new RuntimeException("Unsupported integer count " + headerLine.getCount()); } line = new VCFInfoHeaderLine(prefix + infix + fieldName, 1, headerLine.getType(), "Field " + fieldName + " from file " + genericVcfOptions.getPathVcfFile() + note); } else { throw new RuntimeException("Unsupported count type " + countType); } header.addMetaDataLine(line); } }
@Test(dataProvider = "RepairHeaderTest") public void testRepairHeaderTest(final RepairHeaderTest cfg) { final VCFHeader toRepair = new VCFHeader(Collections.singleton((VCFHeaderLine)cfg.original)); final VCFHeader repaired = VCFStandardHeaderLines.repairStandardHeaderLines(toRepair); VCFCompoundHeaderLine repairedLine = (VCFCompoundHeaderLine)repaired.getFormatHeaderLine(cfg.original.getID()); if ( repairedLine == null ) repairedLine = (VCFCompoundHeaderLine)repaired.getInfoHeaderLine(cfg.original.getID()); Assert.assertNotNull(repairedLine, "Repaired header didn't contain the expected line"); Assert.assertEquals(repairedLine.getID(), cfg.expectedResult.getID()); Assert.assertEquals(repairedLine.getType(), cfg.expectedResult.getType()); Assert.assertEquals(repairedLine.getCountType(), cfg.expectedResult.getCountType()); if ( repairedLine.getCountType() == VCFHeaderLineCount.INTEGER ) { Assert.assertEquals(repairedLine.getCount(), cfg.expectedResult.getCount()); } } }