dacecbaf00b2193872633dde175c53d263922ff9 angie Wed May 11 16:18:38 2011 -0700 Feature #2823 (VCF track handler): request from alpha-test user CarlosBorroto: call Belinda's coding variant functional prediction function as on the pgSnp details page. diff --git src/hg/hgc/vcfClick.c src/hg/hgc/vcfClick.c index 7dd415c..62d5f33 100644 --- src/hg/hgc/vcfClick.c +++ src/hg/hgc/vcfClick.c @@ -176,41 +176,56 @@ struct vcfInfoElement *el = &(gt->infoElements[j]); int k; for (k = 0; k < el->count; k++) { if (k > 0) printf(", "); vcfPrintDatum(stdout, el->values[k], formatTypes[j]); } printf(""); } puts(""); } hTableEnd(); } +static void pgSnpCodingDetail(struct vcfRecord *rec) +/* Translate rec into pgSnp (with proper chrom name) and call Belinda's + * coding effect predictor from pgSnp details. */ +{ +if (hTableExists(database, "knownGene")) + { + struct pgSnp *pgs = pgSnpFromVcfRecord(rec); + if (!sameString(rec->chrom, seqName)) + // rec->chrom might be missing "chr" prefix: + pgs->chrom = seqName; + printSeqCodDisplay(database, pgs); + } +} + static void vcfRecordDetails(struct vcfRecord *rec) /* Display the contents of a single line of VCF. */ { printf("Name: %s
\n", rec->name); printPosOnChrom(seqName, rec->chromStart, rec->chromEnd, NULL, FALSE, rec->name); printf("Reference allele: %s
\n", rec->ref); vcfAltAlleleDetails(rec); if (rec->qual != 0.0) printf("Call quality: %.1f
\n", rec->qual); vcfFilterDetails(rec); vcfInfoDetails(rec); +pgSnpCodingDetail(rec); vcfGenotypesDetails(rec); } void doVcfTabixDetails(struct trackDb *tdb, char *item) /* Show details of an alignment from a VCF file compressed and indexed by tabix. */ { #if (defined USE_TABIX && defined KNETFILE_HOOKS) knetUdcInstall(); if (udcCacheTimeout() < 300) udcSetCacheTimeout(300); #endif//def USE_TABIX && KNETFILE_HOOKS int start = cartInt(cart, "o"); int end = cartInt(cart, "t"); struct sqlConnection *conn = hAllocConnTrack(database, tdb); // TODO: will need to handle per-chrom files like bam, maybe fold bamFileNameFromTable into this::