8a575379eee18e0d94bd4fa4a8330eca6ca043d5 angie Wed Mar 20 10:34:14 2019 -0700 Initialize udcDir (provide command line option) and call knetUdcInstall to use udc instead of htslib network lib. refs #23127 diff --git src/hg/utils/vcfToHgvs/vcfToHgvs.c src/hg/utils/vcfToHgvs/vcfToHgvs.c index ddd8a19..d6d6524 100644 --- src/hg/utils/vcfToHgvs/vcfToHgvs.c +++ src/hg/utils/vcfToHgvs/vcfToHgvs.c @@ -1,44 +1,49 @@ /* vcfToHgvs - Transform VCF variant calls into HGVS terms. */ /* Copyright (C) 2017 The Regents of the University of California * See README in this or parent directory for licensing information. */ #include "common.h" #include "genbank.h" #include "hdb.h" #include "hgHgvs.h" +#include "hui.h" +#include "knetUdc.h" #include "options.h" +#include "udc.h" #include "variantProjector.h" #include "vcf.h" void usage() /* Explain usage and exit. */ { errAbort( "vcfToHgvs - Transform VCF variant calls into HGVS terms\n" "usage:\n" " vcfToHgvs db in.vcf out.tab\n" -// "options:\n" -// " -xxx=XXX\n" + "options:\n" + " -udcDir=/dir/to/cache - place to put cache for remote VCF files.\n" + " Will create this directory if it does not exist\n" ); } static boolean breakDelIns = FALSE; /* Command line validation table. */ static struct optionSpec options[] = { + {"udcDir", OPTION_STRING}, {NULL, 0}, }; struct dnaSeq *hGetNmAccAndSeq(char *db, char *nmAccIn) /* Return a cached sequence with ->name set to the versioned NM accession, * given a possibly unversioned NM accession, or NULL if not found. * db must never change. Do not modify or free the returned sequence. */ { static struct hash *hash = NULL; static char *firstDb = NULL; static boolean useNcbi = FALSE; if (hash == NULL) { hash = hashNew(0); firstDb = cloneString(db); @@ -262,30 +267,34 @@ char *getChrom(char *db, char *vcfChrom) { char *chrom = hgOfficialChromName(db, vcfChrom); if (chrom == NULL && !startsWith("chr", vcfChrom)) { char chrChrom[2048]; safef(chrChrom, sizeof(chrChrom), "chr%s", vcfChrom); chrom = hgOfficialChromName(db, chrChrom); } return chrom; } void vcfToHgvs(char *db, char *vcfIn, char *hgvsOut) /* vcfToHgvs - Transform VCF variant calls into HGVS terms. */ { +// UDC cache dir: first check for hg.conf setting, then override with command line option if given. +setUdcCacheDir(); +udcSetDefaultDir(optionVal("udcDir", udcDefaultDir())); +knetUdcInstall(); struct vcfFile *vcff = vcfFileMayOpen(vcfIn, NULL, 0, 0, -1, -1, TRUE); if (! vcff) errAbort("Sorry, can't open VCF file %s", vcfIn); FILE *f = mustOpen(hgvsOut, "w"); initGenbankTableNames(db); boolean hasNcbiRefSeq = hDbHasNcbiRefSeq(db); char *pslTable = hasNcbiRefSeq ? "ncbiRefSeqPsl" : "refSeqAli"; struct vcfRecord *rec; struct hash *txCdsHash = hashNew(0); struct seqWindow *gSeqWin = chromSeqWindowNew(db, NULL, 0, 0); for (rec = vcff->records; rec != NULL; rec = rec->next) { // If repetitive SQL queries are too slow then rewrite this to use annoGrator. char *chrom = getChrom(db, rec->chrom); if (isEmpty(chrom))