Hi! Here is a simple code extract: vector<SearchResult> StringUtils::findDnaPattern(const CharString& query, const CharString &source, int minScore) { using namespace seqan; vector<SearchResult> results; // Question:Why do we have to copy to be able perform search!? CharString sourceCopy(source); CharString queryCopy(query); Finder<CharString> directFinder(sourceCopy); Pattern<CharString, DPSearch<SimpleScore> > pattern(queryCopy, SimpleScore(0, -2, -1)); while (seqan::find(directFinder, pattern, minScore)) { while (seqan::findBegin(directFinder, pattern, getScore(pattern))) { // Question: how do I get the score of the alignment? SearchResult r(beginPosition(directFinder), true); results.push_back(r); } } seqan::reverseComplement(queryCopy); Pattern<CharString, DPSearch<SimpleScore> > revPattern(queryCopy, SimpleScore(0, -2, -1)); Finder<CharString> revFinder(sourceCopy); while (seqan::find(revFinder, revPattern, minScore)) { while (seqan::findBegin(revFinder, revPattern, getScore(revPattern))) { SearchResult r(beginPosition(revFinder), false); results.push_back(r); } } return results; } Questions are the following: 1) How is it possible to instance Pattern and Finder objects using const references? Code doesn't compile if I am not copying the sequences. 2) How can I get the score of the alignment (while iterating over pattern results)? 3) Is there an easier way to search for pattern in reverse complement sequence? Env: Ubuntu 12.04, gcc 4.7, seqan rev 13572 Thanks in advance, Konstantin