The SeqAn tutorial for Pattern Matching упоминает, что StringSet
может служить как стогами сена, так и иглами. При попытке использовать StringSet
как стог следующим образом,Онлайн-поиск по шаблону StringSet
StringSet<Dna5String> seqs;
/* do stuff to load sequences into seqs */
Finder<StringSet<Dna5String> > finder(seqs);
Pattern<Dna5String, Simple> pattern(Dna5String("GAATTC"));
if (find(finder, pattern))
{
std::cout << '[' << beginPosition(finder) << ',' << endPosition(finder)
<< ")\t" << infix(finder) << std::endl;
} else
{
std::cout << "No match!";
}
Я получаю ошибку:
error: use of overloaded operator '==' is ambiguous (with operand types 'const const seqan::String, seqan::Alloc >' and 'const seqan::SimpleType')
Кто-нибудь есть идеи о том, как это должно быть сделано правильно?
Использование одного Dna5String
в Finder
отлично работает. В учебнике показано, как выполнить поиск (т. Е. С индексированием), но это не то, что мне хотелось бы. Я бы предпочел не вручную перебирать по StringSet
, если инструменты Finder-Pattern в SeqAn уже обрабатывают его.
Как уже было сказано, я понимаю, что это вариант, но в документации библиотеки звучит так, как будто вам не нужно вручную выполнять итерацию. – merv
Я не знал, я прочитаю документацию –
@merv Я добавляю альтернативное решение .... Мне пришлось удалить 'Simple' из декларации' Pattern' –