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/oneShot/agpVsMap/agpVsMap.c src/hg/oneShot/agpVsMap/agpVsMap.c
index 4e2f089..bd64500 100644
--- src/hg/oneShot/agpVsMap/agpVsMap.c
+++ src/hg/oneShot/agpVsMap/agpVsMap.c
@@ -1,176 +1,176 @@
 /* agpVsMap - Plot clones in agp file vs. map coordinates. */
 
 /* Copyright (C) 2011 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 "linefile.h"
 #include "hash.h"
 #include "memgfx.h"
 #include "agpFrag.h"
 #include "hCommon.h"
 
 
 void usage()
 /* Explain usage and exit. */
 {
 errAbort(
   "agpVsMap - Plot clones in agp file vs. map coordinates\n"
   "usage:\n"
   "   agpVsMap XXX\n");
 }
 
 struct cloneInfo
 /* Info on one clone. */
     {
     struct cloneInfo *next;     /* next in list. */
     char *name;                 /* Name, allocated in hash. */
     struct agpFrag *bp;        /* Position in agp. */
     struct mapPos *mp;          /* Position in map. */
     };
 
 struct agpFrag *readAgpFile(char *agpName)
 /* Read agps from file. */
 {
 struct lineFile *lf = lineFileOpen(agpName, TRUE);
 int wordCount;
 char *words[16];
 struct agpFrag *list = NULL, *el;
 
 while ((wordCount = lineFileChop(lf, words)) != 0)
     {
     if (words[4][0] != 'N')
         {
 	lineFileExpectWords(lf, 9, wordCount);
 	el = agpFragLoad(words);
 	slAddHead(&list, el);
 	}
     }
 lineFileClose(&lf);
 slReverse(&list);
 return list;
 }
 
 struct mapPos
 /* Position of clone in map. */
     {
     struct mapPos *next;	/* Next in list. */
     char *cloneName;            /* Name of clone. */
     int pos;                    /* Position in info file. */
     int phase;                  /* HTG phase. */
     };
 
 struct mapPos *readInfoFile(char *mapName)
 /* Read maps from file. */
 {
 struct lineFile *lf = lineFileOpen(mapName, TRUE);
 int lineSize, wordCount;
 char *line, *words[16];
 struct mapPos *list = NULL, *el;
 
 lineFileNeedNext(lf, &line, &lineSize);
 while (lineFileNext(lf, &line, &lineSize))
     {
     if (line[0] == '#')
         continue;
     wordCount = chopLine(line, words);
     lineFileExpectWords(lf, 3, wordCount);
     AllocVar(el);
     el->cloneName = cloneString(words[0]);
     el->pos = atoi(words[1]);
     el->phase = atoi(words[2]);
     slAddHead(&list, el);
     }
 lineFileClose(&lf);
 slReverse(&list);
 return list;
 }
 
 void drawPlus(struct memGfx *mg, int x, int y, Color color)
 /* Draw a little tiny plus symbol centered at x/y. */
 {
 int plusSize = 5;
 int plusOff = 2;
 
 mgDrawBox(mg, x-plusOff, y, plusSize, 1, color);
 mgDrawBox(mg, x, y-plusOff, 1, plusSize, color);
 }
 
 void agpVsMap(char *agpName, char *infoName, char *gifName)
 /* agpVsMap - Plot clones in agp vs. map coordinates. */
 {
 struct mapPos *mapList, *mp;
 struct agpFrag *agpList, *bp;
 struct hash *cloneHash = newHash(14);
 struct hashEl *hel;
 struct cloneInfo *cloneList = NULL, *clone;
 struct memGfx *mg = NULL;
 int pixWidth = 600;
 int pixHeight = 600;
 int rulerHeight = 20;
 int maxMapPos = 0, maxAgpPos = 0;
 double scaleMap, scaleAgp;
 Color orange, green;
 
 mapList = readInfoFile(infoName);
 agpList = readAgpFile(agpName);
 
 for (mp = mapList; mp != NULL; mp = mp->next)
     {
     if (mp->phase > 0)
         {
 	AllocVar(clone);
 	hel = hashAddUnique(cloneHash, mp->cloneName, clone);
 	clone->name = hel->name;
 	clone->mp = mp;
 	slAddHead(&cloneList, clone);
 	if (mp->pos > maxMapPos) maxMapPos = mp->pos;
 	}
     }
 slReverse(&cloneList);
 
 for (bp = agpList; bp != NULL; bp = bp->next)
     {
     if (bp->chromStart > maxAgpPos) maxAgpPos = bp->chromStart;
     }
 
 /* Draw scatterplot on bitmap. */
 mg = mgNew(pixWidth, pixHeight);
 mgClearPixels(mg);
 orange = mgFindColor(mg, 210, 150, 0);
 green = mgFindColor(mg, 0, 200, 0);
 mgDrawRuler(mg, 0, pixHeight-rulerHeight, rulerHeight, pixWidth, MG_BLACK,
        mgSmallFont(), 0, maxMapPos+1);
 scaleMap = (double)pixWidth/(double)(maxMapPos+1.0);
 scaleAgp = (double)(pixHeight)/(double)(maxAgpPos+1.0);
 for (bp = agpList; bp != NULL; bp = bp->next)
     {
     char cloneName[128];
     fragToCloneName(bp->frag, cloneName);
     clone = hashFindVal(cloneHash, cloneName);
     if (clone == NULL)
         warn("%s is in %s but not %s", cloneName, 
 	    agpName, infoName);
     else
 	{
 	int x = round(scaleMap*clone->mp->pos);
 	int y = pixHeight - round(scaleAgp*bp->chromStart);
 	int phase = clone->mp->phase;
 	int back;
 	if (phase <= 1) back = green;
 	else if (phase == 2) back = orange;
 	else back = MG_RED;
 	drawPlus(mg, x, y, back);
 	}
     }
 
 mgSaveGif(mg, gifName);
 }
 
 int main(int argc, char *argv[])
 /* Process command line. */
 {
 if (argc != 4)
     usage();
 agpVsMap(argv[1], argv[2], argv[3]);
 return 0;
 }