02336754147822f5aa61ba13277123b2cc629001 markd Thu May 20 08:38:55 2021 -0700 Moved pslMap, pslMapPostChain, pslRc, pslSwap to src/utils, as they do not have hg/lib dependencies. diff --git src/utils/pslSwap/pslSwap.c src/utils/pslSwap/pslSwap.c new file mode 100644 index 0000000..a759376 --- /dev/null +++ src/utils/pslSwap/pslSwap.c @@ -0,0 +1,57 @@ +/* pslSwap - reverse target and query in psls */ + +#include "common.h" +#include "linefile.h" +#include "dnautil.h" +#include "options.h" +#include "psl.h" + +/* command line options */ +static struct optionSpec optionSpecs[] = { + {"noRc", OPTION_BOOLEAN}, + {NULL, 0} +}; +boolean gNoRc = FALSE; + +void usage() +/* usage message and abort */ +{ +errAbort("pslSwap - swap target and query in psls\n" + "usage:\n" + " pslSwap [options] inPsl outPsl\n" + "\n" + "Options:\n" + " -noRc - don't reverse complement untranslated alignments to\n" + " keep target positive strand. This will make the target strand\n" + " explict.\n"); +} + +void pslSwapFile(char *inPslFile, char *outPslFile) +/* reverse target and query in a psl file */ +{ +struct lineFile *inLf = pslFileOpen(inPslFile); +FILE *outFh = mustOpen(outPslFile, "w"); +struct psl *psl; + +while ((psl = pslNext(inLf)) != NULL) + { + pslSwap(psl, gNoRc); + pslTabOut(psl, outFh); + pslFree(&psl); + } + +carefulClose(&outFh); +lineFileClose(&inLf); +} + +int main(int argc, char** argv) +/* entry */ +{ +optionInit(&argc, argv, optionSpecs); +if (argc != 3) + usage(); +gNoRc = optionExists("noRc"); +dnaUtilOpen(); +pslSwapFile(argv[1], argv[2]); +return 0; +}