Esempio n. 1
0
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]);
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
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]);
}
Esempio n. 4
0
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]);
}