42d91822ec103cfcc74e9f69b39d3ad8d886c278 angie Wed Mar 18 15:25:15 2020 -0700 Add a new trackDb setting hapClusterMethod and corresponding UI option for drawing haplotypes in VCF file order instead of clustering. refs #25197 Applied the new setting to mm10 strainSNPs and increased its default height so that strain labels appear in the left label area. diff --git src/hg/hgc/vcfClick.c src/hg/hgc/vcfClick.c index 2e11288..3238233 100644 --- src/hg/hgc/vcfClick.c +++ src/hg/hgc/vcfClick.c @@ -483,38 +483,47 @@ // Since these are variants, if it looks like a dbSNP or dbVar ID, provide a link: if (regexMatch(rec->name, "^rs[0-9]+$")) { printf("dbSNP: "); printDbSnpRsUrl(rec->name, "%s", rec->name); puts("
"); } else if (regexMatch(rec->name, "^[en]ss?v[0-9]+$")) { printf("dbVar: "); printf("%s
\n", rec->name, rec->name); } printCustomUrl(tdb, rec->name, TRUE); boolean hapClustEnabled = cartOrTdbBoolean(cart, tdb, VCF_HAP_ENABLED_VAR, TRUE); -if (hapClustEnabled) +if (hapClustEnabled && rec->file != NULL && rec->file->genotypeCount > 1) + { + char *hapMethod = cartOrTdbString(cart, tdb, VCF_HAP_METHOD_VAR, VCF_DEFAULT_HAP_METHOD); + if (sameString(hapMethod, VCF_HAP_METHOD_CENTER_WEIGHTED)) { static char *formName = "vcfCfgHapCenter"; printf("
\n", formName, hgTracksName()); cartSaveSession(cart); + printf("
" + "Haplotype sorting order: "); vcfCfgHaplotypeCenter(cart, tdb, tdb->track, FALSE, rec->file, rec->name, seqName, rec->chromStart, formName); - printf("\n"); + printf("
\n"); + } + else + printf("Haplotype sorting order: the order in which samples appear in the " + "underlying VCF file
"); } char leftBase = rec->alleles[0][0]; unsigned int vcfStart = vcfRecordTrimIndelLeftBase(rec); boolean showLeftBase = (rec->chromStart == vcfStart+1); (void)vcfRecordTrimAllelesRight(rec); char *displayAls[rec->alleleCount]; makeDisplayAlleles(rec, showLeftBase, leftBase, 20, TRUE, FALSE, displayAls); printPosOnChrom(seqName, rec->chromStart, rec->chromEnd, NULL, FALSE, rec->name); printf("Reference allele: %s
\n", displayAls[0]); vcfAltAlleleDetails(rec, displayAls); vcfQualDetails(rec); vcfFilterDetails(rec); vcfInfoDetails(rec); pgSnpCodingDetail(rec); makeDisplayAlleles(rec, showLeftBase, leftBase, 5, FALSE, TRUE, displayAls);