4898794edd81be5285ea6e544acbedeaeb31bf78
max
  Tue Nov 23 08:10:57 2021 -0800
Fixing pointers to README file for license in all source code files. refs #27614

diff --git src/hg/makeDb/outside/hgGtexAse/hgGtexAse.c src/hg/makeDb/outside/hgGtexAse/hgGtexAse.c
index ee35727..0bf8444 100644
--- src/hg/makeDb/outside/hgGtexAse/hgGtexAse.c
+++ src/hg/makeDb/outside/hgGtexAse/hgGtexAse.c
@@ -1,224 +1,224 @@
 /* hgGtexAse - Load tables of GTEx Allele-Specific Expression summary data from Lappalainen lab 
         at NY Genome Center.  Contact:  Stephane Castel.
 
     Header line:  chr, pos, rsid, samples, individuals, median_coverage, 
                         min_ae, q1_ae, median_ae, q3_ae, max_ae, std_ae
 */
 
 /* Copyright (C) 2016 The Regents of the University of California 
- * See README in this or parent directory for licensing information. */
+ * See kent/LICENSE or http://genome.ucsc.edu/license/ for licensing information. */
 
 #include "common.h"
 #include "portable.h"
 #include "verbose.h"
 #include "memgfx.h"
 #include "options.h"
 #include "basicBed.h"
 #include "linefile.h"
 #include "gtexTissue.h"
 #include "gtexAse.h"
 
 // Versions are used to suffix tablenames
 static char *version = "V6";
 boolean trackDb = FALSE;
 
 char *database, *table;
 char *tabDir = ".";
 
 void usage()
 /* Explain usage and exit. */
 {
 errAbort(
   "hgGtexAse - Write files of ASE GTEx ASE summary files:\n"
   "             BED 9+9 of ASE (gtexAse.h) with all fields, named by SNP, colored by median ASE\n"
   "usage:\n"
   "   hgGtexAse database tableRoot indir outdir\n"
   "     where files in indir are named TISSUEABBREV.ase_stats.txt\n"
   "             and the combined file starts with 'all'\n"
   "options:\n"
   "    -version=VN (default \'%s\')\n"
   "    -trackDb    add composite to trackDb  \n"
   , version);
 }
 
 static struct optionSpec options[] = {
     {"version", OPTION_STRING},
     {"trackDb", OPTION_BOOLEAN},
     {NULL, 0},
 };
 
 
 unsigned assignColor(int score, unsigned color)
 /* No ASE -> Gray.  Moderate ASE -> Grayed down tissue color. High ASE -> tissue color */
 {
 //#define GRAY    0x7D7D7D
 #define GRAY    0xA3A3A3
 if (score < 300)
     return GRAY;
 if (score >= 600)
     return color;
 struct rgbColor rgb = mgColorIxToRgb(NULL, color);
 struct rgbColor grayRgb = mgColorIxToRgb(NULL, GRAY);
 rgb.r += (grayRgb.r - rgb.r) / 2;
 rgb.g += (grayRgb.g - rgb.g) / 2;
 rgb.b += (grayRgb.b - rgb.b) / 2;
 return MAKECOLOR_32(rgb.r, rgb.g, rgb.b);
 }
 
 int assignScore(double val)
 {
 return val * 2000.0;
 }
 
 void parseAse(char *aseFile, char *inDir, char *outDir, char *table, unsigned tissueColor)
 {
 verbose(2, "Parsing file '%s'\n", aseFile);
 char *words[32];
 char inPath[64];
 safef(inPath, sizeof(inPath), "%s/%s", inDir, aseFile);
 struct lineFile *lf = lineFileOpen(inPath, TRUE);
 chopSuffix(aseFile);
 struct gtexAse *bed = NULL;
 char buf[64];
 char *line;
 char outFile[64];
 safef(outFile, sizeof(outFile), "%s/%s.tab", outDir, table);
 FILE *f = fopen(outFile, "w");
 
 /* skip header */
 lineFileNext(lf, &line, NULL);
 if (!startsWith("chr", line))
     errAbort("Bad format in first line of file '%s': must start with 'chr'", aseFile);
 
 while (lineFileNext(lf, &line, NULL))
     {
     verbose(5, "    %s\n", line);
     int count = chopTabs(line, words);
     lineFileExpectWords(lf, 12, count);
     AllocVar(bed);
     safef(buf, sizeof(buf), "chr%s", words[0]);
     bed->chrom = cloneString(buf);
     bed->chromStart = bed->thickStart = sqlUnsigned(words[1])-1;
     bed->chromEnd = bed->thickEnd = sqlUnsigned(words[1]);
     bed->name = words[2];
     if (isEmpty(bed->name))
         {
         safef(buf, sizeof buf, "%s:%d", bed->chrom, bed->chromStart+1);
         bed->name = cloneString(buf);
         }
     bed->strand[0] = '.';
     bed->samples = sqlUnsigned(words[3]);
     bed->donors = sqlUnsigned(words[4]);
     bed->coverage = sqlDouble(words[5]);
     bed->minASE = sqlDouble(words[6]);
     bed->q1ASE = sqlDouble(words[7]);
 
     bed->medianASE = sqlDouble(words[8]);
     bed->score = assignScore(bed->medianASE);
     bed->itemRgb = assignColor(bed->score, tissueColor);
 
     bed->q3ASE = sqlDouble(words[9]);
     bed->maxASE = sqlDouble(words[10]);
     bed->stdASE = sqlDouble(words[11]);
     gtexAseTabOut(bed, f);
     }
 lineFileClose(&lf);
 fclose(f);
 }
 
 struct hash *getTissueByAbbrev(char *version)
 /* Make hash of tissue info by abbreviation (to retrieve UCSC short name) */
 {
 struct gtexTissue *tis, *tissues = gtexGetTissues(version);
 struct hash *tisHash = hashNew(0);
 for (tis = tissues; tis != NULL; tis = tis->next)
     hashAdd(tisHash, tis->abbrev, tis);
 return tisHash;
 }
 
 void hgGtexAse(char *database, char *tableRoot, char *inDir, char *outDir)
 /* Main function to parse data files and load tables */
 {
 // Create trackDb file 
 char trackDbFile[64];
 safef(trackDbFile, sizeof(trackDbFile), "%s/trackDb.%s.ra", outDir, tableRoot);
 FILE *f = fopen(trackDbFile, "w");
 
 // Start trackDb
 if (trackDb)
     {
     fprintf(f, "track %s\n", tableRoot);
     fprintf(f, "compositeTrack on\n");
     fprintf(f, "shortLabel GTEx ASE\n");
     fprintf(f, "longLabel  Allele-Specific Expression Summary in 53 tissues from GTEx Analysis (NY Genome Ctr)\n");
     fprintf(f, "dragAndDrop subTracks\n");
     //fprintf(f, "group expression\n");
     fprintf(f, "itemRgb on\n");
     fprintf(f, "darkerLabels on\n");
     fprintf(f, "scoreFilter 500\n");
     fprintf(f, "type bigBed 9 +\n\n");
     }
 
 // Read median data from files in inDir directory, and create output files
 struct slName *file, *files = listDir(inDir, "*.txt");
 struct hash *tissues = getTissueByAbbrev(version);
 
 unsigned color;
 char *name, *descr;
 for (file = files; file != NULL; file = file->next)
     {
     char *fileName = file->name;
     if (startsWith("all", fileName))
         {
         color = 0;
         name = "combined";
         descr = "All Tissues";
         }
     else
         {
         char *tissueAbbrev = cloneString(fileName);
         chopSuffix(tissueAbbrev);
         chopSuffix(tissueAbbrev);
         struct gtexTissue *tissue = hashMustFindVal(tissues, tissueAbbrev);
         color = tissue->color;
         name = tissue->name;
         descr = tissue->description;
         }
 
     char *tissueUpper = cloneString(name);
     toUpperN(tissueUpper, 1);
     char table[64];
     safef(table, sizeof(table), "%s%s", tableRoot, tissueUpper);
     parseAse(fileName, inDir, outDir, table, color);
 
     fprintf(f, "    track %s\n", table);
     fprintf(f, "    parent %s\n", tableRoot);
     fprintf(f, "    shortLabel %s\n", name);
     fprintf(f, "    longLabel Median Allele-Specific Expression in %s from GTEx Analysis (NY Genome Ctr)\n", descr);
     fprintf(f, "    type bigBed 9 +\n");
     fprintf(f, "    bigDataUrl %s.bb\n", table);
     struct rgbColor rgb;
     rgb.b = (color >> 0) & 0xff;
     rgb.g = (color >> 8) & 0xff;
     rgb.r = (color >> 16) & 0xff;
     fprintf(f, "    color %d,%d,%d\n", rgb.r, rgb.g, rgb.b);
     fprintf(f, "\n");
     }
 fclose(f);
 }
 
 int main(int argc, char *argv[])
 /* Process command line. */
 {
 optionInit(&argc, argv, options);
 if (argc != 5)
     usage();
 version = optionVal("version", version);
 trackDb = optionExists("trackDb");
 hgGtexAse(argv[1], argv[2], argv[3], argv[4]);
 return 0;
 }