2f48d68cce72bd8ddfb21a11da72d244b7c8c479 markd Sun Oct 3 08:31:41 2010 -0700 added options to specify how to obtained qName and tName. Output query and target defs in score file diff --git src/hg/blastToPsl/pslBuild.c src/hg/blastToPsl/pslBuild.c index e19f2d2..b200e91 100644 --- src/hg/blastToPsl/pslBuild.c +++ src/hg/blastToPsl/pslBuild.c @@ -3,9 +3,6 @@ #include "pslBuild.h" #include "psl.h" -/* score file header */ -char *pslBuildScoreHdr = "#strand\tqName\tqStart\tqEnd\ttName\ttStart\ttEnd\tbitScore\teVal\n"; - unsigned pslBuildGetBlastAlgo(char *program) /* determine blast algorithm flags */ { @@ -293,10 +290,35 @@ return psl; } -void pslBuildWriteScores(FILE* scoreFh, struct psl *psl, double bitScore, double eValue) -/* write scores for a PSL */ +FILE *pslBuildScoresOpen(char *scoreFile, bool inclDefs) +/* open score file and write headers */ +{ +FILE *fh = mustOpen(scoreFile, "w"); +fputs("#strand\tqName\tqStart\tqEnd\ttName\ttStart\ttEnd\tbitScore\teVal", fh); +if (inclDefs) + fputs("\tqDef\ttDef", fh); +fputc('\n', fh); +return fh; +} + +static void writeBasicScores(FILE* scoreFh, struct psl *psl, double bitScore, double eValue) +/* write first part of row */ { -fprintf(scoreFh, "%s\t%s\t%d\t%d\t%s\t%d\t%d\t%g\t%g\n", psl->strand, +fprintf(scoreFh, "%s\t%s\t%d\t%d\t%s\t%d\t%d\t%g\t%g", psl->strand, psl->qName, psl->qStart, psl->qEnd, psl->tName, psl->tStart, psl->tEnd, bitScore, eValue); } + +void pslBuildScoresWrite(FILE* scoreFh, struct psl *psl, double bitScore, double eValue) +/* write scores for a PSL */ +{ +writeBasicScores(scoreFh, psl, bitScore, eValue); +fputc('\n', scoreFh); +} + +void pslBuildScoresWriteWithDefs(FILE* scoreFh, struct psl *psl, double bitScore, double eValue, char *qDef, char *tDef) +/* write scores and definitions for a PSL */ +{ +writeBasicScores(scoreFh, psl, bitScore, eValue); +fprintf(scoreFh, "\t%s\t%s\n", qDef, tDef); +}