Examples — suffix-tree 0.1.1 documentation

# Examples

Install:

    $ pip install suffix-tree

Import the library:

    >>> from suffix_tree import Tree

Initialize a tree and then add sequences of symbols:

    >>> tree = Tree()
    >>> tree.add(1, "xabxac")
    >>> tree.add(2, "awyawxawxz")

Or initialize from a dictionary of sequences in one step:

    >>> tree = Tree({1: "xabxac", 2: "awyawxawxz"})

Query if a sequence exists in the tree:

    >>> tree = Tree({"A": "xabxac", "B": "awyawxawxz"})
    >>> tree.find("abx")
    True
    >>> tree.find("awx")
    True
    >>> tree.find("abc")
    False

Query if a sequence exists in a sequence:

    >>> tree = Tree({"A": "xabxac", "B": "awyawxawxz"})
    >>> tree.find_id("A", "abx")
    True
    >>> tree.find_id("B", "abx")
    False
    >>> tree.find_id("B", "awx")
    True

Enumerate all hits:

    >>> tree = Tree({"A": "xabxac", "B": "awyawxawxz"})
    >>> for id_, path in tree.find_all("xa"):
    ...     print(id_, ":", str(path))
    ...
    A : x a b x a c $
    A : x a c $
    B : x a w x z $
    >>> tree.find_all("abc")
    []

Sequences can contain all kinds of hashable objects:

    >>> tree = Tree()
    >>> b = True
    >>> i = 10
    >>> s = "hello, world"
    >>> t = (1, 2, 3)
    >>> f = frozenset(t)
    >>> tree.add(1, [b, i, f, s, t])
    >>> tree.add(2, [t, s, f, i, b])
    >>> tree.find([b, i, f, s, t])
    True
    >>> tree.find([s, f, i])
    True
    >>> tree.find([i, s])
    False

Find common substrings:

    >>> tree = Tree(
    ...     {
    ...         "A": "sandollar",
    ...         "B": "sandlot",
    ...         "C": "handler",
    ...         "D": "grand",
    ...         "E": "pantry",
    ...     }
    ... )
    >>> for k, length, path in tree.common_substrings():
    ...     print(k, length, path)
    ...
    2 4 s a n d
    3 3 a n d
    4 3 a n d
    5 2 a n

Find maximal repeats:

    >>> tree = Tree({"A": "xabxac", "B": "awyawxawxz"})
    >>> for C, path in sorted(tree.maximal_repeats()):
    ...     print(C, path)
    ...
    1 a w
    1 a w x
    2 a
    2 x
    2 x a