7355201a77e934e6e7f28242d4beb15d694e7c8d
braney
Sun Oct 11 13:21:05 2020 -0700
initial work on Clinvar Submissions track #26330
diff --git src/hg/hgc/clinvarSubLolly.c src/hg/hgc/clinvarSubLolly.c
new file mode 100644
index 0000000..f99b50a
--- /dev/null
+++ src/hg/hgc/clinvarSubLolly.c
@@ -0,0 +1,133 @@
+#include "common.h"
+#include "wiggle.h"
+#include "cart.h"
+#include "hgc.h"
+#include "hCommon.h"
+#include "hgColors.h"
+#include "bigBed.h"
+#include "hui.h"
+#include "subText.h"
+#include "trackHub.h"
+#include "clinvarSub.h"
+#include "clinvarSubLolly.h"
+
+static void printVariant(struct trackDb *tdb, struct bbiFile *bbi, struct bigBedInterval *bbList, char *variant)
+{
+struct bigBedInterval *bb;
+for (bb = bbList; bb != NULL; bb = bb->next)
+ {
+ char *fields[bbi->fieldCount];
+ int restCount = chopTabs(cloneString(bb->rest), fields);
+ if (differentString(fields[36], variant))
+ continue;
+ int restBedFields = 12 - 3;
+ char **extraFields = (fields + restBedFields);
+ int extraFieldCount = restCount - restBedFields;
+ extraFieldsPrint(tdb,NULL,extraFields, extraFieldCount);
+ }
+}
+
+static void printVariants(struct trackDb *tdb, char *variants, char *chrom, int start, int end)
+{
+int count = chopByChar(variants, ',', NULL, 0);
+char *words[count];
+chopByChar(variants, ',', words, count);
+char *xrefTrack = trackDbSetting(tdb, "xrefTrack");
+struct trackDb *mainTdb = hashFindVal(trackHash, xrefTrack);
+char *mainBigBedFile = trackDbSetting(mainTdb, "bigDataUrl");
+struct bbiFile *bbi = bigBedFileOpen(mainBigBedFile);
+struct lm *lm = lmInit(0);
+struct bigBedInterval *bbList = bigBedIntervalQuery(bbi, chrom, start, end, 0, lm);
+
+printf("There are %d variants at this position.\n", count);
+int ii;
+for(ii=0; ii < count; ii++)
+ {
+ printVariant(mainTdb, bbi, bbList, words[ii]);
+ }
+}
+
+
+static char *subFields[] =
+{
+"VariationID",
+"ClinicalSignificance",
+"DateLastEvaluated",
+"Description",
+"SubmittedPhenotypeInfo",
+"ReportedPhenotypeInfo",
+"ReviewStatus",
+"CollectionMethod",
+"OriginCounts",
+"Submitter",
+"SCV",
+"SubmittedGeneSymbol",
+};
+
+static void printSub(struct sqlConnection *conn, char *sub)
+{
+char query[4096];
+sqlSafef(query, sizeof(query), "select * from clinvarSub where scv = '%s'", sub);
+struct sqlResult *sr;
+sr = sqlGetResult(conn, query);
+char **row;
+while ((row = sqlNextRow(sr)) != NULL)
+ {
+ printf("
%s | %s | ", subFields[ii], row[ii]); + printf("