3b51318fe05fce338719b56a70d44f1436ff5311
kate
Tue Dec 5 12:37:26 2017 -0800
Fix problems with computing centers and position starts (esp. noticeable for SNPs). Also some cleanup. refs #17512
diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c
index 3442af4..165fe18 100644
--- src/hg/hgc/hgc.c
+++ src/hg/hgc/hgc.c
@@ -4035,81 +4035,87 @@
int ii = 0;
for(longRange = longRangeList; longRange; longRange = longRange->next, ii++)
{
if (longRange->id == itemNum)
{
ourLongRange = longRange;
}
doubleArray[ii] = longRange->score;
}
if (ourLongRange == NULL)
errAbort("cannot find long range item with id %d\n", itemNum);
printf("Item you clicked on:
\n");
+printf(" ID: %u
\n", ourLongRange->id);
if (!ourLongRange->hasColor)
// if there's color, then there's no score in this format
- printf("Score: %g
\n", ourLongRange->score);
-printf("ID: %u
\n", ourLongRange->id);
+ printf(" Score: %g
\n", ourLongRange->score);
+
unsigned padding = (ourLongRange->e - ourLongRange->s) / 10;
int s = ourLongRange->s - padding;
int e = ourLongRange->e + padding;
if (s < 0 )
s = 0;
int chromSize = hChromSize(database, seqName);
if (e > chromSize)
e = chromSize;
-char num1Buf[1024],num2Buf[1024];
-char num3Buf[1024],num4Buf[1024];
-char num5Buf[1024],num6Buf[1024];
-char num7Buf[1024];
-sprintLongWithCommas(num1Buf, ourLongRange->s - ourLongRange->sw/2);
-sprintLongWithCommas(num2Buf, ourLongRange->s + ourLongRange->sw/2);
-sprintLongWithCommas(num3Buf, ourLongRange->e - ourLongRange->ew/2);
-sprintLongWithCommas(num4Buf, ourLongRange->e + ourLongRange->ew/2);
-sprintLongWithCommas(num5Buf, ourLongRange->sw);
-sprintLongWithCommas(num6Buf, ourLongRange->ew);
-sprintLongWithCommas(num7Buf, ourLongRange->ew + ourLongRange->e - ourLongRange->s);
+char sStartPosBuf[1024], sEndPosBuf[1024];
+char eStartPosBuf[1024], eEndPosBuf[1024];
+// FIXME: longRange should store region starts, not centers
+sprintLongWithCommas(sStartPosBuf, ourLongRange->s - ourLongRange->sw/2 + 1);
+sprintLongWithCommas(sEndPosBuf, ourLongRange->s + ourLongRange->sw/2 + 1);
+sprintLongWithCommas(eStartPosBuf, ourLongRange->e - ourLongRange->ew/2 + 1);
+sprintLongWithCommas(eEndPosBuf, ourLongRange->e + ourLongRange->ew/2 + 1);
+char sWidthBuf[1024], eWidthBuf[1024];
+char regionWidthBuf[1024];
+sprintLongWithCommas(sWidthBuf, ourLongRange->sw);
+sprintLongWithCommas(eWidthBuf, ourLongRange->ew);
+sprintLongWithCommas(regionWidthBuf, ourLongRange->ew + ourLongRange->e - ourLongRange->s);
+
if (differentString(ourLongRange->sChrom, ourLongRange->eChrom))
{
printf("Current region: ");
printf("%s:%s-%s (%s bp)
\n",
- ourLongRange->sChrom, num1Buf,num2Buf,ourLongRange->sChrom, num1Buf,num2Buf, num5Buf);
+ ourLongRange->sChrom, sStartPosBuf, sEndPosBuf,
+ ourLongRange->sChrom, sStartPosBuf,sEndPosBuf, sWidthBuf);
printf("Paired region: ");
printf("%s:%s-%s (%s bp)
\n",
- ourLongRange->eChrom, num3Buf, num4Buf, ourLongRange->eChrom, num3Buf, num4Buf, num6Buf);
+ ourLongRange->eChrom, eStartPosBuf, eEndPosBuf,
+ ourLongRange->eChrom, eStartPosBuf, eEndPosBuf, eWidthBuf);
}
else
{
printf("Lower region: ");
printf("%s:%s-%s (%s bp)
\n",
- ourLongRange->sChrom, num1Buf,num2Buf, ourLongRange->sChrom, num1Buf,num2Buf, num5Buf);
+ ourLongRange->sChrom, sStartPosBuf,sEndPosBuf,
+ ourLongRange->sChrom, sStartPosBuf,sEndPosBuf, sWidthBuf);
printf("Upper region: ");
printf("%s:%s-%s (%s bp)
\n",
- ourLongRange->eChrom, num3Buf, num4Buf, ourLongRange->eChrom, num3Buf, num4Buf, num6Buf);
- printf("Intrachromasomal interaction region: ");
+ ourLongRange->eChrom, eStartPosBuf, eEndPosBuf,
+ ourLongRange->eChrom, eStartPosBuf, eEndPosBuf, eWidthBuf);
+ printf("Interaction region: ");
printf("%s:%s-%s (%s bp)
\n",
- ourLongRange->eChrom, num1Buf, num4Buf, ourLongRange->eChrom, num1Buf, num4Buf, num7Buf);
+ ourLongRange->eChrom, sStartPosBuf, eEndPosBuf,
+ ourLongRange->eChrom, sStartPosBuf, eEndPosBuf, regionWidthBuf);
}
-
if (ourLongRange->hasColor)
return;
struct aveStats *as = aveStatsCalc(doubleArray, count);
-
printf("
Statistics on the scores of all items in window (go to track controls to set minimum score to display):\n");
printf("
Q1 | %f |
median | %f |
Q3 | %f |
average | %f |
min | %f |
max | %f |
count | %d |
total | %f |
standard deviation | %f |