Hello, as the subject denotes I'm currently trying to build a SearchIndex based on an external StringSet using the actual trunk version of seqan. I started with the "Index Finder StringSet" example program. Then I've altered the String type to the external specialisation which results in the following term for the StringSet: StringSet < String<String<char>, External<> > > mySet; Afterwards I've resized the set and appended values to each entry of the set using the append function. Building the index and a finder at least compiles as well, but trying to search the finder using a pattern does not work, or more precisely, the compilation fails. I've attached my sourcecode. I'm getting confused with the compiler error message, so I'm asking if someone is kind and takes a look at it to help me :-) Is there a major flaw in my thought process? Or is it possible to do what I'm trying? Another (related) topic: To my knowledge the default index type is the enhanced suffix array. I've read that the build process can use external memory. Is this done by default or do I need to provide an extra specialisation to achieve this? The resulting suffix array lies in main memory, right? Thank you very much for your help and best regards, Tilo
#include <iostream> #include <seqan/index.h> using namespace seqan; int main() { StringSet < String<String<char>, External<> > > mySet; resize(mySet, 3); append(mySet[0], "aggtttccggNNNtagcgcttaa"); append(mySet[1], "attgctgcNaatgtgctaa"); append(mySet[2], "atggctgcNaccatgtgctatta"); Index< StringSet < String<String<char>, External<> > > > myIndex(mySet); Finder< Index< StringSet < String<String<char>, External<> > > > > myFinder(myIndex); Pattern< String<String<char>, External<> > > pat = "agg"; // or can I simply use the following as usual? // Pattern< String<char> > pat = "agg"; std::cout << "hit at "; while (find(myFinder, pat)) std::cout << position(myFinder) << " "; std::cout << ::std::endl; return 0; }