src/hg/hgc/bamClick.c 1.18

1.18 2010/03/03 19:30:04 angie
Bam track improvements: 1. Enable indel-coloring. 2. Display soft-clipped sequence instead of pretending it doesn't exist.
Index: src/hg/hgc/bamClick.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgc/bamClick.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -b -B -U 4 -r1.17 -r1.18
--- src/hg/hgc/bamClick.c	17 Feb 2010 19:35:48 -0000	1.17
+++ src/hg/hgc/bamClick.c	3 Mar 2010 19:30:04 -0000	1.18
@@ -49,20 +49,18 @@
 puts("<BR>");
 char nibName[HDB_MAX_PATH_STRING];
 hNibForChrom(database, seqName, nibName);
 struct dnaSeq *genoSeq = hFetchSeq(nibName, seqName, tStart, tEnd);
-struct ffAli *ffa = bamToFfAli(bam, genoSeq, tStart, useStrand);
-char *qSeq = ffa->nStart;
+char *qSeq = NULL;
+struct ffAli *ffa = bamToFfAli(bam, genoSeq, tStart, useStrand, &qSeq);
 printf("<B>Alignment of %s to %s:%d-%d%s:</B><BR>\n", itemName,
        seqName, tStart+1, tEnd, (isRc ? " (reverse complemented)" : ""));
 ffShowSideBySide(stdout, ffa, qSeq, 0, genoSeq->dna, tStart, tLength, 0, tLength, 8, isRc,
 		 FALSE);
 printf("<B>Sequence quality scores:</B><BR>\n<TT><TABLE><TR>\n");
 UBYTE *quals = bamGetQueryQuals(bam, useStrand);
-int clippedQLen;
-bamGetSoftClipping(bam, NULL, NULL, &clippedQLen);
 int i;
-for (i = 0;  i < clippedQLen;  i++)
+for (i = 0;  i < core->l_qseq;  i++)
     {
     if (i > 0 && (i % 24) == 0)
 	printf("</TR>\n<TR>");
     printf("<TD>%c<BR>%d</TD>", qSeq[i], quals[i]);
@@ -84,8 +82,13 @@
     reverseComplement(rightSeq, strlen(rightSeq));
 if ((rightStart > leftStart && leftStart + leftLen > rightStart) ||
     (leftStart > rightStart && rightStart+rightLen > leftStart))
     {
+    int leftClipLow, rightClipLow;
+    bamGetSoftClipping(leftBam, &leftClipLow, NULL, NULL);
+    bamGetSoftClipping(rightBam, &rightClipLow, NULL, NULL);
+    leftStart -= leftClipLow;
+    rightStart -= rightClipLow;
     printf("<B>Note: End read alignments overlap:</B><BR>\n<PRE><TT>");
     int i = leftStart - rightStart;
     while (i-- > 0)
 	putc(' ', stdout);
@@ -112,11 +115,11 @@
     printPosOnChrom(seqName, start, end, NULL, FALSE, itemName);
     puts("<P>");
     }
 showOverlap(leftBam, rightBam);
-printf("<TABLE><TR><TD><H4>Left end read</H4>\n");
+printf("<TABLE><TR><TD valign=top><H4>Left end read</H4>\n");
 singleBamDetails(leftBam);
-printf("</TD><TD><H4>Right end read</H4>\n");
+printf("</TD><TD valign=top><H4>Right end read</H4>\n");
 singleBamDetails(rightBam);
 printf("</TD></TR></TABLE>\n");
 }