X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=suffixtree.hpp;fp=suffixtree.hpp;h=0000000000000000000000000000000000000000;hb=4a877efa127e56e81a21f53cfdbbfd3bfbe8c4ff;hp=d2b69e42325777d508a23000b0bc0924e0cc34f9;hpb=a6cf29fa4dac0909c7582cb1094151d34093ee76;p=mothur.git diff --git a/suffixtree.hpp b/suffixtree.hpp deleted file mode 100644 index d2b69e4..0000000 --- a/suffixtree.hpp +++ /dev/null @@ -1,68 +0,0 @@ -#ifndef SUFFIXTREE_H -#define SUFFIXTREE_H - -/* - * suffixtree.h - * - * - * Created by Pat Schloss on 12/15/08. - * Copyright 2008 Patrick D. Schloss. All rights reserved. - * - * This is my half-assed attempt to implement a suffix tree. This is a cobbled together algorithm using materials that - * I found at http://marknelson.us/1996/08/01/suffix-trees/ and: - * - * Ukkonen E. (1995). On-line construction of suffix trees. Algorithmica 14 (3): 249--260 - * Gusfield, Dan (1999). Algorithms on Strings, Trees and Sequences: Computer Science and Computational Biology. - * USA: Cambridge University Press - * - * The Ukkonen paper is the seminal paper describing the on-line method of constructing a suffix tree. - * - * I have chosen to store the nodes of the tree as a vector of pointers to SuffixNode objects. The root is stored at - * nodeVector[0]. Each tree also stores the sequence name and the string that corresponds to the actual sequence. - * Finally, this class provides a way of counting the number of suffixes that are needed in one tree to generate a new - * sequence (countSuffixes). This method is used to determine similarity between sequences and was inspired by the - * article and Perl source code provided at http://www.ddj.com/web-development/184416093. - * - */ - -#include "mothur.h" - -class SuffixNode; - -//******************************************************************************************************************** - -class SuffixTree { - -public: - SuffixTree(); - ~SuffixTree(); - - void loadSequence(Sequence); - string getSeqName(); - void print(); - int countSuffixes(string, int&); - int countSuffixes(string); - -private: - void addPrefix(int); - void canonize(); - int split(int, int); - void makeSuffixLink(int&, int); - bool isExplicit(){ return activeStartPosition > activeEndPosition; } - - int activeStartPosition; - int activeEndPosition; - - vector nodeVector; - int root; - int activeNode; - int nodeCounter; - string seqName; - string sequence; - MothurOut* m; - -}; - -//******************************************************************************************************************** - -#endif