From c9c44be0d1b471e2f54af8f44992b644e0ab286b Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Thu, 9 May 2019 16:46:24 +0200 Subject: [PATCH] Feat(random): Start random tree generation --- mapytex/calculus/core/random/__init__.py | 19 +++++++++++-------- mapytex/calculus/core/random/leaf.py | 4 +++- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/mapytex/calculus/core/random/__init__.py b/mapytex/calculus/core/random/__init__.py index d550a66..0c2f37f 100644 --- a/mapytex/calculus/core/random/__init__.py +++ b/mapytex/calculus/core/random/__init__.py @@ -7,7 +7,7 @@ # Distributed under terms of the MIT license. """ -Tools to extract random leafs, random variables, generate random values and +Tools to extract random nodes, random variables, generate random values and fill new trees Flow @@ -15,9 +15,9 @@ Flow Tree with RdLeaf | -| Extract rdLeaf +| Extract nodes | -List of leafs to generate +List of nodes to generate | | extract_rv | @@ -27,9 +27,9 @@ List random variables to generate | Dictionnary of generated random variables | -| Compute leafs +| Compute nodes | -Dictionnary of computed leafs +Dictionnary of computed nodes | | Replace | @@ -45,12 +45,11 @@ Tree with RdLeaf replaced by generated values > {a*k} >>> extract_rdleaf(rd_t) ['a', 'a*k'] - - """ from .leaf import RdLeaf + def extract_rdleaf(tree): """ Extract rdLeaf in a Tree @@ -73,6 +72,7 @@ def extract_rdleaf(tree): rd_leafs.append(leaf.name) return rd_leafs + def extract_rv(leafs): """ Extract the set of random values from the leaf list @@ -91,6 +91,7 @@ def extract_rv(leafs): rd_values.add(c) return rd_values + def compute_leafs(leafs, generated_values): """ Compute leafs from generated random values @@ -106,6 +107,7 @@ def compute_leafs(leafs, generated_values): """ return {leaf: eval(leaf, generated_values) for leaf in leafs} + def replace_rdleaf(tree, computed_leafs): """ Replace RdLeaf by the corresponding computed value @@ -117,10 +119,11 @@ def replace_rdleaf(tree, computed_leafs): > 2 > 6 """ + def replace(leaf): try: return leaf.replace(computed_leafs) except AttributeError: return leaf - return tree.map_on_leaf(replace) + return tree.map_on_leaf(replace) diff --git a/mapytex/calculus/core/random/leaf.py b/mapytex/calculus/core/random/leaf.py index 481cfc8..fdf0815 100644 --- a/mapytex/calculus/core/random/leaf.py +++ b/mapytex/calculus/core/random/leaf.py @@ -10,10 +10,12 @@ """ -class RdLeaf(): + +class RdLeaf: """ Random leaf """ + def __init__(self, name): self._name = name self.rdleaf = True