src/hg/das/das.c 1.45

1.45 2009/08/23 16:18:36 markd
DAS wants 0 for unspecified strand
Index: src/hg/das/das.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/das/das.c,v
retrieving revision 1.44
retrieving revision 1.45
diff -b -B -U 4 -r1.44 -r1.45
--- src/hg/das/das.c	19 Dec 2008 09:11:46 -0000	1.44
+++ src/hg/das/das.c	23 Aug 2009 16:18:36 -0000	1.45
@@ -57,8 +57,17 @@
     exit(-1);
 printf("<?xml version=\"1.0\" standalone=\"no\"?>\n");
 }
 
+static char dasStrand(char strand)
+/* convert a strand to a valid DAS strand (+,-,0) */
+{
+if ((strand == '+') || (strand == '-'))
+    return strand;
+else
+    return '0';
+}
+
 void blockHog(char *hogHost, char *hogAddr)
 /* Compare host/addr to those of an abusive client that we want to block. */
 {
 char *rhost = getenv("REMOTE_HOST");
@@ -676,10 +685,8 @@
 for (i=0; i<gp->exonCount; ++i)
     {
     int start = gp->exonStarts[i];
     int end =  gp->exonEnds[i];
-    char strand = gp->strand[0];
-    if (strand == 0) strand = '?';
     printf(
     "<FEATURE id=\"%s.%s.%d.%d\" label=\"%s\">\n", gp->name, gp->chrom, gp->txStart, i, gp->name);
     dasPrintType(td, tt);
     if (td->method != NULL)
@@ -688,9 +695,9 @@
 	printf(" <METHOD></METHOD>\n");
     printf(" <START>%d</START>\n", start+1);
     printf(" <END>%d</END>\n", end);
     printf(" <SCORE>-</SCORE>\n");
-    printf(" <ORIENTATION>%c</ORIENTATION>\n", strand);
+    printf(" <ORIENTATION>%c</ORIENTATION>\n", dasStrand(gp->strand[0]));
     printf(" <PHASE>-</PHASE>\n");
     printf(" <GROUP id=\"%s.%s.%d\">\n", gp->name, gp->chrom, gp->txStart);
     printf("  <LINK href=\"http://genome.ucsc.edu/cgi-bin/hgTracks?position=%s:%d-%d&amp;db=%s\">Link to UCSC Browser</LINK>\n", 
 	gp->chrom, gp->txStart, gp->txEnd, database);
@@ -753,9 +760,9 @@
 	printf(" <METHOD></METHOD>\n");
     printf(" <START>%d</START>\n", start+1);
     printf(" <END>%d</END>\n", end);
     printf(" <SCORE>%d</SCORE>\n", score);
-    printf(" <ORIENTATION>%c</ORIENTATION>\n", psl->strand[0]);
+    printf(" <ORIENTATION>%c</ORIENTATION>\n", dasStrand(psl->strand[0]));
     printf(" <PHASE>-</PHASE>\n");
     printf(" <GROUP id=\"%s.%s.%d\">\n", psl->qName, psl->tName, psl->tStart);
     printf("  <LINK href=\"http://genome.ucsc.edu/cgi-bin/hgTracks?position=%s:%d-%d&amp;db=%s\">Link to UCSC Browser</LINK>\n", 
 	psl->tName, psl->tStart, psl->tEnd, database);
@@ -791,9 +798,9 @@
     printf(" <METHOD></METHOD>\n");
 printf(" <START>%d</START>\n", start+1);
 printf(" <END>%d</END>\n", end);
 printf(" <SCORE>%s</SCORE>\n", score);
-printf(" <ORIENTATION>%s</ORIENTATION>\n", strand);
+printf(" <ORIENTATION>%c</ORIENTATION>\n", dasStrand(strand[0]));
 printf(" <PHASE>-</PHASE>\n");
 printf(" <GROUP id=\"%s.%s.%d\">\n", name, chrom, start);
 printf("  <LINK href=\"http://genome.ucsc.edu/cgi-bin/hgTracks?position=%s:%d-%d&amp;db=%s\">Link to UCSC Browser</LINK>\n", 
     chrom, start, end, database);