Source code for pyFTS.common.tree
"""
Tree data structure
"""
from pyFTS import *
from functools import reduce
import numpy as np
[docs]class FLRGTreeNode:
"""
Tree node for
"""
def __init__(self, value):
self.isRoot = False
self.children = []
self.value = value
[docs] def appendChild(self, child):
self.children.append(child)
[docs] def getChildren(self):
for child in self.children:
yield child
[docs] def paths(self, acc=[]):
if len(self.children) == 0:
yield [self.value] + acc
for child in self.children:
for leaf_path in child.paths([self.value] + acc): # these two
yield leaf_path
[docs] def getStr(self, k):
if self.isRoot:
tmp = str(self.value)
else:
tmp = "\\" + ("-" * k) + str(self.value)
for child in self.getChildren():
tmp = tmp + "\n" + child.getStr(k + 1)
return tmp
def __str__(self):
return self.getStr(0)
[docs]class FLRGTree:
"""Represents a FLRG set with a tree structure"""
def __init__(self):
self.root = FLRGTreeNode(None)
[docs]def flat(dados):
for inst in dados:
if isinstance(inst, (list, tuple)):
x = flat(inst)
for k in x:
yield k
else:
yield inst
[docs]def build_tree_without_order(node, lags, level):
if level not in lags:
return
for s in lags[level]:
node.appendChild(FLRGTreeNode(s))
for child in node.getChildren():
build_tree_without_order(child, lags, level + 1)