int main() { // FRAGMENT(example) // The horizontal and vertical sequence (database and query). seqan::CharString seqH = "The quick BROWN fox jumped again!"; seqan::CharString seqV = "thick BROWN boxes of brownies!"; // ^^^ // Create seed and print the seeed sequence. seqan::Seed<seqan::Simple> seed(11, 7, 14, 10); // Perform match extension. seqan::Score<int, seqan::Simple> scoringScheme(1, -1, -1); extendSeed(seed, seqH, seqV, seqan::EXTEND_BOTH, scoringScheme, 3, seqan::UnGappedXDrop()); // Perform a banded alignment. seqan::Align<seqan::CharString> align; resize(rows(align), 2); assignSource(row(align, 0), infix(seqH, beginPositionH(seed), endPositionH(seed))); assignSource(row(align, 1), infix(seqV, beginPositionV(seed), endPositionV(seed))); // TODO(holtgrew): Use seed diagonals as bands. globalAlignment(align, scoringScheme); std::cerr << "Resulting alignment\n" << align << "\n"; // FRAGMENT(footer) return 0; }
int main() { // Create an alignment between subject and query. seqan::Peptide subject = "MGLSDGEWQLVLNVWGKVEADIPGHGQEVLIRLFKGHPETLEKFDKFKHLKSEDEMKASE" "DLKKHGATVLTALGGILKKKGHHEAEIKPLAQSHATKHKIPVKYLEFISECIIQVLQSKH" "PGDFGADAQGAMNKALELFRKDMASNYK"; seqan::Peptide query = "MSLTKTERTIIVSMWAKISTQADTIGTETLERLFLSHPQTKTYFPHFDLHPGSA" "QLRAHGSKVVAAVGDAVKSIDDIGGALSKLSELHAYILRVDPVNFKLLSHCLLVTLAARF" "PADFTAEAHAAWDKFLSVTEKYR"; seqan::Align<seqan::Peptide> align; resize(rows(align), 2); setSource(row(align, 0), subject); setSource(row(align, 1), query); seqan::Blosum62 scoringScheme(-1, -12); globalAlignment(align, scoringScheme); // Compute the statistics of the alignment. seqan::AlignmentStats stats; int scoreVal = computeAlignmentStats(stats, align, scoringScheme); SEQAN_ASSERT_EQ(scoreVal, stats.alignmentScore); std::cout << align << "gap opens: " << stats.numGapOpens << "\n" << "gap extensions: " << stats.numGapExtensions << "\n" << "num matches: " << stats.numMatches << "\n" << "num mismatches: " << stats.numMismatches << "\n" << "num positive scores: " << stats.numPositiveScores << "\n" << "num negative scores: " << stats.numNegativeScores << "\n\n\n"; // Clip alignment rows and compute score of this view. setClippedEndPosition(row(align, 0), 100); setClippedEndPosition(row(align, 1), 100); setClippedBeginPosition(row(align, 0), 5); setClippedBeginPosition(row(align, 1), 5); scoreVal = computeAlignmentStats(stats, align, scoringScheme); SEQAN_ASSERT_EQ(scoreVal, stats.alignmentScore); std::cout << "Clipping alignment to (5, 100)\n" << align << "gap opens: " << stats.numGapOpens << "\n" << "gap extensions: " << stats.numGapExtensions << "\n" << "num matches: " << stats.numMatches << "\n" << "num mismatches: " << stats.numMismatches << "\n" << "num positive scores: " << stats.numPositiveScores << "\n" << "num negative scores: " << stats.numNegativeScores << "\n"; return 0; }
PairwiseAlignment _pairwise_global(const std::string& ref, const std::string& qry, const int match_score, const int mismatch_score, const int gap_open, const int gap_extend) { typedef String<char> TSequence; typedef Align<TSequence,ArrayGaps> TAlign; typedef Row<TAlign>::Type TRow; typedef Iterator<TRow>::Type TRowIterator; TAlign align; resize(rows(align), 2); assignSource(row(align, 0), ref); assignSource(row(align, 1), qry); Score<int,Simple> score_scheme(match_score, mismatch_score, gap_extend, gap_open); AlignConfig<false,QGAP,false,QGAP> a_config; PairwiseAlignment result; result.score = globalAlignment(align, score_scheme, a_config); result.aligned_ref = aligned_string(row(align, 0)); result.aligned_qry = aligned_string(row(align, 1)); return result; }