442fef159db4b61a41789813c9068776ef2f8cfb
kate
  Mon Sep 17 19:39:24 2018 -0700
Pack mode. refs #21917

diff --git src/hg/lib/interact.c src/hg/lib/interact.c
index ff6f3c1..fcb12b6 100644
--- src/hg/lib/interact.c
+++ src/hg/lib/interact.c
@@ -360,120 +360,67 @@
 ret->exp = cloneString(row[6]);
 ret->color = bedParseColor(row[7]);
 ret->sourceChrom = cloneString(row[8]);
 ret->sourceStart = sqlUnsigned(row[9]);
 ret->sourceEnd = sqlUnsigned(row[10]);
 ret->sourceName = cloneString(row[11]);
 ret->sourceStrand = cloneString(row[12]);
 ret->targetChrom = cloneString(row[13]);
 ret->targetStart = sqlUnsigned(row[14]);
 ret->targetEnd = sqlUnsigned(row[15]);
 ret->targetName = cloneString(row[16]);
 ret->targetStrand = cloneString(row[17]);
 return ret;
 }
 
-#ifdef DEBUG
-struct bed *interactBedLoad(char **row)
-/* Load an interact from row fetched with select * from interact
- * from database, as a BED12.  Dispose of this with bedFree(). */
-// TODO: more validating, and consider bed12Source (can include exp field for mouseover)
-{
-struct bed *ret;
-
-AllocVar(ret);
-ret->chrom = cloneString(row[0]);
-ret->chromStart = sqlUnsigned(row[1]);
-ret->chromEnd = sqlUnsigned(row[2]);
-ret->name = cloneString(row[3]);
-ret->score = sqlUnsigned(row[4]);
-ret->thickStart = ret->chromStart;
-ret->thickEnd = ret->chromEnd;
-ret->itemRgb = sqlUnsigned(row[7]);
-
-char *sourceChrom = row[8];
-int sourceStart = sqlUnsigned(row[9]);
-int sourceEnd = sqlUnsigned(row[10]);
-char *targetChrom = row[13];
-int targetStart = sqlUnsigned(row[14]);
-int targetEnd = sqlUnsigned(row[15]);
-char *strand = "+";
-if (differentString(sourceChrom, targetChrom))
-    {
-    // inter-chromosomal
-    if sameString(ret->chrom, targetChrom)
-        strand = "-";
-    }
-else 
-    {
-    ret->blockCount = 2;
-    AllocArray(ret->blockSizes, 2);
-    AllocArray(ret->chromStarts, 2);
-    if (targetStart < sourceStart)
-        {
-        strand = "-";
-        ret->blockSizes[1] = sourceEnd - sourceStart;
-        ret->blockSizes[0] = targetEnd - targetStart;
-        ret->chromStarts[1] = sourceStart;
-        ret->chromStarts[0] = targetStart;
-        }
-    else
-        {
-        ret->blockSizes[0] = sourceEnd - sourceStart;
-        ret->blockSizes[1] = targetEnd - targetStart;
-        ret->chromStarts[0] = sourceStart;
-        ret->chromStarts[1] = targetStart;
-        }
-    }
-strcpy(ret->strand, strand);
-bed->label = bed->name;
-return ret;
-}
-#endif
-
 struct bed *interactToBed(struct interact *inter)
-/* Convert an interact to a BED12 */
+/* Convert an interact to a BED12 (actually, BED15+label) */
 {
 struct bed *bed = NULL;
 AllocVar(bed);
 
 bed->chrom = inter->chrom;
 bed->chromStart = inter->chromStart;
 bed->chromEnd = inter->chromEnd;
 bed->name = inter->name;
 bed->score = inter->score;
 bed->thickStart = inter->chromStart;
 bed->thickEnd = inter->chromEnd;
 bed->itemRgb = inter->color;
 
 char *strand = "+";
 if (differentString(inter->sourceChrom, inter->targetChrom))
     {
     // inter-chromosomal
+    bed->blockCount = 1;
+    AllocArray(bed->blockSizes, 1);
+    bed->blockSizes[0] = inter->chromEnd - inter->chromStart;
+    AllocArray(bed->chromStarts, 1);
+    bed->chromStarts[0] = 0;
     if sameString(bed->chrom, inter->targetChrom)
         strand = "-";
     }
 else 
     {
     bed->blockCount = 2;
     AllocArray(bed->blockSizes, 2);
     AllocArray(bed->chromStarts, 2);
     if (inter->targetStart < inter->sourceStart)
         {
         strand = "-";
         bed->blockSizes[1] = inter->sourceEnd - inter->sourceStart;
         bed->blockSizes[0] = inter->targetEnd - inter->targetStart;
-        bed->chromStarts[1] = inter->sourceStart;
-        bed->chromStarts[0] = inter->targetStart;
+        bed->chromStarts[1] = inter->sourceStart = inter->chromStart;
+        bed->chromStarts[0] = 0;
         }
     else
         {
         bed->blockSizes[0] = inter->sourceEnd - inter->sourceStart;
         bed->blockSizes[1] = inter->targetEnd - inter->targetStart;
-        bed->chromStarts[0] = inter->sourceStart;
-        bed->chromStarts[1] = inter->targetStart;
+        bed->chromStarts[0] = 0;
+        bed->chromStarts[1] = inter->targetStart - inter->chromStart;
         }
     }
 strcpy(bed->strand, strand);
 bed->label = bed->name;
 return bed;
 }