Hi Konstantin (? or Klaus or Mark?)You might want to reconsider whether you want to use the implementation SeqAn. Currently, the HMM specialization of the class Graph assumes that the number of states is fixed at compile time and changes to this would require major changes in the code and any code that uses it.
If you want to use this, however, you can simply define the alphabet as a new Simple Type (analogue to TraceBack in module graph_align, for example):
struct _MyType;typedef SimpleType<unsigned char, _MyType> MyType; // use unsigned short for > 255 values
For this type, you then at least have to specialize the ValueSize<> and BitsPerValue Metafunctions:
template <> struct ValueSize<MyType> { enum { VALUE = 128 }; };template <> struct BitsPerValue<MyType> { enum { VALUE = 7 }; }; // must be ceil(log(value size))
Then, try to parametrize the HMM graph class with this alphabet and add any missing functions, metafunctions and operators for your new alphabet. However, deriving your new type from SimpleType, should automagically use the code for SimpleType that the DNA and Amino Acid alphabets use, too.
Cheers, Manuel Am 05.09.2010 um 22:43 schrieb Klaus Klapperon:
Hello again,I want to create a hidden markov model with an alphabet of (at least) 128 values (it has nothing to do with bioinformatics). I started with the hmm demo (graph_hmm.cpp). But how can I define this new alphabet type?Viele Grüße, Konstantin --GMX DSL SOMMER-SPECIAL: Surf & Phone Flat 16.000 für nur 19,99 Euro/ mtl.!*http://portal.gmx.net/de/go/dsl _______________________________________________ seqan-dev mailing list seqan-dev@lists.fu-berlin.de https://lists.fu-berlin.de/listinfo/seqan-dev