2f27aa530e1c46d8b8696ea46d00e34764c5d027
kent
Tue Jun 16 14:44:34 2015 -0700
Fixing crash on fetching ctgPos2 features.
diff --git src/hg/das/das.c src/hg/das/das.c
index 2865029..68f3102 100644
--- src/hg/das/das.c
+++ src/hg/das/das.c
@@ -832,46 +832,57 @@
printf(" %d\n", end);
printf(" %s\n", score);
printf(" %c\n", dasStrand(strand[0]));
printf(" -\n");
printf(" \n", name, chrom, start);
printf(" Link to UCSC Browser\n",
chrom, start, end, database);
printf(" \n");
printf("\n");
}
static void dasOutBedSegment(struct sqlResult *sr, int rowOffset, char *table, struct tableDef *td, struct trackTable *tt)
/* output BEDs and BED like tables resulting from query */
{
char **row;
+
+/* Get offset of standard bed fields. For compatibility revert to standard positions if not
+ * found */
+int chromIx = sqlFieldColumn(sr, "chrom");
+if (chromIx < 0) chromIx = rowOffset + 0;
+int chromStartIx = sqlFieldColumn(sr, "chromStart");
+if (chromStartIx < 0) chromStartIx = rowOffset + 1;
+int chromEndIx = sqlFieldColumn(sr, "chromEnd");
+if (chromEndIx < 0) chromEndIx = rowOffset + 2;
+
+
int scoreIx = sqlFieldColumn(sr, "score");
int strandIx = sqlFieldColumn(sr, "strand");
int nameIx = sqlFieldColumn(sr, "name");
if (scoreIx == -1)
scoreIx = sqlFieldColumn(sr, "gcPpt");
if (scoreIx == -1)
scoreIx = sqlFieldColumn(sr, "dataValue"); // bedGraph
while ((row = sqlNextRow(sr)) != NULL)
{
char *strand = (strandIx >= 0 ? row[strandIx] : "0");
char *score = (scoreIx >= 0 ? row[scoreIx] : "-");
char *name = (nameIx >= 0 ? row[nameIx] : td->name);
- dasOutBed(row[0+rowOffset],
- sqlUnsigned(row[1+rowOffset]),
- sqlUnsigned(row[2+rowOffset]),
+ dasOutBed(row[chromIx],
+ sqlUnsigned(row[chromStartIx]),
+ sqlUnsigned(row[chromEndIx]),
name, strand, score, td, tt);
}
}
static void writeSegmentFeaturesTable(struct segment *segment,
struct tableDef *td,
struct hash *trackHash,
struct sqlConnection *conn)
/* write segments features for a table */
{
int rowOffset;
boolean hasBin;
char table[HDB_MAX_TABLE_STRING];
verbose(2, "track %s\n", td->name);