void nothingness () { int * _i = NULL; int * i = nullptr; int _j = NULL; //int j = nullptr; // ERROR!!! if (ambig(0)) { } // ambig(int) if (ambig(NULL)) { } // ambig(int) when NULL=0 // ambiguous when NULL=0L if (ambig(nullptr)) { } // ambig(char*) }
/* int checkRevEnd() * Checks the seq for a match of the reverse primer * at the 3' end. */ int checkRevEnd(char* seq, char* rev, int misAllow, int revSt, int revEnd) { int primEnd = strlen(rev) - 1; int seqEnd = strlen(seq) - 1; // allow primer to match starting at diff. positions for (int off = revSt; off < revEnd; off++) { int mis = misAllow; int j; for (j = 0; j < primEnd + 1; j++) { int seqPos = seqEnd - j - off; int pos = primEnd - j; if (j + off < 0) continue; else if (seqPos < 0 || (rev[pos] != seq[seqPos] && (rev[pos] == 'A' || rev[pos] == 'C' || rev[pos] == 'G' || rev[pos] == 'T' || ambig(rev[pos], seq[seqPos])) && --mis < 0)) break; } if (j == primEnd + 1) { return seqEnd - j - off + 1; // last base of primer } } return 0; }
/* Primer* findPrim(char*) * Finds a primer match to the given sequence. */ Primer* findPrim(char* seq, int misAllow, int fwdSt, int fwdEnd, int* st, int* f) { for (Primer* p = primo; p != NULL; p = p->next) { for (int i = 0; i < 2; i++) { char* prim = (i ? p->rrc : p->fwd); // allow primer to match starting at diff. positions for (int off = fwdSt; off < fwdEnd; off++) { int mis = misAllow; int j; for (j = 0; prim[j] != '\0'; j++) if (j + off < 0) continue; else if (seq[j+off] == '\0' || (prim[j] != seq[j+off] && (prim[j] == 'A' || prim[j] == 'C' || prim[j] == 'G' || prim[j] == 'T' || ambig(prim[j], seq[j+off])) && --mis < 0)) break; if (prim[j] == '\0') { if (seq[j+off] != '\0') { *st = j+off; *f = i; return p; } else return NULL; } } } } return NULL; }
/* -------------------------------------------------------------------- */ void tutorial(char *filename) { int i; char temp[14]; char oldverbose; outFlag = OUTOK; setio(whichIO, echo, outFlag); if (!expert) mPrintf("\n <3J0>ump <3N0>ext <3P0>ause <3S0>top\n"); /* doCR(); */ if (changedir(cfg.helppath) == -1 ) return; /* no bad files */ if (checkfilename(filename, 0) == ERROR) { mPrintf(" No helpfile %s", filename); changedir(cfg.homepath); return; } if (ambig(filename)) { /* fill our directory array according to filename */ oldverbose = verbose; verbose = FALSE; filldirectory(filename); verbose = oldverbose; /* print out all the files */ for (i = 0; filedir[i].entry[0] && ( dumpf(filedir[i].entry) != ERROR) ; i++); if ( !i) mPrintf(" No helpfile %s", filename); /* free file directory structure */ if(filedir != NULL) _ffree((void *)filedir); } else { strcpy(temp, filename); temp[strlen(temp)-1] = '@'; if (filexists(temp) && *term.bold) dump(temp); else dumpf(filename); } /* go to our home-path */ changedir(cfg.homepath); }
/* int checkRevInt() * Checks the seq for a match of the reverse primer * internally. */ int checkRevInt(char* seq, char* rev, int st, int misAllow, int len) { int last = strlen(seq) - len + 1; for (int i = st; i < last; i++) { int mis = misAllow; int j; for (j = 0; j < len; j++) if (rev[j] != seq[i + j] && (rev[j] == 'A' || rev[j] == 'C' || rev[j] == 'G' || rev[j] == 'T' || ambig(rev[j], seq[i + j])) && --mis < 0) break; if (j == len) return i; } return 0; }
/* int checkRevLen() * Checks the seq for a match of the reverse primer * based on the expected amplicon length. */ int checkRevLen(char* seq, char* rev, int st, int bedSt, int bedEnd) { // check only the 3' fragment, do not allow mismatches // allow primer to match starting at diff. positions int len = strlen(seq); for (int off = bedSt; off < bedEnd; off++) { if (st+off >= len) break; int j; for (j = 0; rev[j] != '\0' && seq[st+j+off] != '\0'; j++) if (rev[j] != seq[st+j+off] && (rev[j] == 'A' || rev[j] == 'C' || rev[j] == 'G' || rev[j] == 'T' || ambig(rev[j], seq[st+j+off]))) break; if (rev[j] == '\0' || seq[st+j+off] == '\0') return st+off; } return 0; }