本文整理汇总了C++中sameString函数的典型用法代码示例。如果您正苦于以下问题:C++ sameString函数的具体用法?C++ sameString怎么用?C++ sameString使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了sameString函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: writeTab
void writeTab(struct hash *stageHash, struct hash *seqHash,
char *sourceImageDir, char *parsedTab,
struct hash *nameHash, char *outName)
/* Synthasize data and write out tab-separated file with one line for
* each image. */
{
char sourceImage[PATH_LEN];
FILE *f = mustOpen(outName, "w");
struct lineFile *lf = lineFileOpen(parsedTab, TRUE);
char *row[6];
/* Write header. */
fprintf(f, "#");
fprintf(f, "gene\t");
fprintf(f, "submitId\t");
fprintf(f, "fileName\t");
fprintf(f, "imageWidth\t");
fprintf(f, "imageHeight\t");
fprintf(f, "bodyPart\t");
fprintf(f, "age\t");
fprintf(f, "minAge\t");
fprintf(f, "maxAge\t");
fprintf(f, "seq\n");
while (lineFileRowTab(lf, row))
{
char *clone = row[0];
char *stage = row[1];
char *part = row[2];
char *dir = row[3];
char *subdir = row[4];
char *file = row[5];
char *gene = hashFindVal(nameHash, clone);
struct dnaSeq *seq = hashFindVal(seqHash, clone);
int width, height;
safef(sourceImage, sizeof(sourceImage), "%s/%s/%s/%s",
sourceImageDir, dir, subdir, file);
jpegSize(sourceImage, &width, &height);
if (gene == NULL)
gene = clone;
fprintf(f, "%s\t", gene);
fprintf(f, "%s\t", clone);
fprintf(f, "%s/%s\t", subdir, file);
fprintf(f, "%d\t", width);
fprintf(f, "%d\t", height);
fprintf(f, "%s\t", part);
if (sameString(stage, "mixed"))
fprintf(f, "1\t0\t3\t");
else
{
char *age = hashMustFindVal(stageHash, stage);
fprintf(f, "%s\t", age);
fprintf(f, "%s\t", age);
fprintf(f, "%s\t", age);
}
if (seq != NULL)
fprintf(f, "%s\n", seq->dna);
else
fprintf(f, "\n");
}
carefulClose(&f);
}
开发者ID:CEpBrowser,项目名称:CEpBrowser--from-UCSC-CGI-BIN,代码行数:65,代码来源:vgLoadNibb.c
示例2: doUserCommits
void doUserCommits(char *u, struct commit *commits, int *saveUlc, int *saveUfc)
/* process one user, commit-view */
{
char userPath[1024];
safef(userPath, sizeof(userPath), "%s/%s/%s/%s/index.html", outDir, outPrefix, "user", u);
FILE *h = mustOpen(userPath, "w");
fprintf(h, "<html>\n<head>\n<title>Commits for %s</title>\n</head>\n</body>\n", u);
fprintf(h, "<h1>Commits for %s</h1>\n", u);
fprintf(h, "switch to <A href=\"index-by-file.html\">files view</A>, <A href=\"../index.html\">user index</A>\n");
fprintf(h, "<h3>%s to %s (%s to %s) %s</h3>\n", startTag, endTag, startDate, endDate, title);
fprintf(h, "<ul>\n");
int userLinesChanged = 0;
int userFileCount = 0;
char *cDiff = NULL, *cHtml = NULL, *fDiff = NULL, *fHtml = NULL;
char *relativePath = NULL;
char *commonPath = NULL;
struct commit *c = NULL;
struct files *f = NULL;
for(c = commits; c; c = c->next)
{
if (sameString(c->author, u))
{
//fprintf(h, "%s\n", c->commitId);
//fprintf(h, "%s\n", c->date);
char *cc = htmlEncode(c->comment);
char *ccc = replaceChars(cc, "\n", "<br>\n");
fprintf(h, "<li>%s\n", ccc);
freeMem(cc);
freeMem(ccc);
makeDiffAndSplit(c, u, FALSE);
makeDiffAndSplit(c, u, TRUE);
for(f = c->files; f; f = f->next)
{
char path[1024];
// context unified
safef(path, sizeof(path), "%s/%s%s", "context", f->path, c->commitId);
relativePath = cloneString(path);
safef(path, sizeof(path), "%s/%s/%s/%s/%s", outDir, outPrefix, "user", u, relativePath);
commonPath = cloneString(path);
safef(path, sizeof(path), "%s.html", commonPath);
cHtml = cloneString(path);
safef(path, sizeof(path), "%s.diff", commonPath);
cDiff = cloneString(path);
// make context html page
f->linesChanged = makeHtml(cDiff, cHtml, f->path, c->commitId);
userLinesChanged += f->linesChanged;
++userFileCount;
freeMem(cDiff);
freeMem(cHtml);
safef(path, sizeof(path), "%s.html", relativePath);
cHtml = cloneString(path);
safef(path, sizeof(path), "%s.diff", relativePath);
cDiff = cloneString(path);
// full text (up to 10,000 lines)
freeMem(relativePath);
safef(path, sizeof(path), "%s/%s%s", "full", f->path, c->commitId);
relativePath = cloneString(path);
safef(path, sizeof(path), "%s/%s/%s/%s/%s", outDir, outPrefix, "user", u, relativePath);
freeMem(commonPath);
commonPath = cloneString(path);
safef(path, sizeof(path), "%s.html", commonPath);
fHtml = cloneString(path);
safef(path, sizeof(path), "%s.diff", commonPath);
fDiff = cloneString(path);
//git show --unified=10000 11a20b6cd113d75d84549eb642b7f2ac7a2594fe src/utils/qa/weeklybld/buildEnv.csh
// make full html page
makeHtml(fDiff, fHtml, f->path, c->commitId);
freeMem(fDiff);
freeMem(fHtml);
safef(path, sizeof(path), "%s.html", relativePath);
fHtml = cloneString(path);
safef(path, sizeof(path), "%s.diff", relativePath);
//.........这里部分代码省略.........
开发者ID:CEpBrowser,项目名称:CEpBrowser--from-UCSC-CGI-BIN,代码行数:101,代码来源:git-reports.c
示例3: webStartWrapperDetailedInternal
static void webStartWrapperDetailedInternal(struct cart *theCart,
char *db, char *headerText, char *textOutBuf,
boolean withHttpHeader, boolean withLogo, boolean skipSectionHeader,
boolean withHtmlHeader)
/* output a CGI and HTML header with the given title in printf format */
{
char uiState[256];
char *scriptName = cgiScriptName();
boolean isEncode = FALSE;
if (theCart)
{
char *theGenome = NULL;
char *genomeEnc = NULL;
getDbAndGenome(theCart, &db, &theGenome, NULL);
genomeEnc = cgiEncode(theGenome);
safef(uiState, sizeof(uiState), "?%s=%s&%s=%s&%s=%u",
orgCgiName, genomeEnc,
dbCgiName, db,
cartSessionVarName(), cartSessionId(theCart));
}
else
{
uiState[0] = 0;
uiState[1] = 0;
}
if (db == NULL)
db = hDefaultDb();
boolean dbIsFound = hDbExists(db);
boolean haveBlat = FALSE;
if (dbIsFound)
haveBlat = hIsBlatIndexedDatabase(db);
if (scriptName == NULL)
scriptName = cloneString("");
/* don't output two headers */
if(webHeadAlreadyOutputed)
return;
if (sameString(cgiUsualString("action",""),"encodeReleaseLog") ||
rStringIn("EncodeDataVersions", scriptName))
isEncode = TRUE;
/* Preamble. */
dnaUtilOpen();
if (withHttpHeader)
puts("Content-type:text/html\n");
if (withHtmlHeader)
{
char *newString, *ptr1, *ptr2;
char *browserVersion;
if (btIE == cgiClientBrowser(&browserVersion, NULL, NULL) && *browserVersion < '8')
puts("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2//EN\">");
else
puts("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" "
"\"http://www.w3.org/TR/html4/loose.dtd\">");
// Strict would be nice since it fixes atleast one IE problem (use of :hover CSS pseudoclass)
puts(
"<HTML>" "\n"
"<HEAD>" "\n"
);
printf("\t%s\n", headerText);
printf("\t<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html;CHARSET=iso-8859-1\">" "\n"
"\t<META http-equiv=\"Content-Script-Type\" content=\"text/javascript\">" "\n"
"\t<META HTTP-EQUIV=\"Pragma\" CONTENT=\"no-cache\">" "\n"
"\t<META HTTP-EQUIV=\"Expires\" CONTENT=\"-1\">" "\n"
"\t<TITLE>"
);
/* we need to take any HTML formatting out of the titlebar string */
newString = cloneString(textOutBuf);
for(ptr1=newString, ptr2=textOutBuf; *ptr2 ; ptr2++)
{
if (*ptr2 == '<')
{
for(; *ptr2 && (*ptr2 != '>'); ptr2++)
;
}
else
*ptr1++ = *ptr2;
}
*ptr1 = 0;
htmlTextOut(newString);
printf(" </TITLE>\n ");
webIncludeResourceFile("HGStyle.css");
if (extraStyle != NULL)
puts(extraStyle);
printf("</HEAD>\n");
printBodyTag(stdout);
htmlWarnBoxSetup(stdout);// Sets up a warning box which can be filled with errors as they occur
puts(commonCssStyles());
}
puts(
"<A NAME=\"TOP\"></A>" "\n"
"" "\n"
"<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=\"100%\">" "\n");
//.........这里部分代码省略.........
开发者ID:elmargb,项目名称:kentUtils,代码行数:101,代码来源:web.c
示例4: parseSteppedSection
static void parseSteppedSection(struct lineFile *lf, boolean clipDontDie,
struct hash *chromSizeHash, char *initialLine,
struct lm *lm, int itemsPerSlot, struct bwgSection **pSectionList)
/* Parse out a variableStep or fixedStep section and add it to list, breaking it up as need be. */
{
/* Parse out first word of initial line and make sure it is something we recognize. */
char *typeWord = nextWord(&initialLine);
enum bwgSectionType type = bwgTypeFixedStep;
if (sameString(typeWord, "variableStep"))
type = bwgTypeVariableStep;
else if (sameString(typeWord, "fixedStep"))
type = bwgTypeFixedStep;
else
errAbort("Unknown type %s\n", typeWord);
/* Set up defaults for values we hope to parse out of rest of line. */
int span = 0;
bits32 step = 0;
bits32 start = 0;
char *chrom = NULL;
/* Parse out var=val pairs. */
char *varEqVal;
while ((varEqVal = nextWord(&initialLine)) != NULL)
{
char *wordPairs[2];
int wc = chopByChar(varEqVal, '=', wordPairs, 2);
if (wc != 2)
errAbort("strange var=val pair line %d of %s", lf->lineIx, lf->fileName);
char *var = wordPairs[0];
char *val = wordPairs[1];
if (sameString(var, "chrom"))
chrom = cloneString(val);
else if (sameString(var, "span"))
span = parseUnsignedVal(lf, var, val);
else if (sameString(var, "step"))
step = parseUnsignedVal(lf, var, val);
else if (sameString(var, "start"))
{
start = parseUnsignedVal(lf, var, val);
}
else
errAbort("Unknown setting %s=%s line %d of %s", var, val, lf->lineIx, lf->fileName);
}
/* Check that we have all that are required and no more, and call type-specific routine to parse
* rest of section. */
if (chrom == NULL)
errAbort("Missing chrom= setting line %d of %s\n", lf->lineIx, lf->fileName);
bits32 chromSize = (chromSizeHash ? hashIntVal(chromSizeHash, chrom) : BIGNUM);
if (start > chromSize)
{
warn("line %d of %s: chromosome %s has %u bases, but item starts at %u",
lf->lineIx, lf->fileName, chrom, chromSize, start);
if (!clipDontDie)
noWarnAbort();
}
if (type == bwgTypeFixedStep)
{
if (start == 0)
errAbort("Missing start= setting line %d of %s\n", lf->lineIx, lf->fileName);
if (step == 0)
errAbort("Missing step= setting line %d of %s\n", lf->lineIx, lf->fileName);
if (span == 0)
span = step;
parseFixedStepSection(lf, clipDontDie, lm, itemsPerSlot,
chrom, chromSize, span, start-1, step, pSectionList);
}
else
{
if (start != 0)
errAbort("Extra start= setting line %d of %s\n", lf->lineIx, lf->fileName);
if (step != 0)
errAbort("Extra step= setting line %d of %s\n", lf->lineIx, lf->fileName);
if (span == 0)
span = 1;
parseVariableStepSection(lf, clipDontDie, lm, itemsPerSlot,
chrom, chromSize, span, pSectionList);
}
}
开发者ID:CRG-Barcelona,项目名称:libbeato,代码行数:80,代码来源:bwgCreate.c
示例5: getCommits
struct commit* getCommits()
/* Get all commits from startTag to endTag */
{
int numCommits = 0;
safef(gitCmd,sizeof(gitCmd), ""
"git log %s..%s --name-status > commits.tmp"
, startTag, endTag);
runShell(gitCmd);
struct lineFile *lf = lineFileOpen("commits.tmp", TRUE);
int lineSize;
char *line;
struct commit *commits = NULL, *commit = NULL;
struct files *files = NULL, *f = NULL;
char *sep = "";
while (lineFileNext(lf, &line, &lineSize))
{
boolean isMerge = FALSE;
char *w = nextWord(&line);
AllocVar(commit);
if (!sameString("commit", w))
errAbort("expected keyword commit parsing commits.tmp\n");
commit->commitId = cloneString(nextWord(&line));
commit->commitNumber = ++numCommits;
lineFileNext(lf, &line, &lineSize);
w = nextWord(&line);
if (sameString("Merge:", w))
{
isMerge = TRUE;
lineFileNext(lf, &line, &lineSize);
w = nextWord(&line);
}
if (!sameString("Author:", w))
errAbort("expected keyword Author: parsing commits.tmp\n");
/* by request, keep just the email account name */
char *lc = strchr(line, '<');
if (!lc)
errAbort("expected '<' char in email address in Author: parsing commits.tmp\n");
++lc;
char *rc = strchr(lc, '>');
if (!rc)
errAbort("expected '>' char in email address in Author: parsing commits.tmp\n");
char *ac = strchr(lc, '@');
if (ac)
rc = ac;
commit->author = cloneStringZ(lc, rc-lc);
lineFileNext(lf, &line, &lineSize);
w = nextWord(&line);
if (!sameString("Date:", w))
errAbort("expected keyword Date: parsing commits.tmp\n");
commit->date = cloneString(line);
lineFileNext(lf, &line, &lineSize);
if (!sameString("", line))
errAbort("expected blank line parsing commits.tmp\n");
/* collect the comment-lines */
struct dyString *dy = NULL;
dy = dyStringNew(0);
sep = "";
files = NULL;
while (lineFileNext(lf, &line, &lineSize))
{
if (sameString("", line))
break;
w = skipLeadingSpaces(line);
dyStringPrintf(dy, "%s%s", w, sep);
sep = "\n";
}
commit->comment = cloneString(dy->string);
freeDyString(&dy);
if (!isMerge)
{
/* collect the files-list */
while (lineFileNext(lf, &line, &lineSize))
{
if (sameString("", line))
break;
AllocVar(f);
w = nextWord(&line);
f->type = w[0];
f->path = cloneString(line);
slAddHead(&files, f);
}
slReverse(&files);
}
commit->files = files;
if (!isMerge /* for now, default to filtering out the records for automatic-merges */
&& !endsWith(commit->comment, "elease log update")) /* filter out automatic release log commits */
slAddHead(&commits, commit);
verbose(2,
"commitId: %s\n"
"author: %s\n"
//.........这里部分代码省略.........
开发者ID:CEpBrowser,项目名称:CEpBrowser--from-UCSC-CGI-BIN,代码行数:101,代码来源:git-reports.c
示例6: subtrackMergeIsBpWise
boolean subtrackMergeIsBpWise()
/* Return TRUE if the subtrack merge operation is base pair-wise. */
{
char *op = cartUsualString(cart, hgtaSubtrackMergeOp, "any");
return (sameString(op, "and") || sameString(op, "or"));
}
开发者ID:CEpBrowser,项目名称:CEpBrowser--from-UCSC-CGI-BIN,代码行数:6,代码来源:compositeTrack.c
示例7: initGapAid
void initGapAid(char *gapFileName)
/* Initialize gap aid structure for faster gap
* computations. */
{
int i, tableSize, startLong = -1;
char *sizeDesc[2];
char *words[128];
if (gapFileName != NULL)
{
struct lineFile *lf = lineFileOpen(gapFileName, TRUE);
int count;
lineFileNextRowTab(lf, sizeDesc, 2);
tableSize = atoi(sizeDesc[1]);
AllocArray(gapInitPos,tableSize);
AllocArray(gapInitQGap,tableSize);
AllocArray(gapInitTGap,tableSize);
AllocArray(gapInitBothGap,tableSize);
while (count = lineFileChopNext(lf, words, tableSize+1))
{
if (sameString(words[0],"smallSize"))
{
aid.smallSize = atoi(words[1]);
}
if (sameString(words[0],"position"))
{
for (i=0 ; i<count-1 ; i++)
gapInitPos[i] = atoi(words[i+1]);
}
if (sameString(words[0],"qGap"))
{
for (i=0 ; i<count-1 ; i++)
gapInitQGap[i] = atoi(words[i+1]);
}
if (sameString(words[0],"tGap"))
{
for (i=0 ; i<count-1 ; i++)
gapInitTGap[i] = atoi(words[i+1]);
}
if (sameString(words[0],"bothGap"))
{
for (i=0 ; i<count-1 ; i++)
gapInitBothGap[i] = atoi(words[i+1]);
}
}
if (aid.smallSize == 0)
errAbort("missing smallSize parameter in %s\n",gapFileName);
lineFileClose(&lf);
}
else
{
/* if no gap file, then setup default values */
/* Set up to handle small values */
aid.smallSize = 111;
tableSize = 11;
AllocArray(gapInitPos,tableSize);
AllocArray(gapInitQGap,tableSize);
AllocArray(gapInitTGap,tableSize);
AllocArray(gapInitBothGap,tableSize);
for (i = 0 ; i < tableSize ; i++)
{
gapInitPos[i] = gapInitPosDefault[i];
gapInitTGap[i] = gapInitTGapDefault[i];
gapInitQGap[i] = gapInitQGapDefault[i];
gapInitBothGap[i] = gapInitBothGapDefault[i];
}
}
AllocArray(aid.qSmall, aid.smallSize);
AllocArray(aid.tSmall, aid.smallSize);
AllocArray(aid.bSmall, aid.smallSize);
for (i=1; i<aid.smallSize; ++i)
{
aid.qSmall[i] =
interpolate(i, gapInitPos, gapInitQGap, tableSize);
aid.tSmall[i] =
interpolate(i, gapInitPos, gapInitTGap, tableSize);
aid.bSmall[i] = interpolate(i, gapInitPos,
gapInitBothGap, tableSize);
}
/* Set up to handle intermediate values. */
for (i=0; i<tableSize; ++i)
{
if (aid.smallSize == gapInitPos[i])
{
startLong = i;
break;
}
}
if (startLong < 0)
errAbort("No position %d in initGapAid()\n", aid.smallSize);
aid.longCount = tableSize - startLong;
aid.qPosCount = tableSize - startLong;
aid.tPosCount = tableSize - startLong;
aid.bPosCount = tableSize - startLong;
aid.longPos = cloneMem(gapInitPos + startLong, aid.longCount * sizeof(int));
aid.qLong = cloneMem(gapInitQGap + startLong, aid.qPosCount * sizeof(double));
aid.tLong = cloneMem(gapInitTGap + startLong, aid.tPosCount * sizeof(double));
//.........这里部分代码省略.........
开发者ID:CEpBrowser,项目名称:CEpBrowser--from-UCSC-CGI-BIN,代码行数:101,代码来源:chainScore.c
示例8: simplifyPathToDirSelfTest
void simplifyPathToDirSelfTest()
{
/* First test some cases which should remain the same. */
assert(sameString(simplifyPathToDir(""),""));
assert(sameString(simplifyPathToDir("a"),"a"));
assert(sameString(simplifyPathToDir("a/b"),"a/b"));
assert(sameString(simplifyPathToDir("/"),"/"));
assert(sameString(simplifyPathToDir("/.."),"/.."));
assert(sameString(simplifyPathToDir("/../a"),"/../a"));
/* Now test removing trailing slash. */
assert(sameString(simplifyPathToDir("a/"),"a"));
assert(sameString(simplifyPathToDir("a/b/"),"a/b"));
/* Test .. removal. */
assert(sameString(simplifyPathToDir("a/.."),""));
assert(sameString(simplifyPathToDir("a/../"),""));
assert(sameString(simplifyPathToDir("a/../b"),"b"));
assert(sameString(simplifyPathToDir("/a/.."),"/"));
assert(sameString(simplifyPathToDir("/a/../"),"/"));
assert(sameString(simplifyPathToDir("/a/../b"),"/b"));
assert(sameString(simplifyPathToDir("a/b/.."),"a"));
assert(sameString(simplifyPathToDir("a/b/../"),"a"));
assert(sameString(simplifyPathToDir("a/b/../c"),"a/c"));
assert(sameString(simplifyPathToDir("a/../b/../c"),"c"));
assert(sameString(simplifyPathToDir("a/../b/../c/.."),""));
assert(sameString(simplifyPathToDir("/a/../b/../c/.."),"/"));
/* Test // removal */
assert(sameString(simplifyPathToDir("//"),"/"));
assert(sameString(simplifyPathToDir("//../"),"/.."));
assert(sameString(simplifyPathToDir("a//b///c"),"a/b/c"));
assert(sameString(simplifyPathToDir("a/b///"),"a/b"));
}
开发者ID:cestmoi7,项目名称:AGAPE,代码行数:34,代码来源:osunix.c
示例9: txCdsToGene
void txCdsToGene(char *txBed, char *txFa, char *txCds, char *outGtf, char *outFa)
/* txCdsToGene - Convert transcript bed and best cdsEvidence to genePred and
* protein sequence. */
{
struct hash *txSeqHash = faReadAllIntoHash(txFa, dnaLower);
verbose(2, "Read %d transcript sequences from %s\n", txSeqHash->elCount, txFa);
struct hash *cdsHash = cdsEvidenceReadAllIntoHash(txCds);
verbose(2, "Read %d cdsEvidence from %s\n", cdsHash->elCount, txCds);
struct lineFile *lf = lineFileOpen(txBed, TRUE);
FILE *fGtf = mustOpen(outGtf, "w");
FILE *fFa = mustOpen(outFa, "w");
char *row[12];
while (lineFileRow(lf, row))
{
struct bed *bed = bedLoad12(row);
verbose(2, "processing %s\n", bed->name);
struct cdsEvidence *cds = hashFindVal(cdsHash, bed->name);
struct dnaSeq *txSeq = hashFindVal(txSeqHash, bed->name);
char *cdsSource = NULL;
boolean freeOfCdsErrors = TRUE;
if (txSeq == NULL)
errAbort("%s is in %s but not %s", bed->name, txBed, txFa);
if (cds != NULL)
{
freeOfCdsErrors = outputProtein(cds, txSeq, fFa);
if (cds->cdsCount > 1)
{
struct bed *newBed = breakUpBedAtCdsBreaks(cds, bed);
if (fTweaked)
fprintf(fTweaked, "%s\n", newBed->name);
bedFree(&bed);
bed = newBed;
}
cdsSource = cds->accession;
if (sameString(cds->accession, "."))
cdsSource = cds->source;
}
/* Set bed CDS bounds and optionally output bed. */
cdsEvidenceSetBedThick(cds, bed, freeOfCdsErrors);
if (fBed)
bedTabOutN(bed, 12, fBed);
/* Parse out bed name, which is in format chrom.geneId.txId.accession */
char *geneName = cloneString(bed->name);
char *accession = strrchr(geneName, '.');
assert(accession != NULL);
*accession++ = 0;
chopSuffix(geneName);
/* Output as GTF */
bedToGtf(bed, accession, cdsSource, geneName, fGtf);
/* Clean up for next iteration of loop. */
freez(&geneName);
bedFree(&bed);
}
lineFileClose(&lf);
carefulClose(&fFa);
carefulClose(&fGtf);
}
开发者ID:blumroy,项目名称:kentUtils,代码行数:61,代码来源:txCdsToGene.c
示例10: setSpecificCodingSoTerm
static void setSpecificCodingSoTerm(struct gpFx *effect, char *oldAa, char *newAa,
int cdsBasesAdded)
/* Assuming that deletions are marked with dashes in newCodingSequence,
* and that effect fields aside from soNumber are already populated, use the
* pep seqs and number of dashes to determine the appropriate SO term.
* Probably the majority of cases will be synonymous_variant or missense_variant,
* but we have to check for several other special cases esp. indels. */
{
struct codingChange *cc = &effect->details.codingChange;
int oldAaSize = strlen(oldAa), newAaSize = strlen(newAa);
if (sameString(newAa, oldAa))
{
if (cc->pepPosition == oldAaSize-1 && cc->aaOld[0] == 'Z')
effect->soNumber = stop_retained_variant;
else
effect->soNumber = synonymous_variant;
}
else
{
if (cdsBasesAdded < 0)
{
// Got a deletion variant -- check frame (and whether we lost a stop codon):
if ((cdsBasesAdded % 3) == 0)
{
if (strchr(cc->aaOld, 'Z') && !strchr(cc->aaNew, 'Z'))
effect->soNumber = stop_lost;
else
effect->soNumber = inframe_deletion;
}
else
effect->soNumber = frameshift_variant;
}
else
{
// Not a deletion; could be single-base (including early stop) or insertion
if (newAaSize < oldAaSize)
{
// Not a deletion but protein got smaller; must have been an early stop codon,
// possibly following a frameshift caused by an insertion.
if (cc->aaNew[0] != 'Z')
{
if (newAa[newAaSize-1] != 'Z')
errAbort("gpFx: new protein is smaller but last base in new sequence "
"is '%c' not 'Z'.\n"
"oldAa (%daa): %s\nnewAa (%daa): %s\n"
, newAa[newAaSize-1], oldAaSize, oldAa, newAaSize, newAa);
effect->soNumber = frameshift_variant;
}
else
effect->soNumber = stop_gained;
}
else if (newAaSize > oldAaSize)
{
// protein got bigger; insertion or lost stop codon
if (cc->aaOld[0] == 'Z')
effect->soNumber = stop_lost;
else if ((cdsBasesAdded % 3) == 0)
effect->soNumber = inframe_insertion;
else
effect->soNumber = frameshift_variant;
}
else
{
// Single aa change
if (cc->pepPosition == 0 && cc->aaOld[0] == 'M')
effect->soNumber = initiator_codon_variant;
else if (cc->pepPosition == oldAaSize-1)
{
if (oldAa[oldAaSize-1] == 'Z')
effect->soNumber = stop_lost;
else
effect->soNumber = incomplete_terminal_codon_variant;
}
else
effect->soNumber = missense_variant;
}
}
}
}
开发者ID:Nicholas-NVS,项目名称:kentUtils,代码行数:79,代码来源:gpFx.c
示例11: processSnps
void processSnps(char *chromName)
/* read through all rows in snpTmp */
/* look up class and observed */
/* write to output file */
{
char query[512];
struct sqlConnection *conn = hAllocConn();
struct sqlResult *sr;
char **row;
char tableName[64];
char fileName[64];
FILE *f;
struct hashEl *univarElement = NULL;
struct snpData *dataElement = NULL;
int classInt = 0;
char *classString = NULL;
int loc_type = 0;
int skipCount = 0;
safef(tableName, ArraySize(tableName), "%s_snpTmp", chromName);
safef(fileName, ArraySize(fileName), "%s_snpTmp.tab", chromName);
f = mustOpen(fileName, "w");
safef(query, sizeof(query),
"select snp_id, chromStart, chromEnd, loc_type, orientation, allele, refUCSC, refUCSCReverseComp, weight from %s ", tableName);
sr = sqlGetResult(conn, query);
while ((row = sqlNextRow(sr)) != NULL)
{
loc_type = sqlUnsigned(row[3]);
/* get univarElement from snpHash */
univarElement = hashLookup(snpHash, row[0]);
if (univarElement == NULL)
{
{
fprintf(errorFileHandle, "no data for %s (dropping)\n", row[0]);
skipCount++;
continue;
}
}
dataElement = (struct snpData *)univarElement->val;
classInt = dataElement->classInt;
// verbose(1, "classInt = %d\n", classInt);
assert(classInt >= 1 && classInt <= classCount);
/* lookup classString */
classString = classStrings[classInt-1];
/* special handling for class = in-del; split into classes of our own construction */
if (sameString(classString, "in-del"))
{
if (loc_type == 3)
classString = cloneString("insertion");
if (loc_type == 1 || loc_type == 2)
classString = cloneString("deletion");
}
fprintf(f, "%s\t%s\t%s\t%d\t%s\t", row[0], row[1], row[2], loc_type, classString);
fprintf(f, "%s\t%s\t%s\t%s\t%s\t%s\n", row[4], row[5], row[6], row[7], dataElement->observed, row[8]);
}
sqlFreeResult(&sr);
hFreeConn(&conn);
carefulClose(&f);
if (skipCount > 0)
verbose(1, "%d rows dropped\n", skipCount);
}
开发者ID:CEpBrowser,项目名称:CEpBrowser--from-UCSC-CGI-BIN,代码行数:63,代码来源:snpClassAndObserved.c
示例12: checkFilename
void checkFilename(struct sqlConnection *conn, char *table, struct hash *allBbiNames)
{
char buffer[10 * 1024];
char fileName[10 * 1024];
char oldSymlink[10 * 1024];
verbose(2, "checking for fileName field in table %s \n", table);
// see if this is even a bbi table
boolean bbiTable = FALSE;
struct slName *fnames = sqlFieldNames(conn, table);
if ((slCount(fnames) == 1) && (sameString(fnames->name, "fileName")))
bbiTable = TRUE;
slFreeList(&fnames);
if (!bbiTable)
return;
sqlSafef(buffer, sizeof buffer, "select fileName from %s limit 1", table);
if (sqlQuickQuery(conn, buffer, fileName, sizeof fileName) != NULL)
{
while(1) // loop to catch .bai as well as .bam
{
hashAdd(allBbiNames, fileName, NULL);
verbose(2,"got table.fileName %s\n", fileName);
// file exists
FILE *f = fopen(fileName, "r");
if (f == NULL)
{
warn("fileName %s from table %s can't be opened", fileName, table);
return;
}
else
fclose(f);
// check that the filename and object base match
char *base = strrchr(fileName, '/');
if (base == NULL)
{
warn("fileName %s in table %s not absolute path", fileName, table);
return;
}
else
{
base++;
char *dot = strchr(base, '.');
if (dot == NULL)
{
warn("fileName %s in table %s does not have suffix", fileName, table);
return;
}
else
{
char saveChar = *dot;
*dot = 0;
if (!sameString(table, base))
{
warn("fileName %s doesn't match table %s", base, table);
return;
}
*dot = saveChar;
}
}
// this file is really a symlink, so check its link target
ssize_t bufRead = readlink(fileName, oldSymlink, sizeof oldSymlink);
if (bufRead == -1)
{
errnoWarn("error reading symlink %s", fileName);
return;
}
else
{
oldSymlink[bufRead] = 0; // needs termination.
if (!fileExists(oldSymlink))
{
warn("symlink target %s does not exist!", oldSymlink);
return;
}
else
verbose(2,"got symlink %s\n", oldSymlink);
}
// check that the symlink and object base match
base = strrchr(oldSymlink, '/');
if (base == NULL)
{
warn("symlink %s in fileName %s not absolute path",oldSymlink, fileName);
return;
}
else
{
base++;
char *dot = strchr(base, '.');
if (dot == NULL)
{
warn("symlink %s in fileName %s does not have suffix", oldSymlink, fileName);
//.........这里部分代码省略.........
开发者ID:davidhoover,项目名称:kent,代码行数:101,代码来源:metaCheck.c
示例13: checkMetaFiles
void checkMetaFiles(struct mdbObj *mdbObj, char *downDir, struct hash *allNames)
{
verbose(1, "----------------------------------------------\n");
verbose(1, "Checking that files specified in metaDb exist in download dir\n");
verbose(1, "----------------------------------------------\n");
for(; mdbObj != NULL; mdbObj=mdbObj->next)
{
struct mdbVar *mdbVar = hashFindVal(mdbObj->varHash, "objType");
if (mdbVar == NULL)
{
warn("objType not found in object %s", mdbObj->obj);
continue;
}
if (sameString(mdbVar->val, "composite")) // skip objType composite
continue;
mdbObj->deleteThis = FALSE;
mdbVar = hashFindVal(mdbObj->varHash, "composite");
if (mdbVar == NULL)
{
warn("composite not found in object %s", mdbObj->obj);
continue;
}
// char *composite = mdbVar->val;
mdbVar = hashFindVal(mdbObj->varHash, "fileName");
if (mdbVar == NULL)
{
mdbObj->deleteThis = TRUE;
warn("fileName not found in object %s", mdbObj->obj);
continue;
}
char *fileName = mdbVar->val;
char buffer[10 * 1024];
struct hash *bamNames = hashNew(8);
struct slName *list = slNameListFromString(fileName, ','), *el;
for(el=list; el; el=el->next)
{
if (hashLookup(allNames, el->name))
{
warn("duplicate fileName entry: %s", el->name);
}
else
{
hashAdd(allNames, el->name, NULL);
}
if (endsWith(el->name,".bam"))
{
hashAdd(bamNames, el->name, NULL);
}
if (endsWith(el->name,".bam.bai"))
{
el->name[strlen(el->name)-4] = 0;
struct hashEl *hel = hashLookup(bamNames, el->name);
el->name[strlen(el->name)] = '.';
if (hel == NULL)
{
warn(".bam.bai without corresponding .bam: %s", el->name);
}
else
{
hel->val = (void *)1;
}
}
}
// see if we have to add any .bam.bai to the list
for(el=list; el; el=el->next)
{
if (endsWith(el->name,".bam"))
{
struct hashEl *hel = hashLookup(bamNames, el->name);
if (hel->val == NULL)
{ // we have to add a .bam.bai to the list
char *bambai = addSuffix(el->name, ".bai");
warn(".bam.bai not found for corresponding .bam in meta.fileName: %s", el->name);
slNameAddTail(&list, bambai);
if (hashLookup(allNames, bambai))
{
warn("duplicate fileName entry: %s", bambai);
}
else
hashAdd(allNames, bambai, NULL);
}
}
}
// make sure the files are there
for(el=list; el; el=el->next)
{
if (!startsWith(mdbObj->obj, el->name))
{
warn("fileName %s does not start with object name %s", el->name, mdbObj->obj);
}
//.........这里部分代码省略.........
开发者ID:davidhoover,项目名称:kent,代码行数:101,代码来源:metaCheck.c
示例14: doBigBedReplicate
void doBigBedReplicate(struct sqlConnection *conn, char *format, struct edwAssembly *assembly,
struct edwFile *elderEf, struct edwValidFile *elderVf,
struct edwFile *youngerEf, struct edwValidFile *youngerVf)
/* Do correlation analysis between elder and younger and save result to
* a new edwQaPairCorrelation record. Do this for a format where we have a bigBed file. */
{
/* If got both pairs, work is done already */
if (pairExists(conn, elderEf->id, youngerEf->id, "edwQaPairSampleOverlap")
&& pairExists(conn, elderEf->id, youngerEf->id, "edwQaPairCorrelation"))
return;
int numColIx = 0;
if (sameString(format, "narrowPeak") || sameString(format, "broadPeak"))
numColIx = 6; // signalVal
else
numColIx = 4; // score
numColIx -= 3; // Subtract off chrom/start/end
char *enrichedIn = elderVf->enrichedIn;
struct genomeRangeTree *targetGrt = NULL;
if (!isEmpty(enrichedIn) && !sameString(enrichedIn, "unknown"))
targetGrt = genomeRangeTreeForTarget(conn, assembly, enrichedIn);
/* Get open big bed files for both younger and older. */
char *elderPath = edwPathForFileId(conn, elderEf->id);
char *youngerPath = edwPathForFileId(conn, youngerEf->id);
struct bbiFile *elderBbi = bigBedFileOpen(elderPath);
struct bbiFile *youngerBbi = bigBedFileOpen(youngerPath);
/* Loop through a chromosome at a time adding to correlation, and at the end save result in r.*/
struct correlate *c = correlateNew(), *cInEnriched = correlateNew();
struct bbiChromInfo *chrom, *chromList = bbiChromList(elderBbi);
long long elderTotalSpan = 0, youngerTotalSpan = 0, overlapTotalSpan = 0;
for (chrom = chromList; chrom != NULL; chrom = chrom->next)
{
addBbCorrelations(chrom, targetGrt, elderBbi, youngerBbi, numColIx, c, cInEnriched,
&elderTotalSpan, &youngerTotalSpan, &overlapTotalSpan);
}
/* Make up correlation structure and save. */
if (!pairExists(conn, elderEf->id, youngerEf->id, "edwQaPairCorrelation"))
{
struct edwQaPairCorrelation *cor;
AllocVar(cor);
cor->elderFileId = elderVf->fileId;
cor->youngerFileId = youngerVf->fileId;
cor->pearsonOverall = correlateResult(c);
cor->pearsonInEnriched = correlateResult(cInEnriched);
edwQaPairCorrelationSaveToDb(conn, cor, "edwQaPairCorrelation", 128);
freez(&cor);
}
/* Also make up sample structure and save. */
if (!pairExists(conn, elderEf->id, youngerEf->id, "edwQaPairSampleOverlap"))
{
struct edwQaPairSampleOverlap *sam;
AllocVar(sam);
sam->elderFileId = elderVf->fileId;
sam->youngerFileId = youngerVf->fileId;
sam->elderSampleBases = elderTotalSpan;
sam->youngerSampleBases = youngerTotalSpan;
sam->sampleOverlapBases = overlapTotalSpan;
setSampleSampleEnrichment(sam, format, assembly, elderVf, youngerVf);
edwQaPairSampleOverlapSaveToDb(conn, sam, "edwQaPairSampleOverlap", 128);
freez(&sam);
}
genomeRangeTreeFree(&targetGrt);
correlateFree(&c);
bigBedFileClose(&youngerBbi);
bigBedFileClose(&elderBbi);
freez(&youngerPath);
freez(&elderPath);
}
开发者ID:elmargb,项目名称:kentUtils,代码行数:73,代码来源:edwMakeReplicateQa.c
示例15: bwtool_roll
void bwtool_roll(struct hash *options, char *favorites, char *regions, unsigned decimals, double fill,
enum wigOutType wot, char *command, char *size_s, char *bigfile, char *tmp_dir, char *outputfile)
/* bwtool_roll - main for the rolling-mean program */
/* this function is too long. it'd be nice to break it up some time. */
{
struct metaBig *mb = metaBigOpenWithTmpDir(bigfile, tmp_dir, regions);
int step = (int)sqlUnsigned((char *)hashOptionalVal(options, "step", "1"));
int max_na = (int)sqlSigned((char *)hashOptionalVal(options, "max-NA", "-1"));
char *min_mean_s = (char *)hashOptionalVal(options, "min-mean", "unused");
double min_mean = -DBL_MAX;
if (!sameString(min_mean_s,"unused"))
min_mean = sqlDouble(min_mean_s);
int size = sqlSigned(size_s);
if (max_na == -1)
max_na = size/2;
else if (max_na > size)
max_na = size - 1;
if (size < 1)
errAbort("size must be >= 1 for bwtool window");
FILE *out = (outputfile) ? mustOpen(outputfile, "w") : stdout;
struct bed *section;
boolean broken = TRUE; /* for headers */
enum roll_command com;
if (sameWord(command, "mean"))
com = roll_mean;
else if (sameWord(command, "total"))
com = roll_total;
else
errAbort("Pick a roll command: mean or total");
for (section = mb->sections; section != NULL; section = section->next)
{
if (size <= section->chromEnd - section->chromStart)
{
struct perBaseWig *pbw = perBaseWigLoadSingleContinue(mb, section->chrom, section->chromStart,
section->chromEnd, FALSE, fill);
int i, j;
int len = section->chromEnd - section->chromStart;
double total = 0;
int num_na = 0;
/* load data */
for (i = 0; i < size; i++)
add_to_tots(pbw->data[i], &num_na, &total);
i = 0;
do
{
int s = pbw->chromStart + i;
int e = pbw->chromStart + i + size;
int st = step;
double mean = total/(size - num_na);
/* the next two calculations center it */
s += size/2 - step/2;
e = s + step;
/* output */
if ((num_na <= max_na) && (mean >= min_mean))
{
double out_val;
if (com == roll_mean)
out_val = mean;
else
out_val = total;
if (wot == fixStepOut)
{
if (broken)
fprintf(out, "fixedStep chrom=%s start=%d step=%d span=%d\n", pbw->chrom, s+1, step, step);
fprintf(out, "%0.*f\n", decimals, out_val);
}
else if (wot == varStepOut)
{
if (broken)
fprintf(out, "variableStep chrom=%s span=%d\n", pbw->chrom, step);
fprintf(out, "%d\t%0.*f\n", s+1, decimals, out_val);
}
else
fprintf(out, "%s\t%d\t%d\t%0.*f\n", pbw->chrom, s, e, decimals, out_val);
broken = FALSE;
}
else
broken = TRUE;
/* move */
while (st > 0)
{
if (i + size <= pbw->len)
{
add_to_tots(pbw->data[i+size], &num_na, &total);
sub_from_tots(pbw->data[i], &num_na, &total);
}
else
break;
i++;
st--;
}
} while (i <= pbw->len - size);
perBaseWigFree(&pbw);
}
}
metaBigClose(&mb);
carefulClose(&out);
}
开发者ID:CRG-Barcelona,项目名称:bwtool,代码行数:98,代码来源:roll.c
示例16: dyStringNew
char *describeSubtrackMerge(char *linePrefix)
/* Return a multi-line string that describes the specified subtrack merge,
* with each line beginning with linePrefix. */
{
struct dyString *dy = dyStringNew(512);
struct trackDb *primary = subTdbFind(curTrack,curTable), *tdb = NULL;
dyStringAppend(dy, linePrefix);
dyStringPrintf(dy, "Subtrack merge, primary table = %s (%s)\n",
curTable, primary->longLabel);
dyStringAppend(dy, linePrefix);
dyStringPrintf(dy, "Subtrack merge operation: ");
if (isWiggle(database, curTable) || isBedGraph(curTable) || isBigWigTable(curTable))
{
char *op = cartString(cart, hgtaSubtrackMergeWigOp);
dyStringPrintf(dy, "%s of %s and selected subtracks:\n", op, curTable);
}
else
{
char *op = cartString(cart, hgtaSubtrackMergeOp);
if (sameString(op, "any"))
dyStringPrintf(dy, "All %s records that have any overlap with "
"any other selected subtrack:\n",
curTable);
else if (sameString(op, "none"))
dyStringPrintf(dy, "All %s records that have no overlap with "
"any other selected subtrack:\n",
curTable);
else if (sameString(op, "more"))
{
dyStringPrintf(dy, "All %s records that have at least %s ",
curTable,
cartString(cart, hgtaNextSubtrackMergeMoreThreshold));
dyStringPrintf(dy, " %% overlap with any other selected subtrack:\n");
}
else if (sameString(op, "less"))
{
dyStringPrintf(dy, "All %s records that have at most %s ",
curTable,
cartString(cart, hgtaNextSubtrackMergeLessThreshold));
dyStringPrintf(dy, " %% overlap with any other selected subtrack:\n");
}
else if (sameString(op, "cat"))
dyStringPrintf(dy, "All %s records, as well as all records from "
"all other sel
|
请发表评论