void RevComplementInPlace(string& seq) { char c; int forward_idx = 0; int backward_idx = seq.size()-1; while (forward_idx < backward_idx) { c = seq[forward_idx]; seq[forward_idx] = NucComplement(seq[backward_idx]); seq[backward_idx] = NucComplement(c); forward_idx++; backward_idx--; } if (forward_idx == backward_idx) seq[forward_idx] = NucComplement(seq[forward_idx]); }
string Realigner::ComplementSequence(string seq, bool reverse) const { if (reverse) { char c; int forward_idx = 0; int backward_idx = seq.size()-1; while (forward_idx < backward_idx) { c = seq[forward_idx]; seq[forward_idx] = NucComplement(seq[backward_idx]); seq[backward_idx] = NucComplement(c); forward_idx++; backward_idx--; } if (forward_idx == backward_idx) seq[forward_idx] = NucComplement(seq[forward_idx]); } else { for (unsigned int i=0; i<seq.size(); i++) seq[i] = NucComplement(seq[i]); } return seq; }
void ReverseComplement(string &seqContext, string &reverse_complement) { reverse_complement = seqContext; for (unsigned i=0;i<seqContext.length(); i++) reverse_complement[reverse_complement.length()-1-i] = NucComplement(seqContext[i]); }
void reverseComplement(string s, char * x) { x[s.length()] = '\0'; for (int i=s.length()-1;i>=0;i--) x[s.length()-1-i] = NucComplement(s[i]); }