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/near/hgNear/pfam.c src/hg/near/hgNear/pfam.c
index c293fe4..7b72f0d 100644
--- src/hg/near/hgNear/pfam.c
+++ src/hg/near/hgNear/pfam.c
@@ -1,137 +1,137 @@
 /* pfam - handle pfam columns.  This requires a join. */
 
 /* Copyright (C) 2013 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 "hash.h"
 #include "linefile.h"
 #include "localmem.h"
 #include "dystring.h"
 #include "obscure.h"
 #include "jksql.h"
 #include "hgNear.h"
 
 static boolean isPfamId(char *name)
 /* Return TRUE if this is a pfam ID. */
 {
 return (name[0] == 'P' && name[1] == 'F' 
 	&& isdigit(name[2]) && isdigit(name[3]) && isdigit(name[4]) 
 	&& isdigit(name[5]) && isdigit(name[6]) && name[7] == 0);
 }
 
 static void pfamFilterControls(struct column *col, 
 	struct sqlConnection *conn)
 /* Print out controls for advanced filter. */
 {
 hPrintf(
   "Terms can include Pfam descriptions such as 'Cytochrome P450'<BR>"
   "or Pfam IDs such as PF00067. Please enclose term in single quotes<BR>"
   "if it contains multiple words. You may use * and ? wildcards.<BR>\n");
 hPrintf("Term(s): ");
 advFilterRemakeTextVar(col, "terms", 35);
 hPrintf(" Include if ");
 advFilterAnyAllMenu(col, "logic", FALSE);
 hPrintf("terms match");
 }
 
 
 static struct genePos *pfamAdvFilter(struct column *col, 
 	struct sqlConnection *defaultConn, struct genePos *list)
 /* Do advanced filter on for pfam. */
 {
 char *terms = advFilterVal(col, "terms");
 if (terms != NULL)
     {
     struct sqlConnection *conn = sqlConnect(col->protDb);
     char query[256];
     struct sqlResult *sr;
     struct dyString *dy = newDyString(1024);
     char **row;
     boolean orLogic = advFilterOrLogic(col, "logic", TRUE);
     struct slName *term, *termList = stringToSlNames(terms);
     struct hash *passHash = newHash(17);
     struct hash *prevHash = NULL;
     struct genePos *gp;
 
     /* Build up hash of all genes. */
     struct hash *geneHash = newHash(18);
     for (gp = list; gp != NULL; gp = gp->next)
         hashAdd(geneHash, gp->name, gp);
     for (term = termList; term != NULL; term = term->next)
         {
 	/* Build up a list of IDs of descriptions that match term. */
 	struct slName *idList = NULL, *id;
 	if (isPfamId(term->name))
 	    {
 	    idList = slNameNew(term->name);
 	    }
 	else
 	    {
 	    char *sqlWild = sqlLikeFromWild(term->name);
 	    sqlSafef(query, sizeof(query),
 	    	"select pfamAC from pfamDesc where description like '%s'",
 		sqlWild);
 	    sr = sqlGetResult(conn, query);
 	    while ((row = sqlNextRow(sr)) != NULL)
 		{
 	        id = slNameNew(row[0]);
 		slAddHead(&idList, id);
 		}
 	    sqlFreeResult(&sr);
 	    }
 
 	if (idList != NULL)
 	    {
 	    /* Build up query that includes all IDs. */
 	    dyStringClear(dy);
 	    sqlDyStringPrintf(dy, "select name from %s where ", col->table);
 	    sqlDyStringPrintf(dy, "value='%s'", idList->name);
 	    for (id = idList->next; id != NULL; id = id->next)
 		sqlDyStringPrintf(dy, "or value='%s'", id->name);
 
 	    /* Execute query and put matchers into hash. */
 	    sr = sqlGetResult(defaultConn, dy->string);
 	    while ((row = sqlNextRow(sr)) != NULL)
 		{
 		gp = hashFindVal(geneHash, row[0]);
 		if (gp != NULL)
 		    {
 		    char *name = gp->name;
 		    if (prevHash == NULL || hashLookup(prevHash, name) != NULL)
 			hashStore(passHash, name);
 		    }
 		}
 	    sqlFreeResult(&sr);
 	    slFreeList(&idList);
 	    }
 	if (!orLogic)
 	    {
 	    hashFree(&prevHash);
 	    if (term->next != NULL)
 		{
 		prevHash = passHash;
 		passHash = newHash(17);
 		}
 	    }
 	}
     list = weedUnlessInHash(list, passHash);
     hashFree(&prevHash);
     hashFree(&passHash);
     dyStringFree(&dy);
     sqlDisconnect(&conn);
     }
 return list;
 }
 
 void setupColumnPfam(struct column *col, char *parameters)
 /* Setup Pfam column. */
 {
 setupColumnAssociation(col, parameters);
 col->table = cloneString(parameters);
 if ((col->protDb = columnSetting(col, "protDb", NULL)) == NULL)
     errAbort("Missing required protDb field in column %s", col->name);
 col->advFilter = pfamAdvFilter;
 col->filterControls = pfamFilterControls;
 }