68fcd621c19e5dc8d6c6cbea81229f9a33781483
kent
  Wed Apr 13 14:26:35 2016 -0700
Relaxing checking of ID symbols in INFO and FORMAT metadata lines of VCF files.

diff --git src/lib/vcf.c src/lib/vcf.c
index cfbee9a..91e3eb3 100644
--- src/lib/vcf.c
+++ src/lib/vcf.c
@@ -252,31 +252,31 @@
     return vcfInfoFloat;
 if (sameString("Flag", typeWord))
     return vcfInfoFlag;
 if (sameString("Character", typeWord))
     return vcfInfoCharacter;
 if (sameString("String", typeWord))
     return vcfInfoString;
 vcfFileErr(vcff, "Unrecognized type word \"%s\" in metadata line \"%s\"", typeWord, line);
 return vcfInfoString;
 }
 
 // Regular expressions to check format and extract information from header lines:
 static const char *fileformatRegex = "^##(file)?format=VCFv([0-9]+)(\\.([0-9]+))?$";
 static const char *infoOrFormatRegex =
     "^##(INFO|FORMAT)="
-    "<ID=([A-Za-z0-9_:-]+),"
+    "<ID=([\\.+A-Za-z0-9_:-]+),"
     "Number=(\\.|A|G|[0-9-]+),"
     "Type=([A-Za-z]+),"
     "Description=\"?(.*)\"?>$";
 static const char *filterOrAltRegex =
     "^##(FILTER|ALT)="
     "<ID=([^,]+),"
     "(Description|Type)=\"?(.*)\"?>$";
 // VCF version 3.3 was different enough to warrant separate regexes:
 static const char *infoOrFormatRegex3_3 =
     "^##(INFO|FORMAT)="
     "([A-Za-z0-9_:-]+),"
     "(\\.|A|G|[0-9-]+),"
     "([A-Za-z]+),"
     "\"?(.*)\"?$";
 static const char *filterRegex3_3 =