src/hg/makeDb/hgBedsToBedExps/hgBedsToBedExps.c 1.3

1.3 2010/03/08 23:35:38 kent
Small tweaking to get it to work with real rather than pretend data.
Index: src/hg/makeDb/hgBedsToBedExps/hgBedsToBedExps.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/makeDb/hgBedsToBedExps/hgBedsToBedExps.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -b -B -U 4 -r1.2 -r1.3
--- src/hg/makeDb/hgBedsToBedExps/hgBedsToBedExps.c	26 Nov 2007 15:50:44 -0000	1.2
+++ src/hg/makeDb/hgBedsToBedExps/hgBedsToBedExps.c	8 Mar 2010 23:35:38 -0000	1.3
@@ -17,9 +17,9 @@
   "hgBedsToBedExps - Convert multiple bed files to a single bedExp.\n"
   "usage:\n"
   "   hgBedsToBedExps in.cfg out.bed out.exps\n"
   "where in.cfg is a tab separated file that describes the beds.  The columns are\n"
-  "   <factor> <cell line> <cell letter> <db/file> <data type> <file/table>\n"
+  "   <factor> <cell line> <cell letter> <db/file> <data type> <multiplier> <file/table>\n"
   "options:\n"
   "   -xxx=XXX\n"
   );
 }
@@ -143,27 +143,12 @@
 	    }
 	else
 	    lineFileExpectWords(lf, neededSize, gotSize);
 	AllocVar(bg);
-	if (sameString(cfg->dataType, "bedGraph"))
-	    {
 	    bg->chrom = cloneString(row[0]);
 	    bg->chromStart = lineFileNeedNum(lf, row, 1);
 	    bg->chromEnd = lineFileNeedNum(lf, row, 2);
-	    bg->dataValue = lineFileNeedDouble(lf, row, 3);
-	    }
-	else if (sameString(cfg->dataType, "bedScore"))
-	    {
-	    bg->chrom = cloneString(row[0]);
-	    bg->chromStart = lineFileNeedNum(lf, row, 1);
-	    bg->chromEnd = lineFileNeedNum(lf, row, 2);
-	    bg->dataValue = lineFileNeedNum(lf, row, 4) * 0.001;
-	    }
-	else
-	    {
-	    errAbort("Unknown data type %s", cfg->dataType);
-	    }
-	bg->dataValue *= cfg->multiplier;
+	bg->dataValue = lineFileNeedDouble(lf, row, cfg->scoreCol) * cfg->multiplier;
 	slAddHead(&bgList, bg);
 	}
     }
 else
@@ -259,8 +244,10 @@
 	newRange->end = bg->chromEnd;
 	newRange->val = site;
 	for (oldRange = rangeList; oldRange != NULL; oldRange = oldRange->next)
 	    {
+	    newRange->start = min(newRange->start, oldRange->start);
+	    newRange->end = max(newRange->end, oldRange->end);
 	    newRange->val = slCat(oldRange->val, newRange->val);
 	    rbTreeRemove(chromTree, oldRange);
 	    }
 	rbTreeAdd(chromTree, newRange);
@@ -282,16 +269,10 @@
 
 void hgBedsToBedExps(char *inCfg, char *outBed, char *outExp)
 /* hgBedsToBedExps - Convert multiple bed files to a single bedExp.. */
 {
-/* Load up input configuration and do a little error checking. */
+/* Load up input configuration . */
 struct bToBeCfg *cfg, *cfgList = bToBeCfgLoadAll(inCfg);
-for (cfg = cfgList; cfg != NULL; cfg = cfg->next)
-    {
-    if (!sameString(cfg->dataType, "bedGraph") &&
-        !sameString(cfg->dataType, "bedScore"))
-        errAbort("Unrecognized data type %s", cfg->dataType);
-    }
 verbose(1, "Loaded %d records from %s\n", slCount(cfgList), inCfg);
 
 /* Find and output all sources used. */
 struct hash *sourceHash = hashNew(0);