Esempio n. 1
0
def compute_radius(g, v, last_radius):
    all_r2 = {}
    for vid in post_order(g, v):
        r2 = max(sum([all_r2[c] for c in g.children_iter(vid)]), last_radius)
        all_r2[vid] = r2
    for k, v in all_r2.iteritems():
        all_r2[k] = sqrt(v)
    return all_r2
Esempio n. 2
0
def compute_radius(g, v, last_radius):
    all_r2 = {}
    for vid in post_order(g, v):
        r2 = max(sum([all_r2[c] for c in g.children_iter(vid)]), last_radius)
        all_r2[vid] = r2
    for k, v in all_r2.iteritems():
        all_r2[k] = sqrt(v)
    return all_r2
Esempio n. 3
0
def compute_axes(g, v, fixed_points):
    marked = {}
    axes = {}
    for vid in post_order(g, v):
        if vid in marked:
            continue
        _axe = list(simple_axe(g, vid, marked, fixed_points))
        _axe.reverse()
        axes.setdefault(g.order(_axe[0]), []).append(_axe)
    return axes
Esempio n. 4
0
def compute_axes(g, v, fixed_points):
    marked = {}
    axes = {}
    for vid in post_order(g,v):
        if vid in marked:
            continue
        _axe = list(simple_axe(g,vid, marked, fixed_points))
        _axe.reverse()
        axes.setdefault(g.order(_axe[0]),[]).append(_axe)
    return axes
Esempio n. 5
0
def max_heigth(g, scale=None):
    import openalea.mtg.traversal as traversal
    result = 0
    if scale is None:
        scale = g.max_scale()
    for r in g.roots(scale):
        mvalue = {}
        for vid in traversal.post_order(g, r):
            mvalue[vid] = max([mvalue[c] + 1 for c in g.children(vid)] + [1])
        result = max(mvalue[r], result)
    return result
Esempio n. 6
0
def strahler_order(g, vid):
    """internal function used by :func:`strahler`
    
    """
    strahler = {}
    for v in traversal.post_order(g, vid):
        children_strahler = [strahler[c] for c in g.children(v)]
        if children_strahler:
            m, M = min(children_strahler), max(children_strahler)
            strahler[v] = M if m != M else M + 1
        else:
            strahler[v] = 1
    return strahler