19eaeb4d65c6962e516fb23474643ba754c32ea1
angie
  Fri Feb 11 10:52:15 2011 -0800
Feature #2821 (VCF parser): works on a 1000 Genomes pilot release VCF+tabix file with genotypes.[Note: this is a squash of 6 commits, developed off in my vcf branch.]

diff --git src/oneShot/vcfParseTest/vcfParseTest.c src/oneShot/vcfParseTest/vcfParseTest.c
new file mode 100644
index 0000000..3c8af00
--- /dev/null
+++ src/oneShot/vcfParseTest/vcfParseTest.c
@@ -0,0 +1,56 @@
+/* vcfParseTest - Parse VCF header and data lines in given position range.. */
+#include "common.h"
+#include "linefile.h"
+#include "hash.h"
+#include "options.h"
+#include "vcf.h"
+
+static char const rcsid[] = "$Id: newProg.c,v 1.30 2010/03/24 21:18:33 hiram Exp $";
+
+void usage()
+/* Explain usage and exit. */
+{
+errAbort(
+  "vcfParseTest - Parse VCF header and data lines in given position range.\n"
+  "usage:\n"
+  "   vcfParseTest fileOrUrl.vcf.gz seqName start end\n"
+  "\n"
+  "fileOrUrl.vcf.gz needs to have been compressed by tabix, and index file\n"
+  "fileOrUrl.vcf.gz.tbi must exist.\n"
+  );
+}
+
+static struct optionSpec options[] = {
+   {NULL, 0},
+};
+
+void vcfParseTest(char *fileOrUrl, char *seqName, int start, int end)
+/* vcfParseTest - Parse VCF header and data lines in given position range.. */
+{
+struct vcfFile *vcff = vcfTabixFileMayOpen(fileOrUrl, seqName, start, end, 100, stderr);
+if (vcff == NULL)
+    errAbort("Failed to parse \"%s\" and/or its index file \"%s.tbi\"", fileOrUrl, fileOrUrl);
+printf("Finished parsing \"%s\", got %d data rows\n", fileOrUrl, slCount(vcff->records));
+printf("First (up to) 100 rows in range:\n");
+int i = 0;
+struct vcfRecord *rec = vcff->records;
+while (rec != NULL && i < 100)
+    {
+    printf("%s\t%d\t%d\t%s:%s/%s\t%f\n",
+	   rec->chrom, rec->chromStart, rec->chromEnd,
+	   rec->name, rec->ref, rec->alt, rec->qual);
+    rec = rec->next;
+    i++;
+    }
+vcfFileFree(&vcff);
+}
+
+int main(int argc, char *argv[])
+/* Process command line. */
+{
+optionInit(&argc, argv, options);
+if (argc != 5)
+    usage();
+vcfParseTest(argv[1], argv[2], atoi(argv[3]), atoi(argv[4]));
+return 0;
+}