src/hg/hgc/encodeClick.c 1.10
1.10 2009/10/26 15:32:52 aamp
Details stuff for 5C tracks.
Index: src/hg/hgc/encodeClick.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgc/encodeClick.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -b -B -U 4 -r1.9 -r1.10
--- src/hg/hgc/encodeClick.c 4 Mar 2009 19:22:35 -0000 1.9
+++ src/hg/hgc/encodeClick.c 26 Oct 2009 15:32:52 -0000 1.10
@@ -84,4 +84,67 @@
}
sqlFreeResult(&sr);
hFreeConn(&conn);
}
+
+int encodeFiveCInterCmp(const void *va, const void *vb)
+/* reverse sort on bed nine's reserved field which in this */
+/* case is the where the strength of the interaction is stored */
+{
+const struct bed *a = *((struct bed **)va);
+const struct bed *b = *((struct bed **)vb);
+return b->itemRgb - a->itemRgb;
+}
+
+void doEncodeFiveC(struct sqlConnection *conn, struct trackDb *tdb)
+/* Print details for 5C track */
+{
+char *interTable = trackDbRequiredSetting(tdb, "interTable");
+char *interTableKind = trackDbRequiredSetting(tdb, "interTableKind");
+char **row;
+char *chrom = cgiString("c");
+int start = cgiInt("o");
+int end = cgiInt("t");
+int rowOffset;
+int outCount = 0;
+struct sqlResult *sr;
+struct bed *interList = NULL, *inter;
+genericHeader(tdb, NULL);
+sr = hOrderedRangeQuery(conn, interTable, chrom, start, end, NULL, &rowOffset);
+printf("<B>Position:</B> "
+ "<A HREF=\"%s&db=%s&position=%s%%3A%d-%d\">%s:%d-%d</a><BR>\n",
+ hgTracksPathAndSettings(), database, chrom, start+1, end, chrom, start+1, end);
+while ((row = sqlNextRow(sr)) != NULL)
+ {
+ inter = bedLoadN(row + rowOffset, 9);
+ slAddHead(&interList, inter);
+ }
+slSort(&interList, encodeFiveCInterCmp);
+webNewSection("Top %s interations", interTableKind);
+webPrintLinkTableStart();
+webPrintLabelCell("Position");
+webPrintLabelCell("5C signal");
+webPrintLabelCell("Distance");
+webPrintLinkTableNewRow();
+for (inter = interList; inter != NULL; inter = inter->next)
+ {
+ char s[1024];
+ int distance = 0;
+ safef(s, sizeof(s), "<A HREF=\"%s&db=%s&position=%s%%3A%d-%d\">%s:%d-%d</A>",
+ hgTracksPathAndSettings(), database, chrom, inter->thickStart+1, inter->thickEnd, chrom, inter->thickStart+1, inter->thickEnd);
+ webPrintLinkCell(s);
+ safef(s, sizeof(s), "%d", inter->itemRgb);
+ webPrintLinkCell(s);
+ if (start > inter->thickStart)
+ distance = inter->thickEnd - start;
+ else
+ distance = inter->thickStart - end;
+ safef(s, sizeof(s), "%d", distance);
+ webPrintLinkCell(s);
+ if (++outCount == 50)
+ break;
+ if (inter->next != NULL)
+ webPrintLinkTableNewRow();
+ }
+webPrintLinkTableEnd();
+sqlFreeResult(&sr);
+}