public static VCFHeaderVersion getHeaderVersion(String versionLine) { String[] lineFields = versionLine.split("="); if ( lineFields.length != 2 || !isFormatString(lineFields[0].substring(2)) ) throw new TribbleException.InvalidHeader(versionLine + " is not a valid VCF version line"); if ( !isVersionString(lineFields[1]) ) throw new TribbleException.InvalidHeader(lineFields[1] + " is not a supported version"); return toHeaderVersion(lineFields[1]); }
private static Set<VCFHeaderLine> makeGetMetaDataSet(final Set<VCFHeaderLine> headerLinesInSomeOrder) { final Set<VCFHeaderLine> lines = new LinkedHashSet<VCFHeaderLine>(); lines.add(new VCFHeaderLine(VCFHeaderVersion.VCF4_1.getFormatString(), VCFHeaderVersion.VCF4_1.getVersionString())); lines.addAll(headerLinesInSomeOrder); return Collections.unmodifiableSet(lines); }
private static boolean validVersion(File filepath) throws IOException { BufferedReader reader = Files.newBufferedReader(filepath.toPath(), UTF_8); // The first line must be the header String firstLine = reader.readLine(); reader.close(); try { VCFHeaderVersion version = VCFHeaderVersion.getHeaderVersion(firstLine); // If the version is greater than or equal to 4.2, we cannot handle it if (version.isAtLeastAsRecentAs(VCFHeaderVersion.VCF4_2)) { return false; } } catch (TribbleException.InvalidHeader msg) { throw new IOException(msg); } return true; }
/** * get the header version * @param version the version string * @return a VCFHeaderVersion object */ public static VCFHeaderVersion toHeaderVersion(String version) { version = clean(version); for (VCFHeaderVersion hv : VCFHeaderVersion.values()) if (hv.versionString.equals(version)) return hv; return null; }
if (line.startsWith(VCFHeader.METADATA_INDICATOR)) { final String[] lineFields = line.substring(2).split("="); if (lineFields.length == 2 && VCFHeaderVersion.isFormatString(lineFields[0]) ) { if ( !VCFHeaderVersion.isVersionString(lineFields[1]) ) throw new TribbleException.InvalidHeader(lineFields[1] + " is not a supported version"); foundHeaderVersion = true; version = VCFHeaderVersion.toHeaderVersion(lineFields[1]); if ( ! version.isAtLeastAsRecentAs(VCFHeaderVersion.VCF4_0) ) throw new TribbleException.InvalidHeader("This codec is strictly for VCFv4; please use the VCF3 codec for " + lineFields[1]); if ( version != VCFHeaderVersion.VCF4_0 && version != VCFHeaderVersion.VCF4_1 && version != VCFHeaderVersion.VCF4_2 )
@Override public void setHeader(VCFHeader header) { VCFHeaderVersion version = null; // Normally AbstractVCFCodec parses the header and thereby sets the // version field. It gets used later on so we need to set it. for (final VCFHeaderLine line : header.getMetaDataInInputOrder()) { if (VCFHeaderVersion.isFormatString(line.getKey())) { version = VCFHeaderVersion.toHeaderVersion(line.getValue()); break; } } codec.setHeaderAndVersion(header, version); }
if (version.isAtLeastAsRecentAs(VCFHeaderVersion.VCF4_2)) expectedTags.add("Version"); final Map<String, String> mapping = VCFHeaderLineTranslator.parseLine(version, line, expectedTags); } else if (numberStr.equals(VCFConstants.PER_GENOTYPE_COUNT)) { countType = VCFHeaderLineCount.G; } else if ((version.isAtLeastAsRecentAs(VCFHeaderVersion.VCF4_0) && numberStr.equals(VCFConstants.UNBOUNDED_ENCODING_v4)) || (!version.isAtLeastAsRecentAs(VCFHeaderVersion.VCF4_0) && numberStr.equals(VCFConstants.UNBOUNDED_ENCODING_v3))) { countType = VCFHeaderLineCount.UNBOUNDED; } else {
/** * are we a valid version string of some type * @param version the version string * @return true if we're valid of some type, false otherwise */ public static boolean isVersionString(String version){ return toHeaderVersion(version) != null; }
/** * Remove all lines with a VCF version tag from the provided set of header lines */ private void removeVCFVersionLines( final Set<VCFHeaderLine> headerLines ) { final List<VCFHeaderLine> toRemove = new ArrayList<VCFHeaderLine>(); for (final VCFHeaderLine line : headerLines) { if (VCFHeaderVersion.isFormatString(line.getKey())) { toRemove.add(line); } } headerLines.removeAll(toRemove); }
if (line.startsWith(VCFHeader.METADATA_INDICATOR)) { final String[] lineFields = line.substring(2).split("="); if (lineFields.length == 2 && VCFHeaderVersion.isFormatString(lineFields[0]) ) { if ( !VCFHeaderVersion.isVersionString(lineFields[1]) ) throw new TribbleException.InvalidHeader(lineFields[1] + " is not a supported version"); foundHeaderVersion = true; version = VCFHeaderVersion.toHeaderVersion(lineFields[1]); if ( ! version.isAtLeastAsRecentAs(VCFHeaderVersion.VCF4_0) ) throw new TribbleException.InvalidHeader("This codec is strictly for VCFv4; please use the VCF3 codec for " + lineFields[1]); if ( version != VCFHeaderVersion.VCF4_0 && version != VCFHeaderVersion.VCF4_1 && version != VCFHeaderVersion.VCF4_2 )
@Override public void setHeader(VCFHeader header) { VCFHeaderVersion version = null; // Normally AbstractVCFCodec parses the header and thereby sets the // version field. It gets used later on so we need to set it. for (final VCFHeaderLine line : header.getMetaDataInInputOrder()) { if (VCFHeaderVersion.isFormatString(line.getKey())) { version = VCFHeaderVersion.toHeaderVersion(line.getValue()); break; } } codec.setHeaderAndVersion(header, version); }
if ( version.isAtLeastAsRecentAs(VCFHeaderVersion.VCF4_2) ) expectedTags.add("Version"); final Map<String,String> mapping = VCFHeaderLineTranslator.parseLine(version, line, expectedTags); } else if ( numberStr.equals(VCFConstants.PER_GENOTYPE_COUNT) ) { countType = VCFHeaderLineCount.G; } else if ( (version.isAtLeastAsRecentAs(VCFHeaderVersion.VCF4_0) && numberStr.equals(VCFConstants.UNBOUNDED_ENCODING_v4)) || (! version.isAtLeastAsRecentAs(VCFHeaderVersion.VCF4_0) && numberStr.equals(VCFConstants.UNBOUNDED_ENCODING_v3)) ) { countType = VCFHeaderLineCount.UNBOUNDED; } else {
/** * are we a valid version string of some type * @param version the version string * @return true if we're valid of some type, false otherwise */ public static boolean isVersionString(String version){ return toHeaderVersion(version) != null; }
/** * are we a valid format string for some type * @param format the format string * @return true if we're valid of some type, false otherwise */ public static boolean isFormatString(String format){ format = clean(format); for (VCFHeaderVersion hv : VCFHeaderVersion.values()) if (hv.formatString.equals(format)) return true; return false; }
/** * Remove all lines with a VCF version tag from the provided set of header lines */ private void removeVCFVersionLines( final Set<VCFHeaderLine> headerLines ) { final List<VCFHeaderLine> toRemove = new ArrayList<VCFHeaderLine>(); for (final VCFHeaderLine line : headerLines) { if (VCFHeaderVersion.isFormatString(line.getKey())) { toRemove.add(line); } } headerLines.removeAll(toRemove); }
public static VCFHeaderVersion getHeaderVersion(String versionLine) { String[] lineFields = versionLine.split("="); if ( lineFields.length != 2 || !isFormatString(lineFields[0].substring(2)) ) throw new TribbleException.InvalidHeader(versionLine + " is not a valid VCF version line"); if ( !isVersionString(lineFields[1]) ) throw new TribbleException.InvalidHeader(lineFields[1] + " is not a supported version"); return toHeaderVersion(lineFields[1]); }
if (line.startsWith(VCFHeader.METADATA_INDICATOR)) { final String[] lineFields = line.substring(2).split("="); if (lineFields.length == 2 && VCFHeaderVersion.isFormatString(lineFields[0]) ) { if ( !VCFHeaderVersion.isVersionString(lineFields[1]) ) throw new TribbleException.InvalidHeader(lineFields[1] + " is not a supported version"); foundHeaderVersion = true; version = VCFHeaderVersion.toHeaderVersion(lineFields[1]); if ( ! version.isAtLeastAsRecentAs(VCFHeaderVersion.VCF4_0) ) throw new TribbleException.InvalidHeader("This codec is strictly for VCFv4; please use the VCF3 codec for " + lineFields[1]); if ( version != VCFHeaderVersion.VCF4_0 && version != VCFHeaderVersion.VCF4_1 && version != VCFHeaderVersion.VCF4_2 )
private static Set<VCFHeaderLine> makeGetMetaDataSet(final Set<VCFHeaderLine> headerLinesInSomeOrder) { final Set<VCFHeaderLine> lines = new LinkedHashSet<VCFHeaderLine>(); lines.add(new VCFHeaderLine(VCFHeaderVersion.VCF4_2.getFormatString(), VCFHeaderVersion.VCF4_2.getVersionString())); lines.addAll(headerLinesInSomeOrder); return Collections.unmodifiableSet(lines); }
@Override public void setHeader(VCFHeader header) { VCFHeaderVersion version = null; // Normally AbstractVCFCodec parses the header and thereby sets the // version field. It gets used later on so we need to set it. for (final VCFHeaderLine line : header.getMetaDataInInputOrder()) { if (VCFHeaderVersion.isFormatString(line.getKey())) { version = VCFHeaderVersion.toHeaderVersion(line.getValue()); break; } } codec.setHeaderAndVersion(header, version); }
if (version.isAtLeastAsRecentAs(VCFHeaderVersion.VCF4_2)) { recommendedTags = Arrays.asList("Source", "Version"); } else { } else if (numberStr.equals(VCFConstants.PER_GENOTYPE_COUNT)) { countType = VCFHeaderLineCount.G; } else if ((version.isAtLeastAsRecentAs(VCFHeaderVersion.VCF4_0) && numberStr.equals(VCFConstants.UNBOUNDED_ENCODING_v4)) || (!version.isAtLeastAsRecentAs(VCFHeaderVersion.VCF4_0) && numberStr.equals(VCFConstants.UNBOUNDED_ENCODING_v3))) { countType = VCFHeaderLineCount.UNBOUNDED; } else { if (version.isAtLeastAsRecentAs(VCFHeaderVersion.VCF4_2)) { this.source = mapping.get("Source"); this.version = mapping.get("Version");