int main() { typedef seqan::Seed<seqan::Simple> TSeed; typedef seqan::SeedSet<seqan::Simple> TSeedSet; seqan::Dna5String seqH; seqan::Dna5String seqV; seqan::Score<int, seqan::Simple> scoringScheme(1, -1, -1); seqan::String<TSeed> seeds; appendValue(seeds, TSeed(0, 0, 2)); appendValue(seeds, TSeed(3, 5, 2)); appendValue(seeds, TSeed(4, 2, 3)); appendValue(seeds, TSeed(9, 9, 2)); TSeedSet seedSet; for (unsigned i = 0; i < length(seeds); ++i) { if (!addSeed(seedSet, seeds[i], 2, 2, scoringScheme, seqH, seqV, seqan::Chaos())) addSeed(seedSet, seeds[i], seqan::Single()); } std::cout << "Resulting seeds.\n"; typedef seqan::Iterator<TSeedSet>::Type TIter; for (TIter it = begin(seedSet, seqan::Standard()); it != end(seedSet, seqan::Standard()); ++it) std::cout << "(" << beginPositionH(*it) << ", " << endPositionH(*it) << ", " << beginPositionV(*it) << ", " << endPositionV(*it) << ", " << lowerDiagonal(*it) << ", " << upperDiagonal(*it) << ")\n"; return 0; }
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; }
size_t GetSeedNumBases(const TSeed seed) { return endPositionV(seed) - beginPositionV(seed); }
bool operator()(const TSeed& seed1, const TSeed& seed2) { return beginPositionV(seed1) < beginPositionV(seed2); }