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; +}