X-Git-Url: https://git.donarmstrong.com/?p=rsem.git;a=blobdiff_plain;f=preRef.cpp;h=e2f03269ba44d2ff9e0cb5601c3b4c6d1a3d9435;hp=65e034b8c17e44e0e7716ca5f387dad9443acbf5;hb=7cd7abcad92a44bbd5d8d1b2bb3a871cd479c0bf;hpb=a95154919f950f86de9104b2b9dcf1f0c7e83387 diff --git a/preRef.cpp b/preRef.cpp index 65e034b..e2f0326 100644 --- a/preRef.cpp +++ b/preRef.cpp @@ -23,64 +23,66 @@ PolyARules rules; Refs refs; ofstream fout; -char refF[STRLEN], alignerFastaF[STRLEN]; +char refF[STRLEN], idxF[STRLEN], n2g_idxF[STRLEN]; int polyAChoice, polyALen; char exceptionF[STRLEN]; -bool ntog; // true , change N into G; false do not change. Default is true. bool quiet; // verbose = !quiet; // always generate references for aligners, default convert all N into G int main(int argc, char* argv[]) { - if (argc < 4) { - printf("USAGE : rsem-preref refFastaF polyAChoice refName [-l polyALen] [-f exceptionF] [--no-ntog] [-q]\n\n"); - printf(" refFastaF: a FASTA format file contains all reference transcripts\n"); - printf(" polyAChoice: choice for polyA tail padding.It is a number from {0,1,2}\n"); - printf(" 0: pad polyA tail\n"); - printf(" 1: do not pad polyA tail at all\n"); - printf(" 2: pad polyA tail for all references but those in exceptionF\n"); - printf(" -l: polyALen: specify the length of polyA tail you want to pad. Default is 100\n"); - printf(" -f: exceptionF: file contains a list of exception reference ids. IDs starts from 1. Must set if polyAChoice = 2\n"); - printf(" --no-ntog: do not convert N in references into G\n"); - printf(" -q: quiet\n"); - exit(-1); - } - - - polyAChoice = atoi(argv[2]); - - polyALen = 125; - ntog = true; - quiet = false; - memset(exceptionF, 0, sizeof(exceptionF)); - - for (int i = 4; i < argc; i++) { - if (!strcmp(argv[i], "-l")) { polyALen = atoi(argv[i + 1]); } - if (!strcmp(argv[i], "-f")) { strcpy(exceptionF, argv[i + 1]); } - if (!strcmp(argv[i], "--no-ntog")) { ntog = false; } - if (!strcmp(argv[i], "-q")) { quiet = true; } - } - - verbose = !quiet; - - //make references - rules = PolyARules(polyAChoice, polyALen, exceptionF); - refs.makeRefs(argv[1], refp, rules); - M = refs.getM(); - - //save references - sprintf(refF, "%s.seq", argv[3]); - refs.saveRefs(refF); - - sprintf(alignerFastaF, "%s.idx.fa", argv[3]); - fout.open(alignerFastaF); - for (int i = 1; i <= M; i++) { - fout<<">"<"<< refs.getRef(i).getName()<< endl<< refs.getRef(i).getSeq()<< endl; + } + fout.close(); + if (verbose) printf("%s is generated!\n", idxF); + + sprintf(n2g_idxF, "%s.n2g.idx.fa", argv[3]); + fout.open(n2g_idxF); + for (int i = 1; i <= M; i++) { + fout<< ">"<< refs.getRef(i).getName()<< endl<< aligner_refp.convert(refs.getRef(i).getSeq())<< endl; + } + fout.close(); + if (verbose) printf("%s is generated!\n", n2g_idxF); + + return 0; }