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/lib/alignSeqSizes.c src/hg/lib/alignSeqSizes.c index f98d2b9..0752b3c 100644 --- src/hg/lib/alignSeqSizes.c +++ src/hg/lib/alignSeqSizes.c @@ -1,109 +1,109 @@ /* alignSeqSizes - Parse and store query and target sequence sizes for use * when converting or parsing alignments */ /* Copyright (C) 2014 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 "alignSeqSizes.h" #include "linefile.h" #include "hash.h" #include "sqlNum.h" #include "obscure.h" struct alignSeqSizes /* table of sequence sizes */ { struct hash* qSizes; struct hash* tSizes; }; static void addSize(char *name, unsigned size, struct hash *sizes) /* add a name and size */ { struct hashEl *hel = hashLookup(sizes, name); if (hel != NULL) { /* size must be the same if duplicated */ if (ptToInt(hel->val) != size) errAbort("sequence %s already specified as size %d, can't set to %d", name, ptToInt(hel->val), size); } else hashAdd(sizes, name, intToPt(size)); } static void readSizesFile(char *fileName, struct hash *sizes) /* Read tab-separated file into hash. */ { struct lineFile *lf = lineFileOpen(fileName, TRUE); char *row[2]; while (lineFileChopNextTab(lf, row, ArraySize(row))) addSize(row[0], lineFileNeedNum(lf, row, 1), sizes); lineFileClose(&lf); } static void parseSizesStr(char* sizesStr, struct hash* sizes) /* parse string with pairs of name and value */ { char **words; int numWords = chopByWhite(sizesStr, NULL, 0); int i; if (numWords % 1) errAbort("sizes string must contain whitespace seprated pairs of name and size: %s", sizesStr); words = needMem(numWords); chopByWhite(sizesStr, words, numWords); for (i = 0; i < numWords; i += 2) addSize(words[i], sqlUnsigned(words[i+1]), sizes); freez(&words); } struct alignSeqSizes* alignSeqSizesNew(char *querySizesFile, char *querySizesStr, char *targetSizesFile, char *targetSizesStr) /* Allocate a new object. If *File arguments are not null, it is a tab * separated file of name and size. If sizesStr is not null, it is a string * with whitespace-seperated pairs of name and size. */ { struct alignSeqSizes* ass; AllocVar(ass); ass->qSizes = newHash(0); ass->tSizes = newHash(0); if (querySizesFile != NULL) readSizesFile(querySizesFile, ass->qSizes); if (querySizesStr != NULL) parseSizesStr(querySizesStr, ass->qSizes); if (targetSizesFile != NULL) readSizesFile(targetSizesFile, ass->tSizes); if (targetSizesStr != NULL) parseSizesStr(targetSizesStr, ass->tSizes); return ass; } void alignSeqSizesFree(struct alignSeqSizes** assPtr) /* free an alignSeqSizes object */ { struct alignSeqSizes* ass = *assPtr; if (ass != NULL) { hashFree(&ass->qSizes); hashFree(&ass->tSizes); freez(assPtr); } } int alignSeqSizesMustGetQuery(struct alignSeqSizes* ass, char *name) /* Find size of a query sequence, or error if not found */ { return ptToInt(hashMustFindVal(ass->qSizes, name)); } int alignSeqSizesMustGetTarget(struct alignSeqSizes* ass, char *name) /* Find size of a query sequence, or error if not found */ { return ptToInt(hashMustFindVal(ass->tSizes, name)); }